From 0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Fri, 30 Oct 2026 12:07:21 -0500 Subject: [PATCH 1/7] perf: Drop @tanstack/store, load app hotkeys on demand, and log only in development - Core and every adapter subscribe with a small built-in store instead of @tanstack/store and the framework store adapters. Stores keep the same state, get, setState, and subscribe API, typed with TanStack Store's own types, and still work with TanStack Store's framework adapters. - Providers load app hotkey support only when the app uses defineAppHotkeys. - Console warnings and errors are logged only outside production builds. - Devtools adapters list their TanStack Devtools host as an optional peer at the current release. --- .changeset/dev-only-warnings.md | 5 + .changeset/devtools-host-peers.md | 13 + .changeset/drop-tanstack-store.md | 17 + .changeset/lazy-app-hotkeys-store.md | 12 + .intent/review-state.json | 3015 +++++++++++++---- docs/devtools.md | 2 + docs/framework/alpine/guides/app-hotkeys.md | 2 +- .../framework/alpine/guides/hotkey-manager.md | 2 +- docs/framework/alpine/guides/hotkeys.md | 4 +- docs/framework/angular/guides/app-hotkeys.md | 2 +- .../angular/guides/hotkey-manager.md | 2 +- docs/framework/angular/guides/hotkeys.md | 4 +- .../functions/injectDefaultHotkeysOptions.md | 2 +- .../functions/injectHotkeysContext.md | 2 +- .../reference/functions/provideHotkeys.md | 2 +- .../interfaces/HotkeysContextValue.md | 10 +- .../interfaces/HotkeysProviderOptions.md | 6 +- .../interfaces/ProvideHotkeysOptions.md | 16 +- .../reference/type-aliases/MaybeGetter.md | 2 +- .../variables/HOTKEYS_INJECTION_TOKEN.md | 2 +- docs/framework/ember/guides/app-hotkeys.md | 2 +- docs/framework/ember/guides/hotkey-manager.md | 2 +- docs/framework/ember/guides/hotkeys.md | 4 +- docs/framework/lit/guides/app-hotkeys.md | 2 +- docs/framework/lit/guides/hotkey-manager.md | 2 +- docs/framework/lit/guides/hotkeys.md | 4 +- docs/framework/octane/guides/app-hotkeys.md | 2 +- .../framework/octane/guides/hotkey-manager.md | 2 +- docs/framework/octane/guides/hotkeys.md | 4 +- .../reference/functions/HotkeysProvider.md | 2 +- .../functions/useDefaultHotkeysOptions.md | 2 +- .../reference/functions/useHotkeysContext.md | 2 +- .../interfaces/DefaultHotkeysOptions.md | 6 +- .../interfaces/HotkeysProviderProps.md | 12 +- .../type-aliases/HotkeysProviderOptions.md | 2 +- docs/framework/preact/guides/app-hotkeys.md | 2 +- .../framework/preact/guides/hotkey-manager.md | 2 +- docs/framework/preact/guides/hotkeys.md | 4 +- .../reference/functions/HotkeysProvider.md | 2 +- .../functions/useDefaultHotkeysOptions.md | 2 +- .../preact/reference/functions/useHeldKeys.md | 5 +- .../reference/functions/useHotkeysContext.md | 2 +- .../preact/reference/functions/useKeyHold.md | 5 +- .../interfaces/HotkeysProviderOptions.md | 6 +- .../interfaces/HotkeysProviderProps.md | 12 +- docs/framework/react/guides/app-hotkeys.md | 2 +- docs/framework/react/guides/hotkey-manager.md | 2 +- docs/framework/react/guides/hotkeys.md | 4 +- .../reference/functions/HotkeysProvider.md | 2 +- .../functions/useDefaultHotkeysOptions.md | 2 +- .../react/reference/functions/useHeldKeys.md | 5 +- .../reference/functions/useHotkeysContext.md | 2 +- .../react/reference/functions/useKeyHold.md | 5 +- .../interfaces/HotkeysProviderOptions.md | 6 +- .../interfaces/HotkeysProviderProps.md | 12 +- docs/framework/solid/guides/app-hotkeys.md | 2 +- docs/framework/solid/guides/hotkey-manager.md | 2 +- docs/framework/solid/guides/hotkeys.md | 4 +- .../reference/functions/createHeldKeyCodes.md | 5 +- .../reference/functions/createHeldKeys.md | 5 +- .../reference/functions/createKeyHold.md | 5 +- .../functions/useDefaultHotkeysOptions.md | 2 +- .../reference/functions/useHotkeysContext.md | 2 +- .../interfaces/HotkeysProviderOptions.md | 6 +- .../interfaces/HotkeysProviderProps.md | 12 +- .../reference/variables/HotkeysProvider.md | 2 +- docs/framework/svelte/guides/app-hotkeys.md | 2 +- .../framework/svelte/guides/hotkey-manager.md | 2 +- docs/framework/svelte/guides/hotkeys.md | 4 +- .../functions/getDefaultHotkeysOptions.md | 2 +- .../reference/functions/getHotkeysContext.md | 2 +- .../reference/functions/setHotkeysContext.md | 2 +- .../interfaces/HotkeysContextOptions.md | 10 +- .../interfaces/HotkeysProviderOptions.md | 6 +- .../interfaces/HotkeysProviderProps.md | 12 +- .../reference/variables/DEFAULT_OPTIONS.md | 2 +- docs/framework/vue/guides/app-hotkeys.md | 2 +- docs/framework/vue/guides/hotkey-manager.md | 2 +- docs/framework/vue/guides/hotkeys.md | 4 +- .../functions/provideHotkeysContext.md | 2 +- .../functions/useDefaultHotkeysOptions.md | 2 +- .../vue/reference/functions/useHeldKeys.md | 5 +- .../reference/functions/useHotkeysContext.md | 2 +- .../interfaces/HotkeysProviderOptions.md | 6 +- .../ProvideHotkeysContextOptions.md | 16 +- docs/guides/sensible-defaults.md | 6 +- .../functions/activateHotkeysProviderScope.md | 2 +- .../functions/createAppHotkeysStore.md | 32 + .../adapter/functions/createHotkeyBindings.md | 2 +- .../adapter/functions/createStore.md | 29 + .../functions/getHotkeysProviderScopeKey.md | 2 +- .../functions/mergeHotkeysProviderDefaults.md | 2 +- .../functions/prepareHotkeyDefinitions.md | 2 +- .../functions/subscribePublishedAppHotkeys.md | 2 +- docs/reference/adapter/index.md | 3 + .../interfaces/HotkeysProviderScopeProps.md | 8 +- .../PrepareHotkeyDefinitionsOptions.md | 10 +- .../type-aliases/AdapterAppHotkeyOptions.md | 2 +- .../type-aliases/AdapterChordOptions.md | 2 +- .../type-aliases/AdapterCommonOptions.md | 2 +- .../type-aliases/AdapterHotkeyDefinition.md | 2 +- .../type-aliases/AdapterHotkeyOptions.md | 2 +- .../adapter/type-aliases/AdapterOptionsFor.md | 2 +- .../type-aliases/AdapterSequenceOptions.md | 2 +- .../HotkeyBindingsCommonOptions.md | 2 +- .../adapter/type-aliases/HotkeyDefinition.md | 2 +- docs/reference/adapter/type-aliases/Store.md | 20 + .../adapter/type-aliases/WithTarget.md | 2 +- docs/reference/classes/AppHotkeysStore.md | 26 +- docs/reference/classes/HotkeyManager.md | 37 +- docs/reference/classes/HotkeyRecorder.md | 4 +- docs/reference/classes/KeyStateTracker.md | 18 +- docs/reference/functions/checkHotkey.md | 4 +- docs/reference/functions/defineAppHotkeys.md | 2 +- .../getAppHotkeyRegistrationOptions.md | 2 +- docs/reference/functions/getHotkeyManager.md | 2 +- .../reference/functions/getKeyStateTracker.md | 2 +- docs/reference/functions/isAppHotkey.md | 2 +- docs/reference/functions/isCustomHotkey.md | 2 +- docs/reference/functions/provideAppHotkeys.md | 2 +- .../functions/publishAppHotkeysStore.md | 2 +- docs/reference/functions/resolveAppHotkey.md | 2 +- .../functions/toHotkeyRegistrationView.md | 2 +- .../interfaces/ActivateHotkeyScopeOptions.md | 6 +- docs/reference/interfaces/AppHotkey.md | 16 +- docs/reference/interfaces/AppHotkeyInput.md | 10 +- .../reference/interfaces/AppHotkeyListItem.md | 10 +- docs/reference/interfaces/AppHotkeysState.md | 6 +- .../interfaces/AppHotkeysStoreOptions.md | 8 +- .../interfaces/HotkeyChordOptions.md | 28 +- .../interfaces/HotkeyChordRecorderOptions.md | 22 +- .../HotkeyChordRecorderValidationContext.md | 8 +- .../interfaces/HotkeyChordRegistration.md | 22 +- .../interfaces/HotkeyChordRegistrationView.md | 20 +- docs/reference/interfaces/HotkeyOptions.md | 26 +- .../interfaces/HotkeyRecorderState.md | 8 +- .../interfaces/HotkeyRegistrationHandle.md | 12 +- .../reference/interfaces/HotkeyScopesState.md | 10 +- .../interfaces/HotkeySequenceOptions.md | 28 +- .../HotkeySequenceRecorderOptions.md | 26 +- ...HotkeySequenceRecorderValidationContext.md | 8 +- .../interfaces/HotkeySequenceRegistration.md | 24 +- .../HotkeySequenceRegistrationView.md | 24 +- .../interfaces/KeyStateTrackerState.md | 6 +- docs/reference/interfaces/RecorderOptions.md | 10 +- .../reference/interfaces/RecorderRejection.md | 10 +- docs/reference/interfaces/Register.md | 2 +- docs/reference/interfaces/ValidationResult.md | 8 +- .../type-aliases/AppHotkeyChordOptions.md | 2 +- .../type-aliases/AppHotkeyDefaultKind.md | 2 +- docs/reference/type-aliases/AppHotkeyId.md | 2 +- .../type-aliases/AppHotkeyOptions.md | 2 +- .../type-aliases/AppHotkeySequenceOptions.md | 2 +- .../reference/type-aliases/AppHotkeyStatus.md | 2 +- docs/reference/type-aliases/AppHotkeys.md | 2 +- docs/reference/type-aliases/CustomHotkeys.md | 2 +- .../type-aliases/DefinedAppHotkeys.md | 2 +- .../type-aliases/HotkeyOptionsFor.md | 2 +- .../type-aliases/HotkeyRecorderCommitKeys.md | 2 +- .../type-aliases/HotkeyRecorderOptions.md | 2 +- .../HotkeyRecorderValidationContext.md | 2 +- .../type-aliases/HotkeyRegistration.md | 2 +- .../type-aliases/HotkeyRegistrationStatus.md | 2 +- .../type-aliases/HotkeyRegistrationView.md | 2 +- .../reference/type-aliases/RecorderKeyMode.md | 2 +- .../type-aliases/RegisteredAppHotkeys.md | 2 +- docs/reference/type-aliases/Target.md | 2 +- examples/angular/injectHeldKeys/package.json | 2 +- .../injectHotkey-sequences/package.json | 2 +- examples/angular/injectHotkey/package.json | 2 +- .../package.json | 2 +- .../angular/injectHotkeyRecorder/package.json | 2 +- .../injectHotkeys-sequences/package.json | 2 +- examples/angular/injectHotkeys/package.json | 2 +- examples/angular/injectKeyHold/package.json | 2 +- examples/angular/kitchen-sink/package.json | 2 +- examples/angular/scopes/package.json | 2 +- examples/preact/kitchen-sink/package.json | 2 +- examples/preact/scopes/package.json | 2 +- examples/preact/useHeldKeys/package.json | 2 +- .../preact/useHotkey-sequences/package.json | 2 +- examples/preact/useHotkey/package.json | 2 +- .../useHotkeyRecorder-sequences/package.json | 2 +- .../preact/useHotkeyRecorder/package.json | 2 +- .../preact/useHotkeys-sequences/package.json | 2 +- examples/preact/useHotkeys/package.json | 2 +- examples/preact/useKeyhold/package.json | 2 +- examples/react/kitchen-sink/package.json | 2 +- examples/react/scopes/package.json | 2 +- examples/react/useHeldKeys/package.json | 2 +- .../react/useHotkey-sequences/package.json | 2 +- examples/react/useHotkey/package.json | 2 +- .../useHotkeyRecorder-sequences/package.json | 2 +- examples/react/useHotkeyRecorder/package.json | 2 +- .../react/useHotkeys-sequences/package.json | 2 +- examples/react/useHotkeys/package.json | 2 +- examples/react/useKeyhold/package.json | 2 +- examples/solid/createHeldKeys/package.json | 2 +- .../solid/createHotkey-sequences/package.json | 2 +- examples/solid/createHotkey/package.json | 2 +- .../package.json | 2 +- .../solid/createHotkeyRecorder/package.json | 2 +- .../createHotkeys-sequences/package.json | 2 +- examples/solid/createHotkeys/package.json | 2 +- examples/solid/createKeyHold/package.json | 2 +- examples/solid/kitchen-sink/package.json | 2 +- examples/solid/scopes/package.json | 2 +- .../package.json | 2 +- .../create-hotkey-recorder/package.json | 2 +- .../create-hotkey-sequences/package.json | 2 +- examples/svelte/create-hotkey/package.json | 2 +- .../create-hotkeys-sequences/package.json | 2 +- examples/svelte/create-hotkeys/package.json | 2 +- examples/svelte/get-held-keys/package.json | 2 +- examples/svelte/get-is-key-held/package.json | 2 +- examples/svelte/kitchen-sink/package.json | 2 +- examples/svelte/scopes/package.json | 2 +- examples/vue/kitchen-sink/package.json | 2 +- examples/vue/scopes/package.json | 2 +- examples/vue/useHeldKeys/package.json | 2 +- examples/vue/useHotkey-sequences/package.json | 2 +- examples/vue/useHotkey/package.json | 2 +- .../useHotkeyRecorder-sequences/package.json | 2 +- examples/vue/useHotkeyRecorder/package.json | 2 +- .../vue/useHotkeys-sequences/package.json | 2 +- examples/vue/useHotkeys/package.json | 2 +- examples/vue/useKeyhold/package.json | 2 +- package.json | 26 + packages/alpine-hotkeys/package.json | 3 +- packages/alpine-hotkeys/src/scope.ts | 4 +- packages/alpine-hotkeys/tsconfig.docs.json | 3 +- .../angular-hotkeys-devtools/package.json | 10 +- packages/angular-hotkeys/package.json | 1 - .../angular-hotkeys/src/_injectSelector.ts | 22 + .../angular-hotkeys/src/hotkeys-provider.ts | 6 +- .../angular-hotkeys/src/injectHeldKeyCodes.ts | 2 +- .../angular-hotkeys/src/injectHeldKeys.ts | 2 +- .../angular-hotkeys/src/injectHotkeyHint.ts | 2 +- .../src/injectHotkeyRecorder.ts | 4 +- .../src/injectHotkeyRegistrations.ts | 2 +- .../src/injectHotkeyScopesState.ts | 2 +- packages/angular-hotkeys/src/injectKeyHold.ts | 2 +- packages/angular-hotkeys/tsconfig.docs.json | 3 +- packages/ember-hotkeys/package.json | 1 - packages/ember-hotkeys/src/utils.ts | 4 +- packages/ember-hotkeys/tsconfig.docs.json | 9 +- packages/hotkeys-devtools/package.json | 4 +- .../tests/live-updates.test.tsx | 82 + packages/hotkeys/package.json | 5 +- packages/hotkeys/src/_app-hotkeys-factory.ts | 29 + packages/hotkeys/src/_registration.ts | 12 +- packages/hotkeys/src/_store.ts | 61 + packages/hotkeys/src/adapter.ts | 4 + packages/hotkeys/src/app-hotkeys.ts | 29 +- packages/hotkeys/src/hotkey-manager.ts | 10 +- packages/hotkeys/src/hotkey-recorder.ts | 8 +- packages/hotkeys/src/key-state-tracker.ts | 5 +- packages/hotkeys/src/validate.ts | 28 +- packages/hotkeys/tests/adapter.test.ts | 25 + .../hotkeys/tests/production-logs.test.ts | 73 + packages/hotkeys/tests/store.test.ts | 101 + packages/hotkeys/tsconfig.json | 4 + packages/hotkeys/tsdown.config.ts | 7 + packages/lit-hotkeys/tests/ssr.test.ts | 36 +- packages/lit-hotkeys/tsconfig.docs.json | 3 +- packages/octane-hotkeys/package.json | 3 +- .../octane-hotkeys/src/HotkeysProvider.ts | 6 +- packages/octane-hotkeys/src/internal.ts | 50 +- .../octane-hotkeys/src/useHeldKeyCodes.ts | 1 - packages/octane-hotkeys/src/useHeldKeys.ts | 1 - packages/octane-hotkeys/src/useHotkeyHint.ts | 2 - .../octane-hotkeys/src/useHotkeyRecorder.ts | 7 +- .../src/useHotkeyRegistrations.ts | 1 - .../src/useHotkeyScopesState.ts | 1 - packages/octane-hotkeys/src/useKeyHold.ts | 1 - packages/octane-hotkeys/tsconfig.docs.json | 3 +- packages/preact-hotkeys-devtools/package.json | 8 +- .../tests/panel.test.ts | 4 +- packages/preact-hotkeys/package.json | 3 +- .../preact-hotkeys/src/HotkeysProvider.tsx | 6 +- .../preact-hotkeys/src/_appHotkeysStore.ts | 5 +- packages/preact-hotkeys/src/_useSelector.ts | 59 + .../preact-hotkeys/src/useHeldKeyCodes.ts | 2 +- packages/preact-hotkeys/src/useHeldKeys.ts | 5 +- packages/preact-hotkeys/src/useHotkeyHint.ts | 2 +- .../preact-hotkeys/src/useHotkeyRecorder.ts | 2 +- .../src/useHotkeyRegistrations.ts | 2 +- .../src/useHotkeyScopesState.ts | 2 +- packages/preact-hotkeys/src/useKeyHold.ts | 5 +- packages/preact-hotkeys/tsconfig.docs.json | 3 +- packages/react-hotkeys-devtools/package.json | 8 +- packages/react-hotkeys/package.json | 4 +- .../react-hotkeys/src/HotkeysProvider.tsx | 6 +- .../react-hotkeys/src/_appHotkeysStore.ts | 5 +- packages/react-hotkeys/src/_useSelector.ts | 34 + packages/react-hotkeys/src/useHeldKeyCodes.ts | 2 +- packages/react-hotkeys/src/useHeldKeys.ts | 5 +- packages/react-hotkeys/src/useHotkeyHint.ts | 2 +- .../react-hotkeys/src/useHotkeyRecorder.ts | 2 +- .../src/useHotkeyRegistrations.ts | 2 +- .../react-hotkeys/src/useHotkeyScopesState.ts | 2 +- packages/react-hotkeys/src/useKeyHold.ts | 5 +- packages/react-hotkeys/tests/stores.test.tsx | 69 + packages/react-hotkeys/tsconfig.docs.json | 3 +- packages/solid-hotkeys-devtools/package.json | 8 +- packages/solid-hotkeys/package.json | 3 +- .../solid-hotkeys/src/HotkeysProvider.tsx | 6 +- packages/solid-hotkeys/src/_useSelector.ts | 19 + .../solid-hotkeys/src/createHeldKeyCodes.ts | 5 +- packages/solid-hotkeys/src/createHeldKeys.ts | 5 +- .../solid-hotkeys/src/createHotkeyHint.ts | 2 +- .../solid-hotkeys/src/createHotkeyRecorder.ts | 2 +- .../src/createHotkeyRegistrations.ts | 2 +- .../src/createHotkeyScopesState.ts | 2 +- packages/solid-hotkeys/src/createKeyHold.ts | 5 +- packages/solid-hotkeys/src/defaultOptions.ts | 5 +- packages/solid-hotkeys/tsconfig.docs.json | 3 +- packages/svelte-hotkeys-devtools/package.json | 8 +- packages/svelte-hotkeys/src/HotkeysCtx.ts | 6 +- packages/svelte-hotkeys/tsconfig.docs.json | 3 +- packages/vue-hotkeys-devtools/package.json | 6 + packages/vue-hotkeys/package.json | 3 +- .../vue-hotkeys/src/HotkeysProviderContext.ts | 6 +- packages/vue-hotkeys/src/useHeldKeys.ts | 3 +- packages/vue-hotkeys/src/useStoreSelector.ts | 25 +- packages/vue-hotkeys/tests/ssr.test.ts | 62 +- pnpm-lock.yaml | 492 ++- pnpm-workspace.yaml | 10 + 328 files changed, 4156 insertions(+), 1655 deletions(-) create mode 100644 .changeset/dev-only-warnings.md create mode 100644 .changeset/devtools-host-peers.md create mode 100644 .changeset/drop-tanstack-store.md create mode 100644 .changeset/lazy-app-hotkeys-store.md create mode 100644 docs/reference/adapter/functions/createAppHotkeysStore.md create mode 100644 docs/reference/adapter/functions/createStore.md create mode 100644 docs/reference/adapter/type-aliases/Store.md create mode 100644 packages/angular-hotkeys/src/_injectSelector.ts create mode 100644 packages/hotkeys-devtools/tests/live-updates.test.tsx create mode 100644 packages/hotkeys/src/_app-hotkeys-factory.ts create mode 100644 packages/hotkeys/src/_store.ts create mode 100644 packages/hotkeys/tests/production-logs.test.ts create mode 100644 packages/hotkeys/tests/store.test.ts create mode 100644 packages/preact-hotkeys/src/_useSelector.ts create mode 100644 packages/react-hotkeys/src/_useSelector.ts create mode 100644 packages/react-hotkeys/tests/stores.test.tsx create mode 100644 packages/solid-hotkeys/src/_useSelector.ts diff --git a/.changeset/dev-only-warnings.md b/.changeset/dev-only-warnings.md new file mode 100644 index 00000000..3a4114ea --- /dev/null +++ b/.changeset/dev-only-warnings.md @@ -0,0 +1,5 @@ +--- +'@tanstack/hotkeys': minor +--- + +Console warnings and errors are logged only in development. Production builds, where `process.env.NODE_ENV` is `'production'`, skip them and drop the warning code. `checkHotkey` still returns whether a hotkey is valid. diff --git a/.changeset/devtools-host-peers.md b/.changeset/devtools-host-peers.md new file mode 100644 index 00000000..3c3994c6 --- /dev/null +++ b/.changeset/devtools-host-peers.md @@ -0,0 +1,13 @@ +--- +'@tanstack/hotkeys-devtools': minor +'@tanstack/react-hotkeys-devtools': minor +'@tanstack/preact-hotkeys-devtools': minor +'@tanstack/solid-hotkeys-devtools': minor +'@tanstack/vue-hotkeys-devtools': minor +'@tanstack/svelte-hotkeys-devtools': minor +'@tanstack/angular-hotkeys-devtools': minor +--- + +Each devtools adapter now lists its TanStack Devtools host as an optional peer dependency at the current release, such as `@tanstack/react-devtools` 0.10.14. Older hosts pass the plugin a theme string instead of props, so the panel ignored the theme, and TypeScript rejects the React plugin since `@tanstack/react-hotkeys-devtools` 0.12.0. Package managers now warn about an old host at install time. + +Update `@tanstack/devtools-utils` and `@tanstack/devtools-ui` to 0.7.2. The Preact panel now unmounts its core on Preact 11 (TanStack/devtools#551). diff --git a/.changeset/drop-tanstack-store.md b/.changeset/drop-tanstack-store.md new file mode 100644 index 00000000..2313c01a --- /dev/null +++ b/.changeset/drop-tanstack-store.md @@ -0,0 +1,17 @@ +--- +'@tanstack/hotkeys': minor +'@tanstack/react-hotkeys': minor +'@tanstack/preact-hotkeys': minor +'@tanstack/solid-hotkeys': minor +'@tanstack/vue-hotkeys': minor +'@tanstack/angular-hotkeys': minor +'@tanstack/octane-hotkeys': minor +'@tanstack/alpine-hotkeys': minor +'@tanstack/ember-hotkeys': minor +'@tanstack/svelte-hotkeys': minor +'@tanstack/lit-hotkeys': minor +--- + +TanStack Hotkeys no longer depends on `@tanstack/store` or the framework store adapters. Its stores, such as `manager.registrations` and `recorder.store`, keep the same `state`, `get`, `setState`, and `subscribe` API and still work with TanStack Store's framework adapters. Bundles shrink by about 1.3 kB (brotli) in core and about 2.4 kB in the React adapter. + +The stores are no longer `Store` instances from `@tanstack/store`, so `instanceof Store` checks and other TanStack Store features, such as `actions`, no longer apply to them. diff --git a/.changeset/lazy-app-hotkeys-store.md b/.changeset/lazy-app-hotkeys-store.md new file mode 100644 index 00000000..7aa91c8e --- /dev/null +++ b/.changeset/lazy-app-hotkeys-store.md @@ -0,0 +1,12 @@ +--- +'@tanstack/hotkeys': minor +'@tanstack/react-hotkeys': minor +'@tanstack/preact-hotkeys': minor +'@tanstack/solid-hotkeys': minor +'@tanstack/vue-hotkeys': minor +'@tanstack/svelte-hotkeys': minor +'@tanstack/angular-hotkeys': minor +'@tanstack/octane-hotkeys': minor +--- + +Providers no longer bundle app hotkey support unless the app uses `defineAppHotkeys`. A React app with `HotkeysProvider` and no app hotkeys is about 1 kB smaller (brotli). diff --git a/.intent/review-state.json b/.intent/review-state.json index 05cc77dd..44763dbe 100644 --- a/.intent/review-state.json +++ b/.intent/review-state.json @@ -3,9 +3,9 @@ "baseline": "ad56a4b0dbf3c34d8552eca2cc88c5c7000d520a", "items": { "skill:packages/alpine-hotkeys/skills/alpine-hotkeys/SKILL.md": { - "fingerprint": "f7e6791bcab14d204081461064163520817356a360f08e158b6d860dd513918d", + "fingerprint": "b1984de4daf5d5eeb0481098503979ceffea7134aefe556f2a09f84c7fc54221", "snapshot": { - "docs/framework/alpine/guides/app-hotkeys.md": "536c327d4d9f80219a0dcdd04bb36b684c35567ad76f86327287ae6a21f03199", + "docs/framework/alpine/guides/app-hotkeys.md": "8cb047cb3397588fdbde4684302a74f4c95dd4b37924f6ee761cb19becfeb22b", "docs/framework/alpine/quick-start.md": "de471401f70d66c2a81182f917f6eef02d808bdda1a2bc6268a6aa1e5365000c", "packages/alpine-hotkeys/skills/alpine-hotkeys/SKILL.md": "8c0a3ab25f684d8445925d43dbadabb4e491b12001d78811cbf0d3f41db044c8", "packages/alpine-hotkeys/skills/alpine-hotkeys/references/app-hotkeys.md": "fdc12aafd6098bde8b4e7f5d8a8afb12227ac99cd753e06fc27401d5d8c8fead", @@ -13,42 +13,39 @@ "packages/alpine-hotkeys/src/createHotkey.ts": "3ee3029171f53f3693980bc975252b3decea27c1920ccc0ec1dd8fe2b3810c9b", "packages/alpine-hotkeys/src/createHotkeysScope.ts": "8fb6d17e8fe155327fdac17f9d057d6538c84474c1c464ee25409c23d52e7a85", "packages/alpine-hotkeys/src/hotkeysPlugin.ts": "35ffb8b772a178690d956f3b3a165b577c40d1723e186f5ffdef4a985f7be90b", - "packages/alpine-hotkeys/src/scope.ts": "33b2731c6f3754315a6b31fa8dff27805605835c3ae34aa62f92f6fd44d898a6" + "packages/alpine-hotkeys/src/scope.ts": "6de5d72206289c2ad4b3719cd69474450770cb006abf951f1419ed70a58bdb7c" }, - "head": "a61d917542e56c07f1a3d2aa3f6eb951e5150818", - "outcome": "updated", - "reason": "The setup now installs Alpine.plugin(hotkeysPlugin) before Alpine.start(). The adapter no longer imports alpinejs; it uses the plugin's Alpine instance, falls back to window.Alpine, and throws when neither exists. The skill's sample, setup line and API row say so.", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Skill guidance is unaffected: stores keep the same state/get/setState/subscribe API, providers behave the same, and warnings still appear in development.", "evidence": [ - "packages/alpine-hotkeys/src/scope.ts", - "packages/alpine-hotkeys/src/hotkeysPlugin.ts", - "packages/alpine-hotkeys/tests/alpine-instance.test.ts" + "grep of skills for store, subscribe, warning, and checkHotkey wording; the two warning mentions remain accurate." ] }, "skill:packages/angular-hotkeys/skills/angular-hotkeys/SKILL.md": { - "fingerprint": "5f623f1741f51b1b805be93d1389186807b85a0921504d420b521111ad9264cc", + "fingerprint": "55edd8becf8aaad206a4ec817ce4770bd7ffd19addcb4a0f7837a6ca94dc138c", "snapshot": { "docs/framework/angular/guides/provide-hotkeys-and-scopes.md": "003fba191e3d13d4466754644c4d2174a550f48d437028bc163ba6acca6546ad", "docs/framework/angular/quick-start.md": "d1cc5f91cd50b579c8a4bd9811e76862308855ce602556e4fa36561bc7d62822", "packages/angular-hotkeys/skills/angular-hotkeys/SKILL.md": "2b0e9e34fb1338d2db1657beffd8664906ef200388854cfc2895cf9f428e00d9", "packages/angular-hotkeys/skills/angular-hotkeys/references/app-hotkeys.md": "5fe1b12a519e8ca5087d78d47050f7a2ec0c70bb9b7d6ebcbb050ee099e3effe", - "packages/angular-hotkeys/src/hotkeys-provider.ts": "1e549ef79db70b5818326068c78ada5d410fdc680a4cb7ca12bdfd9d0de5d0dc", + "packages/angular-hotkeys/src/hotkeys-provider.ts": "778e52fcefb623255a58aac9ea9cc6267e1c9f127ef5bdfeb3594c1db16594de", "packages/angular-hotkeys/src/injectAppHotkeys.ts": "3161186944b142feab034a1899b76b178700f4ef371bfffbb694b9ed5a191d32", "packages/angular-hotkeys/src/injectHotkey.ts": "b3651b50beb5b94cdadaf3339be17984e79277222918550f53448fca511e0af6", - "packages/angular-hotkeys/src/injectHotkeyRecorder.ts": "46db59ccc34f8158c98328ae152f47cdd182cdeef951bf9dc5c44fa12de1b305", + "packages/angular-hotkeys/src/injectHotkeyRecorder.ts": "f99727fccffca18b9c959611c29826e4ae4fa4767de53621cb8fca8e95646c48", "packages/angular-hotkeys/src/injectHotkeys.ts": "cecc7d127934caaab72a694fe527ef7a7b31e660f98cc077dabacd5506e11619" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", - "outcome": "updated", - "reason": "Hint rows now say an element-targeted hotkey needs focus inside its element; registration status described as enabled and in an active scope.", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Skill guidance is unaffected: stores keep the same state/get/setState/subscribe API, providers behave the same, and warnings still appear in development.", "evidence": [ - "packages/hotkeys/src/hotkey-manager.ts", - "packages/angular-hotkeys/skills/angular-hotkeys/SKILL.md" + "grep of skills for store, subscribe, warning, and checkHotkey wording; the two warning mentions remain accurate." ] }, "skill:packages/ember-hotkeys/skills/ember-hotkeys/SKILL.md": { - "fingerprint": "37777ecd64b32ae83c76d5fb46f339cd6f361b94fb488b4c343316032278c066", + "fingerprint": "f53853d4111f1697228094d3bf6533d90a623767274465b2121799aa8c4f5229", "snapshot": { - "docs/framework/ember/guides/app-hotkeys.md": "5162292b3d62257c757ea0146fb5b1cc8c85b130081472b3675be077e8c898de", + "docs/framework/ember/guides/app-hotkeys.md": "55e039d2123ed08ce41eae438293816885d705d79620df68f4aef339f632e2c2", "docs/framework/ember/quick-start.md": "cabdc0cbd2b9ac6d4d7f9f2c8b8d3fc6ef2ac8c23df4cd8ebc9745c99023f8c8", "packages/ember-hotkeys/skills/ember-hotkeys/SKILL.md": "ba4e5144d1b1e5435ffda905009c40b343b8cd829a93ec9553afc576d2388acc", "packages/ember-hotkeys/skills/ember-hotkeys/references/app-hotkeys.md": "b6200c97df720970117aefe3d2003817fdf7aa4d869437341e75245dcd0c9602", @@ -59,27 +56,24 @@ "packages/ember-hotkeys/src/useHotkey.ts": "66b7b39970c5e61233f352baf14c41d9ac29cc3832e251470930e6507b454f63", "packages/ember-hotkeys/src/useHotkeys.ts": "963345b3720ddefec8677b9b9d9dfa2b6346e22b32f9f2034d406b43e5c5ccf8" }, - "head": "41f06c51a38fac64409a3d4932cc8958f558ae57", - "outcome": "updated", - "reason": "The version line now matches the new ember-source peer (>=6.8.3 <6.9.0 || >=6.10.1). Classic builds of 6.8.0 to 6.8.2, 6.9.0 and 6.10.0 don't define @ember/reactive/collections, which src/utils.ts imports.", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Skill guidance is unaffected: stores keep the same state/get/setState/subscribe API, providers behave the same, and warnings still appear in development.", "evidence": [ - "packages/ember-hotkeys/package.json", - "packages/ember-hotkeys/src/utils.ts", - "Classic ember-cli apps with ember-auto-import 2.13.1 and the packed addon: 6.8.3, 6.12.1 (use-ember-modules on and off) and 7.3.1 build and fire K in Chromium; 6.8.0 fails with \"Could not find module @ember/reactive/collections\"", - "pnpm test:lib for @tanstack/ember-hotkeys passes (Embroider/Vite suite)" + "grep of skills for store, subscribe, warning, and checkHotkey wording; the two warning mentions remain accurate." ] }, "skill:packages/hotkeys/skills/app-hotkeys/SKILL.md": { - "fingerprint": "e4a4a258ea0983afe25de1f963ce8cb2f2d2723c9d9edf05c3d230e0b0cf45ae", + "fingerprint": "f7d762aa1eb6926c2f36b947922044dd103f11aadb623a86dada396bbb504deb", "snapshot": { - "docs/framework/react/guides/app-hotkeys.md": "703f9dcea282a1b5cd7cabcd304a233cfda8d79206d3d66d3b024142e5175d24", + "docs/framework/react/guides/app-hotkeys.md": "f518acca820445dfefde7a8db57f492022def97b96041f1d16573a2851ffa03e", "docs/framework/react/guides/cheat-sheet-ui-helpers.md": "a3f793e81c6a6e1e6aaf3d63c6b79114ea7d6f461123d371c0b4f0a23ffd88bc", "docs/framework/react/guides/custom-hotkey-recording.md": "ea9b70d7bbeb5846b0284e843960bf667b2ae6ffbe85742fb5ba332de170ca29", "packages/hotkeys/skills/app-hotkeys/SKILL.md": "1717fce82ea43b4947da276026504eb8832dc3094cc41cc7572701a7f27b5e58", "packages/hotkeys/skills/app-hotkeys/references/recording.md": "70dfa06d396a49e4a6033ec4f571ccdb9a74a439e989803c6120f219f720b8ad", - "packages/hotkeys/src/app-hotkeys.ts": "5bee8b0042a7385c8963aabf9b0ca7b6aad5ef8aab41b2759961a7ac6cf6849c", + "packages/hotkeys/src/app-hotkeys.ts": "d1fc00e69777f9960da51c7ca02895caa8c001e52fb2b2bff1c1bb731450b3ed", "packages/hotkeys/src/conflicts.ts": "750fe91126e87f062500d11d9bf19116d77c8509fdaa7644c847d49f1cbf40a3", - "packages/hotkeys/src/hotkey-recorder.ts": "972b374bc2e18a06c09da8595ea29dfa13d62a28c2e503174eb18a02fcc40daf", + "packages/hotkeys/src/hotkey-recorder.ts": "082148a59db861e2f3b57495b4d70ae85dc0fdb086f42acb0a0294cf17e374ec", "packages/react-hotkeys/tests/skills/shortcut-settings/fixture.tsx": "ecc6155241ebccca4ef4cd76e8925b3abeec73e9d88e6906bdf70e4c604788aa", "packages/react-hotkeys/tests/skills/shortcut-settings/grade.tsx": "270c7b8ff9d30f09a458bc8907efa47813e1e192903cc0ca3a70f6820e39fc90", "packages/react-hotkeys/tests/skills/shortcut-settings/mistakes/full-list-storage.tsx": "62d4f4bd79de46fc4900d4f8202c7b16c672060ab66aaead9e7fcd8ea1958c59", @@ -89,22 +83,24 @@ "packages/react-hotkeys/tests/skills/shortcut-settings/solution.tsx": "23a9dd46565c8617361bad3bcf24903c6d2d0c1db8c5e16b66ee5a7bc02fc62b", "packages/react-hotkeys/tests/skills/shortcut-settings/task.md": "1104e51ba1cb603b145b5eece30197d2e2936e21b1592ea75004244d49fcadd1" }, - "head": "614339f8f59a0776451f4ccc64cb5cadc20fd145", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Recorder start without a document and Svelte recorder teardown timing are internal; the skill describes neither.", - "evidence": ["packages/hotkeys/src/hotkey-recorder.ts"] + "reason": "Skill guidance is unaffected: stores keep the same state/get/setState/subscribe API, providers behave the same, and warnings still appear in development.", + "evidence": [ + "grep of skills for store, subscribe, warning, and checkHotkey wording; the two warning mentions remain accurate." + ] }, "skill:packages/hotkeys/skills/hotkeys-core/SKILL.md": { - "fingerprint": "727730dbceed898070ebb1f363736f1aa96059d5ed7aaaf086ae866ee7146f9f", + "fingerprint": "610bfdd8ab791087ad65c84d09d8c95e110ab8c56ef274cce6e8fc146508cf6e", "snapshot": { "docs/framework/react/guides/hotkeys-provider-and-scopes.md": "1d39ab010d5bd99955b761dc7298987b332e15846546990dcf2a1ecfb5068469", - "docs/framework/react/guides/hotkeys.md": "4d12140117ce4ceb3fb9bc17867efe30ae7085609714800e962c927ce07f019f", + "docs/framework/react/guides/hotkeys.md": "1591b315e7f0581265287b04210978fd4b0b85487070e744f7f52e1648e01ebf", "docs/framework/react/guides/sequences.md": "e66231380dab6222508a1305d83586459b59953c2ecc47b9549e3cb29ffcd355", - "docs/guides/sensible-defaults.md": "2f03b09f3d0f8af626d1ce52772148662ae0a4a2f03b1b428fb227cd7580e8bf", + "docs/guides/sensible-defaults.md": "f104881097a435a8f4874f969cef3d59e2ef17ec97f5a8c121ba303d036539b7", "packages/hotkeys/skills/hotkeys-core/SKILL.md": "507ec6b32b7b1836276ee6527acdb3240f998d72dfb90f07c9e9820e688e8714", "packages/hotkeys/skills/hotkeys-core/references/scopes.md": "1ae616ff7ce92d9679bbd0752ada572c2060c33ea7e7e638bfcc9d5425ac6bfa", "packages/hotkeys/skills/hotkeys-core/references/testing.md": "90e6512868c194f6c906711cd16882c204600a3118b08b7a101ff6b409012538", - "packages/hotkeys/src/hotkey-manager.ts": "2507330b7cdcd986ae624d5ad9526516d48d9bc34228d7de9efd7f4bc2440229", + "packages/hotkeys/src/hotkey-manager.ts": "c824e47f3101b0cd7078894e74083455fdd55e407cf9a7511bd4e0c6668da4a0", "packages/hotkeys/src/match.ts": "3a50921a68f79183b4ffac98e07e7fdf043711bc071f419c9cdc03422d25f268", "packages/react-hotkeys/tests/skills/editor-shortcuts/editor-shortcuts.test.tsx": "25c572e968a78fd8df61f0bc98ba8adb41ecf0874437725e5ba28dd171e44fe1", "packages/react-hotkeys/tests/skills/editor-shortcuts/fixture.tsx": "613a833bb6412b600925deb4009d16cfbfe7afa9a5dc0b82d1a39b8da8c0230b", @@ -116,18 +112,17 @@ "packages/react-hotkeys/tests/skills/editor-shortcuts/solution.tsx": "ec81379bf0e3a9950222cf8525f82f8abefeb6b46339550fd3a8622e61bf4f0d", "packages/react-hotkeys/tests/skills/editor-shortcuts/task.md": "451dc7569f71956e5ce5e691ecc18ce14d4240b7edaa20cad58075747416c33d" }, - "head": "210b3fb5577b3e7381a7c74d70e87cf395ae6682", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "The skill says letters follow the typed character and recommends physical bindings for positions. Both still hold; this change narrows when non-letter keys fall back to their US position, which the skill doesn't describe.", + "reason": "Skill guidance is unaffected: stores keep the same state/get/setState/subscribe API, providers behave the same, and warnings still appear in development.", "evidence": [ - "packages/hotkeys/src/_match.ts", - "docs/guides/sensible-defaults.md" + "grep of skills for store, subscribe, warning, and checkHotkey wording; the two warning mentions remain accurate." ] }, "skill:packages/lit-hotkeys/skills/lit-hotkeys/SKILL.md": { - "fingerprint": "2d195e1f1122c0623295b93f5a97f79c968fcf744362c5e93747fa5e2982b321", + "fingerprint": "9f21474a4d068137bee212649f88d511a688b678065f144deee21c5d6f687ef8", "snapshot": { - "docs/framework/lit/guides/app-hotkeys.md": "0a2b2dafa00bb21f575d4ac752f0b54803a69fff12a4391cf3a86e59f6471e1f", + "docs/framework/lit/guides/app-hotkeys.md": "ab56f3c56e60dc8c12253eb9c48156438dd802e6514eaf2c07c4efa821e153e8", "docs/framework/lit/quick-start.md": "cb51d2c81a8d9288d435af6e54366188c4175b9f18a434fbb85643eb13856ae4", "packages/lit-hotkeys/skills/lit-hotkeys/SKILL.md": "ecd0100b52a00fc90ce71f244093da667d0c5ff78ecaf632d9db26f1c66c8e40", "packages/lit-hotkeys/skills/lit-hotkeys/references/app-hotkeys.md": "659ca9bebf4200bb693c693addb17bd5a943904e482514f2014f5ca426629e96", @@ -136,63 +131,60 @@ "packages/lit-hotkeys/src/controllers/hotkey.ts": "3b66db188eb2839ddeab56561bd9ebefdd1ea785490b5c150a81c5b3e96c7b21", "packages/lit-hotkeys/src/decorators/hotkey.ts": "2730f3178f6e5f6695fa0c2f8d25d7040c2ff841d3de486acffef86cfc76395f" }, - "head": "5053876bbd97d6b056cef9eddddcc4e28c249aba", - "outcome": "updated", - "reason": "KeyHoldController now accepts a getter key; the API table says to pass one for a key that changes.", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Skill guidance is unaffected: stores keep the same state/get/setState/subscribe API, providers behave the same, and warnings still appear in development.", "evidence": [ - "packages/lit-hotkeys/skills/lit-hotkeys/SKILL.md:77", - "packages/lit-hotkeys/src/controllers/key-hold.ts" + "grep of skills for store, subscribe, warning, and checkHotkey wording; the two warning mentions remain accurate." ] }, "skill:packages/octane-hotkeys/skills/octane-hotkeys/SKILL.md": { - "fingerprint": "55fef972ae50ce2281d49d86e438163721f03630d5abdffcc8d339a18e445e48", + "fingerprint": "6cbabd9749a35db5ac7850d4942e5bf7fd031547b610e34a676b803101988d12", "snapshot": { "docs/framework/octane/guides/hotkeys-provider-and-scopes.md": "dc7777e8f789243ba9ebe3eadbd38d29de73e4f21326ef73ee6fe2fc3bd124a4", "docs/framework/octane/quick-start.md": "2ddb77d76eefae05feb5183206687bf4fd4ac3b18e43cc5e51a934b361702ea1", "packages/octane-hotkeys/skills/octane-hotkeys/SKILL.md": "2d8f1849449ed280c1d899737fa388e3f40528b04954d96fe33be1a11b422d44", "packages/octane-hotkeys/skills/octane-hotkeys/references/app-hotkeys.md": "d3fece68756bcaa2cf9d99454b655bf8dd0c0b1e8a8340c5b2cceae37390d523", - "packages/octane-hotkeys/src/HotkeysProvider.ts": "1a14911ef8b89e4cd1a680ca406c4f2fede02e97df85f378bf18200f79d6ec33", + "packages/octane-hotkeys/src/HotkeysProvider.ts": "095d2d94acc5ee9872bc8619b40602644f2da45cc3340aad6928d6b0f2c0c15f", "packages/octane-hotkeys/src/useAppHotkeys.ts": "4884113fa09d9869baf8af1f3bb07ba72558308a03136b3c1b59feb49ce2efbb", "packages/octane-hotkeys/src/useHotkey.ts": "9bdb7abb153435073d490d99e704e2e6ef5000f425308f640e3a4ef68317657e", "packages/octane-hotkeys/src/useHotkeys.ts": "f864ed03975e9930638cfe9025639619ebdb2c975a55e6950199cba86cb70476" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", - "outcome": "updated", - "reason": "Hint rows now say an element-targeted hotkey needs focus inside its element; registration status described as enabled and in an active scope.", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Skill guidance is unaffected: stores keep the same state/get/setState/subscribe API, providers behave the same, and warnings still appear in development.", "evidence": [ - "packages/hotkeys/src/hotkey-manager.ts", - "packages/octane-hotkeys/skills/octane-hotkeys/SKILL.md" + "grep of skills for store, subscribe, warning, and checkHotkey wording; the two warning mentions remain accurate." ] }, "skill:packages/preact-hotkeys/skills/preact-hotkeys/SKILL.md": { - "fingerprint": "8bce0b7e47e8f642d0227363e184a401c78fc344beca15d037557642583b7cc8", + "fingerprint": "fb9f90f149cdc12c2a72c64b86017bfd85c420d5d640a0b1e73f42f48100a91b", "snapshot": { "docs/framework/preact/guides/hotkeys-provider-and-scopes.md": "a62b9cc8ee9e760ade6513e4c4db26c2dc690effa81d4917e68008b2cdfc8de0", "docs/framework/preact/quick-start.md": "ee1204420dd5acb198b2a15d239a062fee761fa0c6288913776c5e7e72b6bcb1", "packages/preact-hotkeys/skills/preact-hotkeys/SKILL.md": "d92ebbb92614e1c5f8b32c29bd651f64a71071e18e28fe2ff817d64fe57ee203", "packages/preact-hotkeys/skills/preact-hotkeys/references/app-hotkeys.md": "4388ff0528e9ea44f819896f2687ab962735479cdafaddd1e349dd1bf6dc5479", - "packages/preact-hotkeys/src/HotkeysProvider.tsx": "046840019caa15b1a0b8a3dad37585f9e92c9a1324a855e5b5921da074033978", + "packages/preact-hotkeys/src/HotkeysProvider.tsx": "8f4ca366a917f830f421dd126ae5437dfec17a2008a4670f5adf4d0bfa7453f7", "packages/preact-hotkeys/src/useAppHotkeys.ts": "023eff9348a9209a2e3e99a2b9847da3be72206f98150b478dae81a215059577", "packages/preact-hotkeys/src/useHotkey.ts": "3a557416b1d8699c018aea0e1787c1b9cbfc161bdba0ecdcce3fb2a5de44f5b9", "packages/preact-hotkeys/src/useHotkeys.ts": "23ccd2ee8566bc62a8bca00c8a1c40fc4d37c8363b891667ae391f3e44bfa97b", "packages/preact-hotkeys/src/utils.ts": "930ee95e471c879bfcc32886c31128d702d92719b23c4bd8c06aa21e324502e9" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", - "outcome": "updated", - "reason": "Hint rows now say an element-targeted hotkey needs focus inside its element; registration status described as enabled and in an active scope.", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Skill guidance is unaffected: stores keep the same state/get/setState/subscribe API, providers behave the same, and warnings still appear in development.", "evidence": [ - "packages/hotkeys/src/hotkey-manager.ts", - "packages/preact-hotkeys/skills/preact-hotkeys/SKILL.md" + "grep of skills for store, subscribe, warning, and checkHotkey wording; the two warning mentions remain accurate." ] }, "skill:packages/react-hotkeys/skills/react-hotkeys/SKILL.md": { - "fingerprint": "f5a95f6bbeac7e398901b72d4fb3bca1889f65bbb9bd63741e78053e5ad24706", + "fingerprint": "0ec3b4b0a715056a491068c4d5945c7b0f450f11bbb9e704710b768274a4b9fb", "snapshot": { "docs/framework/react/guides/hotkeys-provider-and-scopes.md": "1d39ab010d5bd99955b761dc7298987b332e15846546990dcf2a1ecfb5068469", "docs/framework/react/quick-start.md": "d587fccff19a0cf3c131f832a8eb423d5d4892e78e521aa856fd23485015afe7", "packages/react-hotkeys/skills/react-hotkeys/SKILL.md": "cfdd50d7cfdca297ce856fbf4c3510ca7d25759eecf7da285b9a7c5f4e7ed0dd", "packages/react-hotkeys/skills/react-hotkeys/references/app-hotkeys.md": "e45854b2346700249569ce418b0bb5593cd00a018336a60c9ed5cedeb8d49b3e", - "packages/react-hotkeys/src/HotkeysProvider.tsx": "4e5604bfc2907232bdab60c6ed24a28f4b363dfac1c19883a0c65db6b5ac5bf1", + "packages/react-hotkeys/src/HotkeysProvider.tsx": "21e03be367d39ac92fcb6de10ffea4daad66584d4a7aba6b8c4faa3933874efd", "packages/react-hotkeys/src/useAppHotkeys.ts": "eec5d9a2e281ab8892c56b9482cd930a06deb176581bba9cb409faa35b1bee91", "packages/react-hotkeys/src/useHotkey.ts": "01c7e0b8de39f75028a6eec04abf5eb2cf6fb410177a24603e719eb90c030661", "packages/react-hotkeys/src/useHotkeys.ts": "18fc224f0ec5efee2553fde4840dda78ec0ec7e5dcb2f812279bafcc2384184e", @@ -215,100 +207,97 @@ "packages/react-hotkeys/tests/skills/shortcut-settings/solution.tsx": "23a9dd46565c8617361bad3bcf24903c6d2d0c1db8c5e16b66ee5a7bc02fc62b", "packages/react-hotkeys/tests/skills/shortcut-settings/task.md": "1104e51ba1cb603b145b5eece30197d2e2936e21b1592ea75004244d49fcadd1" }, - "head": "41f06c51a38fac64409a3d4932cc8958f558ae57", - "outcome": "updated", - "reason": "HotkeysProvider and the hooks now ship with 'use client', so a server layout can render HotkeysProvider without a wrapper. Hooks still run only in client components, which the skill keeps.", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Skill guidance is unaffected: stores keep the same state/get/setState/subscribe API, providers behave the same, and warnings still appear in development.", "evidence": [ - "packages/react-hotkeys/src/HotkeysProvider.tsx", - "scripts/verify-package.ts", - "Next.js 16.4.3 build with a server layout rendering HotkeysProvider and HotkeysDevtoolsPanel passes, and K fires in next start and next dev; published 0.17.0 fails with \"createContext is not a function\"", - "pnpm test:lib for @tanstack/react-hotkeys passes, including the skill task checks" + "grep of skills for store, subscribe, warning, and checkHotkey wording; the two warning mentions remain accurate." ] }, "skill:packages/solid-hotkeys/skills/solid-hotkeys/SKILL.md": { - "fingerprint": "88cfb62da79d753f62eebbc66b5c386aaec4b4b7513776811da0fcda1d4202e5", + "fingerprint": "e1bd2285581f4baf2b97b031e0b59a4c5d9a5a7efbc0e11b3ece81df73d2d7db", "snapshot": { "docs/framework/solid/guides/hotkeys-provider-and-scopes.md": "4c68bc0acc2a0dfafabf52cb36ac787dc7e197b69c2e9641c1c94ed8cc32f796", "docs/framework/solid/quick-start.md": "292bf5cc6300e899c6f382e263665a488899fa816bb13ad4994420e390bb2420", "packages/solid-hotkeys/skills/solid-hotkeys/SKILL.md": "993952b562135b26ef21c97fb5caa2886f405370b93de22db30f689ebb4199d7", "packages/solid-hotkeys/skills/solid-hotkeys/references/app-hotkeys.md": "d3dda6cd9aa0a8655aa43f017490797ad3d2de42206446b2403363873b84b133", - "packages/solid-hotkeys/src/HotkeysProvider.tsx": "3e6ffd504bfb44458c880cba41ac5fc146ba1de88b10854119f32a71134f2953", + "packages/solid-hotkeys/src/HotkeysProvider.tsx": "407d6522c55e22adb76b77adeea75ae05c1faa0008233280a49ce40fac0dbca8", "packages/solid-hotkeys/src/appHotkeys.ts": "5d44d8ce952af7a3e522fd42511a963e9af75c4229a2449cde16a180c6f030f2", "packages/solid-hotkeys/src/createHotkey.ts": "afef9eab39dee5a7500fe2f630132ea7f72e3df49fa1abacb9b035c58c5bb971", "packages/solid-hotkeys/src/createHotkeys.ts": "a84dbede2c8bdda995d73a02353619a721282e1a92a44127108da54d1d0b821a" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", - "outcome": "updated", - "reason": "Hint rows now say an element-targeted hotkey needs focus inside its element; registration status described as enabled and in an active scope.", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Skill guidance is unaffected: stores keep the same state/get/setState/subscribe API, providers behave the same, and warnings still appear in development.", "evidence": [ - "packages/hotkeys/src/hotkey-manager.ts", - "packages/solid-hotkeys/skills/solid-hotkeys/SKILL.md" + "grep of skills for store, subscribe, warning, and checkHotkey wording; the two warning mentions remain accurate." ] }, "skill:packages/svelte-hotkeys/skills/svelte-hotkeys/SKILL.md": { - "fingerprint": "aaa74fe01f59f06b3a7eab35118eea3d617ff1e626139d07249ed8027641e64d", + "fingerprint": "3adb1b93b28217e91bfd446af439e2ecfd8132527ca2f8c29380c3e2c4d4ab79", "snapshot": { "docs/framework/svelte/guides/hotkeys-provider-and-scopes.md": "49c87f7d1e0fdcef47d08af80339b26c7e560ea2265e0a5c83983d8b157432fd", "docs/framework/svelte/quick-start.md": "dac9d02db91eaf3aed4eba39d6fb31a4a460bb3f84ba85c0576d3573b5ecf3d1", "packages/svelte-hotkeys/skills/svelte-hotkeys/SKILL.md": "d99ef59e6a695be73d48b954a337d5c91f471268bad8da590a7b4d72f1a8a1c4", "packages/svelte-hotkeys/skills/svelte-hotkeys/references/app-hotkeys.md": "fa0dd67192d53cc1a6cacc87b68523a9a2c94ca0c27b90b10a46861643885a2e", - "packages/svelte-hotkeys/src/HotkeysCtx.ts": "117d9625215435b7a3eb6c5a9f23792a02548059ba114b5737a6b9fb610b276c", + "packages/svelte-hotkeys/src/HotkeysCtx.ts": "cb6ec20db21783583aa330bb2f41130f415a2185af8fbe84f9b2332a73f8ab1d", "packages/svelte-hotkeys/src/HotkeysProvider.svelte": "eb7fb67907a153aae3f0ce61e951e8ea5df46468ae06eb55ad696500839124a3", "packages/svelte-hotkeys/src/createHotkey.svelte.ts": "27959499674a4dbfeb048073807baf540586d0f0a63a0dbdde0246c7aa939706", "packages/svelte-hotkeys/src/createHotkeyRecorder.svelte.ts": "c18505d6f49d5c2300ab38f3de14f9d007d5c3857b503168d0bad6ae85479ffe", "packages/svelte-hotkeys/src/createHotkeys.svelte.ts": "39f0c7ff089f96d616583e011172ff9500211de9a97367b7148b3e8ab3be35a3", "packages/svelte-hotkeys/src/getAppHotkeys.svelte.ts": "a6a995eea5b1334baef1909da68dea08f8df4e29819bada3549c9a0be86e6dcb" }, - "head": "614339f8f59a0776451f4ccc64cb5cadc20fd145", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Recorder start without a document and Svelte recorder teardown timing are internal; the skill describes neither.", - "evidence": ["packages/svelte-hotkeys/src/createHotkeyRecorder.svelte.ts"] + "reason": "Skill guidance is unaffected: stores keep the same state/get/setState/subscribe API, providers behave the same, and warnings still appear in development.", + "evidence": [ + "grep of skills for store, subscribe, warning, and checkHotkey wording; the two warning mentions remain accurate." + ] }, "skill:packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md": { - "fingerprint": "1b9ebaa1dcfb7b147bbed4cf7ac118c3d9eecb27b8c278bb42e2909a55d9c9f2", + "fingerprint": "f8f022b5b50955435a3b1696d9e6968bd4bf982c33ab7bb124ee78cdc83aaed1", "snapshot": { "docs/framework/vue/guides/hotkeys-provider-and-scopes.md": "405eb90a8209f439db06d2e3d861acaa324b6598488c1705575ad56dccbb6ad3", "docs/framework/vue/quick-start.md": "80bedac58ab9aee3b4bc5f59582b5b836c37fe14f08ab670eababf88a45e76c2", "packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md": "565e5d5f33ed757855f0a3bcc78d65a191e52c1e3f33f9bf3dc534a4c0e70d3f", "packages/vue-hotkeys/skills/vue-hotkeys/references/app-hotkeys.md": "326ee1fe20c1d75a4ad720f69a3a4df9b9e3a057826115e955deb0ed25d88f9a", "packages/vue-hotkeys/src/HotkeysProvider.tsx": "ad40dec6e2889ca62f3fda57fcbf67e940f4dab5a26cdc69ff99777d2d2e56af", - "packages/vue-hotkeys/src/HotkeysProviderContext.ts": "9ba86a812416beebe46c86d9e0ffff996e36b7fcb074f6d92ce771c326f1f2c9", + "packages/vue-hotkeys/src/HotkeysProviderContext.ts": "14a7d15fa69fc059eccb5fa5e663e533d3437d7d11d89d452ffffd1a570774ea", "packages/vue-hotkeys/src/useAppHotkeys.ts": "924ed5dedd6451332545026bd94441eb7f72cfb4f3c2c07880f34ee652574967", "packages/vue-hotkeys/src/useHotkey.ts": "a1c8ed560f921e3af2adf0f8e54e9df8e6516516c6697f19a52bf629ec62e106", "packages/vue-hotkeys/src/useHotkeyRecorder.ts": "7505949604490126567f9b61bb4d5c7d5ad05c2004e67a33dba979651014176c", "packages/vue-hotkeys/src/useHotkeys.ts": "f971e9938eca3188b3af0fcc96d095330f9f6abfd70cb848d2de5c80f8d09639" }, - "head": "5053876bbd97d6b056cef9eddddcc4e28c249aba", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "The skill still holds: its default advice is to call composables synchronously in setup, and it makes no SSR, effectScope, or useKeyHold-key claims that this fix changes.", + "reason": "Skill guidance is unaffected: stores keep the same state/get/setState/subscribe API, providers behave the same, and warnings still appear in development.", "evidence": [ - "packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md:76", - "packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md:70" + "grep of skills for store, subscribe, warning, and checkHotkey wording; the two warning mentions remain accurate." ] }, "planning:_artifacts": { - "fingerprint": "0be894085ff8415c5482951d2b5f5709fa0a721b76248abd70fd5e7e4550deec", + "fingerprint": "cc29bd4ca440d60d07f07c28f07f60701df0a46e7a90329848b8c5150d633767", "snapshot": { "_artifacts/domain_map.yaml": "2563ba9b2d472df81206a62b1add175bd3341b9bb99bd51869c305746f2a4a46", "_artifacts/skill_spec.md": "58e19f35836571a37984e4435168651a2936dffb48ffe01cc7fddcc0eafea916", "_artifacts/skill_tree.yaml": "c7e0b30458bd11e3a52e728163838166def6ee64419f1b632f1ea36a37e573af", - "docs/framework/alpine/guides/app-hotkeys.md": "536c327d4d9f80219a0dcdd04bb36b684c35567ad76f86327287ae6a21f03199", + "docs/framework/alpine/guides/app-hotkeys.md": "8cb047cb3397588fdbde4684302a74f4c95dd4b37924f6ee761cb19becfeb22b", "docs/framework/alpine/quick-start.md": "de471401f70d66c2a81182f917f6eef02d808bdda1a2bc6268a6aa1e5365000c", "docs/framework/angular/guides/provide-hotkeys-and-scopes.md": "003fba191e3d13d4466754644c4d2174a550f48d437028bc163ba6acca6546ad", "docs/framework/angular/quick-start.md": "d1cc5f91cd50b579c8a4bd9811e76862308855ce602556e4fa36561bc7d62822", - "docs/framework/ember/guides/app-hotkeys.md": "5162292b3d62257c757ea0146fb5b1cc8c85b130081472b3675be077e8c898de", + "docs/framework/ember/guides/app-hotkeys.md": "55e039d2123ed08ce41eae438293816885d705d79620df68f4aef339f632e2c2", "docs/framework/ember/quick-start.md": "cabdc0cbd2b9ac6d4d7f9f2c8b8d3fc6ef2ac8c23df4cd8ebc9745c99023f8c8", - "docs/framework/lit/guides/app-hotkeys.md": "0a2b2dafa00bb21f575d4ac752f0b54803a69fff12a4391cf3a86e59f6471e1f", + "docs/framework/lit/guides/app-hotkeys.md": "ab56f3c56e60dc8c12253eb9c48156438dd802e6514eaf2c07c4efa821e153e8", "docs/framework/lit/quick-start.md": "cb51d2c81a8d9288d435af6e54366188c4175b9f18a434fbb85643eb13856ae4", "docs/framework/octane/guides/hotkeys-provider-and-scopes.md": "dc7777e8f789243ba9ebe3eadbd38d29de73e4f21326ef73ee6fe2fc3bd124a4", "docs/framework/octane/quick-start.md": "2ddb77d76eefae05feb5183206687bf4fd4ac3b18e43cc5e51a934b361702ea1", "docs/framework/preact/guides/hotkeys-provider-and-scopes.md": "a62b9cc8ee9e760ade6513e4c4db26c2dc690effa81d4917e68008b2cdfc8de0", "docs/framework/preact/quick-start.md": "ee1204420dd5acb198b2a15d239a062fee761fa0c6288913776c5e7e72b6bcb1", - "docs/framework/react/guides/app-hotkeys.md": "703f9dcea282a1b5cd7cabcd304a233cfda8d79206d3d66d3b024142e5175d24", + "docs/framework/react/guides/app-hotkeys.md": "f518acca820445dfefde7a8db57f492022def97b96041f1d16573a2851ffa03e", "docs/framework/react/guides/cheat-sheet-ui-helpers.md": "a3f793e81c6a6e1e6aaf3d63c6b79114ea7d6f461123d371c0b4f0a23ffd88bc", "docs/framework/react/guides/custom-hotkey-recording.md": "ea9b70d7bbeb5846b0284e843960bf667b2ae6ffbe85742fb5ba332de170ca29", "docs/framework/react/guides/hotkeys-provider-and-scopes.md": "1d39ab010d5bd99955b761dc7298987b332e15846546990dcf2a1ecfb5068469", - "docs/framework/react/guides/hotkeys.md": "4d12140117ce4ceb3fb9bc17867efe30ae7085609714800e962c927ce07f019f", + "docs/framework/react/guides/hotkeys.md": "1591b315e7f0581265287b04210978fd4b0b85487070e744f7f52e1648e01ebf", "docs/framework/react/guides/sequences.md": "e66231380dab6222508a1305d83586459b59953c2ecc47b9549e3cb29ffcd355", "docs/framework/react/quick-start.md": "d587fccff19a0cf3c131f832a8eb423d5d4892e78e521aa856fd23485015afe7", "docs/framework/solid/guides/hotkeys-provider-and-scopes.md": "4c68bc0acc2a0dfafabf52cb36ac787dc7e197b69c2e9641c1c94ed8cc32f796", @@ -317,20 +306,20 @@ "docs/framework/svelte/quick-start.md": "dac9d02db91eaf3aed4eba39d6fb31a4a460bb3f84ba85c0576d3573b5ecf3d1", "docs/framework/vue/guides/hotkeys-provider-and-scopes.md": "405eb90a8209f439db06d2e3d861acaa324b6598488c1705575ad56dccbb6ad3", "docs/framework/vue/quick-start.md": "80bedac58ab9aee3b4bc5f59582b5b836c37fe14f08ab670eababf88a45e76c2", - "docs/guides/sensible-defaults.md": "2f03b09f3d0f8af626d1ce52772148662ae0a4a2f03b1b428fb227cd7580e8bf", + "docs/guides/sensible-defaults.md": "f104881097a435a8f4874f969cef3d59e2ef17ec97f5a8c121ba303d036539b7", "packages/alpine-hotkeys/skills/alpine-hotkeys/SKILL.md": "8c0a3ab25f684d8445925d43dbadabb4e491b12001d78811cbf0d3f41db044c8", "packages/alpine-hotkeys/skills/alpine-hotkeys/references/app-hotkeys.md": "fdc12aafd6098bde8b4e7f5d8a8afb12227ac99cd753e06fc27401d5d8c8fead", "packages/alpine-hotkeys/src/createAppHotkeys.ts": "f712ddb3354230197eb54d6f270d00a41c2b889e60690e70853569fe1a5207ea", "packages/alpine-hotkeys/src/createHotkey.ts": "3ee3029171f53f3693980bc975252b3decea27c1920ccc0ec1dd8fe2b3810c9b", "packages/alpine-hotkeys/src/createHotkeysScope.ts": "8fb6d17e8fe155327fdac17f9d057d6538c84474c1c464ee25409c23d52e7a85", "packages/alpine-hotkeys/src/hotkeysPlugin.ts": "35ffb8b772a178690d956f3b3a165b577c40d1723e186f5ffdef4a985f7be90b", - "packages/alpine-hotkeys/src/scope.ts": "33b2731c6f3754315a6b31fa8dff27805605835c3ae34aa62f92f6fd44d898a6", + "packages/alpine-hotkeys/src/scope.ts": "6de5d72206289c2ad4b3719cd69474450770cb006abf951f1419ed70a58bdb7c", "packages/angular-hotkeys/skills/angular-hotkeys/SKILL.md": "2b0e9e34fb1338d2db1657beffd8664906ef200388854cfc2895cf9f428e00d9", "packages/angular-hotkeys/skills/angular-hotkeys/references/app-hotkeys.md": "5fe1b12a519e8ca5087d78d47050f7a2ec0c70bb9b7d6ebcbb050ee099e3effe", - "packages/angular-hotkeys/src/hotkeys-provider.ts": "1e549ef79db70b5818326068c78ada5d410fdc680a4cb7ca12bdfd9d0de5d0dc", + "packages/angular-hotkeys/src/hotkeys-provider.ts": "778e52fcefb623255a58aac9ea9cc6267e1c9f127ef5bdfeb3594c1db16594de", "packages/angular-hotkeys/src/injectAppHotkeys.ts": "3161186944b142feab034a1899b76b178700f4ef371bfffbb694b9ed5a191d32", "packages/angular-hotkeys/src/injectHotkey.ts": "b3651b50beb5b94cdadaf3339be17984e79277222918550f53448fca511e0af6", - "packages/angular-hotkeys/src/injectHotkeyRecorder.ts": "46db59ccc34f8158c98328ae152f47cdd182cdeef951bf9dc5c44fa12de1b305", + "packages/angular-hotkeys/src/injectHotkeyRecorder.ts": "f99727fccffca18b9c959611c29826e4ae4fa4767de53621cb8fca8e95646c48", "packages/angular-hotkeys/src/injectHotkeys.ts": "cecc7d127934caaab72a694fe527ef7a7b31e660f98cc077dabacd5506e11619", "packages/ember-hotkeys/skills/ember-hotkeys/SKILL.md": "ba4e5144d1b1e5435ffda905009c40b343b8cd829a93ec9553afc576d2388acc", "packages/ember-hotkeys/skills/ember-hotkeys/references/app-hotkeys.md": "b6200c97df720970117aefe3d2003817fdf7aa4d869437341e75245dcd0c9602", @@ -345,10 +334,10 @@ "packages/hotkeys/skills/hotkeys-core/SKILL.md": "507ec6b32b7b1836276ee6527acdb3240f998d72dfb90f07c9e9820e688e8714", "packages/hotkeys/skills/hotkeys-core/references/scopes.md": "1ae616ff7ce92d9679bbd0752ada572c2060c33ea7e7e638bfcc9d5425ac6bfa", "packages/hotkeys/skills/hotkeys-core/references/testing.md": "90e6512868c194f6c906711cd16882c204600a3118b08b7a101ff6b409012538", - "packages/hotkeys/src/app-hotkeys.ts": "5bee8b0042a7385c8963aabf9b0ca7b6aad5ef8aab41b2759961a7ac6cf6849c", + "packages/hotkeys/src/app-hotkeys.ts": "d1fc00e69777f9960da51c7ca02895caa8c001e52fb2b2bff1c1bb731450b3ed", "packages/hotkeys/src/conflicts.ts": "750fe91126e87f062500d11d9bf19116d77c8509fdaa7644c847d49f1cbf40a3", - "packages/hotkeys/src/hotkey-manager.ts": "2507330b7cdcd986ae624d5ad9526516d48d9bc34228d7de9efd7f4bc2440229", - "packages/hotkeys/src/hotkey-recorder.ts": "972b374bc2e18a06c09da8595ea29dfa13d62a28c2e503174eb18a02fcc40daf", + "packages/hotkeys/src/hotkey-manager.ts": "c824e47f3101b0cd7078894e74083455fdd55e407cf9a7511bd4e0c6668da4a0", + "packages/hotkeys/src/hotkey-recorder.ts": "082148a59db861e2f3b57495b4d70ae85dc0fdb086f42acb0a0294cf17e374ec", "packages/hotkeys/src/match.ts": "3a50921a68f79183b4ffac98e07e7fdf043711bc071f419c9cdc03422d25f268", "packages/lit-hotkeys/skills/lit-hotkeys/SKILL.md": "ecd0100b52a00fc90ce71f244093da667d0c5ff78ecaf632d9db26f1c66c8e40", "packages/lit-hotkeys/skills/lit-hotkeys/references/app-hotkeys.md": "659ca9bebf4200bb693c693addb17bd5a943904e482514f2014f5ca426629e96", @@ -358,20 +347,20 @@ "packages/lit-hotkeys/src/decorators/hotkey.ts": "2730f3178f6e5f6695fa0c2f8d25d7040c2ff841d3de486acffef86cfc76395f", "packages/octane-hotkeys/skills/octane-hotkeys/SKILL.md": "2d8f1849449ed280c1d899737fa388e3f40528b04954d96fe33be1a11b422d44", "packages/octane-hotkeys/skills/octane-hotkeys/references/app-hotkeys.md": "d3fece68756bcaa2cf9d99454b655bf8dd0c0b1e8a8340c5b2cceae37390d523", - "packages/octane-hotkeys/src/HotkeysProvider.ts": "1a14911ef8b89e4cd1a680ca406c4f2fede02e97df85f378bf18200f79d6ec33", + "packages/octane-hotkeys/src/HotkeysProvider.ts": "095d2d94acc5ee9872bc8619b40602644f2da45cc3340aad6928d6b0f2c0c15f", "packages/octane-hotkeys/src/useAppHotkeys.ts": "4884113fa09d9869baf8af1f3bb07ba72558308a03136b3c1b59feb49ce2efbb", "packages/octane-hotkeys/src/useHotkey.ts": "9bdb7abb153435073d490d99e704e2e6ef5000f425308f640e3a4ef68317657e", "packages/octane-hotkeys/src/useHotkeys.ts": "f864ed03975e9930638cfe9025639619ebdb2c975a55e6950199cba86cb70476", "packages/preact-hotkeys/skills/preact-hotkeys/SKILL.md": "d92ebbb92614e1c5f8b32c29bd651f64a71071e18e28fe2ff817d64fe57ee203", "packages/preact-hotkeys/skills/preact-hotkeys/references/app-hotkeys.md": "4388ff0528e9ea44f819896f2687ab962735479cdafaddd1e349dd1bf6dc5479", - "packages/preact-hotkeys/src/HotkeysProvider.tsx": "046840019caa15b1a0b8a3dad37585f9e92c9a1324a855e5b5921da074033978", + "packages/preact-hotkeys/src/HotkeysProvider.tsx": "8f4ca366a917f830f421dd126ae5437dfec17a2008a4670f5adf4d0bfa7453f7", "packages/preact-hotkeys/src/useAppHotkeys.ts": "023eff9348a9209a2e3e99a2b9847da3be72206f98150b478dae81a215059577", "packages/preact-hotkeys/src/useHotkey.ts": "3a557416b1d8699c018aea0e1787c1b9cbfc161bdba0ecdcce3fb2a5de44f5b9", "packages/preact-hotkeys/src/useHotkeys.ts": "23ccd2ee8566bc62a8bca00c8a1c40fc4d37c8363b891667ae391f3e44bfa97b", "packages/preact-hotkeys/src/utils.ts": "930ee95e471c879bfcc32886c31128d702d92719b23c4bd8c06aa21e324502e9", "packages/react-hotkeys/skills/react-hotkeys/SKILL.md": "cfdd50d7cfdca297ce856fbf4c3510ca7d25759eecf7da285b9a7c5f4e7ed0dd", "packages/react-hotkeys/skills/react-hotkeys/references/app-hotkeys.md": "e45854b2346700249569ce418b0bb5593cd00a018336a60c9ed5cedeb8d49b3e", - "packages/react-hotkeys/src/HotkeysProvider.tsx": "4e5604bfc2907232bdab60c6ed24a28f4b363dfac1c19883a0c65db6b5ac5bf1", + "packages/react-hotkeys/src/HotkeysProvider.tsx": "21e03be367d39ac92fcb6de10ffea4daad66584d4a7aba6b8c4faa3933874efd", "packages/react-hotkeys/src/useAppHotkeys.ts": "eec5d9a2e281ab8892c56b9482cd930a06deb176581bba9cb409faa35b1bee91", "packages/react-hotkeys/src/useHotkey.ts": "01c7e0b8de39f75028a6eec04abf5eb2cf6fb410177a24603e719eb90c030661", "packages/react-hotkeys/src/useHotkeys.ts": "18fc224f0ec5efee2553fde4840dda78ec0ec7e5dcb2f812279bafcc2384184e", @@ -395,13 +384,13 @@ "packages/react-hotkeys/tests/skills/shortcut-settings/task.md": "1104e51ba1cb603b145b5eece30197d2e2936e21b1592ea75004244d49fcadd1", "packages/solid-hotkeys/skills/solid-hotkeys/SKILL.md": "993952b562135b26ef21c97fb5caa2886f405370b93de22db30f689ebb4199d7", "packages/solid-hotkeys/skills/solid-hotkeys/references/app-hotkeys.md": "d3dda6cd9aa0a8655aa43f017490797ad3d2de42206446b2403363873b84b133", - "packages/solid-hotkeys/src/HotkeysProvider.tsx": "3e6ffd504bfb44458c880cba41ac5fc146ba1de88b10854119f32a71134f2953", + "packages/solid-hotkeys/src/HotkeysProvider.tsx": "407d6522c55e22adb76b77adeea75ae05c1faa0008233280a49ce40fac0dbca8", "packages/solid-hotkeys/src/appHotkeys.ts": "5d44d8ce952af7a3e522fd42511a963e9af75c4229a2449cde16a180c6f030f2", "packages/solid-hotkeys/src/createHotkey.ts": "afef9eab39dee5a7500fe2f630132ea7f72e3df49fa1abacb9b035c58c5bb971", "packages/solid-hotkeys/src/createHotkeys.ts": "a84dbede2c8bdda995d73a02353619a721282e1a92a44127108da54d1d0b821a", "packages/svelte-hotkeys/skills/svelte-hotkeys/SKILL.md": "d99ef59e6a695be73d48b954a337d5c91f471268bad8da590a7b4d72f1a8a1c4", "packages/svelte-hotkeys/skills/svelte-hotkeys/references/app-hotkeys.md": "fa0dd67192d53cc1a6cacc87b68523a9a2c94ca0c27b90b10a46861643885a2e", - "packages/svelte-hotkeys/src/HotkeysCtx.ts": "117d9625215435b7a3eb6c5a9f23792a02548059ba114b5737a6b9fb610b276c", + "packages/svelte-hotkeys/src/HotkeysCtx.ts": "cb6ec20db21783583aa330bb2f41130f415a2185af8fbe84f9b2332a73f8ab1d", "packages/svelte-hotkeys/src/HotkeysProvider.svelte": "eb7fb67907a153aae3f0ce61e951e8ea5df46468ae06eb55ad696500839124a3", "packages/svelte-hotkeys/src/createHotkey.svelte.ts": "27959499674a4dbfeb048073807baf540586d0f0a63a0dbdde0246c7aa939706", "packages/svelte-hotkeys/src/createHotkeyRecorder.svelte.ts": "c18505d6f49d5c2300ab38f3de14f9d007d5c3857b503168d0bad6ae85479ffe", @@ -410,16 +399,18 @@ "packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md": "565e5d5f33ed757855f0a3bcc78d65a191e52c1e3f33f9bf3dc534a4c0e70d3f", "packages/vue-hotkeys/skills/vue-hotkeys/references/app-hotkeys.md": "326ee1fe20c1d75a4ad720f69a3a4df9b9e3a057826115e955deb0ed25d88f9a", "packages/vue-hotkeys/src/HotkeysProvider.tsx": "ad40dec6e2889ca62f3fda57fcbf67e940f4dab5a26cdc69ff99777d2d2e56af", - "packages/vue-hotkeys/src/HotkeysProviderContext.ts": "9ba86a812416beebe46c86d9e0ffff996e36b7fcb074f6d92ce771c326f1f2c9", + "packages/vue-hotkeys/src/HotkeysProviderContext.ts": "14a7d15fa69fc059eccb5fa5e663e533d3437d7d11d89d452ffffd1a570774ea", "packages/vue-hotkeys/src/useAppHotkeys.ts": "924ed5dedd6451332545026bd94441eb7f72cfb4f3c2c07880f34ee652574967", "packages/vue-hotkeys/src/useHotkey.ts": "a1c8ed560f921e3af2adf0f8e54e9df8e6516516c6697f19a52bf629ec62e106", "packages/vue-hotkeys/src/useHotkeyRecorder.ts": "7505949604490126567f9b61bb4d5c7d5ad05c2004e67a33dba979651014176c", "packages/vue-hotkeys/src/useHotkeys.ts": "f971e9938eca3188b3af0fcc96d095330f9f6abfd70cb848d2de5c80f8d09639" }, - "head": "210b3fb5577b3e7381a7c74d70e87cf395ae6682", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Guide rewording of the fallback rule; no planned skill covers it.", - "evidence": ["docs/guides/sensible-defaults.md"] + "reason": "Planning artifacts describe skill coverage, which this internal bundle-size change does not alter.", + "evidence": [ + "No new public API beyond adapter-only helpers (createAppHotkeysStore, createStore, Store type)." + ] }, "source:.changeset/intent-skills.md": { "fingerprint": "a3f3a7466ee28fed505a518e9cd18cfda96a2282d207d73317b00d60b4430f62", @@ -657,24 +648,28 @@ "evidence": ["docs/framework/vue/reference/functions/useHotkeyHint.md"] }, "source:docs/reference/classes/HotkeyManager.md": { - "fingerprint": "2e001a0c8ee96cfa4fd8fbaf62b3ff703401ab7925f881785eec132fa89e0363", + "fingerprint": "69d7ff1215b8220b8eae2a4c1e8fa9df2f61763ddf35f4cd1db39fc2bc875519", "snapshot": { - "docs/reference/classes/HotkeyManager.md": "af4aa6c79aa6891e36ed1158672a00a6681859b363554436aed724cd1d2c8a6e" + "docs/reference/classes/HotkeyManager.md": "fd793d8f28b18bee4df8dd30e4a9c7cd3024854db74c5c129cc3aa83b68d7c07" }, - "head": "1bce8190963414ca101441f91f103ee97eccd7f0", - "outcome": "out-of-scope", - "reason": "Test or generated reference file; no skill covers it.", - "evidence": ["docs/reference/classes/HotkeyManager.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/functions/getHotkeyManager.md": { - "fingerprint": "3fb605a9f34e5ffb27f7a6ec534b3ce8d15bfb4a9351c8b9cc1af387fc9770a9", + "fingerprint": "bd328730d65ed0c0c9e88d52a0331c36e26654071c78b786f735d6e62468eed1", "snapshot": { - "docs/reference/functions/getHotkeyManager.md": "6b6eb89ac5be86657a764ae482ed819617031f88765928050ecbadba0be750a6" + "docs/reference/functions/getHotkeyManager.md": "06489412a418aacde056367a882b421b7f7139c2d836052909ef7bc3f24d05c5" }, - "head": "1bce8190963414ca101441f91f103ee97eccd7f0", - "outcome": "out-of-scope", - "reason": "Test or generated reference file; no skill covers it.", - "evidence": ["docs/reference/functions/getHotkeyManager.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:examples/alpine/kitchen-sink/index.html": { "fingerprint": "cafd21ca3305c89ad47e5c4eee4ce63feed831a2b3524c5b3cd756fee53a2592", @@ -847,14 +842,16 @@ "evidence": ["packages/alpine-hotkeys/tests/alpine-hotkeys.test.ts"] }, "source:packages/angular-hotkeys/src/injectHotkeyHint.ts": { - "fingerprint": "c63e2a9c79c4d18416e114a81e266db55e4c1757e1646dc561bf6a8cfbb27fc5", + "fingerprint": "66e66545af303788d81817e14877771d2ff310e41b9089f0fb7b053ad629c367", "snapshot": { - "packages/angular-hotkeys/src/injectHotkeyHint.ts": "f165695038618a9fe06df78768e5e9ebfc4cf08c6fd05232423e802f06d8b968" + "packages/angular-hotkeys/src/injectHotkeyHint.ts": "29b4c118bbeb85cadfbefb402d34c2ac741b0371e64ad950e21f901aeb069058" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Hint focus behavior and status wording are reflected in the skills updated in this review.", - "evidence": ["packages/angular-hotkeys/src/injectHotkeyHint.ts"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:packages/angular-hotkeys/tests/injectHotkeyHint.test.ts": { "fingerprint": "7c23d3e44ca48c830f5e5298173e523ba8fc3a6864d359e34bb2be484fcc4fcb", @@ -917,14 +914,16 @@ "evidence": ["packages/lit-hotkeys/tests/hotkey-hint.spec.ts"] }, "source:packages/octane-hotkeys/src/useHotkeyHint.ts": { - "fingerprint": "10736a6674ada040f25a5c71fe0525b6d7baa9b74d0f4b2b23e8741af5883231", + "fingerprint": "a79eb2cad5c035ff2eabcae4d0c5e94ea90463b5c9d4170c7ceb63ec657b60a3", "snapshot": { - "packages/octane-hotkeys/src/useHotkeyHint.ts": "f3e5f5d85948f5fe3ff222c5f1483e493e85353499a97afab4aa8105d1181b5e" + "packages/octane-hotkeys/src/useHotkeyHint.ts": "fcfdbbc70d06541993688eb0d5da8be6dfb38a1a3475e78867439034fe59c61e" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Hint focus behavior and status wording are reflected in the skills updated in this review.", - "evidence": ["packages/octane-hotkeys/src/useHotkeyHint.ts"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:packages/octane-hotkeys/tests/octane-hotkeys.test.ts": { "fingerprint": "e7005d45a48c6e00b3333e498abaeca3b2ad7a121e5c4c55b037935c8e1c32aa", @@ -937,14 +936,16 @@ "evidence": ["packages/octane-hotkeys/tests/octane-hotkeys.test.ts"] }, "source:packages/preact-hotkeys/src/useHotkeyHint.ts": { - "fingerprint": "78eaa2b08c86d7da8deac7074d59122a6b9fddc0a9c01eac85b781fdc58fd41a", + "fingerprint": "74dc4822d56d8a9c7b66929946951dfb3887be85163c56d6d58fa9f2f7aaa6bd", "snapshot": { - "packages/preact-hotkeys/src/useHotkeyHint.ts": "fe0e029ef9667423aac24329a8e3c08474a46d14aaf9181a4d72755fd827bb6b" + "packages/preact-hotkeys/src/useHotkeyHint.ts": "2b9436eeb3776d604f4b02cff7bbe204aaeb44cb4268fb6e5d5b028fd8c76a23" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Hint focus behavior and status wording are reflected in the skills updated in this review.", - "evidence": ["packages/preact-hotkeys/src/useHotkeyHint.ts"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:packages/preact-hotkeys/tests/appHotkeys.test.tsx": { "fingerprint": "3b8ab01302de82b3cbdcf6d5e2a3758bac18d6ffb6466f95d5a93c5d5756c8e9", @@ -967,16 +968,15 @@ "evidence": ["packages/preact-hotkeys/tests/useHotkeyHint.test.tsx"] }, "source:packages/react-hotkeys/src/useHotkeyHint.ts": { - "fingerprint": "9ab705624e848526f4e4a1bf2b66c4326eb3bbe252c8e598dc031a188bca2c0f", + "fingerprint": "b898f1df1bc56a6779ba346c52a96e1ce4d1cb2d629a98c7d0bc33d12e402ef7", "snapshot": { - "packages/react-hotkeys/src/useHotkeyHint.ts": "39c39deb13b62e0b7bdf065d4c5b19419b7b682185de796479e5bfac9888a916" + "packages/react-hotkeys/src/useHotkeyHint.ts": "64d9768a0bc689d817dca5e688781852317ca7ed873beebdb6e99ac65cd895c0" }, - "head": "41f06c51a38fac64409a3d4932cc8958f558ae57", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Adds a 'use client' directive only. Hook behavior and signatures are unchanged; the React Server Components guidance is reviewed under the react-hotkeys skill item.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "packages/react-hotkeys/src/useHotkeyHint.ts", - "pnpm test:lib for @tanstack/react-hotkeys passes" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:packages/react-hotkeys/tests/appHotkeys.test.tsx": { @@ -1000,14 +1000,16 @@ "evidence": ["packages/react-hotkeys/tests/useHotkeyHint.test.tsx"] }, "source:packages/solid-hotkeys/src/createHotkeyHint.ts": { - "fingerprint": "4180b0d6c324483d380e9168c4fb1a11eee3bb130df87e372b14b7fabc8e40b3", + "fingerprint": "b8313f0e6b3a109bc2aa2645629ec609371a609a2ed63c6fa8dc7d1796d8ac20", "snapshot": { - "packages/solid-hotkeys/src/createHotkeyHint.ts": "715dea3b85dcbc7a448d978b2b316452d4f50b28f13b87a354d1ab2cbb1fd317" + "packages/solid-hotkeys/src/createHotkeyHint.ts": "55de191118e6e3ea5ff113355e9010d8b125931eb47bbab7386be0a97b8e5c2a" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Hint focus behavior and status wording are reflected in the skills updated in this review.", - "evidence": ["packages/solid-hotkeys/src/createHotkeyHint.ts"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:packages/solid-hotkeys/tests/createHotkeyHint.test.tsx": { "fingerprint": "a7510a58a1dc5db0a12df33541f32b5891353c27670915c10a64a5266976439e", @@ -1060,260 +1062,280 @@ "evidence": ["packages/vue-hotkeys/tests/hints.test.ts"] }, "source:docs/framework/alpine/guides/hotkeys.md": { - "fingerprint": "28c1203dfc3cb40a9579e7c007cad2c7e91b5eb2b35651235beae2563a9e0bad", + "fingerprint": "ef17a8f64cf479ebeede5983150f8d382b2d1810e6e3bfbfe4d193608f0a3855", "snapshot": { - "docs/framework/alpine/guides/hotkeys.md": "e54c37d6d9f84176a7ed23ad2a32803b8d7c6922f8451ea766a9611577629d15" + "docs/framework/alpine/guides/hotkeys.md": "481770a893c9c1980a94fea576e04bdcced61f201fe75dc1b29014ae73da7efd" }, - "head": "9a3ab5127e79e94524708fab8af13ed0fe7715f7", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Docs explain when to leave preventDefault 'always' off; the hotkeys-core skill carries the same guidance.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/framework/alpine/guides/hotkeys.md", - "packages/hotkeys/skills/hotkeys-core/SKILL.md" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/framework/angular/guides/hotkeys.md": { - "fingerprint": "fa62a083ed097057d3126036cb6194ed42664e658bda4611ac4c0cf78d8fecbe", + "fingerprint": "a1dc97c8ec631f00d37828439df0eab53c0419b09eb69a5e7681e11c221ed8ea", "snapshot": { - "docs/framework/angular/guides/hotkeys.md": "c765b7188e90fd7199340ef8aba84f2e11f591e107e3b6d6b141395c78967279" + "docs/framework/angular/guides/hotkeys.md": "588d6076fce9e1d3d636ec6e54067fc06592ad01d3def0225feb1d6e6c557b14" }, - "head": "9a3ab5127e79e94524708fab8af13ed0fe7715f7", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Docs explain when to leave preventDefault 'always' off; the hotkeys-core skill carries the same guidance.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/framework/angular/guides/hotkeys.md", - "packages/hotkeys/skills/hotkeys-core/SKILL.md" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/framework/ember/guides/hotkeys.md": { - "fingerprint": "4cfa31d30f2644f90bce593835cdcb7058319530eda8ddd571707db8576a8506", + "fingerprint": "14091d72346b3fd4f99e1b8e0fc4619b828aaea7469e86d8492e0848662501f9", "snapshot": { - "docs/framework/ember/guides/hotkeys.md": "c37363e1e3c217ed3f9c20e4570be40799a9ccc4fdeafe1ec1426993147dee99" + "docs/framework/ember/guides/hotkeys.md": "c7532e8bdb779ec6a537731c8dc9a8e76e6d7f737406b3ed2d51ae149d240e7d" }, - "head": "9a3ab5127e79e94524708fab8af13ed0fe7715f7", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Docs explain when to leave preventDefault 'always' off; the hotkeys-core skill carries the same guidance.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/framework/ember/guides/hotkeys.md", - "packages/hotkeys/skills/hotkeys-core/SKILL.md" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/framework/lit/guides/hotkeys.md": { - "fingerprint": "d27f953fa42f5de387055a179563d9bc6bbf7baf49efaddfb7d9d575ae8ca19b", + "fingerprint": "f3df1393f9c0ca49101f06c5c2ff65453b98a25e0597f23d58a849174e70a526", "snapshot": { - "docs/framework/lit/guides/hotkeys.md": "ecd5098e45f237cc6d43d67f0f01fe89bb27d91f1d68078fe8f05801d57caa09" + "docs/framework/lit/guides/hotkeys.md": "28cf2dd54ac8e7abb3f80b732609277778dd230c126ffdc3fcc9bb2b096ee7d6" }, - "head": "86436b7b0a142b1d8e62fd4ae77f3c7c4ef118fa", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Review fixes: preventDefault 'always' now defers to live hotkeys on any listener, Lit controllers render on reconnect, Lit guide points to shared options. Skill guidance unchanged.", - "evidence": ["docs/framework/lit/guides/hotkeys.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/framework/octane/guides/hotkeys.md": { - "fingerprint": "c12021a09315d56b928f3f3755815e4448fc1b0147ea002de28872ce83dc4774", + "fingerprint": "005a08d2afe5774dce17b2aadcd29371fc63df226e2f54ae857d791cb11f88fa", "snapshot": { - "docs/framework/octane/guides/hotkeys.md": "3e8dcec3bda196a78b5560aaab6c43ec2328420eb58509e2a4561f55df84c790" + "docs/framework/octane/guides/hotkeys.md": "2f9b3e68a23266ab4af154df647b77e846c6acc8503173e4e6236867705882c4" }, - "head": "9a3ab5127e79e94524708fab8af13ed0fe7715f7", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Docs explain when to leave preventDefault 'always' off; the hotkeys-core skill carries the same guidance.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/framework/octane/guides/hotkeys.md", - "packages/hotkeys/skills/hotkeys-core/SKILL.md" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/framework/preact/guides/hotkeys.md": { - "fingerprint": "b22a52c066b3f83ae09ce11963ce2d988f673d40a4a303df520061f316995605", + "fingerprint": "769ba1a2775521384e0f8a9ddea8416547579bc1f3ba2d6c7ed5b1044a470eb1", "snapshot": { - "docs/framework/preact/guides/hotkeys.md": "39d690e8d4c0f5eb702bdf5bb625c79a91416a74f41afbcb5759d42e5b4452d7" + "docs/framework/preact/guides/hotkeys.md": "f22bd498c78d7cb7b96989e08e1e30da92c63589174d8c05e409554751c06349" }, - "head": "9a3ab5127e79e94524708fab8af13ed0fe7715f7", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Docs explain when to leave preventDefault 'always' off; the hotkeys-core skill carries the same guidance.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/framework/preact/guides/hotkeys.md", - "packages/hotkeys/skills/hotkeys-core/SKILL.md" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/framework/solid/guides/hotkeys.md": { - "fingerprint": "c17e1a4bdda646e06dd33412060aa14b7eebb0e813ed8f4281b803bee2f92197", + "fingerprint": "5c20b523d4cd954cd0af8eff70f359e17a7b6e5e2c366af225d6e32931482229", "snapshot": { - "docs/framework/solid/guides/hotkeys.md": "affc859e4f778f1541188df06874dfd62cfa6e313e5f68c35bb758773fe764c9" + "docs/framework/solid/guides/hotkeys.md": "ac9c66a9a4ee97882be9ab797be928a285b11209aecf710fdbfecb31791f3d46" }, - "head": "9a3ab5127e79e94524708fab8af13ed0fe7715f7", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Docs explain when to leave preventDefault 'always' off; the hotkeys-core skill carries the same guidance.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/framework/solid/guides/hotkeys.md", - "packages/hotkeys/skills/hotkeys-core/SKILL.md" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/framework/svelte/guides/hotkeys.md": { - "fingerprint": "a5dbd3cf955f8432cef58fcb370d2cf482d8a6d8b600d7f588d5141f292d311b", + "fingerprint": "75c0b6b5a4c0a7d2fc5b1f9bdff01b9de45950c8935180e27e453234ad5af1f7", "snapshot": { - "docs/framework/svelte/guides/hotkeys.md": "e33cf7db6371114f9fbc123a7090d18be5f9caee73dc6c6690d1b4dd175052f5" + "docs/framework/svelte/guides/hotkeys.md": "9b789aad081fe3db7840b6b7d279a264cef76ecc47056fa7f111bd508300b017" }, - "head": "9a3ab5127e79e94524708fab8af13ed0fe7715f7", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Docs explain when to leave preventDefault 'always' off; the hotkeys-core skill carries the same guidance.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/framework/svelte/guides/hotkeys.md", - "packages/hotkeys/skills/hotkeys-core/SKILL.md" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/framework/vue/guides/hotkeys.md": { - "fingerprint": "b27201d8bdf6e77fd17158ba4086f883c2d232ba9e337ef1f40ed03c65cf5f27", + "fingerprint": "8740403849ee938a2d27631f4aafbecd116eb083253dc0b421f1b93ec31a9903", "snapshot": { - "docs/framework/vue/guides/hotkeys.md": "23c75e9fdf8c7eacf7bec9cdc5b2840502165a1126e2cc7b25b61b31d621e81c" + "docs/framework/vue/guides/hotkeys.md": "fe8bc1a955f7ea8c67afc1f3c0289723fd203f544bf0df76b9745b76c8542e1a" }, - "head": "9a3ab5127e79e94524708fab8af13ed0fe7715f7", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Docs explain when to leave preventDefault 'always' off; the hotkeys-core skill carries the same guidance.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/framework/vue/guides/hotkeys.md", - "packages/hotkeys/skills/hotkeys-core/SKILL.md" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/reference/functions/toHotkeyRegistrationView.md": { - "fingerprint": "b1777214cb3ca4775f61844c5c7a4815135b7746b8290a2189c78a098ca09aa3", + "fingerprint": "939f535fa15f84443374c203234808b23f02d78232b2df50877a5869e23e36a0", "snapshot": { - "docs/reference/functions/toHotkeyRegistrationView.md": "d29b6e8185cbd97fcb4cef301f6d6ba7c1f34fc0e8fd43e8990df556b14c156e" + "docs/reference/functions/toHotkeyRegistrationView.md": "022dbf74696054503def30712ed8e3dac298f1a008c61a4e405093475f80b840" }, - "head": "391443cd0c92b1040b7a9f3270c97c48850f4f36", - "outcome": "out-of-scope", - "reason": "Tests, sidebar config, or regenerated reference docs.", - "evidence": ["docs/reference/functions/toHotkeyRegistrationView.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/interfaces/ActivateHotkeyScopeOptions.md": { - "fingerprint": "3f310d8d4c5509367c2fa989c92965cdac48a9429a0761e35b7f1e238cba9e49", + "fingerprint": "5ec1d27ac8c4662653e9f8cda34f980797389be91532348eac5c6333edf1d4e2", "snapshot": { - "docs/reference/interfaces/ActivateHotkeyScopeOptions.md": "5f53baec9e5f3373e4b1292daea198ad91cdc5c85849a2a983016c1068fb6e6d" + "docs/reference/interfaces/ActivateHotkeyScopeOptions.md": "c23998d96f93717424f85124811ac4e2d91ee5231b23108b205f7f081a49f737" }, - "head": "391443cd0c92b1040b7a9f3270c97c48850f4f36", - "outcome": "out-of-scope", - "reason": "Tests, sidebar config, or regenerated reference docs.", - "evidence": ["docs/reference/interfaces/ActivateHotkeyScopeOptions.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/interfaces/HotkeyChordOptions.md": { - "fingerprint": "404bc38543e861ec69922d37c22812def0ec459710625c6b99334a6f57192bb2", + "fingerprint": "5be2593358f4e3ea12f653b9ec62a305bfc9082a0dfff57c4c4d21303b4c098c", "snapshot": { - "docs/reference/interfaces/HotkeyChordOptions.md": "d6eada3aa2355bd56bfb4edf3e149069591df3e99f3e261421403bbaa6afc996" + "docs/reference/interfaces/HotkeyChordOptions.md": "41e202851d47d0e8741d2d107071de465c15b5af6c4110596d387cd0e49c1736" }, - "head": "391443cd0c92b1040b7a9f3270c97c48850f4f36", - "outcome": "out-of-scope", - "reason": "Tests, sidebar config, or regenerated reference docs.", - "evidence": ["docs/reference/interfaces/HotkeyChordOptions.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/interfaces/HotkeyChordRegistration.md": { - "fingerprint": "f514cd197b6e420ea05d5ae89b9254e0b62b8e2142f85c6acfba4ca56afb1430", + "fingerprint": "917911f3e890f5399a21169c888d432c633ef44483454cb4df785aa1bfd104ba", "snapshot": { - "docs/reference/interfaces/HotkeyChordRegistration.md": "900bb35bac81b47304267dc37b3a560ec6d36913b886adca6cf4457a628c2cc3" + "docs/reference/interfaces/HotkeyChordRegistration.md": "aa311bb758787a7705515c4337b629386df8082672aad2f39d1f790578fdf092" }, - "head": "391443cd0c92b1040b7a9f3270c97c48850f4f36", - "outcome": "out-of-scope", - "reason": "Tests, sidebar config, or regenerated reference docs.", - "evidence": ["docs/reference/interfaces/HotkeyChordRegistration.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/interfaces/HotkeyChordRegistrationView.md": { - "fingerprint": "f49134dcdefb2603dca78b1f4939ccc390b19ad74bd19f7b11d1f183fb3e7bb0", + "fingerprint": "583f8c2f999d4216c88b45a3071b29b7ac230088ffa2708032bb1a2c2280e93b", "snapshot": { - "docs/reference/interfaces/HotkeyChordRegistrationView.md": "880f468ad4f3df515305ac851a3d3b758201469daa7da23a0c09cf96a6d85ef3" + "docs/reference/interfaces/HotkeyChordRegistrationView.md": "1671e8e2ed368b2f5c36a14c09eafbd82191c00c4022ea7da821a675e2ea115c" }, - "head": "391443cd0c92b1040b7a9f3270c97c48850f4f36", - "outcome": "out-of-scope", - "reason": "Tests, sidebar config, or regenerated reference docs.", - "evidence": ["docs/reference/interfaces/HotkeyChordRegistrationView.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/interfaces/HotkeyOptions.md": { - "fingerprint": "4133fc170ca919556ddec281e2c2e16518b0d1ba9654a9d6ad268ae5c3866a97", + "fingerprint": "ca5e6ac373fbf21f4ec51e423e7e90bd13c63e14ba23078a99fc0a86ec12daff", "snapshot": { - "docs/reference/interfaces/HotkeyOptions.md": "0aa93e7d3507e2e7a27b689278e6d574cb919ba05911b6e5a7974c5939161a5b" + "docs/reference/interfaces/HotkeyOptions.md": "e9a93efb65a3e55ecf91c57b3bb326b9d37d4404172ae50fd0278297b0b4fbfd" }, - "head": "391443cd0c92b1040b7a9f3270c97c48850f4f36", - "outcome": "out-of-scope", - "reason": "Tests, sidebar config, or regenerated reference docs.", - "evidence": ["docs/reference/interfaces/HotkeyOptions.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/interfaces/HotkeyRegistrationHandle.md": { - "fingerprint": "301c7aced22fe44316ad6640048aef49a1e02a431c2d9754d0a53fb849fc78b4", + "fingerprint": "764c586afe3a6b838282105d6c3e8126e15753b58b147eb25727079d7c442600", "snapshot": { - "docs/reference/interfaces/HotkeyRegistrationHandle.md": "d3821b7c90ae6438f3c926d7e6bce1cef6b33933d5f09d81ed0c394e6cc6102d" + "docs/reference/interfaces/HotkeyRegistrationHandle.md": "4e0aefb635a37fdfb96694b64f1be1f53b7c2e1fa5db2797d7bf66c9148d7daa" }, - "head": "391443cd0c92b1040b7a9f3270c97c48850f4f36", - "outcome": "out-of-scope", - "reason": "Tests, sidebar config, or regenerated reference docs.", - "evidence": ["docs/reference/interfaces/HotkeyRegistrationHandle.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/interfaces/HotkeyScopesState.md": { - "fingerprint": "7a007ba238c2b279533546c575f2ea5751ec5f01e3f8b56f756f0bb8c4589645", + "fingerprint": "fc525c22b7adb576c076ce845abb896bf8c43798c649e5a362deae32b35b7312", "snapshot": { - "docs/reference/interfaces/HotkeyScopesState.md": "501c21ebe6438ab83231c52d03834e6e114e7f5647cca258c297a74ecd1f7228" + "docs/reference/interfaces/HotkeyScopesState.md": "75b4219121dd87b8ca5aa192b690f2c9b97f6fb6d99e5931cd878acc2439cafb" }, - "head": "391443cd0c92b1040b7a9f3270c97c48850f4f36", - "outcome": "out-of-scope", - "reason": "Tests, sidebar config, or regenerated reference docs.", - "evidence": ["docs/reference/interfaces/HotkeyScopesState.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/interfaces/HotkeySequenceOptions.md": { - "fingerprint": "9ce40ae235071ab7685e0dcaf07bd1789692fd4bb3950c8187741c8bb6c5b473", + "fingerprint": "9aa543511871fad9244082ca1316582d68614227417b7774ac7997aceccdddb2", "snapshot": { - "docs/reference/interfaces/HotkeySequenceOptions.md": "d028d435b3cd9c027c5d023b5b39b397affda59d91954b5ea19a5f69f7816248" + "docs/reference/interfaces/HotkeySequenceOptions.md": "0761914baeb45f28538abe15602565303f2a9c23052eb459c0a2849d80847fe9" }, - "head": "391443cd0c92b1040b7a9f3270c97c48850f4f36", - "outcome": "out-of-scope", - "reason": "Tests, sidebar config, or regenerated reference docs.", - "evidence": ["docs/reference/interfaces/HotkeySequenceOptions.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/interfaces/HotkeySequenceRegistration.md": { - "fingerprint": "149fb9cfb777b3141cb9b4abb8a1c97846eed6182d246cca745335bced6f447c", + "fingerprint": "a1d167d1e8b57886bfbc96fb0588b7985d444fcc1fb8a975838c1360ee626943", "snapshot": { - "docs/reference/interfaces/HotkeySequenceRegistration.md": "c44ab6bd9ceeff3a3d687d679aa0a723d16b7b1b879298ce8ea71f94b66de06d" + "docs/reference/interfaces/HotkeySequenceRegistration.md": "f080a4a5062b187fa08a87abdf2d24c6fef1fe7ad2d6dac2ca3c8cb7700add47" }, - "head": "391443cd0c92b1040b7a9f3270c97c48850f4f36", - "outcome": "out-of-scope", - "reason": "Tests, sidebar config, or regenerated reference docs.", - "evidence": ["docs/reference/interfaces/HotkeySequenceRegistration.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/interfaces/HotkeySequenceRegistrationView.md": { - "fingerprint": "37443384691d186bfdb48967f42cbd620b98aeb92ab259a763ed1298b2841e41", + "fingerprint": "64a6ff8315ba496e9b51dd77ec91611fa4e1c561cb46c7b631fc54b15ef98a03", "snapshot": { - "docs/reference/interfaces/HotkeySequenceRegistrationView.md": "ad0e1f057443f1a46ad3a7e34f2460d331915a92f806b0757668a3e2cc405485" + "docs/reference/interfaces/HotkeySequenceRegistrationView.md": "3d2110cd4a1289dc16d4f40f52fe757e5514c1526293f217a27e10be27bbd1b3" }, - "head": "391443cd0c92b1040b7a9f3270c97c48850f4f36", - "outcome": "out-of-scope", - "reason": "Tests, sidebar config, or regenerated reference docs.", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/reference/interfaces/HotkeySequenceRegistrationView.md" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/reference/type-aliases/HotkeyOptionsFor.md": { - "fingerprint": "7fdc4618f808980418e1b2b34df6210cdb64523ba3dfbae3bd4530013189c1c7", + "fingerprint": "5056acbfc8b249d782fb86387204f796261896b1cfcfbbfb6d8f1656c85a68bd", "snapshot": { - "docs/reference/type-aliases/HotkeyOptionsFor.md": "ee43c56352a9ee3df76dc28bd5a13a10596dca25199f1f6cc4cfaf1f3d369c2c" + "docs/reference/type-aliases/HotkeyOptionsFor.md": "85d64a2e3fa6771ba1515672284e6dd8b11cd9be33cb99f67b0af1fb8070feae" }, - "head": "391443cd0c92b1040b7a9f3270c97c48850f4f36", - "outcome": "out-of-scope", - "reason": "Tests, sidebar config, or regenerated reference docs.", - "evidence": ["docs/reference/type-aliases/HotkeyOptionsFor.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/type-aliases/HotkeyRegistration.md": { - "fingerprint": "316b2a22813a196d0950b8d20d23e945fc45bab8c350bd1972e285f5f722a990", + "fingerprint": "fddf186572bf30c1ff52549ed161a7127b8c36a91ab0c6a3a7d060b568f4541b", "snapshot": { - "docs/reference/type-aliases/HotkeyRegistration.md": "cb575b12d108217046edada2f8a292eacc86d70de5417be426ae28394dc3e672" + "docs/reference/type-aliases/HotkeyRegistration.md": "ee848969de831a9d66e604b890e26bd98d06893a9f1488e02ed2ea6c1c907367" }, - "head": "391443cd0c92b1040b7a9f3270c97c48850f4f36", - "outcome": "out-of-scope", - "reason": "Tests, sidebar config, or regenerated reference docs.", - "evidence": ["docs/reference/type-aliases/HotkeyRegistration.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/type-aliases/HotkeyRegistrationView.md": { - "fingerprint": "f240d5e45cce1bf5073844dae3750bdfcd046952f1accb8a3125a6559fe7d3fc", + "fingerprint": "53747d9174d78a5ba78084865f10647679c60a8189c275508489299abf89712d", "snapshot": { - "docs/reference/type-aliases/HotkeyRegistrationView.md": "ebe8cca61a81c7a057e4d578b5992aa21b99e0c54aa43a65f6573c0459422f3d" + "docs/reference/type-aliases/HotkeyRegistrationView.md": "1653d5a79ae3e6099456630f514f5a21034418d5764a731a19dcc95a897d310b" }, - "head": "391443cd0c92b1040b7a9f3270c97c48850f4f36", - "outcome": "out-of-scope", - "reason": "Tests, sidebar config, or regenerated reference docs.", - "evidence": ["docs/reference/type-aliases/HotkeyRegistrationView.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:packages/hotkeys-devtools/src/components/DetailsPanel.tsx": { "fingerprint": "fb0b371c456dfbf2d58b49b9c23b0c0f74f0a02c9c719548e74b39aee6008878", @@ -1346,14 +1368,16 @@ "evidence": ["docs/framework/alpine/guides/cheat-sheet-ui-helpers.md"] }, "source:docs/framework/alpine/guides/hotkey-manager.md": { - "fingerprint": "2289743f7b6a03d44b39ae1bb0655fdb7a8a086f4add54c70c83d73bd11f996f", + "fingerprint": "8e47813dae8f176c8ea8f3fa12156a4b5381f0758b44cf2352ec90f45901d130", "snapshot": { - "docs/framework/alpine/guides/hotkey-manager.md": "9ad2df39b1d48b81d6a79872bd4e9d9a1c366fd1af302cfb0b4a4728517bbfbb" + "docs/framework/alpine/guides/hotkey-manager.md": "7beea0e93895cd5450bc00bad49bf0c882134444cf80b2360d9e3ae3bc4452bd" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Hint focus behavior and status wording are reflected in the skills updated in this review.", - "evidence": ["docs/framework/alpine/guides/hotkey-manager.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/framework/alpine/reference/functions/createHotkeysScope.md": { "fingerprint": "9c472815dbccfc365b2d7ee345d365ccca2b55efb08c22ff6d1834763488978a", @@ -1546,14 +1570,16 @@ "evidence": ["docs/framework/angular/guides/cheat-sheet-ui-helpers.md"] }, "source:docs/framework/angular/guides/hotkey-manager.md": { - "fingerprint": "9f08cec192a35daa525dca5ad78146eda35f46888cf60700f024fb5e43540dc2", + "fingerprint": "0da5e46f3861a920bbbf5d78e2eb88cdcc1e9786dc4bdf1704b97074fd5ea68c", "snapshot": { - "docs/framework/angular/guides/hotkey-manager.md": "dbc66b9e82178da48cc858a2144d0fb308af91aa7e7a8e4263e3202094e4d423" + "docs/framework/angular/guides/hotkey-manager.md": "7c7462b5cbb760d9d98794ed86384ba1792a38b4448718cc7b9b6882ff1a7441" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Hint focus behavior and status wording are reflected in the skills updated in this review.", - "evidence": ["docs/framework/angular/guides/hotkey-manager.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/framework/angular/reference/functions/injectHotkeyScopesState.md": { "fingerprint": "ca36d5e277c6b434ea18879bd7056fa3988c98d0a51114a39243c1182b382a22", @@ -1588,14 +1614,16 @@ "evidence": ["docs/framework/ember/guides/cheat-sheet-ui-helpers.md"] }, "source:docs/framework/ember/guides/hotkey-manager.md": { - "fingerprint": "b9173cf919cd70e374ec01081cad63a15fb0e5fa6fa05ed24c892a38e2e732c3", + "fingerprint": "19834fe5a8babbbf06f8f6962f1b23759b9d53df184a2c7ff76dafff4f2ebf84", "snapshot": { - "docs/framework/ember/guides/hotkey-manager.md": "1aa3163570a39e139783a2117406c3504a560a7e7b9a23dc5db0d070752a5a00" + "docs/framework/ember/guides/hotkey-manager.md": "838211b9863f114bfce732e10dde37dde223027ef3cbe027ff86c93703f0c2c0" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Hint focus behavior and status wording are reflected in the skills updated in this review.", - "evidence": ["docs/framework/ember/guides/hotkey-manager.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/framework/ember/reference/functions/useHotkeyScopesState.md": { "fingerprint": "79d2f28cd0b88d6ead0618b55d68539914520c4eb77a4cffaad35be253ed044a", @@ -1630,14 +1658,16 @@ "evidence": ["docs/framework/lit/guides/cheat-sheet-ui-helpers.md"] }, "source:docs/framework/lit/guides/hotkey-manager.md": { - "fingerprint": "99499462bb0e5b6cf15bda5aaf1a4b54546ea589695c57d45393c74dc706fbf9", + "fingerprint": "efcc0d317c2bc7727f01ecf01f93efc884fcf876209b9cf99bd80251a52d8cd6", "snapshot": { - "docs/framework/lit/guides/hotkey-manager.md": "c431356fa7394c8a1e11e2a9b1a9d151dc314ca29c45f4659553eb9b8bd22706" + "docs/framework/lit/guides/hotkey-manager.md": "0e23e424a157f916729a234e926c36c7b3ee81e830c42ed2de953c0251b8cd39" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Hint focus behavior and status wording are reflected in the skills updated in this review.", - "evidence": ["docs/framework/lit/guides/hotkey-manager.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/framework/lit/reference/classes/HotkeyScopesStateController.md": { "fingerprint": "bf1b8690f71152cced76505dcf7a1ad0254f6a724ccaaa60df17889e126fc88c", @@ -1672,14 +1702,16 @@ "evidence": ["docs/framework/octane/guides/cheat-sheet-ui-helpers.md"] }, "source:docs/framework/octane/guides/hotkey-manager.md": { - "fingerprint": "94674f1e0431ffd29358cb97962261a509c90b8900b4703617f474b445b1d1b4", + "fingerprint": "40eb3ca63282228f5c237872ebd855d71d398521ac9fe85251d37e1deef34660", "snapshot": { - "docs/framework/octane/guides/hotkey-manager.md": "903c655aab6eb2491818baa0cb9049f0470f283dc9e2a00a8c96bf39a050a43c" + "docs/framework/octane/guides/hotkey-manager.md": "63ff36ab1571443043d9fa74c51f1aa7f7539bbb0d681c218b7728fd11d0cd84" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Hint focus behavior and status wording are reflected in the skills updated in this review.", - "evidence": ["docs/framework/octane/guides/hotkey-manager.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/framework/octane/reference/functions/useHotkeyScopesState.md": { "fingerprint": "4a14760123f3c3f1e0ca372c47cd3d827c4213f5bffb3007127c9a481ccb3791", @@ -1714,14 +1746,16 @@ "evidence": ["docs/framework/preact/guides/cheat-sheet-ui-helpers.md"] }, "source:docs/framework/preact/guides/hotkey-manager.md": { - "fingerprint": "e255f62e61934af90f0bc283fba463482a318a93ca2e2d59ef17b6ea2ce189c3", + "fingerprint": "2b81c55424c6385cd4d144229d73e222db9176ba1aa4fa57317a5c735fa90598", "snapshot": { - "docs/framework/preact/guides/hotkey-manager.md": "fa7ba6ba37b71f51e9006e12f88f88a05a7b57d07678c4c7acb1289ef413821e" + "docs/framework/preact/guides/hotkey-manager.md": "3d3fb259dfc9ceee845dbdc457f638ce3fca37a37e7ec98daac86ef0b48b1618" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Hint focus behavior and status wording are reflected in the skills updated in this review.", - "evidence": ["docs/framework/preact/guides/hotkey-manager.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/framework/preact/reference/functions/useHotkeyScopesState.md": { "fingerprint": "28196fb3f7bb16be174302d7853db12c6de1e42a52d76e5686f2e14610477ab0", @@ -1746,14 +1780,16 @@ "evidence": ["docs/framework/preact/reference/index.md"] }, "source:docs/framework/react/guides/hotkey-manager.md": { - "fingerprint": "6a1045908327336ec3811135514232d958045d9461da5f147a581c1b936aad39", + "fingerprint": "abbda667f8d00ae19442ad2a23bcca1729e3c9c20ae98e77d14ed9ded6c72021", "snapshot": { - "docs/framework/react/guides/hotkey-manager.md": "7d629b5a1faccd284ae73c94a10b3af7ce3e820bf3f342104071de5f53ed2f47" + "docs/framework/react/guides/hotkey-manager.md": "5ca5c38d8892c74eb481700a7de0582ac8e54468032fe2fbfab6aaa47e397e3e" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Hint focus behavior and status wording are reflected in the skills updated in this review.", - "evidence": ["docs/framework/react/guides/hotkey-manager.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/framework/react/reference/functions/useHotkeyScopesState.md": { "fingerprint": "f795347c3e2cad0712d265ce1daa905f87e385a9cc7d5ca973db04ac70a1bf06", @@ -1790,14 +1826,16 @@ "evidence": ["docs/framework/solid/guides/cheat-sheet-ui-helpers.md"] }, "source:docs/framework/solid/guides/hotkey-manager.md": { - "fingerprint": "72dd217693b83e4c84309832f636d4b61e20cd2fc1cd84ba23de0a6eed1b11b4", + "fingerprint": "916dbdfb657cd51f03b82c688d319745f11ecc80085dd4acab9fd243cb6fee66", "snapshot": { - "docs/framework/solid/guides/hotkey-manager.md": "6415486a361eb162b31ac2189b2f7eb7a6599f762b6f316d407f6b2578ef49f9" + "docs/framework/solid/guides/hotkey-manager.md": "2442f64799d99b3db17db8f9423ad76dbe9aa43dd0ba85e901917cfdae1fa1f3" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Hint focus behavior and status wording are reflected in the skills updated in this review.", - "evidence": ["docs/framework/solid/guides/hotkey-manager.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/framework/solid/reference/functions/createHotkeyScopesState.md": { "fingerprint": "817c0dede67662b70532bf49a4bfbca2b680c7467105b8e3d98658521f355118", @@ -1832,14 +1870,16 @@ "evidence": ["docs/framework/svelte/guides/cheat-sheet-ui-helpers.md"] }, "source:docs/framework/svelte/guides/hotkey-manager.md": { - "fingerprint": "d3fbee8d2e490ba13dff0cdc937eb6b70d2910eaa6d25e30f6adaa3891719b54", + "fingerprint": "75583cde2e0c1cd98ba7956880f64606d03e9f7771e26cf0ebfaccb561035dbb", "snapshot": { - "docs/framework/svelte/guides/hotkey-manager.md": "3dd0bb48a109f9331216a3d1b49153f742399232028e8538c9688600ddf08716" + "docs/framework/svelte/guides/hotkey-manager.md": "9dd3892a62946477bf635c13ff08e299d6f9587da4c3325c141f4c2ec99bd3b5" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Hint focus behavior and status wording are reflected in the skills updated in this review.", - "evidence": ["docs/framework/svelte/guides/hotkey-manager.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/framework/svelte/reference/functions/getHotkeyScopesState.md": { "fingerprint": "6f7fb2ffb8495191c339e07506d0c40b6c5e78661433efd1f27d013e947c06ce", @@ -1886,14 +1926,16 @@ "evidence": ["docs/framework/vue/guides/cheat-sheet-ui-helpers.md"] }, "source:docs/framework/vue/guides/hotkey-manager.md": { - "fingerprint": "c31fb5090b61ecee9870a51b318132054461fd064ecbc02a2977ced099817fdf", + "fingerprint": "ff26601e808f0f7ed40783c1e8246ae49095777e7a7c688b7422d02a6791b638", "snapshot": { - "docs/framework/vue/guides/hotkey-manager.md": "a8f7fa12b22cc78dfab4b91ee4cb86232e2d654ee8e3c68fe15a10a179082095" + "docs/framework/vue/guides/hotkey-manager.md": "f330feeabd21f3079356b8c8000d2c2c0310caf5358650ab16674e105beae11d" }, - "head": "913a63d40d46cd3bd189a485da167ce064edcba0", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Hint focus behavior and status wording are reflected in the skills updated in this review.", - "evidence": ["docs/framework/vue/guides/hotkey-manager.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/framework/vue/reference/functions/useHotkeyScopesState.md": { "fingerprint": "6e6f9ea9454f9dd6126a1d2990adb783cf20d3d7af77e67ae381b59e2954f3f6", @@ -1928,14 +1970,16 @@ "evidence": ["docs/reference/index.md"] }, "source:docs/reference/type-aliases/HotkeyRegistrationStatus.md": { - "fingerprint": "38543fbbd925807dc94cef9dd358790607fff0d24bc40fb209c63e92bfd602a1", + "fingerprint": "2d29ecee59333ef95f0744a0a49a5d4121f6c04893aee42de501ec97fe848f81", "snapshot": { - "docs/reference/type-aliases/HotkeyRegistrationStatus.md": "71783284309b35853ca3345b7c04a7f167bf06e4f934f17192cb31d36e236698" + "docs/reference/type-aliases/HotkeyRegistrationStatus.md": "c2e378bf843fc93f04bc52c5d8830bf06aa74e045316af281b82da4ecc20aebf" }, - "head": "391443cd0c92b1040b7a9f3270c97c48850f4f36", - "outcome": "out-of-scope", - "reason": "Tests, sidebar config, or regenerated reference docs.", - "evidence": ["docs/reference/type-aliases/HotkeyRegistrationStatus.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:packages/alpine-hotkeys/src/createHotkeyScopesState.ts": { "fingerprint": "efa0da765d7c23fe56e690ebc774b7ea456a343c908ad8239732d0741f3b64a1", @@ -1968,14 +2012,16 @@ "evidence": ["packages/angular-hotkeys/src/index.ts"] }, "source:packages/angular-hotkeys/src/injectHotkeyScopesState.ts": { - "fingerprint": "db48312044f4065c2b8477ee4a12dec339d74797007a55eca0b40c0e8773fa3f", + "fingerprint": "2009f544f132a27bec4c25cdc3e1ee089dabceede5b90e0939499591d2603a4a", "snapshot": { - "packages/angular-hotkeys/src/injectHotkeyScopesState.ts": "c71f8e7cf5aa4ac558c5fc0771f986a5a19482bc8b8017aeeb5623bcb2905113" + "packages/angular-hotkeys/src/injectHotkeyScopesState.ts": "c9e109c9ff2ac8f53d62ec78f64d07e1faddef486dcaf2944f8d613113fc0fee" }, - "head": "2a31087b3ede3d5bb6b720009643ee65acb422e2", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Source or guide change is reflected in the skills updated in this review (status, scope state API, preventDefault 'always', hints).", - "evidence": ["packages/angular-hotkeys/src/injectHotkeyScopesState.ts"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:packages/angular-hotkeys/tests/scopes.test.ts": { "fingerprint": "569b22d14258cab83b2bcc790380cb5035a4b14cab279369e5e8fe70d993f5df", @@ -2040,14 +2086,16 @@ "evidence": ["packages/octane-hotkeys/src/index.ts"] }, "source:packages/octane-hotkeys/src/useHotkeyScopesState.ts": { - "fingerprint": "965a15848bd594cb7b26dd89fe64a66ea7f841ffb49ac698aa53f220b7f2b622", + "fingerprint": "3b29279a2a81b4c22b625c71cbfa488641d4c28ef5f6b1b90513ac7927e03c9d", "snapshot": { - "packages/octane-hotkeys/src/useHotkeyScopesState.ts": "c60d696f940672b5910c8eca30d4ee4987caf60d913e6e5502d057b6e47fea5e" + "packages/octane-hotkeys/src/useHotkeyScopesState.ts": "ce6c4137b8cb3ab31483a7576f75eac14ad27a62cb84ce04ae8ed9bfa9ab6dee" }, - "head": "2a31087b3ede3d5bb6b720009643ee65acb422e2", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Source or guide change is reflected in the skills updated in this review (status, scope state API, preventDefault 'always', hints).", - "evidence": ["packages/octane-hotkeys/src/useHotkeyScopesState.ts"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:packages/octane-hotkeys/tests/fixture.tsrx": { "fingerprint": "96287e6de94be6045c8466e7c90a546ad9b2f0349dadab82e6c09a1a5aef279e", @@ -2070,14 +2118,16 @@ "evidence": ["packages/preact-hotkeys/src/index.ts"] }, "source:packages/preact-hotkeys/src/useHotkeyScopesState.ts": { - "fingerprint": "218efac55f273a37386a498a5948bda2950f32a674b920f10843d4322763aa22", + "fingerprint": "c26dfeef79e6e32ecaa6930a7aae937a3c08ff3e785d5f68b884c88f5fd01bed", "snapshot": { - "packages/preact-hotkeys/src/useHotkeyScopesState.ts": "ec49319f970c07a3bff81e8efe93077491c81fd7fc3f8187cac93e52eed3ce43" + "packages/preact-hotkeys/src/useHotkeyScopesState.ts": "468be2b00c7bda6fbec4554a5196e661cb21d749f1acf3dbe21fc5beea868d03" }, - "head": "2a31087b3ede3d5bb6b720009643ee65acb422e2", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Source or guide change is reflected in the skills updated in this review (status, scope state API, preventDefault 'always', hints).", - "evidence": ["packages/preact-hotkeys/src/useHotkeyScopesState.ts"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:packages/preact-hotkeys/tests/scopes.test.tsx": { "fingerprint": "071401c4fa14c4189e44a00271778bde83372dc5715d37e3ad32435050b24e66", @@ -2100,16 +2150,15 @@ "evidence": ["packages/react-hotkeys/src/index.ts"] }, "source:packages/react-hotkeys/src/useHotkeyScopesState.ts": { - "fingerprint": "96a95553282dbc739bfd645dcb8c7e4b9b59b5da3cc34984c3f7f2d5dc6945d1", + "fingerprint": "e47bdb434c94ff29f3d91239601aa2830a94defedc5d215210fee4a3712969c2", "snapshot": { - "packages/react-hotkeys/src/useHotkeyScopesState.ts": "e23ce667a134f728ebbf65f8eadd418bf0863238cad17bdd5785c91d74988c28" + "packages/react-hotkeys/src/useHotkeyScopesState.ts": "52ea4bfeec3cfc35949401e8488a81d73c58a1d02d07c62b38936f0139e5a12c" }, - "head": "41f06c51a38fac64409a3d4932cc8958f558ae57", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Adds a 'use client' directive only. Hook behavior and signatures are unchanged; the React Server Components guidance is reviewed under the react-hotkeys skill item.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "packages/react-hotkeys/src/useHotkeyScopesState.ts", - "pnpm test:lib for @tanstack/react-hotkeys passes" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:packages/react-hotkeys/tests/useHotkeyRegistrations.test.tsx": { @@ -2125,14 +2174,16 @@ ] }, "source:packages/solid-hotkeys/src/createHotkeyScopesState.ts": { - "fingerprint": "62857fa44b5f9cb5492d9c2e411d993c6bbd0733904aac8d565e076668c0d9eb", + "fingerprint": "caedf114312d8008656209a25647bc6895e6f50e050788dfc655859160dc436f", "snapshot": { - "packages/solid-hotkeys/src/createHotkeyScopesState.ts": "58fd882b14ba9edda5594591f79d263cb180e01b7370414d7be31a79d7368e30" + "packages/solid-hotkeys/src/createHotkeyScopesState.ts": "03b70bcef91b2e3dc57ce0730f8fec33ed526a10f0e024d7217927151133c26a" }, - "head": "2a31087b3ede3d5bb6b720009643ee65acb422e2", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Source or guide change is reflected in the skills updated in this review (status, scope state API, preventDefault 'always', hints).", - "evidence": ["packages/solid-hotkeys/src/createHotkeyScopesState.ts"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:packages/solid-hotkeys/src/index.ts": { "fingerprint": "66731a814a1bb922ec9fbb3bff9f1bbf5593f95dfc0cda4b56f554459103397c", @@ -2225,256 +2276,304 @@ "evidence": ["packages/vue-hotkeys/tests/scopes.test.ts"] }, "source:docs/reference/classes/AppHotkeysStore.md": { - "fingerprint": "f828df2b43041e6744a776337690c0d02b13c98860f9b75de251e8aa013992bb", + "fingerprint": "8d68360d9dfe4c2c81c4b084e5e79224e321744a4705e2be3b120d7d63aabe12", "snapshot": { - "docs/reference/classes/AppHotkeysStore.md": "50a300610a77af4bbc0b172d7cb9c368371a4142a420a64f644bbe1ddc75c76c" + "docs/reference/classes/AppHotkeysStore.md": "1e3ad702a0006cbba599159f26b1bf5aa3ee61b2aca38c26c6fa957b4aa4779d" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/classes/AppHotkeysStore.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/functions/defineAppHotkeys.md": { - "fingerprint": "647b508a92a14adcbbc42bc0ef0fa23bd4a233df3d3e08b3ad4c23f2b8b4c923", + "fingerprint": "7cafe37ec35264985919095e4f8bd58e595aa897a5ce5dc7304160af6f69cf5a", "snapshot": { - "docs/reference/functions/defineAppHotkeys.md": "d04bbc7d0b8e0e1211f2044eac2468374d78a98d00462d33cbf4d8f8db0ceab8" + "docs/reference/functions/defineAppHotkeys.md": "c4684ebf5d3e0c36184a5395c2966694a4c19ecdc2c236810081011bcf1ac332" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/functions/defineAppHotkeys.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/functions/getAppHotkeyRegistrationOptions.md": { - "fingerprint": "92cf5d12da45097cdc4e49ed62acaac928222a0380d4d728310e89c7f85cc0e0", + "fingerprint": "421d1659d3681d601313d0fba42afc1fdeb34a83965c77c551bca48fdadd0208", "snapshot": { - "docs/reference/functions/getAppHotkeyRegistrationOptions.md": "0c617bcad6b46ba6559d016ffe67b420670d16f1de4e6fdd98491d358a6eadf5" + "docs/reference/functions/getAppHotkeyRegistrationOptions.md": "cf0a2c23475811eb0b2821959b3cd83fa8ff36918f71a7ffea64e4c2f449f740" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/reference/functions/getAppHotkeyRegistrationOptions.md" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/reference/functions/isAppHotkey.md": { - "fingerprint": "f914ae6939c6808d6cb9ae5deeb1782a01c628575c29d343e788374782384994", + "fingerprint": "d1e160a69104fab899ed8676a3301d393ca2c83615c8a51278ad603e1524ff7d", "snapshot": { - "docs/reference/functions/isAppHotkey.md": "98f12cb86a90ab8d18ce90fb073032429ce5447be63dbb4639a17c98f4262bad" + "docs/reference/functions/isAppHotkey.md": "2a8db584214a19f5b1c0b756945f5ee4f19c8a081bec24fa2e5decd6ab73c824" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/functions/isAppHotkey.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/functions/isCustomHotkey.md": { - "fingerprint": "3a08e4334d39705fe2b57bde8ac566a523af316e5d2f859c8ae84a86031e8b20", + "fingerprint": "836f00adb4f67c28ebbb24dc3d16e7fd96b1012775e166a60a290ba2095d5160", "snapshot": { - "docs/reference/functions/isCustomHotkey.md": "67ec57dabbed31013974a41acf7b34327cf76cb9dc4546262e8160c888e7322a" + "docs/reference/functions/isCustomHotkey.md": "385b44a202f18d7eb1efab54f9626741b7e6670f4eb2abb3ec1a9f000e15a828" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/functions/isCustomHotkey.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/functions/provideAppHotkeys.md": { - "fingerprint": "9305d4b0fc61dfe04dd381dc43efe41f98bbab9f32dd93154875f133a2ced819", + "fingerprint": "6bb2b8a94adb4259baa47a7d2635da56efe510989fefd4e97ca8486b62d99006", "snapshot": { - "docs/reference/functions/provideAppHotkeys.md": "da10c53c571e942f6be828a38bc27d8a03778c3d6b156f089a7422753afcc87a" + "docs/reference/functions/provideAppHotkeys.md": "e2109bc183aef4923b1f25cb23e7d1fd96f58ffe6cfdfc4cc0a6b2bf79b7511d" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/functions/provideAppHotkeys.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/functions/publishAppHotkeysStore.md": { - "fingerprint": "d3a6340168e76506212447895bc32658149f65f5479a4ebfeb28f4f9cfb05ead", + "fingerprint": "067ce63bf0383740ab7d7d37307b680867f8c5dc4adfd345d64636c98dd3d227", "snapshot": { - "docs/reference/functions/publishAppHotkeysStore.md": "efcee078292e87d9602ecfa0c75e5a056a281b984d6454b141d3e8e2a0c77168" + "docs/reference/functions/publishAppHotkeysStore.md": "cef9d31537b343be70436be590bd3c674a10216c941dc8c7771888a95b3ee66d" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/functions/publishAppHotkeysStore.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/functions/resolveAppHotkey.md": { - "fingerprint": "38f7fe091d9e550b2d793437aefc6541acd5bec211b81a9873261a5a07891f63", + "fingerprint": "791c80088586d412be3f409efce025d38f29c2d2b68afe84c67d52e13ee69268", "snapshot": { - "docs/reference/functions/resolveAppHotkey.md": "e53c24e19564a87633ca3b052187338938ab267284dd7f3818ed246c374de859" + "docs/reference/functions/resolveAppHotkey.md": "737ac783544004c688c398af59d2a70d7d2a2928427e499ae4a72a3a6efb0d60" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/functions/resolveAppHotkey.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/interfaces/AppHotkey.md": { - "fingerprint": "2cb6bee7af7e2870e2287f3ac815f56e8df371ee646f9a8f43e190b645acd411", + "fingerprint": "541468ec91a6dfc4561497f1dde0ce8b2e53ca26d33406250aff8ccbe35cc896", "snapshot": { - "docs/reference/interfaces/AppHotkey.md": "a095532ac3088bbf5ca788bdf923168ae6940cfd5afd854f7380b3c4be11f5bc" + "docs/reference/interfaces/AppHotkey.md": "2f3a80a9780a636ff77a3a9f135c719127938c4660a4d416de9b656351b02a7c" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/interfaces/AppHotkey.md"] - }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, "source:docs/reference/interfaces/AppHotkeyInput.md": { - "fingerprint": "c17190e4db0b14d36cc770cb9efd0cae23232c95654e2669b3deaf8de5bb2c44", + "fingerprint": "2d45aa9584c924e09d34180641055c9d844f34b297c1a53e4b53459ee57ea21a", "snapshot": { - "docs/reference/interfaces/AppHotkeyInput.md": "1f68576d57cf3698eebdcbe939c8b3b232d7cfe044e7ae3b31a1f9189b358d61" + "docs/reference/interfaces/AppHotkeyInput.md": "e19e34cab9949d4b12c734db624cbc2dbb97ba528129f9b6e5eb1e1a83e46401" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/interfaces/AppHotkeyInput.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/interfaces/AppHotkeyListItem.md": { - "fingerprint": "c38d3268d7ff0b329ad412c3abe8daf510018f4ea07f00ec42b3710a2d099a15", + "fingerprint": "bb44ca09aa85845b6c5c78cd5e8f888965b53936884decbed365c6d68f6a7c46", "snapshot": { - "docs/reference/interfaces/AppHotkeyListItem.md": "582e9005cde22ad69d70c50b630b0a720a6ed45ae708dc3da1740f0f3e0d6219" + "docs/reference/interfaces/AppHotkeyListItem.md": "8f34cf62a174a1200727c4df9c32b0285bebc93623d7c6a90c93545c45e181d6" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/interfaces/AppHotkeyListItem.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/interfaces/AppHotkeysState.md": { - "fingerprint": "a7419b4f629147566d48a1659fe45ab34079b0c31d5ebeaa7a1d01b0d3cadd87", + "fingerprint": "68900a27694b4933bf1813c13df14e260e9b5724330cbd4517a2c9dc713627a3", "snapshot": { - "docs/reference/interfaces/AppHotkeysState.md": "b07c0f7d396a38576ba9c5380f828745afe830d52fb1352be9abdf0f0e8cfb5f" + "docs/reference/interfaces/AppHotkeysState.md": "06007f517982c36f4fcd638ad560e00eca0ab4258461a48f28eee97235ba6ee3" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/interfaces/AppHotkeysState.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/interfaces/AppHotkeysStoreOptions.md": { - "fingerprint": "ba071dd4450f86b0ca98300282816ddb0e015cc34a0b1d4d0c176393b70914dc", + "fingerprint": "135feb1dde68d830ed08da08390cb4d0cb6ee35e0d37d8c4e9a2106874eb996f", "snapshot": { - "docs/reference/interfaces/AppHotkeysStoreOptions.md": "5c29ca5acee65ef3627f96d10d63cef85d1d709fcc37b7cdd581a64d6e13b9ab" + "docs/reference/interfaces/AppHotkeysStoreOptions.md": "a9c2a2080272e3a04b00c2cba0f0e6f636d5635366b947cf7d71e7f50d5d0348" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/interfaces/AppHotkeysStoreOptions.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/interfaces/Register.md": { - "fingerprint": "5a3817406a9df58f34a9f45636660dd7fd707927437dae0872cc361d2fb82af1", + "fingerprint": "b69e224808ed6e6e32cb5ac234c97b25e69dd0a39f1b8cb40d7d329e21ab05bc", "snapshot": { - "docs/reference/interfaces/Register.md": "7b07e9f1bc862741ebedcb80829c2342180070ceace17379dac73885b5ae1cdb" + "docs/reference/interfaces/Register.md": "8a4220206a574d4702b295eef07e83a1307892d67002e0f6bc844242a9b2f672" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/interfaces/Register.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/type-aliases/AppHotkeyChordOptions.md": { - "fingerprint": "d36d30b1e7b9fd262191729948838ac0c1727cfe40c7bca34f38376830be0431", + "fingerprint": "9790a9c4a7882e05b1d2206a2d8960f2e6cc330459535c1c93978467444380a3", "snapshot": { - "docs/reference/type-aliases/AppHotkeyChordOptions.md": "8e653952e92c0332a174f743e7afb3eab2bc9548c69446a96e42f9960743d58c" + "docs/reference/type-aliases/AppHotkeyChordOptions.md": "093a1f113045abd091cb483af3a983e937150332d853798b1adf1063ea9825b6" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/type-aliases/AppHotkeyChordOptions.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/type-aliases/AppHotkeyDefaultKind.md": { - "fingerprint": "e3c9ec648e05e0c68b421d58d88b9fe03fcc83240ba36b38ac9419d32788f244", + "fingerprint": "6dcb968e489bd6813f9298ac826d833dd0d27f6a7e38c9be9d236d793d5d832e", "snapshot": { - "docs/reference/type-aliases/AppHotkeyDefaultKind.md": "3a6b97eca5267aa32468ab7f74dbf6bee43b831f163d0645bd8efff3a1965986" + "docs/reference/type-aliases/AppHotkeyDefaultKind.md": "4d708c43da4596863a0dd5f0e095b73d5102eaf30760902368fec8afdda07fd4" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/type-aliases/AppHotkeyDefaultKind.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/type-aliases/AppHotkeyId.md": { - "fingerprint": "13cd19340afc6c30726eaaaea2fd01c3dbeb686b77dc6b603d6e9ead6d7b941c", + "fingerprint": "cd2a38b376f915188beca896ffc82b6d912252c263f61703ba1df5fde7ca1a6c", "snapshot": { - "docs/reference/type-aliases/AppHotkeyId.md": "573d414ccb09488974db4f4e5073c97815e1d11091f5e396244a71db2106d728" + "docs/reference/type-aliases/AppHotkeyId.md": "a9d89c20c522a1c9dd6d66f49a5992f43226e70d4885f6f4c7581b79ff15211c" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/type-aliases/AppHotkeyId.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/type-aliases/AppHotkeyOptions.md": { - "fingerprint": "9c72544939003f08d6f4464108d117d108cb903c7c307d5fabbdc904811b4a04", + "fingerprint": "af52cf9a660167e536a5ec5b75a4189e6d800be06ef20bb06331a0bb9762401b", "snapshot": { - "docs/reference/type-aliases/AppHotkeyOptions.md": "dd13bc7632e78bf3c807fe6ee7d780f89ad773a03158eb743ca5f8f790b4adf2" + "docs/reference/type-aliases/AppHotkeyOptions.md": "76ed2eb2ca9588798b9af5250880d05802112afc036124f10c162212435e1009" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/type-aliases/AppHotkeyOptions.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/type-aliases/AppHotkeySequenceOptions.md": { - "fingerprint": "bda2571a41bde9a3330ba9eb5d8be15854be1dc55cf451fcb74d8ac022502b8a", + "fingerprint": "c8fe375c863ed9aa173db29a06d1efa8aecea72e01ac82ad26dff05fb21214f4", "snapshot": { - "docs/reference/type-aliases/AppHotkeySequenceOptions.md": "127bf99307fe9194d5ab3bb30105e70bee774998f106b9212a22e194c99fb5b6" + "docs/reference/type-aliases/AppHotkeySequenceOptions.md": "fb4169483cfd42280ab7d8cc640304ca29d8f8f192237d7f98ed9cf75abba855" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/type-aliases/AppHotkeySequenceOptions.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/type-aliases/AppHotkeyStatus.md": { - "fingerprint": "3f3c262b4152ded4a199e4c78a8701dbcda0a8ad3f65d66985540e21d6a0d5e6", + "fingerprint": "b9ebcef331a13b66c6557e92ef2dd152a2886f28d799a395c113dcf093eb612f", "snapshot": { - "docs/reference/type-aliases/AppHotkeyStatus.md": "6b07bdb5226d3fc10790ba14bff85858b3dd8ae0e0d0428082b42dbed4ed7024" + "docs/reference/type-aliases/AppHotkeyStatus.md": "0f6b676981116aeb031a08b7262bc9fa62832c33d82dd591f300e99fc6d1f56f" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/type-aliases/AppHotkeyStatus.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/type-aliases/AppHotkeys.md": { - "fingerprint": "bdbcad81cc03052c676df899d9140bfbc89f804c62644ac630f1926dc2de10f2", + "fingerprint": "366eae177f13398f18ba2a3b5f665645270b35ede934a2e33fef3425994e9086", "snapshot": { - "docs/reference/type-aliases/AppHotkeys.md": "3ceec2f33ce55d06ec3b7385b9723106397898f82d266925d1ddfa142829a024" + "docs/reference/type-aliases/AppHotkeys.md": "ee5b5c1b1888fdf73facb1888733257dab696c56c63807b90148e9edbae0dd59" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/type-aliases/AppHotkeys.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/type-aliases/CustomHotkeys.md": { - "fingerprint": "bf1d46020fa0a30aab23a64c44417bc6e922c30f8a4482e3281d916c7df71d35", + "fingerprint": "9883a4f1dd1bb1bec03ed01d75ea4833ea311bcd96ae7aac7a20f1862df255bc", "snapshot": { - "docs/reference/type-aliases/CustomHotkeys.md": "44ec5b2926da7da2a41b11bb616cdb1c8b9b7a0bb978cf9f68d17683991da7e5" + "docs/reference/type-aliases/CustomHotkeys.md": "9b46cc00ee5804d088c056ec2a092824538ae449994ed16dee0cfa2071cab3a6" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/type-aliases/CustomHotkeys.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/type-aliases/DefinedAppHotkeys.md": { - "fingerprint": "8a4ab3c3b32a49845cf5018d40564992086f569f697efec5c5e99f97c29e77fa", + "fingerprint": "e24f75725dc8ab1fcf6198786d52291f672dfe07ea87d2f5165760765c52e0a1", "snapshot": { - "docs/reference/type-aliases/DefinedAppHotkeys.md": "be0abe9a9a87b9c1c0cc9a4576dd439d1ecc35046cd20b7cece20d2547a4dd2c" + "docs/reference/type-aliases/DefinedAppHotkeys.md": "e9325ca4489870a1d37201d51eda7f74054dc77b2fe1ad0a9897176dbeb7f8be" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/type-aliases/DefinedAppHotkeys.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/type-aliases/RegisteredAppHotkeys.md": { - "fingerprint": "ba29005e68c10ac1603365d12f96f48ae71186024d88c06c159432b035544f64", + "fingerprint": "0ff819099d9fd39f31e3c6c016d225878a1efb591497fa46c88132abe427f378", "snapshot": { - "docs/reference/type-aliases/RegisteredAppHotkeys.md": "1ed7d6a26ac53dbb104ade03d24267749f8365e6ad765de73053aca6f11c7139" + "docs/reference/type-aliases/RegisteredAppHotkeys.md": "ffb7e1b74742a3085d867c902a3c2fcf05567c71da022464760dcd596be73728" }, - "head": "5b07f208a45afb5b396c628025c52294de62d313", - "outcome": "out-of-scope", - "reason": "Regenerated reference docs; only \"Defined in\" source line links changed.", - "evidence": ["docs/reference/type-aliases/RegisteredAppHotkeys.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/reference/type-aliases/Target.md": { - "fingerprint": "976d4e23e8e78ae594748914939a8235ce56a6c218bed648d31028ae3dc09fac", + "fingerprint": "d644ced87ab9db647b3057552ad87e46bcfcb595db90b6e4d1d4c9e33d2f61a4", "snapshot": { - "docs/reference/type-aliases/Target.md": "9776565467dd5900e7254fe1638c5ab8eaf3538457f750d24ff3edcc995295eb" + "docs/reference/type-aliases/Target.md": "7c5f4053621ef6f500d6bb2b32dfe2be2487523edf1df310c43d8d0a7e7cf23d" }, - "head": "391443cd0c92b1040b7a9f3270c97c48850f4f36", - "outcome": "out-of-scope", - "reason": "Tests, sidebar config, or regenerated reference docs.", - "evidence": ["docs/reference/type-aliases/Target.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:packages/hotkeys/src/_event-target.ts": { "fingerprint": "7d5f65094e1a9f7ad01dfda093fefede76e97bd680952f7088b5c69cbdfee529", @@ -2497,17 +2596,15 @@ "evidence": ["docs/config.json"] }, "source:docs/devtools.md": { - "fingerprint": "0531feaff7a5b318e796b8b9a5ea2ebbbc167b535d7affd20222afcb1cc9f3ee", + "fingerprint": "0d96d99c22bf4ab92be7d2a0db8af69c80cd3d1c7212491ecc532d1749e7553c", "snapshot": { - "docs/devtools.md": "d8c866a6b4c09cdce0ad469f21085f4b4f7795825bc0e33dbcd1cc0d02ad30c3" + "docs/devtools.md": "e9970ffe470f99a5e8b80966adc1bcf540534fa8551609753ceff2241b43146c" }, - "head": "41f06c51a38fac64409a3d4932cc8958f558ae57", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Adds the Solid devtools floor (1.9.15) and raises the Svelte devtools floor to 5.40. No skill states devtools install requirements.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/devtools.md", - "packages/solid-hotkeys-devtools/package.json", - "packages/svelte-hotkeys-devtools/package.json" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/installation.md": { @@ -2596,81 +2693,75 @@ ] }, "source:packages/react-hotkeys/src/_appHotkeysStore.ts": { - "fingerprint": "bf7cb0cf9fe862d679b29cd7773a125cb72f72fd529f3a35f5088b9366520b84", + "fingerprint": "96ceedb614a3a17c946e048d97d7723a0c40b4cf0b322b365b221e64f9fb4173", "snapshot": { - "packages/react-hotkeys/src/_appHotkeysStore.ts": "8559856f8904f3ec51376df60636653be14839f94a95c604b3b3a5d4f05df708" + "packages/react-hotkeys/src/_appHotkeysStore.ts": "9b2f66665b69e10aacc2fb952c7ec5e7865aae0e43fb7b8710229cdf2830e1d4" }, - "head": "41f06c51a38fac64409a3d4932cc8958f558ae57", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Adds a 'use client' directive only. Hook behavior and signatures are unchanged; the React Server Components guidance is reviewed under the react-hotkeys skill item.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "packages/react-hotkeys/src/_appHotkeysStore.ts", - "pnpm test:lib for @tanstack/react-hotkeys passes" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:packages/react-hotkeys/src/useHeldKeyCodes.ts": { - "fingerprint": "afb6972f4a525a47711c2315cae72a2b60d64ab58eb365afbab738c1ef50668d", + "fingerprint": "e619d1934bfe526f13a18e9b119a5a0c34abb52452e54294f3021b9fafe12e90", "snapshot": { - "packages/react-hotkeys/src/useHeldKeyCodes.ts": "4835312e094dc6adc4e54da169e08eba450a207edf3c4dcca0b0e1064137cddd" + "packages/react-hotkeys/src/useHeldKeyCodes.ts": "ae8e595d8d793c5190c142a804f44f6bf34ae9f0d14285e0e0c83da316b6605b" }, - "head": "41f06c51a38fac64409a3d4932cc8958f558ae57", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Adds a 'use client' directive only. Hook behavior and signatures are unchanged; the React Server Components guidance is reviewed under the react-hotkeys skill item.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "packages/react-hotkeys/src/useHeldKeyCodes.ts", - "pnpm test:lib for @tanstack/react-hotkeys passes" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:packages/react-hotkeys/src/useHeldKeys.ts": { - "fingerprint": "6a68e250329bf139f18a6d74cb50f73de9d43077f4fd7c775edfc39cf0df9620", + "fingerprint": "eb9a01dc148638b095cac7815b2cb94524cc1057e021e914849f2f73fe7640c6", "snapshot": { - "packages/react-hotkeys/src/useHeldKeys.ts": "898b8675cfb0ea207ce9a00e6150ea964cf473da21465284a4af9405f0e24eed" + "packages/react-hotkeys/src/useHeldKeys.ts": "736fe35775973c533bd7832035c0b2bd42c7ff16e61cece02494079eaef7b584" }, - "head": "41f06c51a38fac64409a3d4932cc8958f558ae57", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Adds a 'use client' directive only. Hook behavior and signatures are unchanged; the React Server Components guidance is reviewed under the react-hotkeys skill item.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "packages/react-hotkeys/src/useHeldKeys.ts", - "pnpm test:lib for @tanstack/react-hotkeys passes" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:packages/react-hotkeys/src/useHotkeyRecorder.ts": { - "fingerprint": "0e3b0909feec1eeaf7f88ccf6a1a40aeffe38857916c50cdadee199d07b704e9", + "fingerprint": "b45c6c0576b10e19971016f09e92deab96c2db219585004d3bc741c8fa09c235", "snapshot": { - "packages/react-hotkeys/src/useHotkeyRecorder.ts": "ae2a2022eb2fe71258d24b87c6e50bf9e185a9731f46de3d123777f12bcc2e84" + "packages/react-hotkeys/src/useHotkeyRecorder.ts": "80891873916d494472d6f55773718ed588c755bd7bbd17435fcc6f6c0cf6f1c4" }, - "head": "41f06c51a38fac64409a3d4932cc8958f558ae57", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Adds a 'use client' directive only. Hook behavior and signatures are unchanged; the React Server Components guidance is reviewed under the react-hotkeys skill item.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "packages/react-hotkeys/src/useHotkeyRecorder.ts", - "pnpm test:lib for @tanstack/react-hotkeys passes" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:packages/react-hotkeys/src/useHotkeyRegistrations.ts": { - "fingerprint": "b51b2325aaf3a0874335cb595e01ce42c0bdc8304170c5e58f0fcea3fb2a599f", + "fingerprint": "c3de9a5a3ffa9436da9f59dbce7f697b7cbb7ada4b36b9a5dd8adc3b38cbc4bd", "snapshot": { - "packages/react-hotkeys/src/useHotkeyRegistrations.ts": "c9d391b896137215cdd38a912ec996bc44b93fb18c9aee7a71e1f12a55609d37" + "packages/react-hotkeys/src/useHotkeyRegistrations.ts": "cc541201bbad4519f5095f01252326c81ad9a17415e7aa8f0a3fde8485ec344f" }, - "head": "41f06c51a38fac64409a3d4932cc8958f558ae57", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Adds a 'use client' directive only. Hook behavior and signatures are unchanged; the React Server Components guidance is reviewed under the react-hotkeys skill item.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "packages/react-hotkeys/src/useHotkeyRegistrations.ts", - "pnpm test:lib for @tanstack/react-hotkeys passes" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:packages/react-hotkeys/src/useKeyHold.ts": { - "fingerprint": "fcd57f054ff1cdc491f205ea13669fd4b5a9c63dc2e3e707a80e1939400baafd", + "fingerprint": "4c970fb9c6a105c017b45649a05a7c57675553931f34f7df08980d5972e7769f", "snapshot": { - "packages/react-hotkeys/src/useKeyHold.ts": "83f6c85e9d4d1e3f6c44d7276fa2acb67ac2247d99d8655fcf2b57d29087de74" + "packages/react-hotkeys/src/useKeyHold.ts": "e76910741ccf99ff32883c4a9ec6ea7ca4c7107c77a76f81d3572e59efd47479" }, - "head": "41f06c51a38fac64409a3d4932cc8958f558ae57", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Adds a 'use client' directive only. Hook behavior and signatures are unchanged; the React Server Components guidance is reviewed under the react-hotkeys skill item.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "packages/react-hotkeys/src/useKeyHold.ts", - "pnpm test:lib for @tanstack/react-hotkeys passes" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:packages/react-hotkeys/tsdown.config.ts": { @@ -2687,17 +2778,15 @@ ] }, "source:docs/framework/react/reference/functions/HotkeysProvider.md": { - "fingerprint": "f9779831e2d3ff91313cc82ed109a6de56433cbab505d85c5a3db7005ed0edd9", + "fingerprint": "9f39368913cf9e2704c60197971bea70be475df4d16ea6a279a5e407dd89f50e", "snapshot": { - "docs/framework/react/reference/functions/HotkeysProvider.md": "e56cad1df37f41ff16daaa38b58c44f950763c2b7ae07c5f0d8c061595ca203b" + "docs/framework/react/reference/functions/HotkeysProvider.md": "28eb7d1d7aad325f95323d628a7d1a2bc5ea7ff5e765e0cd3ede8ef9fcf08c2b" }, - "head": "6a7576fb36738c24623d5cbfb260941447d42b76", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Generated TypeDoc reference. The 'use client' lines shift each 'Defined in' source line by two, and HotkeysProvider now shows its ReactElement return type. No skill guidance depends on either.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/framework/react/reference/functions/HotkeysProvider.md", - "packages/react-hotkeys/src/HotkeysProvider.tsx", - "commit 6a7576fb (ci: apply automated fixes)" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/framework/react/reference/functions/useAppHotkeyList.md": { @@ -2743,17 +2832,15 @@ ] }, "source:docs/framework/react/reference/functions/useDefaultHotkeysOptions.md": { - "fingerprint": "cf662117c0382dd6622ef91d29bb6f0e6941c17a6307818ca6ad2544e758fb0e", + "fingerprint": "010367d4b1d69de5053fc08d7f0b2d94b6c2bf22c9663f814a96cc317492e097", "snapshot": { - "docs/framework/react/reference/functions/useDefaultHotkeysOptions.md": "471679488bc62613e860e92c3c18d137b76000bdd2d5fc6606f195a812faf6a8" + "docs/framework/react/reference/functions/useDefaultHotkeysOptions.md": "f64a18d15e6c3dc7222801174dd0a36c9d150238c95c41e3c91c014cb3bc6e69" }, - "head": "6a7576fb36738c24623d5cbfb260941447d42b76", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Generated TypeDoc reference. The 'use client' lines shift each 'Defined in' source line by two, and HotkeysProvider now shows its ReactElement return type. No skill guidance depends on either.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/framework/react/reference/functions/useDefaultHotkeysOptions.md", - "packages/react-hotkeys/src/HotkeysProvider.tsx", - "commit 6a7576fb (ci: apply automated fixes)" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/framework/react/reference/functions/useHeldKeyCodes.md": { @@ -2771,17 +2858,15 @@ ] }, "source:docs/framework/react/reference/functions/useHeldKeys.md": { - "fingerprint": "882f3beb513659020c7e339f75a0e49fe66e6fc89c560652cccc3d8af4214d3f", + "fingerprint": "b1c7f14829d6a53d7cadf97814c1d14d83d366cb62d2bfeb6eadbfc4889c670b", "snapshot": { - "docs/framework/react/reference/functions/useHeldKeys.md": "154e049ee019e16e142f386882f1af3e3230c59f8753b7d0192a005c905dcd48" + "docs/framework/react/reference/functions/useHeldKeys.md": "83d687a5b5873c89d511acd926608ac097776b69148df7ac7b6aac7af416bac6" }, - "head": "6a7576fb36738c24623d5cbfb260941447d42b76", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Generated TypeDoc reference. The 'use client' lines shift each 'Defined in' source line by two, and HotkeysProvider now shows its ReactElement return type. No skill guidance depends on either.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/framework/react/reference/functions/useHeldKeys.md", - "packages/react-hotkeys/src/HotkeysProvider.tsx", - "commit 6a7576fb (ci: apply automated fixes)" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/framework/react/reference/functions/useHotkey.md": { @@ -2841,59 +2926,51 @@ ] }, "source:docs/framework/react/reference/functions/useHotkeysContext.md": { - "fingerprint": "4a200c839c1591d455a603a88d93a1efbf81416c431a0e3dcc3fada8b9b7fa1b", + "fingerprint": "82f420ee6ad32c8f1b3c0520326c861c28a547fe37cec414272baf3b89bdf27e", "snapshot": { - "docs/framework/react/reference/functions/useHotkeysContext.md": "48f14c130836777288225c59e855383ff57f5183d5369ff6628c2db96fdb7231" + "docs/framework/react/reference/functions/useHotkeysContext.md": "0771390d60e1ae1b85c7bd881cf02d8039453deaca2b46f0d623a8b64c4fa5b7" }, - "head": "6a7576fb36738c24623d5cbfb260941447d42b76", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Generated TypeDoc reference. The 'use client' lines shift each 'Defined in' source line by two, and HotkeysProvider now shows its ReactElement return type. No skill guidance depends on either.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/framework/react/reference/functions/useHotkeysContext.md", - "packages/react-hotkeys/src/HotkeysProvider.tsx", - "commit 6a7576fb (ci: apply automated fixes)" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/framework/react/reference/functions/useKeyHold.md": { - "fingerprint": "39fecf77ed41c287816748aed3e8d2d89148b84db4d100afdb1c9c505cec7692", + "fingerprint": "31c22b95b6a0305aae52af98ce14bcf5803047d98836d0fa8726f0e69a6ab1b6", "snapshot": { - "docs/framework/react/reference/functions/useKeyHold.md": "ed7b142b99e40888991365318ff8f7344be13cbc33871e5ec140d0c9b59f08fb" + "docs/framework/react/reference/functions/useKeyHold.md": "0cbfff46f9c116956e7563abc58b5596b995e2dc9381afabf4794abbd594d7c8" }, - "head": "6a7576fb36738c24623d5cbfb260941447d42b76", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Generated TypeDoc reference. The 'use client' lines shift each 'Defined in' source line by two, and HotkeysProvider now shows its ReactElement return type. No skill guidance depends on either.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/framework/react/reference/functions/useKeyHold.md", - "packages/react-hotkeys/src/HotkeysProvider.tsx", - "commit 6a7576fb (ci: apply automated fixes)" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/framework/react/reference/interfaces/HotkeysProviderOptions.md": { - "fingerprint": "47af71a7b465b68573fede0691da030a1c5525cb89ef4e7fc6563f1cdac13796", + "fingerprint": "46555c042c42723320dcd2d48b160cff406d49834c2acd139a96515a62a650b9", "snapshot": { - "docs/framework/react/reference/interfaces/HotkeysProviderOptions.md": "7b80ab601c57ccca327d795c8ceb2ce15f4bd9532d68d82bc7183fbcc8884337" + "docs/framework/react/reference/interfaces/HotkeysProviderOptions.md": "fd4d2b2976c6b19360f1f240cbe3ec17bd11541d0f59befc1b4ede3e114026d8" }, - "head": "6a7576fb36738c24623d5cbfb260941447d42b76", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Generated TypeDoc reference. The 'use client' lines shift each 'Defined in' source line by two, and HotkeysProvider now shows its ReactElement return type. No skill guidance depends on either.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/framework/react/reference/interfaces/HotkeysProviderOptions.md", - "packages/react-hotkeys/src/HotkeysProvider.tsx", - "commit 6a7576fb (ci: apply automated fixes)" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/framework/react/reference/interfaces/HotkeysProviderProps.md": { - "fingerprint": "361a4bded298f7e741ebbc0c6358b3f33c873f28b9f4723e99da3786408404fb", + "fingerprint": "9af45f0ed744f2f31f4944adb6a097a4c199e05dcd86d8b8b877ea6acf60a2f3", "snapshot": { - "docs/framework/react/reference/interfaces/HotkeysProviderProps.md": "6c321229daeb70695c9e64f2f1bb78fd8b59b29f43f9524c9773fe503bdcd166" + "docs/framework/react/reference/interfaces/HotkeysProviderProps.md": "3e0b1ca9134ec44c79aaac9c3edc2c9e6ac218e3e47e38f2a2eef91108595b7f" }, - "head": "6a7576fb36738c24623d5cbfb260941447d42b76", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Generated TypeDoc reference. The 'use client' lines shift each 'Defined in' source line by two, and HotkeysProvider now shows its ReactElement return type. No skill guidance depends on either.", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", "evidence": [ - "docs/framework/react/reference/interfaces/HotkeysProviderProps.md", - "packages/react-hotkeys/src/HotkeysProvider.tsx", - "commit 6a7576fb (ci: apply automated fixes)" + "Reviewed the diff for this file against the skills that reference it." ] }, "source:docs/framework/react/reference/interfaces/ReactHotkeyRecorder.md": { @@ -3615,34 +3692,40 @@ ] }, "source:docs/framework/vue/reference/functions/provideHotkeysContext.md": { - "fingerprint": "7929f4b57aba947f8621dd4e9087f700e9914cd15405c72ecad641097f2a85ba", + "fingerprint": "af69bca95abab03d59b4a85165889459210826fa4a5af276c409d9cbf19fd491", "snapshot": { - "docs/framework/vue/reference/functions/provideHotkeysContext.md": "e39c1e14d026ec534b83cceade4ba75459cceac7d19cff18e97f84664a8cd98b" + "docs/framework/vue/reference/functions/provideHotkeysContext.md": "ec84c24e5fda606b6b55ec418ed14a0412087cc059598ba3c543a77a2a73d935" }, - "head": "5053876bbd97d6b056cef9eddddcc4e28c249aba", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Internal Vue adapter fix (SSR subscriptions, useKeyHold reactive keys, inject guard), its tests, or regenerated reference docs; no public API change and no skill guidance affected.", - "evidence": ["packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/framework/vue/reference/functions/useDefaultHotkeysOptions.md": { - "fingerprint": "c49cfad8432316f818047bbc0172264efee068839323239d2bf947e8b0eec9bc", + "fingerprint": "487e2fd102ae620dfe9b0cc9eea81fdd754c83060bde95fa696351f7f8e482a5", "snapshot": { - "docs/framework/vue/reference/functions/useDefaultHotkeysOptions.md": "f3cf5a5ae1ce7b31735877b9c3936db0e4e22a5e4e3e5080d45f5301d5d33003" + "docs/framework/vue/reference/functions/useDefaultHotkeysOptions.md": "feecb005de1e8d975b0d15341ca9eebfc5fd655e5de1d0efc7eda8a821a7acbc" }, - "head": "5053876bbd97d6b056cef9eddddcc4e28c249aba", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Internal Vue adapter fix (SSR subscriptions, useKeyHold reactive keys, inject guard), its tests, or regenerated reference docs; no public API change and no skill guidance affected.", - "evidence": ["packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/framework/vue/reference/functions/useHotkeysContext.md": { - "fingerprint": "8d432590045f8bfdd42af1f6ceb02388224ce8a3955d5e2e5e80460cd5332b5c", + "fingerprint": "a94be94d09f51472a2a963edacb640a021c6fa53874641774dd17e3d80e2d18f", "snapshot": { - "docs/framework/vue/reference/functions/useHotkeysContext.md": "829e95e3587b7e34f621bf4383bdfdef00c5bd34a8ff8455f37a07553eb78633" + "docs/framework/vue/reference/functions/useHotkeysContext.md": "a95951c713454d8f4426a0114ea896b053d8d920e23711816315dd20eedf1740" }, - "head": "5053876bbd97d6b056cef9eddddcc4e28c249aba", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Internal Vue adapter fix (SSR subscriptions, useKeyHold reactive keys, inject guard), its tests, or regenerated reference docs; no public API change and no skill guidance affected.", - "evidence": ["packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/framework/vue/reference/functions/useKeyHold.md": { "fingerprint": "425755acd37a2f4eb11b04d32931bd3f91e6790a8bc0d25b9341a8887cce795a", @@ -3655,24 +3738,28 @@ "evidence": ["packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md"] }, "source:docs/framework/vue/reference/interfaces/HotkeysProviderOptions.md": { - "fingerprint": "9129b0d3cd16d42fb48c5ad1fe75c71437f60aae062a4bcbaa53ece42e88f43c", + "fingerprint": "dac5045711e404d340c9f309f36a487286e18f7cf27e46c0907ab83aa1c606fa", "snapshot": { - "docs/framework/vue/reference/interfaces/HotkeysProviderOptions.md": "2cc2895ecc8c3c27eb94bfb1e46675e914ca3af3eeb9eddd52436f4a32b9a4f4" + "docs/framework/vue/reference/interfaces/HotkeysProviderOptions.md": "1475b3b5c5aba316ff639d28d1cb383ea58b06c0422aaa63c1688edebdb008a3" }, - "head": "5053876bbd97d6b056cef9eddddcc4e28c249aba", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Internal Vue adapter fix (SSR subscriptions, useKeyHold reactive keys, inject guard), its tests, or regenerated reference docs; no public API change and no skill guidance affected.", - "evidence": ["packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:docs/framework/vue/reference/interfaces/ProvideHotkeysContextOptions.md": { - "fingerprint": "499a2e7a3c3a12f7c5730b321805f1536fbc42d1d5ac0b633719aa7b7f8e052d", + "fingerprint": "413bb261e92203e82db48cd02969b6d941bfd776bb8174cd4659d5ebcd6ed49e", "snapshot": { - "docs/framework/vue/reference/interfaces/ProvideHotkeysContextOptions.md": "eff035f9353af214afad107e2ccbc8958fb3970a18d82074fb092c43be2bd731" + "docs/framework/vue/reference/interfaces/ProvideHotkeysContextOptions.md": "80be0b6aceb1769a30dfb586fad77a426f09090dfbd8cdf6132ce2e253891f95" }, - "head": "5053876bbd97d6b056cef9eddddcc4e28c249aba", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Internal Vue adapter fix (SSR subscriptions, useKeyHold reactive keys, inject guard), its tests, or regenerated reference docs; no public API change and no skill guidance affected.", - "evidence": ["packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:packages/vue-hotkeys/src/defaultOptions.ts": { "fingerprint": "477e881409348b752198622ab3621266551ae94b24789456265a38c0d6f53894", @@ -3695,14 +3782,16 @@ "evidence": ["packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md"] }, "source:packages/vue-hotkeys/src/useHeldKeys.ts": { - "fingerprint": "4752e01419fff0b7bc9104b932a3cc05eb480d88e2c68bdc978a5893bb85cd36", + "fingerprint": "ef43d521c32c5c15115b0fc664b25f15afb4eda7e41cb0c934f570a5d769bcc8", "snapshot": { - "packages/vue-hotkeys/src/useHeldKeys.ts": "8b6e2a5c7b86b9216a0d32dc1ab0805a9f3f86e6c168291439af738a448f0012" + "packages/vue-hotkeys/src/useHeldKeys.ts": "e26d7899ff65a8921bbd73d454c21582d9045bf78d9f0f07b1cad3942bb20083" }, - "head": "5053876bbd97d6b056cef9eddddcc4e28c249aba", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Internal Vue adapter fix (SSR subscriptions, useKeyHold reactive keys, inject guard), its tests, or regenerated reference docs; no public API change and no skill guidance affected.", - "evidence": ["packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:packages/vue-hotkeys/src/useHotkeyRegistrations.ts": { "fingerprint": "1776e8bf3bdea89fe268f32fbfc63da939ebdd4405c336e9f2e38dc0723fe698", @@ -3725,14 +3814,16 @@ "evidence": ["packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md"] }, "source:packages/vue-hotkeys/src/useStoreSelector.ts": { - "fingerprint": "cef8ba521fe700838481c4564b5982e14ccef8bdcdec14fe45618881a05156e5", + "fingerprint": "108b2921bbcec1f25b1f2aa04c516668dd6c54664ec50e92b2d0e127f45a09cf", "snapshot": { - "packages/vue-hotkeys/src/useStoreSelector.ts": "3a23556a929d22173334fe6a4c7b423a548d46c1d9b47474ec0b5c95a3df680c" + "packages/vue-hotkeys/src/useStoreSelector.ts": "46a514bf6aca10f29fa006b896f5d41a361e1ef7a4a3d62f58fe67ad0ffc0692" }, - "head": "5053876bbd97d6b056cef9eddddcc4e28c249aba", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Internal Vue adapter fix (SSR subscriptions, useKeyHold reactive keys, inject guard), its tests, or regenerated reference docs; no public API change and no skill guidance affected.", - "evidence": ["packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:packages/vue-hotkeys/tests/effect-scope.test.ts": { "fingerprint": "14c39b3a71a9f6ab432e538ff8c8e644491bfc886eb27201143baad17ee4356d", @@ -3745,14 +3836,16 @@ "evidence": ["packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md"] }, "source:packages/vue-hotkeys/tests/ssr.test.ts": { - "fingerprint": "fa12ebcd4c4fe0438422fba73377225c7cb2f8ed16cd5c571bbd0c806b99dbbc", + "fingerprint": "8e6081dea08718c6a331eae9b8935cd5013ac962c52b23d4f809afa185dca919", "snapshot": { - "packages/vue-hotkeys/tests/ssr.test.ts": "ad3b0a909c4a0e05521eb707adcca2d5f945745044ecad436c89b8a34d890a56" + "packages/vue-hotkeys/tests/ssr.test.ts": "db41a920094cf337ab71dabe6f4ae2d00260c6adc1f956d66c7d8ef1df549df2" }, - "head": "5053876bbd97d6b056cef9eddddcc4e28c249aba", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Internal Vue adapter fix (SSR subscriptions, useKeyHold reactive keys, inject guard), its tests, or regenerated reference docs; no public API change and no skill guidance affected.", - "evidence": ["packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:packages/vue-hotkeys/tests/useKeyHold.test.ts": { "fingerprint": "4e13ed9489f0dade5272bb41c7d89b47f485d989fa420f8277610b80613a226a", @@ -4057,14 +4150,16 @@ "evidence": ["packages/lit-hotkeys/tests/key-hold.test.ts"] }, "source:packages/lit-hotkeys/tests/ssr.test.ts": { - "fingerprint": "407d437523e3c47faadf435cacc353fd1924d4885c5a44d92efce02c4a1eaf65", + "fingerprint": "6ad95b3cc5dbc0b9deb548beec6eeb668199ec9b7bad2a369c48594a7cfab322", "snapshot": { - "packages/lit-hotkeys/tests/ssr.test.ts": "de952a00817f189790a4b0563b4d9286137a380011c2e1fb4a0b392ecef98b84" + "packages/lit-hotkeys/tests/ssr.test.ts": "aaf888305a2833f92642bd447c4aa7e8465f87b95a174abe36b5ef3b4739f1cf" }, - "head": "5053876bbd97d6b056cef9eddddcc4e28c249aba", + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", "outcome": "no-change", - "reason": "Adapter bug fix (SSR subscriptions, reactive key-hold keys, cleanup outside components), its tests, user docs, or regenerated reference docs; covered by the skill review.", - "evidence": ["packages/lit-hotkeys/tests/ssr.test.ts"] + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:packages/svelte-hotkeys/tests/effect-root-harness.svelte.ts": { "fingerprint": "e64b3f0c53a1531b1dce79f34f3b8fbe12824dbb547ec38f512d3cab914e86d9", @@ -4089,14 +4184,16 @@ "evidence": ["packages/svelte-hotkeys/tests/effect-root.test.ts"] }, "source:docs/reference/classes/HotkeyRecorder.md": { - "fingerprint": "172fbfaafd03f66c42218b83c279a889e2f01ac8ae23063d8174fe46087c9d9f", + "fingerprint": "09b053092959b064ef579e7acfa0474896b340b66d4886e4a0da66e9064cca4f", "snapshot": { - "docs/reference/classes/HotkeyRecorder.md": "35665f0a06f15c9e7ff06350efac8422a4601501ddf5e3ce0e56888d171471a8" + "docs/reference/classes/HotkeyRecorder.md": "c1cd5087d40fe1c81542acb8fc1e0927a221828e59923b34539d8d718eb1ef66" }, - "head": "614339f8f59a0776451f4ccc64cb5cadc20fd145", - "outcome": "out-of-scope", - "reason": "Test or generated reference file; no skill covers it.", - "evidence": ["docs/reference/classes/HotkeyRecorder.md"] + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] }, "source:packages/hotkeys/tests/hotkey-recorder-ssr.test.ts": { "fingerprint": "cc1320213a1d9a3add1904eb163614e252ef51fb7f982c3da8c124715c238e8f", @@ -4199,6 +4296,1600 @@ "outcome": "out-of-scope", "reason": "Test fixtures only; the guidance impact is reviewed on the hotkeys-core skill item.", "evidence": ["packages/hotkeys/tests/sequence-regressions.test.ts"] + }, + "source:.gitignore": { + "fingerprint": "a84d15c818af0081559065548b39cfc324106ad5c821ac4408caa442f419fc0d", + "snapshot": { + ".gitignore": "9bb08f48d6ff76283b48a0df3ef663250f937ef5497c16ceefd59a35c38a8842" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "out-of-scope", + "reason": "Local ignore rules for untracked notes; not part of this change.", + "evidence": ["Not committed with this PR."] + }, + "source:docs/framework/angular/guides/app-hotkeys.md": { + "fingerprint": "8758f2f044dc5002deb84064c8a978fa10c688c22ab2d1c5da81d2e0604cf411", + "snapshot": { + "docs/framework/angular/guides/app-hotkeys.md": "71fb0c6bdf82260911e2f4296a0ebd102abba9f7f5965630347fc74888362642" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/angular/reference/functions/injectDefaultHotkeysOptions.md": { + "fingerprint": "6fdb57f2f315963be1db747aa4c9e19d153fe205cfb73015d95115bc232791c1", + "snapshot": { + "docs/framework/angular/reference/functions/injectDefaultHotkeysOptions.md": "ed698c5ed271c557b9fef75a485981aa4e9f514120219388702226848453a505" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/angular/reference/functions/injectHotkeysContext.md": { + "fingerprint": "f87d0b4f4e2d229be6e83f4124610597e4f6cb2fa41fdb62cf386cf8e06fba9f", + "snapshot": { + "docs/framework/angular/reference/functions/injectHotkeysContext.md": "6e86468575797834267b61aefef2f9e91e6f6a76a3f6858a19960d985b5ee332" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/angular/reference/functions/provideHotkeys.md": { + "fingerprint": "8d7a9f0961fa1dee557058e56c0bfc22647b91e64e50e3eddf3d80b752ff2ec5", + "snapshot": { + "docs/framework/angular/reference/functions/provideHotkeys.md": "c0f0412226aa7d1ca7f02514186f486e6b2d2e7e47f1d7bb8484abd59f88d817" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/angular/reference/interfaces/HotkeysContextValue.md": { + "fingerprint": "34e2e0d70deadf15a93848a21728a2314d37d1f682eec36596c0a89e32754f2d", + "snapshot": { + "docs/framework/angular/reference/interfaces/HotkeysContextValue.md": "1e72c6934804953933fbab191509fc559caa06fbba1561563c7caae21e0a5c75" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/angular/reference/interfaces/HotkeysProviderOptions.md": { + "fingerprint": "04ecd7c686ccfd664e0ecf357be11674b5aecf02927c60476cd08fe9a4ced68e", + "snapshot": { + "docs/framework/angular/reference/interfaces/HotkeysProviderOptions.md": "8e4662d6da2ea88b5b62a478e1b807233e2b52ee270317326312a58119236515" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/angular/reference/interfaces/ProvideHotkeysOptions.md": { + "fingerprint": "cf5ce93e72b13809b3dc30886dc90fa06ba4f70e879c884d312b8f5eb72990c1", + "snapshot": { + "docs/framework/angular/reference/interfaces/ProvideHotkeysOptions.md": "f42bc7094c166add53a26c155f073af1a8f953e438d3e7cb1f098880521a3699" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/angular/reference/type-aliases/MaybeGetter.md": { + "fingerprint": "67ff23cf90f303ab525ec67119c71575520f703b00d76e4bf18d48a6b5a64646", + "snapshot": { + "docs/framework/angular/reference/type-aliases/MaybeGetter.md": "c1e1b71382192567a5fef85d4ac6721957c88c9a6f7fbd15509cf4167a7458de" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/angular/reference/variables/HOTKEYS_INJECTION_TOKEN.md": { + "fingerprint": "1abd03d54304eb8d65923e5c4336f11a866fab12b8d8826ec6c773d5335c07e5", + "snapshot": { + "docs/framework/angular/reference/variables/HOTKEYS_INJECTION_TOKEN.md": "6825ced6a32df27ad80af9d145f9bd095c4656b28ff7718047bb98f7208aa2cf" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/octane/guides/app-hotkeys.md": { + "fingerprint": "d882fce17ffe9695f154585d1215117f496516b413a945e346f9f2e2d4e7227d", + "snapshot": { + "docs/framework/octane/guides/app-hotkeys.md": "5f966932314b7bd4a54997c96afc239e37e95d2a22453831f3993458e8cfc27c" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/octane/reference/functions/HotkeysProvider.md": { + "fingerprint": "bac53f1080bb5f9f3117fede5f64900dc39d1a62eccf27e8475dbe5ec97eb589", + "snapshot": { + "docs/framework/octane/reference/functions/HotkeysProvider.md": "8302544d156b2d7f5dce44fa78349ca93e821006a8b774b3d2f48586515f13ce" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/octane/reference/functions/useDefaultHotkeysOptions.md": { + "fingerprint": "5ea6f6588c44bda79795085069a1be8a3131660e78319c410f2d9180bd6d37f7", + "snapshot": { + "docs/framework/octane/reference/functions/useDefaultHotkeysOptions.md": "6243a886e6bd51ff0d6e4b0841f150b0502d66f7fdf9f97a6d8732094ffdbbd0" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/octane/reference/functions/useHotkeysContext.md": { + "fingerprint": "2107e2006db53c46276d49714a989ff72a7a04839a97cfc48d1da5f12cdadd95", + "snapshot": { + "docs/framework/octane/reference/functions/useHotkeysContext.md": "541fdceab030cd8aeeb866f9da80b7e0230132b0838025b482709c9b414ec683" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/octane/reference/interfaces/DefaultHotkeysOptions.md": { + "fingerprint": "23c01439aa33a3eb846ab3562b3e395f837403517b3cb40285837f8bb5687f56", + "snapshot": { + "docs/framework/octane/reference/interfaces/DefaultHotkeysOptions.md": "a360223c4209da3c40ad44d6ea1d099afcfcd49bb55225b32574752f364ec868" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/octane/reference/interfaces/HotkeysProviderProps.md": { + "fingerprint": "8a1d5a808d113062afef4479aed2cda0579c73d38ec201ba4b83d560f7a80058", + "snapshot": { + "docs/framework/octane/reference/interfaces/HotkeysProviderProps.md": "ce68ee5ac230c4a4114742ebf92246926515f506ed22294a4dc22319f1cdb2eb" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/octane/reference/type-aliases/HotkeysProviderOptions.md": { + "fingerprint": "5acecc35ff1ffa792194a99490c41b7e63cd176472e6b00d952c1a9f07f341cb", + "snapshot": { + "docs/framework/octane/reference/type-aliases/HotkeysProviderOptions.md": "29c6b77f6dd3d0c70958e8e656ae7455e82c3bf420c5bd82396063ce725fbf97" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/preact/guides/app-hotkeys.md": { + "fingerprint": "0ae86d35947c0ffa2a05d4e63c989d99344be47c8145659b848aeb1dcd353b6e", + "snapshot": { + "docs/framework/preact/guides/app-hotkeys.md": "a1db3b79fc1dc4a954bebde2d1edfe57b2a5b1fdf39d7686f86340ad98ae047a" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/preact/reference/functions/HotkeysProvider.md": { + "fingerprint": "50bc640108fff35d2ae9c42324e716e930c4f2880e577eb16f842d27b72ade24", + "snapshot": { + "docs/framework/preact/reference/functions/HotkeysProvider.md": "c4a9e6e51146f5061c7a727a762a20a65a544551c0397960b425b5a59a260c3d" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/preact/reference/functions/useDefaultHotkeysOptions.md": { + "fingerprint": "2308d91861730dcaace01921275337121e794866b6df58919e870430f1d8384e", + "snapshot": { + "docs/framework/preact/reference/functions/useDefaultHotkeysOptions.md": "f7481be2761d99a6bf56922e63ce967aaf7784d5fc3bf9e4718764df56c79459" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/preact/reference/functions/useHeldKeys.md": { + "fingerprint": "5280eebb6cd8969e0857db882538954c4fbe3219155ca82437ae5454a94d3efd", + "snapshot": { + "docs/framework/preact/reference/functions/useHeldKeys.md": "576d2874f3c32c7fee11b8b64d5a7a9348079fd987ea7feaf386c554364d543e" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/preact/reference/functions/useHotkeysContext.md": { + "fingerprint": "c8e4fb59d0c7f6dbbf9c62dd965f3eb169a1a33961d26645009c259696745395", + "snapshot": { + "docs/framework/preact/reference/functions/useHotkeysContext.md": "ce3a5de44b56a64ce734f9ad9c10ad8f452512df3ac8a2bfd47a45d2599d63c6" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/preact/reference/functions/useKeyHold.md": { + "fingerprint": "b81f4edcd16fa0df8e66a65d94f4ed8c1489f650ffc366ee20fe27f14dad2cd7", + "snapshot": { + "docs/framework/preact/reference/functions/useKeyHold.md": "50f4e7748f49f68709e879e4c9075c77fe4ea712b72078892a6a17fbf2fdbb66" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/preact/reference/interfaces/HotkeysProviderOptions.md": { + "fingerprint": "696134f727acee0f23b8442c82566ab16afbd9fad3db71bdfc19a6157a52d0ad", + "snapshot": { + "docs/framework/preact/reference/interfaces/HotkeysProviderOptions.md": "d0803fdc868173fe964cc379f9033fc09c697df9b873e117ae3df2b646536ab0" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/preact/reference/interfaces/HotkeysProviderProps.md": { + "fingerprint": "5161edc34c8f93bf6a0ae35214d282b845c49f3d4a62cba6a922be7c6833ab35", + "snapshot": { + "docs/framework/preact/reference/interfaces/HotkeysProviderProps.md": "cc157435db069893c8b71a790a2be5fb8deef8224da14a8fbe4a383611d7e527" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/solid/guides/app-hotkeys.md": { + "fingerprint": "4a4690cba68173b0ea9073f7bbb7d7aeedbbcd3f66f2c6975bcc8fe3c0e350ce", + "snapshot": { + "docs/framework/solid/guides/app-hotkeys.md": "45532d07d81dea93c89940c4c188d304a3519c44ad78e3ce478645ec74314ac1" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/solid/reference/functions/createHeldKeyCodes.md": { + "fingerprint": "15adb4ed78b165f85cbac5cf49382f04489b8590650b8d98b06b51c273089cca", + "snapshot": { + "docs/framework/solid/reference/functions/createHeldKeyCodes.md": "10e405f011591c988c43e22518d61c2e39caa82f87e685843bf62ec8f5c70507" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/solid/reference/functions/createHeldKeys.md": { + "fingerprint": "2febcb456b057131acb5de3964be4016f9515af0fe538e6d75738306e2312758", + "snapshot": { + "docs/framework/solid/reference/functions/createHeldKeys.md": "7f273edcf28ef426d409e721d63630663a78bb5b703620160163c8a98bb081c9" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/solid/reference/functions/createKeyHold.md": { + "fingerprint": "8dcb42b2da744010e36c881171c2229f3886e0c197af4d3b255384ce8e914c9e", + "snapshot": { + "docs/framework/solid/reference/functions/createKeyHold.md": "d3a05c04d824cdfb48d8fa4e51a880b1ece3a9d8d0d5bfb326e9f50fcdf669cb" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/solid/reference/functions/useDefaultHotkeysOptions.md": { + "fingerprint": "e8b22d636313892c3b64241eae7180d5fe42440facc608cbb7bb3fdacd56090e", + "snapshot": { + "docs/framework/solid/reference/functions/useDefaultHotkeysOptions.md": "79863cd20b3c267c6367cb17c661563a7c8245150f417eae114e6d3f833b5ef6" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/solid/reference/functions/useHotkeysContext.md": { + "fingerprint": "87078d465e6555e1af7f7b072e48489cf4c7007c30e64ac9eac0a606eec654c0", + "snapshot": { + "docs/framework/solid/reference/functions/useHotkeysContext.md": "f30bcbe50f67e073407c0b642691fa6eb3e9eb03e441281741b44e36e12425d1" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/solid/reference/interfaces/HotkeysProviderOptions.md": { + "fingerprint": "5f37b923cb406a9cf00206ea8b16eccc96c137ce99a98ee15d75f8261da40365", + "snapshot": { + "docs/framework/solid/reference/interfaces/HotkeysProviderOptions.md": "fa1e4344d2d0c426c301e0aac8c540e356c1b077225131f180876ba8b605ea22" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/solid/reference/interfaces/HotkeysProviderProps.md": { + "fingerprint": "dcfc2bd3eac78dbe176cc0f3e919e640a6ddfcd130c7d23ce502dd49ba35815c", + "snapshot": { + "docs/framework/solid/reference/interfaces/HotkeysProviderProps.md": "174af2176df292780e571b8543231f690276bea35dee9d9e4cf474ac85763638" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/solid/reference/variables/HotkeysProvider.md": { + "fingerprint": "58f328d0ddc418968747e1f3099e4c270b5ed9ab9ece55db9ca073c41d9484ae", + "snapshot": { + "docs/framework/solid/reference/variables/HotkeysProvider.md": "9baa867b4027da78d752086e4955438beab08627f2dbdf67d606473a3ace19f5" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/svelte/guides/app-hotkeys.md": { + "fingerprint": "1379b46f2bb3b94bab35fe57b2e7a6c233610284936f1f24ba9ff472ee2cb65b", + "snapshot": { + "docs/framework/svelte/guides/app-hotkeys.md": "1bb42bcd88e305eef4b51273099af74b35469117d6d4025ac35b754398541797" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/svelte/reference/functions/getDefaultHotkeysOptions.md": { + "fingerprint": "c99e171da8f691804864733f255c4908e14532b22683dd1c9eae18007de6654e", + "snapshot": { + "docs/framework/svelte/reference/functions/getDefaultHotkeysOptions.md": "e87fe38e5b3df29e1615f3da19c62caf02d1717a755799726fc245692db44cee" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/svelte/reference/functions/getHotkeysContext.md": { + "fingerprint": "e8501c569414e699a249105fb5a2b4c2cd6c255c6c2172f9e08f60ef6fdaf2cb", + "snapshot": { + "docs/framework/svelte/reference/functions/getHotkeysContext.md": "e01221dbf6f6bf2cd5596cc414b1bdf63f58a84a25136aa37d3e271c9ccdbf92" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/svelte/reference/functions/setHotkeysContext.md": { + "fingerprint": "25baf898b2c3f94b78546bb99f26a189a3ea3683aa5d393b83480d0ceb04da87", + "snapshot": { + "docs/framework/svelte/reference/functions/setHotkeysContext.md": "cfd0cc4b1312e942ac2b605d905e8040bbde0a3f2b16b8033cd391eae3030d17" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/svelte/reference/interfaces/HotkeysContextOptions.md": { + "fingerprint": "f733eaeb41bbf2245afd5459984a53b19102c0fc1c218fd45ceaf38f9dc8da84", + "snapshot": { + "docs/framework/svelte/reference/interfaces/HotkeysContextOptions.md": "a7dfca92aaa5af4ea78b3884313663b6036ba19f148abe7cdc44c02627e8a2d6" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/svelte/reference/interfaces/HotkeysProviderOptions.md": { + "fingerprint": "2275ea7152103768cf74d680fcbdb68c61419770440ca7379ba4f0688615cf33", + "snapshot": { + "docs/framework/svelte/reference/interfaces/HotkeysProviderOptions.md": "0e72b5874035b34239b8f732da3e8ddb280b1e64e83154236a4188834d57402b" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/svelte/reference/interfaces/HotkeysProviderProps.md": { + "fingerprint": "70d65ed46b002de0223e803ffcbb3ae3661e988277c612262b9bebd0cc3dccf7", + "snapshot": { + "docs/framework/svelte/reference/interfaces/HotkeysProviderProps.md": "10d7e8fb378df4938d9e8830d126eeb004f7709acb2d6dc332184b1b8edec80c" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/svelte/reference/variables/DEFAULT_OPTIONS.md": { + "fingerprint": "df2f8776036b1ddd073b6171f227297b5e9edd18e4824b9d05cd227aa6f748fe", + "snapshot": { + "docs/framework/svelte/reference/variables/DEFAULT_OPTIONS.md": "adb9d6c97894f6703a594bd08df7a83dbc485b7aa63e34c4563502b005fe7fa0" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/vue/guides/app-hotkeys.md": { + "fingerprint": "0b504a1a2fce12b434f8edd27d4937f27de46116a199d0d505f7ba40b63d9bc0", + "snapshot": { + "docs/framework/vue/guides/app-hotkeys.md": "1750af37319dc1dd0f4c8d2bc7ce07a7a59cba6d1db6470a33441bf2be1f3893" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/framework/vue/reference/functions/useHeldKeys.md": { + "fingerprint": "37f6fd6d5776bfca03aaf7a23869d06709a72f92cd51306ec116019a8bf1262a", + "snapshot": { + "docs/framework/vue/reference/functions/useHeldKeys.md": "7d304c07a844b3b04d3614f96839c3fe37e089d7915b8a3f292f19e153473430" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/functions/activateHotkeysProviderScope.md": { + "fingerprint": "0d3fd93fc0003d10c0b7a6874ab783a4d2c6f15ebb03073166c4135ea18286e1", + "snapshot": { + "docs/reference/adapter/functions/activateHotkeysProviderScope.md": "315222298c5bf437b27a37f543413dc0cab1108805de1a1bc93ab6e1706f64b1" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/functions/createAppHotkeysStore.md": { + "fingerprint": "1f94a59a3af07b31422a5c114eb21c28baebd531227a217477f70858bdf7796f", + "snapshot": { + "docs/reference/adapter/functions/createAppHotkeysStore.md": "c2a8f52ff91941dac2f0a9e6cff1920f095bcd480e9d9a89cc69ba81ae109dec" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/functions/createHotkeyBindings.md": { + "fingerprint": "07164c19f1f085933befd592e8d468b757304a89fcc68926f699c3f88ac3cf1e", + "snapshot": { + "docs/reference/adapter/functions/createHotkeyBindings.md": "4b20caabf0da148bb62ce2a37d780a432858fe64327bc26784343448ba4f3fff" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/functions/createStore.md": { + "fingerprint": "8dd1da61c6db9787765f59709468cb3e3d284218ac8b67e3f870af5212f7df65", + "snapshot": { + "docs/reference/adapter/functions/createStore.md": "16bd14da1f45cb868ff30f836666147d12644213edde30ba73c5f6c3d828054a" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/functions/getHotkeysProviderScopeKey.md": { + "fingerprint": "00288c8dd3f420b4b39af38e5eca338635b4d1f0cb377800accbba86409e9095", + "snapshot": { + "docs/reference/adapter/functions/getHotkeysProviderScopeKey.md": "4daed3603c3301adf40313df7a2c479f16ca738b02e781922f23e6d6c6956090" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/functions/mergeHotkeysProviderDefaults.md": { + "fingerprint": "9a79cc7c82e7f387c35dc5af7083c01667f3b76d8dbc3d2d5d5536842f620e64", + "snapshot": { + "docs/reference/adapter/functions/mergeHotkeysProviderDefaults.md": "1f324c106f1bf503053cd28939b6adff4e3396bfae7bd9d3169786171372fd24" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/functions/prepareHotkeyDefinitions.md": { + "fingerprint": "ca03a32d26947eb8f1b56b4d2f8a22fc04d6c0fc572736e1ef5290a3ae87d126", + "snapshot": { + "docs/reference/adapter/functions/prepareHotkeyDefinitions.md": "8afc75d82f03130a4d646754e1c50be1a5b9f19271c45b919f74e9f3012aa26e" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/functions/subscribePublishedAppHotkeys.md": { + "fingerprint": "72a79142c248419282a2b37a2999a43286ba6dc129eba2def3f8b0ce2b55989d", + "snapshot": { + "docs/reference/adapter/functions/subscribePublishedAppHotkeys.md": "f2064768839eef2d5a2578e77480197aab8f1c3ab216dd1549566588d79bfd16" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/index.md": { + "fingerprint": "3fd227ae81550c61861b0cfe3a591a5b7b77868db748b27c7cef7c9301c4119e", + "snapshot": { + "docs/reference/adapter/index.md": "3553823c2c4f8d851396ec073a8d0be4e0b9cff5e1aa89a0f4508d5e0e5ceb59" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/interfaces/HotkeysProviderScopeProps.md": { + "fingerprint": "0e57844985abcebd3ca7a2a9f0ae3a55b2bf8b9767b65903ee0577ee1aeef52c", + "snapshot": { + "docs/reference/adapter/interfaces/HotkeysProviderScopeProps.md": "72fca28a23e28dac4aa2f11a33318e9eec5bd6d7ffc1611e433cf90015c8bc0f" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/interfaces/PrepareHotkeyDefinitionsOptions.md": { + "fingerprint": "aacb9d7ccf983391fc3bcf3af348e4dec151de585ebdb8584673bdb1246bd288", + "snapshot": { + "docs/reference/adapter/interfaces/PrepareHotkeyDefinitionsOptions.md": "3c8c99cbfdc77ff45d80690e397be037073a2c05f26dfe880008911f565be5ef" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/type-aliases/AdapterAppHotkeyOptions.md": { + "fingerprint": "8fd776739f09b1b12e4017eb94dd17df4a0ca8672d3563f920a685e6d0f580eb", + "snapshot": { + "docs/reference/adapter/type-aliases/AdapterAppHotkeyOptions.md": "5b07832ec9a5d7668658cfc97c40305d9acaa2b3bbca3579106de9a8bfdb8913" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/type-aliases/AdapterChordOptions.md": { + "fingerprint": "b301390c6c10500f3a30e1e8b2e4d5cb575ac49dfa0e5abd911f5bc43006065c", + "snapshot": { + "docs/reference/adapter/type-aliases/AdapterChordOptions.md": "1136c179bfea472f86c6c3ec50fbc47de5b44b441baec256c56e8d5ecbefdf53" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/type-aliases/AdapterCommonOptions.md": { + "fingerprint": "c3ea1484f4eb8c5014348df65ce972ea1c4caed5cd6ed0cf9fd8814da028937c", + "snapshot": { + "docs/reference/adapter/type-aliases/AdapterCommonOptions.md": "df71254e31fff1467d7a63577431b3d3a770e8ae72919151a2dc4a291ec8c034" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/type-aliases/AdapterHotkeyDefinition.md": { + "fingerprint": "11e0eb7252448e1a1ea27784f4bc81ef3f936c28608f3ded376fab4c25bb1465", + "snapshot": { + "docs/reference/adapter/type-aliases/AdapterHotkeyDefinition.md": "2ae608e18b896fe1feee1f51388e0c71f3a2bbdf8969cf0f5ad8e2960a2b1bee" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/type-aliases/AdapterHotkeyOptions.md": { + "fingerprint": "3666a01e5c229f2f6d147f9bd10716680ebcaa80e17cee48db4c0ad6cdd74e47", + "snapshot": { + "docs/reference/adapter/type-aliases/AdapterHotkeyOptions.md": "56ca45d4e7b2c0bd91f56c710211f52b48597b84fc7b894251c4a1cfa81da07b" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/type-aliases/AdapterOptionsFor.md": { + "fingerprint": "a7232591cdb7f326e5613a3d8c59d1564bd9b0bd7a90190e7bd0895c22850543", + "snapshot": { + "docs/reference/adapter/type-aliases/AdapterOptionsFor.md": "740102443ef7f8d1e92c0cdf288115aa57976e244667a43cff8989b9a925698d" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/type-aliases/AdapterSequenceOptions.md": { + "fingerprint": "f3b36e55fbb558ba3abf7b1e0b78d3c885c4bcc0304f414d0f73b34f18e2d3cc", + "snapshot": { + "docs/reference/adapter/type-aliases/AdapterSequenceOptions.md": "87a9265899a87ccdbb8bc639fc2a13fa2d9887b0b0e104307d26428592cfdfe7" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/type-aliases/HotkeyBindingsCommonOptions.md": { + "fingerprint": "0411ca91e1b946962f1028a5bccce2be7e6d636d0a9e8e107f7ec8a0058bc8c9", + "snapshot": { + "docs/reference/adapter/type-aliases/HotkeyBindingsCommonOptions.md": "c9890e5a40eece9ebf1bedefcfac6a90e0fa9cde0894aef0f513c7a4add7cfb4" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/type-aliases/HotkeyDefinition.md": { + "fingerprint": "4b74e79eeb6a96109ae2084efc6749365ef6102b8f1dad4131d06490fb0e2444", + "snapshot": { + "docs/reference/adapter/type-aliases/HotkeyDefinition.md": "b46dd3ef5b8f6ab01a822e010476f6cff8ecc71e4afe67062266000d7a0b5573" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/type-aliases/Store.md": { + "fingerprint": "f040174c6312b2ecd62f649d78b8af7ce7eb5108869b0d4c28b734a1b5941571", + "snapshot": { + "docs/reference/adapter/type-aliases/Store.md": "6c8e071c5807eba990c276b7fe42224793a5bd94f30aef6dfb6a1858bf564509" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/adapter/type-aliases/WithTarget.md": { + "fingerprint": "00863421df1801a744c268cd2f96642b53544fd314f27113872016395fc69b7f", + "snapshot": { + "docs/reference/adapter/type-aliases/WithTarget.md": "913934c57233ac809819208e5fc11530cc849af3509ba75cf7f1b024efc53d24" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/classes/KeyStateTracker.md": { + "fingerprint": "7f64a816f9e7bcd3faede7d09c4c330f86789fd9398ddf60e99129f19d356c53", + "snapshot": { + "docs/reference/classes/KeyStateTracker.md": "5af083dadab704c06b293645002fdb020578d1b43ec77ac268516d54ad2da097" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/functions/checkHotkey.md": { + "fingerprint": "5c39b16a57e3913f3a213a7d489170b7ec52204a19f2a08ac9dd4979615305ae", + "snapshot": { + "docs/reference/functions/checkHotkey.md": "71d7bc0c2f94a62703c46ce71e6e31f189dcdb4e40b4689ef9ce20f519f601a3" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/functions/getKeyStateTracker.md": { + "fingerprint": "05b94923732791a68986c899c0f650deb594a2197539a7dd11a09fcf866383eb", + "snapshot": { + "docs/reference/functions/getKeyStateTracker.md": "353e8f2ca95f613016e84fa55b709f770c7f1765f2ceb35fb5a5777bf087bef1" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/interfaces/HotkeyChordRecorderOptions.md": { + "fingerprint": "f857e35be3bc01829812e5d01855e87ec79638b605e5fb1a6813c7cf0766b78e", + "snapshot": { + "docs/reference/interfaces/HotkeyChordRecorderOptions.md": "4fcef678768bc631bac4a8df6fe534e8665e3131a3ab33ac3535fb10baa10b41" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/interfaces/HotkeyChordRecorderValidationContext.md": { + "fingerprint": "5cd15fcc9b41bb4ceb0c45ea1b8e640cd2455d0880ecef67df270a25db82bfba", + "snapshot": { + "docs/reference/interfaces/HotkeyChordRecorderValidationContext.md": "15c6eae9f189c7719e86f666dca95bc6bd669aa5a8e81fbaa2ff6ad590e2d8b5" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/interfaces/HotkeyRecorderState.md": { + "fingerprint": "f4a7e50363a290e36c388bd6dddcde0b664a4c0f82316b1bbc997143a15214b5", + "snapshot": { + "docs/reference/interfaces/HotkeyRecorderState.md": "66c09ec0edac6d9ceb2172ca9fa5a4c1c9fe25c20b48ba4b522538e595deefb6" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/interfaces/HotkeySequenceRecorderOptions.md": { + "fingerprint": "12a841cd4c4e4c57a7b6d5a15a6c050a7e6b44990ee1ca5f9dbd10d622df41b8", + "snapshot": { + "docs/reference/interfaces/HotkeySequenceRecorderOptions.md": "647d6d0a916bf58eeb39c3264d7c46e147c9904505ccd58984acf96b6630c3de" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/interfaces/HotkeySequenceRecorderValidationContext.md": { + "fingerprint": "bce9dbd6ce0f4bd19e026c74af24baa2e50cdf1b6aeab252e720c65ea3ca8636", + "snapshot": { + "docs/reference/interfaces/HotkeySequenceRecorderValidationContext.md": "b73b173d786870fc7325a4e0bad58743693478374a61e561f894e3626d95c05e" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/interfaces/KeyStateTrackerState.md": { + "fingerprint": "e36465fff171ece514274b617e28a194753adc9e8e4ea5837c72ed802e278f73", + "snapshot": { + "docs/reference/interfaces/KeyStateTrackerState.md": "b1538f8abd83b229f68593de8282a7011b1ee5cbb2572bd8d909cd742b283708" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/interfaces/RecorderOptions.md": { + "fingerprint": "82f7cf52e9f7ddd07c73df7f45ccd3a22106bfdb0ff74bef076877b17e472f18", + "snapshot": { + "docs/reference/interfaces/RecorderOptions.md": "9956f498043e11a5e97ff23f127f388f07203ced03a9afce6dad7667933abcd3" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/interfaces/RecorderRejection.md": { + "fingerprint": "81358dab6c959188cc88c6dc0f991cdc8dc7b8ac27f522e63f2fffbd3712527a", + "snapshot": { + "docs/reference/interfaces/RecorderRejection.md": "53da33ab3a3d9b250446fa7cf88a8a72f4a96a6c185ec22dea8300064aad9004" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/interfaces/ValidationResult.md": { + "fingerprint": "60d5866bb52bdcc952fee97710ed9470a8ea27705911a6ea2742d1676691289d", + "snapshot": { + "docs/reference/interfaces/ValidationResult.md": "9a6af3321c26510e21f2f8c2dc9052373f9532827b973f7ecd17fa997d6537e4" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/type-aliases/HotkeyRecorderCommitKeys.md": { + "fingerprint": "62acfa97ecfd9bf2d24d1051292cdacb29a9fbdca91faccd6eb38714af6cd80a", + "snapshot": { + "docs/reference/type-aliases/HotkeyRecorderCommitKeys.md": "67640df0e5f1920c4afdba568256326099e5ab7ef7a9e1dc74659576996cbb21" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/type-aliases/HotkeyRecorderOptions.md": { + "fingerprint": "9e19d6eaa693538edf66e61e0a255ed9c9b647f9185eab6e9b89185216d4c2ff", + "snapshot": { + "docs/reference/type-aliases/HotkeyRecorderOptions.md": "a7a3e9fb0772c62cff3470825b1229ca7572389bf5367ccb60d5c8e34f4a29e4" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/type-aliases/HotkeyRecorderValidationContext.md": { + "fingerprint": "21955db51b961fb1f62dd1bb4e3d0357dbe62df223849eacd5aa4ece6158aa89", + "snapshot": { + "docs/reference/type-aliases/HotkeyRecorderValidationContext.md": "1ea931c341531ee1ff10cbece08990a2e1318f28b361a9d0d287a97bde0e308d" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:docs/reference/type-aliases/RecorderKeyMode.md": { + "fingerprint": "ff703a3e17ced4d1b023666aaa5af5448168b51466d3e589ae36615693e9b8f9", + "snapshot": { + "docs/reference/type-aliases/RecorderKeyMode.md": "181b067e18ee38e6416da787a905aa85b43ba5b7a23e81cf1e37224bf69bd52b" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/alpine-hotkeys/tsconfig.docs.json": { + "fingerprint": "2ae425b102b1ea8fdb67e00ada8c04eb02af8ce1b351a1efa37d6b54c1b580ac", + "snapshot": { + "packages/alpine-hotkeys/tsconfig.docs.json": "099bc5b766fea22efd9d255cfe58890e4a66eb843ef9a944f73f0104129acd56" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/angular-hotkeys/src/_injectSelector.ts": { + "fingerprint": "4fdd25ca5c4ab7b4490f91c8cf863d3698d8829ad9f9611e9f55e54d1da14ac3", + "snapshot": { + "packages/angular-hotkeys/src/_injectSelector.ts": "f97d109c019432da734ad43f34638e7801f0f598ed6a6341360c6b7badbde8fe" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/angular-hotkeys/src/injectHeldKeyCodes.ts": { + "fingerprint": "091bf33f40f8f7496624eedb0a88702206efb3c20bf77c2cfb451f80413556bd", + "snapshot": { + "packages/angular-hotkeys/src/injectHeldKeyCodes.ts": "5c178e1cfa34b42e6d950884540df2f51d15f073aed2e887d989907067bc1fe1" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/angular-hotkeys/src/injectHeldKeys.ts": { + "fingerprint": "d402bac992ac02d35845067ce71d7d61611a80d79c66abd01e240f544a75b097", + "snapshot": { + "packages/angular-hotkeys/src/injectHeldKeys.ts": "d592acdf18f2226cc34c19d96e0b64562349c4f3a822212e1361915dd3bc0ba3" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/angular-hotkeys/src/injectHotkeyRegistrations.ts": { + "fingerprint": "30b2ff92e401613695abb962f2802d098d25f866a46af2d99918d80df943b45c", + "snapshot": { + "packages/angular-hotkeys/src/injectHotkeyRegistrations.ts": "b50e6b9c7add932aa9fccde9ab23692282935e33fc10a605f4f4b5fbbdd56e64" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/angular-hotkeys/src/injectKeyHold.ts": { + "fingerprint": "f309140c7df50151711a0d912588d2b2d1b3cbe53c84e27f7ddd94bea2ede4e3", + "snapshot": { + "packages/angular-hotkeys/src/injectKeyHold.ts": "8db380ab5ab50a10038c4b9cd29ddf2b6863b10429bc5e3432b086b3eb524ced" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/angular-hotkeys/tsconfig.docs.json": { + "fingerprint": "d6f11749eb8188613c65bf0a4682d0cc01b6f735438c47f381466aae5a0cbbec", + "snapshot": { + "packages/angular-hotkeys/tsconfig.docs.json": "e657a1aea5c1bbc15961ad7d541e89e84fa129896c8f095dea28e4a8eada0b80" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/ember-hotkeys/src/utils.ts": { + "fingerprint": "7f0a0f8a42103b963b34a439ad59363ed288144154d66cd105b414b28907152b", + "snapshot": { + "packages/ember-hotkeys/src/utils.ts": "72da4ad9049d97d71cee8f10523e1c650083c4050449035778fd81e232c613fc" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/ember-hotkeys/tsconfig.docs.json": { + "fingerprint": "5a0b923213eb2824c82df256d6984612e872d6f45f1df1166b5f9035067a6e5f", + "snapshot": { + "packages/ember-hotkeys/tsconfig.docs.json": "1477087a64a47e7b9936ae297723e2ca10775cf9585d5bbef38ace8b0d26735c" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/hotkeys-devtools/tests/live-updates.test.tsx": { + "fingerprint": "691c7c96e882e2f4f8f6ade200cb54f6ac34432663dc3dcbbc6cd239c86ea331", + "snapshot": { + "packages/hotkeys-devtools/tests/live-updates.test.tsx": "cfd08ed565d33d3f3224b3f6687628511c2cb90f35b3f781ff0a32b734445e6c" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/hotkeys/src/_app-hotkeys-factory.ts": { + "fingerprint": "3824f39665044a8d906dd5a3cd85024e85e25b51b6ae7b1ce0cec6ddd1b6ab84", + "snapshot": { + "packages/hotkeys/src/_app-hotkeys-factory.ts": "eff25996d6b4a2deda804e8ddd63e3ffa370b467eb582891825a58a2fffca09f" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/hotkeys/src/_registration.ts": { + "fingerprint": "bebdce150cbf73a121dcdec066d7273ca2504c558ab88245b92b1255d555b968", + "snapshot": { + "packages/hotkeys/src/_registration.ts": "57dc3e7c7ee33eae118f68fea126060739ec5bf31ce797de78f9c15acbf6a24f" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/hotkeys/src/_store.ts": { + "fingerprint": "01d160bae20ef0906e8cc1d503ff6ea509c970130a580d2bbb3e54201f5523af", + "snapshot": { + "packages/hotkeys/src/_store.ts": "060b780f8adde646b49ad8befc603777712996b080fc78e695dabed789d51d8b" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/hotkeys/src/adapter.ts": { + "fingerprint": "6e109ea86f32f7db7a4729b637e486ea9dde4dccd2852cd41529c5c96da7073c", + "snapshot": { + "packages/hotkeys/src/adapter.ts": "15d567ef0b60166b603fbb8360617e08057d5cb35055ab1a6f9f93f034a61e08" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/hotkeys/src/key-state-tracker.ts": { + "fingerprint": "6eb2c803a0aca6278da52fdec8898e99f659ce443cf1bedb072462dc0ce86c6f", + "snapshot": { + "packages/hotkeys/src/key-state-tracker.ts": "f14df791614081a15078c5732a3226e0d492903e1d683ad09c3efa89da0f8b2b" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/hotkeys/src/validate.ts": { + "fingerprint": "51c8b7f3ed7c34b1e679487d932c566c07d6013eb0f67efdc25b23a5aad078f6", + "snapshot": { + "packages/hotkeys/src/validate.ts": "1b3621875e0696bf75768b505b5f232b14caedc725d9b807ba17427f609da4e3" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/hotkeys/tests/adapter.test.ts": { + "fingerprint": "49fc3ca851c4e5c5e0fd973e368f1311aaa1826c32f6042734c344d29f9fb1fa", + "snapshot": { + "packages/hotkeys/tests/adapter.test.ts": "6e33e8d27a513dc219f23f3917ca8ecb994ee096ebe1ccbaacb4692a0fc9b882" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/hotkeys/tests/production-logs.test.ts": { + "fingerprint": "e44d564ed0e6fe38638387c6246b839d47d478b1401dd4e0fd779f5654518a53", + "snapshot": { + "packages/hotkeys/tests/production-logs.test.ts": "34ccec288d02e111912fc92684c8d5b2dcbb4a3973b7120976a660b7337795e0" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/hotkeys/tests/store.test.ts": { + "fingerprint": "7e3b0ed74178ccbe4fc414dfdeb4f1022404bd9bfa9303fcaa6749e75b5c93a2", + "snapshot": { + "packages/hotkeys/tests/store.test.ts": "937a0d549b52c25fb3f7381331117022b61dfa39595d750b503f1b22e0c0b21a" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/hotkeys/tsconfig.json": { + "fingerprint": "a5fefd02cd3b020bcb266683b823e298d16f1eb9905cefe7c29ef10e41a7490a", + "snapshot": { + "packages/hotkeys/tsconfig.json": "8e9865f026bf53b5a4de1a19a565b17320ed18d60e9444a7398c8f3bc3434bed" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/hotkeys/tsdown.config.ts": { + "fingerprint": "f44e2c78e8dcd19c051f698159b1f0b620ce457c4ccd6253538e4f0ee65123c7", + "snapshot": { + "packages/hotkeys/tsdown.config.ts": "beed69b180f14a5b991afa362245d344ce6ad87c105fe8fcd5175fe3d8ab9533" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/lit-hotkeys/tsconfig.docs.json": { + "fingerprint": "0fb4d01a815a4ca74c8ed0bb33cc3d74efcc1e4114eb2207dfea9333b55d5dc8", + "snapshot": { + "packages/lit-hotkeys/tsconfig.docs.json": "e657a1aea5c1bbc15961ad7d541e89e84fa129896c8f095dea28e4a8eada0b80" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/octane-hotkeys/src/internal.ts": { + "fingerprint": "2c783def10aa6b1ae36867b612428be16c2f69a8d7e8c4ef58bbf2cb5201b83d", + "snapshot": { + "packages/octane-hotkeys/src/internal.ts": "b5bbbe3e09ccdb1ec7bee6e3f832825faa7da0da055362ce9f66de88375adcf9" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/octane-hotkeys/src/useHeldKeyCodes.ts": { + "fingerprint": "3cfd063bea0fbce496c8c62f8e63895da6d128eb0a96ae712a1510fe405f6892", + "snapshot": { + "packages/octane-hotkeys/src/useHeldKeyCodes.ts": "070622569191d6aeb813c900450d72783a4c1efee0108b5850f96e4d8a6b66b1" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/octane-hotkeys/src/useHeldKeys.ts": { + "fingerprint": "1be6f1ff51a86273ea3758dd2a5d5b3bd20d38a0b42099e9dc13d789bad79378", + "snapshot": { + "packages/octane-hotkeys/src/useHeldKeys.ts": "8d74f93d6b3ee6881da04129fbd1fb4c1c0cd3ebb4631bfb6b1f4150978b4a69" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/octane-hotkeys/src/useHotkeyRecorder.ts": { + "fingerprint": "acb356c89a8594d52a61b2d75e153d7783c0c4ee26f2af8d3a6169cef34e4db8", + "snapshot": { + "packages/octane-hotkeys/src/useHotkeyRecorder.ts": "7986096ffec9c7a3dd5bd96221431cb23fac711d904643cfe25bfde8d2bd9aa5" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/octane-hotkeys/src/useHotkeyRegistrations.ts": { + "fingerprint": "9bd1a0cc0e51bd74eaf95309cdd96d83618ef4cfc9d8c2838625c36369210f42", + "snapshot": { + "packages/octane-hotkeys/src/useHotkeyRegistrations.ts": "b0a46b265ec8d5f05c1f2fd019dc4695f98a68eb8dbc3edeea3d45da2eb794de" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/octane-hotkeys/src/useKeyHold.ts": { + "fingerprint": "380fd3dc18467de8ec7b9536e3264570c1e3a9ebb2f0f08a602a1ff2cace63bd", + "snapshot": { + "packages/octane-hotkeys/src/useKeyHold.ts": "bdbe902ce9bf7ba9440cbcb361a2348fb5d48fc65d6edee8578b6ee4b6c252f4" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/octane-hotkeys/tsconfig.docs.json": { + "fingerprint": "5703a976611b704a2a403139138537ea171f70b0e01cd2023143590257b375d6", + "snapshot": { + "packages/octane-hotkeys/tsconfig.docs.json": "099bc5b766fea22efd9d255cfe58890e4a66eb843ef9a944f73f0104129acd56" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/preact-hotkeys-devtools/tests/panel.test.ts": { + "fingerprint": "8a77d89c4b82ffbfc68ba58987a6e93cb76c5efa8781dfed541519945396365d", + "snapshot": { + "packages/preact-hotkeys-devtools/tests/panel.test.ts": "20ee3b5b4fe6ebfcbe2ba362502cf7482c43991f511c8cd59da61f512d1fda99" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/preact-hotkeys/src/_appHotkeysStore.ts": { + "fingerprint": "e591598be162cd332cf9e56334dba2aba31f494f0f904c7abb5d3f95586f2391", + "snapshot": { + "packages/preact-hotkeys/src/_appHotkeysStore.ts": "9a63d1bf857a05280b213c8e18f56ccd2d7379a12a14c2f4682ddb5b3aad9bb4" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/preact-hotkeys/src/_useSelector.ts": { + "fingerprint": "39e22e89e018bac14bee0bb610565bf4ef843bfcbc24d0057c0a1b72e63e2c04", + "snapshot": { + "packages/preact-hotkeys/src/_useSelector.ts": "79b12c07089dbf5623f8b11459cc5996808213576633da7c9fecbe71becffb7b" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/preact-hotkeys/src/useHeldKeyCodes.ts": { + "fingerprint": "2ecc0582e8189ccadf6cae525273b439638db3b38f5dd9490a905e1fdc485302", + "snapshot": { + "packages/preact-hotkeys/src/useHeldKeyCodes.ts": "35a0000c1bc064cfaa36367b01636292e6aa774a3cfbc4da3b2f88fbf07ae966" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/preact-hotkeys/src/useHeldKeys.ts": { + "fingerprint": "aaed56bdced4fcd44738899deea7e7fd3a54bbc3b83a3ae5a85eb28e884bacba", + "snapshot": { + "packages/preact-hotkeys/src/useHeldKeys.ts": "8586c375e5f1f665be98e798cc57623a777daa12530006976bf06a7fc24691d2" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/preact-hotkeys/src/useHotkeyRecorder.ts": { + "fingerprint": "00f8f85f115f3e901b9cd316991a153dd893de62f679e2b789e80b087ada6a54", + "snapshot": { + "packages/preact-hotkeys/src/useHotkeyRecorder.ts": "9e935d70abac9fc74d7b819d333c8873141cfe8ec1d34455fa97ad726485b1fd" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/preact-hotkeys/src/useHotkeyRegistrations.ts": { + "fingerprint": "588c8464718b346a562ba341be21e676d2a7c41a48f3755b2599d8808ca967aa", + "snapshot": { + "packages/preact-hotkeys/src/useHotkeyRegistrations.ts": "765b197a19b9b06e7d828d07d5c34101075de9c4ae60c3bf4246b88c76104a20" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/preact-hotkeys/src/useKeyHold.ts": { + "fingerprint": "3cc0de3bb22a3238fe53233d5293401fd7d9bdd48fa6acec91eb70fc76a4edca", + "snapshot": { + "packages/preact-hotkeys/src/useKeyHold.ts": "74c85ee75fa8cd5a97f69b32b718c13be82c725d839e041bc7a83c8df5b061c3" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/preact-hotkeys/tsconfig.docs.json": { + "fingerprint": "2d2332e8442407ddf2491fc195fb2177a6d793fec6463c7a6da427730b301d79", + "snapshot": { + "packages/preact-hotkeys/tsconfig.docs.json": "e657a1aea5c1bbc15961ad7d541e89e84fa129896c8f095dea28e4a8eada0b80" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/react-hotkeys/src/_useSelector.ts": { + "fingerprint": "5c531454ca7f431871f8b4d5ecf8a4aa0276f13367fdc1ee0cab6aeac7e1dc0d", + "snapshot": { + "packages/react-hotkeys/src/_useSelector.ts": "d9f24b010f122ec0f07f61af59a952293da0fbf548a8af144cfb5c6763bcad8e" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/react-hotkeys/tests/stores.test.tsx": { + "fingerprint": "377c018e549d66e6e5e1f99d23240a933b6897798b9af03db54417e31ab92654", + "snapshot": { + "packages/react-hotkeys/tests/stores.test.tsx": "563e8b8e891dded6aae2f9e13441e639ff15e13e2633e1d81502a631b43d7520" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/react-hotkeys/tsconfig.docs.json": { + "fingerprint": "922995747d343f51b38cc6383f70112977213e9f3f11b868a5dc647572985a9c", + "snapshot": { + "packages/react-hotkeys/tsconfig.docs.json": "e657a1aea5c1bbc15961ad7d541e89e84fa129896c8f095dea28e4a8eada0b80" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/solid-hotkeys/src/_useSelector.ts": { + "fingerprint": "7c7938d512028001d845770579db80fac1db09ff07e1debffcd3741b2f4d6c38", + "snapshot": { + "packages/solid-hotkeys/src/_useSelector.ts": "14e941f7e66026de12f84da2d1cccd07c8c0f8843b1807944e7e61a95469db48" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/solid-hotkeys/src/createHeldKeyCodes.ts": { + "fingerprint": "405d3ac12b34c7a7f475084a3f11d626a175a2bc7a3d8f139aa1042ebe68733e", + "snapshot": { + "packages/solid-hotkeys/src/createHeldKeyCodes.ts": "1670ee20989ea1f7656a1ed0aebb71daeee263a6262a9fadc522a7d30ff46a76" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/solid-hotkeys/src/createHeldKeys.ts": { + "fingerprint": "ac4a2da9ad57bc03fb69ecbfdc950443dc0a3ae6bb54187124b06e5a9354eeec", + "snapshot": { + "packages/solid-hotkeys/src/createHeldKeys.ts": "9dd8b818ee9d77be060808f364163528db1efb6cfbbaef5d16ace698e1bb5610" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/solid-hotkeys/src/createHotkeyRecorder.ts": { + "fingerprint": "e251359e0f4aa00d3b74f7d8a90d9fbb839ad8aa430e8ae09c7b833dc62b5bae", + "snapshot": { + "packages/solid-hotkeys/src/createHotkeyRecorder.ts": "dd7fe19da34b9043133488659af21e34f47f2d1da279e43183678da168c445b8" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/solid-hotkeys/src/createHotkeyRegistrations.ts": { + "fingerprint": "5d724e1b3a478eacdfcd1af8c0edacca727a4a1f1b6f382bbdb037706d76471a", + "snapshot": { + "packages/solid-hotkeys/src/createHotkeyRegistrations.ts": "72252a0a441faf48ec11cd4a5c236db8ca5a89bc24f930d2bd6c18c58d61827d" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/solid-hotkeys/src/createKeyHold.ts": { + "fingerprint": "42b8c2dfbe26fed33e41e1acf3e46283edf73498138e318797b6c774b910c7eb", + "snapshot": { + "packages/solid-hotkeys/src/createKeyHold.ts": "1647094b9e629385da814049c13653e4196ec9154ff5062be4ce99142726733e" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/solid-hotkeys/src/defaultOptions.ts": { + "fingerprint": "8408dba320a78de7c7c889350d375ebcbc06b39913306cebda95eb9a5005c960", + "snapshot": { + "packages/solid-hotkeys/src/defaultOptions.ts": "fecd710fd82ff67adbb621e2e2af4986ec925d0a670fd6cfa8268624008c214e" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/solid-hotkeys/tsconfig.docs.json": { + "fingerprint": "92525303d95711da8e46d2d6a866170f7ec6bb2b3834743a145565cc56d8bd6f", + "snapshot": { + "packages/solid-hotkeys/tsconfig.docs.json": "e657a1aea5c1bbc15961ad7d541e89e84fa129896c8f095dea28e4a8eada0b80" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:packages/svelte-hotkeys/tsconfig.docs.json": { + "fingerprint": "c038d9ee2353d1266d8323d2ef818ff2a6f69ced3b05f7a2a3993db647e58dfa", + "snapshot": { + "packages/svelte-hotkeys/tsconfig.docs.json": "e657a1aea5c1bbc15961ad7d541e89e84fa129896c8f095dea28e4a8eada0b80" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] + }, + "source:pnpm-workspace.yaml": { + "fingerprint": "b03b00098fff50b9a1b88bacff5ae26b767ee0b2f554eacc4f850843192265e3", + "snapshot": { + "pnpm-workspace.yaml": "ea0035cd4b8aa643cde5f61c46a6b2b5df260c665872578fb6740df44ac58570" + }, + "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "outcome": "no-change", + "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "evidence": [ + "Reviewed the diff for this file against the skills that reference it." + ] } } } diff --git a/docs/devtools.md b/docs/devtools.md index 88f31d50..fb6758bc 100644 --- a/docs/devtools.md +++ b/docs/devtools.md @@ -24,6 +24,8 @@ The Hotkeys devtools panel lets you: Install the TanStack Devtools host package and the Hotkeys devtools adapter for your framework. +The adapters need a current TanStack Devtools host, such as `@tanstack/react-devtools` 0.10.14 or newer. Older hosts pass the plugin a theme string instead of props, so the panel ignores the theme and TypeScript rejects the plugin. Both libraries are in beta, so upgrade them together. + # React diff --git a/docs/framework/alpine/guides/app-hotkeys.md b/docs/framework/alpine/guides/app-hotkeys.md index de673d00..f9442df5 100644 --- a/docs/framework/alpine/guides/app-hotkeys.md +++ b/docs/framework/alpine/guides/app-hotkeys.md @@ -117,7 +117,7 @@ provideAppHotkeys(appHotkeys, { ``` - `customHotkeys` holds only the hotkeys that differ from the declared defaults, keyed by id. `null` means the user unbound that hotkey. Saving differences means users who never changed a hotkey get new defaults when you change them. -- `provideAppHotkeys` reads `customHotkeys` once, and the shared store owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning. +- `provideAppHotkeys` reads `customHotkeys` once, and the shared store owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning in development. - `onCustomHotkeysChange` receives the complete custom hotkeys after every change, ready to save. Storage can be anything: local storage, a server, or a user profile. The [hotkey recorder](./custom-hotkey-recording) records `Mod` rather than platform-specific modifiers, so a hotkey saved on one platform works on others. diff --git a/docs/framework/alpine/guides/hotkey-manager.md b/docs/framework/alpine/guides/hotkey-manager.md index c9229e16..ff1e4352 100644 --- a/docs/framework/alpine/guides/hotkey-manager.md +++ b/docs/framework/alpine/guides/hotkey-manager.md @@ -63,7 +63,7 @@ manager.isRegistered('Escape', panelElement) // Whether one matches on that targ `isRegistered` compares hotkeys the way [duplicate detection](./hotkeys#handle-duplicate-hotkeys) does, so `Meta+S` matches a `Mod+S` registration on macOS. -`manager.registrations` is a [TanStack Store](https://tanstack.com/store) that holds every registration in a `Map`, keyed by id. Subscribe to it to run code when registrations change: +`manager.registrations` is a store that holds every registration in a `Map`, keyed by id. It reads and subscribes like a [TanStack Store](https://tanstack.com/store), so it also works with TanStack Store's framework adapters. Subscribe to it to run code when registrations change: ```ts const subscription = manager.registrations.subscribe((registrations) => { diff --git a/docs/framework/alpine/guides/hotkeys.md b/docs/framework/alpine/guides/hotkeys.md index d3a3ad78..2109fd99 100644 --- a/docs/framework/alpine/guides/hotkeys.md +++ b/docs/framework/alpine/guides/hotkeys.md @@ -351,9 +351,9 @@ Use a target for hotkeys that belong to a focusable element, such as a list or a ## Handle duplicate hotkeys -When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning, and both callbacks run. Set `conflictBehavior` to change that: +When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning in development, and both callbacks run. Set `conflictBehavior` to change that: -- `'warn'` (default) logs a warning and keeps both registrations. +- `'warn'` (default) logs a warning in development and keeps both registrations. - `'error'` throws an error. - `'replace'` unregisters the existing registration. - `'allow'` keeps both without a warning. diff --git a/docs/framework/angular/guides/app-hotkeys.md b/docs/framework/angular/guides/app-hotkeys.md index 37c861ce..f6e4757c 100644 --- a/docs/framework/angular/guides/app-hotkeys.md +++ b/docs/framework/angular/guides/app-hotkeys.md @@ -119,7 +119,7 @@ bootstrapApplication(AppComponent, { ``` - `customHotkeys` holds only the hotkeys that differ from the declared defaults, keyed by id. `null` means the user unbound that hotkey. Saving differences means users who never changed a hotkey get new defaults when you change them. -- `provideHotkeys` reads `customHotkeys` once and owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning. +- `provideHotkeys` reads `customHotkeys` once and owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning in development. - `onCustomHotkeysChange` receives the complete custom hotkeys after every change, ready to save. Storage can be anything: local storage, a server, or a user profile. The [hotkey recorder](./custom-hotkey-recording) records `Mod` rather than platform-specific modifiers, so a hotkey saved on one platform works on others. diff --git a/docs/framework/angular/guides/hotkey-manager.md b/docs/framework/angular/guides/hotkey-manager.md index 65c93dc2..a8e24cdd 100644 --- a/docs/framework/angular/guides/hotkey-manager.md +++ b/docs/framework/angular/guides/hotkey-manager.md @@ -63,7 +63,7 @@ manager.isRegistered('Escape', panelElement) // Whether one matches on that targ `isRegistered` compares hotkeys the way [duplicate detection](./hotkeys#handle-duplicate-hotkeys) does, so `Meta+S` matches a `Mod+S` registration on macOS. -`manager.registrations` is a [TanStack Store](https://tanstack.com/store) that holds every registration in a `Map`, keyed by id. Subscribe to it to run code when registrations change: +`manager.registrations` is a store that holds every registration in a `Map`, keyed by id. It reads and subscribes like a [TanStack Store](https://tanstack.com/store), so it also works with TanStack Store's framework adapters. Subscribe to it to run code when registrations change: ```ts const subscription = manager.registrations.subscribe((registrations) => { diff --git a/docs/framework/angular/guides/hotkeys.md b/docs/framework/angular/guides/hotkeys.md index dc77400a..4c54b5fa 100644 --- a/docs/framework/angular/guides/hotkeys.md +++ b/docs/framework/angular/guides/hotkeys.md @@ -384,9 +384,9 @@ Use a target for hotkeys that belong to a focusable element, such as a list or a ## Handle duplicate hotkeys -When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning, and both callbacks run. Set `conflictBehavior` to change that: +When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning in development, and both callbacks run. Set `conflictBehavior` to change that: -- `'warn'` (default) logs a warning and keeps both registrations. +- `'warn'` (default) logs a warning in development and keeps both registrations. - `'error'` throws an error. - `'replace'` unregisters the existing registration. - `'allow'` keeps both without a warning. diff --git a/docs/framework/angular/reference/functions/injectDefaultHotkeysOptions.md b/docs/framework/angular/reference/functions/injectDefaultHotkeysOptions.md index e7f20223..645c0f14 100644 --- a/docs/framework/angular/reference/functions/injectDefaultHotkeysOptions.md +++ b/docs/framework/angular/reference/functions/injectDefaultHotkeysOptions.md @@ -7,7 +7,7 @@ title: injectDefaultHotkeysOptions function injectDefaultHotkeysOptions(): HotkeysProviderOptions; ``` -Defined in: [hotkeys-provider.ts:242](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L242) +Defined in: [hotkeys-provider.ts:244](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L244) ## Returns diff --git a/docs/framework/angular/reference/functions/injectHotkeysContext.md b/docs/framework/angular/reference/functions/injectHotkeysContext.md index 2773bd1c..1d2e3b88 100644 --- a/docs/framework/angular/reference/functions/injectHotkeysContext.md +++ b/docs/framework/angular/reference/functions/injectHotkeysContext.md @@ -7,7 +7,7 @@ title: injectHotkeysContext function injectHotkeysContext(): HotkeysContextValue; ``` -Defined in: [hotkeys-provider.ts:238](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L238) +Defined in: [hotkeys-provider.ts:240](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L240) ## Returns diff --git a/docs/framework/angular/reference/functions/provideHotkeys.md b/docs/framework/angular/reference/functions/provideHotkeys.md index fd06f4ea..a90b380a 100644 --- a/docs/framework/angular/reference/functions/provideHotkeys.md +++ b/docs/framework/angular/reference/functions/provideHotkeys.md @@ -7,7 +7,7 @@ title: provideHotkeys function provideHotkeys(options?): Provider; ``` -Defined in: [hotkeys-provider.ts:231](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L231) +Defined in: [hotkeys-provider.ts:233](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L233) Provides default options, app hotkeys, and the user's custom hotkeys to an injector, such as the application or a component. diff --git a/docs/framework/angular/reference/interfaces/HotkeysContextValue.md b/docs/framework/angular/reference/interfaces/HotkeysContextValue.md index f421952c..b9024109 100644 --- a/docs/framework/angular/reference/interfaces/HotkeysContextValue.md +++ b/docs/framework/angular/reference/interfaces/HotkeysContextValue.md @@ -3,7 +3,7 @@ id: HotkeysContextValue title: HotkeysContextValue --- -Defined in: [hotkeys-provider.ts:72](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L72) +Defined in: [hotkeys-provider.ts:74](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L74) ## Properties @@ -15,7 +15,7 @@ readonly appHotkeysState: Signal< | null>; ``` -Defined in: [hotkeys-provider.ts:79](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L79) +Defined in: [hotkeys-provider.ts:81](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L81) Tracks app hotkeys and custom hotkeys so signals and effects re-run. @@ -29,7 +29,7 @@ readonly appHotkeysStore: | null; ``` -Defined in: [hotkeys-provider.ts:77](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L77) +Defined in: [hotkeys-provider.ts:79](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L79) *** @@ -39,7 +39,7 @@ Defined in: [hotkeys-provider.ts:77](https://github.com/TanStack/hotkeys/blob/ma readonly defaultOptions: HotkeysProviderOptions; ``` -Defined in: [hotkeys-provider.ts:74](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L74) +Defined in: [hotkeys-provider.ts:76](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L76) Merged with every ancestor provider's defaults, including `hotkey.scope`. @@ -51,6 +51,6 @@ Merged with every ancestor provider's defaults, including `hotkey.scope`. readonly enabled: Signal; ``` -Defined in: [hotkeys-provider.ts:76](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L76) +Defined in: [hotkeys-provider.ts:78](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L78) Whether this provider and every ancestor are enabled. diff --git a/docs/framework/angular/reference/interfaces/HotkeysProviderOptions.md b/docs/framework/angular/reference/interfaces/HotkeysProviderOptions.md index 3bd6f993..2ff7da26 100644 --- a/docs/framework/angular/reference/interfaces/HotkeysProviderOptions.md +++ b/docs/framework/angular/reference/interfaces/HotkeysProviderOptions.md @@ -3,7 +3,7 @@ id: HotkeysProviderOptions title: HotkeysProviderOptions --- -Defined in: [hotkeys-provider.ts:28](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L28) +Defined in: [hotkeys-provider.ts:30](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L30) ## Properties @@ -13,7 +13,7 @@ Defined in: [hotkeys-provider.ts:28](https://github.com/TanStack/hotkeys/blob/ma optional hotkey?: InjectHotkeyCommonOptions; ``` -Defined in: [hotkeys-provider.ts:33](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L33) +Defined in: [hotkeys-provider.ts:35](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L35) Defaults for every hotkey registered by `injectHotkey` and `injectHotkeys`. `requireReset` applies to chords and `timeout` applies to sequences. @@ -26,6 +26,6 @@ Defaults for every hotkey registered by `injectHotkey` and `injectHotkeys`. optional hotkeyRecorder?: Partial>; ``` -Defined in: [hotkeys-provider.ts:35](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L35) +Defined in: [hotkeys-provider.ts:37](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L37) Defaults for every `injectHotkeyRecorder`. diff --git a/docs/framework/angular/reference/interfaces/ProvideHotkeysOptions.md b/docs/framework/angular/reference/interfaces/ProvideHotkeysOptions.md index 27e83bc3..b0777cd2 100644 --- a/docs/framework/angular/reference/interfaces/ProvideHotkeysOptions.md +++ b/docs/framework/angular/reference/interfaces/ProvideHotkeysOptions.md @@ -3,7 +3,7 @@ id: ProvideHotkeysOptions title: ProvideHotkeysOptions --- -Defined in: [hotkeys-provider.ts:44](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L44) +Defined in: [hotkeys-provider.ts:46](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L46) Options for `provideHotkeys`. @@ -15,7 +15,7 @@ Options for `provideHotkeys`. optional appHotkeys?: Readonly>>; ``` -Defined in: [hotkeys-provider.ts:62](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L62) +Defined in: [hotkeys-provider.ts:64](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L64) Every app hotkey, from `defineAppHotkeys`. Listed by `injectAppHotkeyList` whether or not they are registered. @@ -30,7 +30,7 @@ optional customHotkeys?: | null; ``` -Defined in: [hotkeys-provider.ts:67](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L67) +Defined in: [hotkeys-provider.ts:69](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L69) Starting custom hotkeys, such as saved data. Read once; the provider owns the state afterwards. Invalid entries are ignored with a warning. @@ -43,7 +43,7 @@ the state afterwards. Invalid entries are ignored with a warning. optional defaultOptions?: HotkeysProviderOptions; ``` -Defined in: [hotkeys-provider.ts:46](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L46) +Defined in: [hotkeys-provider.ts:48](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L48) Merged with the parent provider's defaults. @@ -55,7 +55,7 @@ Merged with the parent provider's defaults. optional enabled?: MaybeGetter; ``` -Defined in: [hotkeys-provider.ts:57](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L57) +Defined in: [hotkeys-provider.ts:59](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L59) See `HotkeysProviderScopeProps['enabled']`. @@ -71,7 +71,7 @@ optional exclusive?: MaybeGetter< | undefined>; ``` -Defined in: [hotkeys-provider.ts:55](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L55) +Defined in: [hotkeys-provider.ts:57](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L57) See `HotkeysProviderScopeProps['exclusive']`. @@ -83,7 +83,7 @@ See `HotkeysProviderScopeProps['exclusive']`. optional onCustomHotkeysChange?: (customHotkeys) => void; ``` -Defined in: [hotkeys-provider.ts:69](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L69) +Defined in: [hotkeys-provider.ts:71](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L71) Called with the custom hotkeys after every change, ready to save. @@ -105,7 +105,7 @@ Called with the custom hotkeys after every change, ready to save. optional scope?: MaybeGetter; ``` -Defined in: [hotkeys-provider.ts:53](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L53) +Defined in: [hotkeys-provider.ts:55](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L55) See `HotkeysProviderScopeProps['scope']`. Getters, here and for `exclusive` and `enabled`, run in the provider's injection context, so diff --git a/docs/framework/angular/reference/type-aliases/MaybeGetter.md b/docs/framework/angular/reference/type-aliases/MaybeGetter.md index a2483846..4ebb1d64 100644 --- a/docs/framework/angular/reference/type-aliases/MaybeGetter.md +++ b/docs/framework/angular/reference/type-aliases/MaybeGetter.md @@ -7,7 +7,7 @@ title: MaybeGetter type MaybeGetter = T | (() => T); ``` -Defined in: [hotkeys-provider.ts:99](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L99) +Defined in: [hotkeys-provider.ts:101](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L101) A value, or a signal or getter that returns it. diff --git a/docs/framework/angular/reference/variables/HOTKEYS_INJECTION_TOKEN.md b/docs/framework/angular/reference/variables/HOTKEYS_INJECTION_TOKEN.md index b594587a..919eb42f 100644 --- a/docs/framework/angular/reference/variables/HOTKEYS_INJECTION_TOKEN.md +++ b/docs/framework/angular/reference/variables/HOTKEYS_INJECTION_TOKEN.md @@ -7,4 +7,4 @@ title: HOTKEYS_INJECTION_TOKEN const HOTKEYS_INJECTION_TOKEN: InjectionToken; ``` -Defined in: [hotkeys-provider.ts:90](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L90) +Defined in: [hotkeys-provider.ts:92](https://github.com/TanStack/hotkeys/blob/main/packages/angular-hotkeys/src/hotkeys-provider.ts#L92) diff --git a/docs/framework/ember/guides/app-hotkeys.md b/docs/framework/ember/guides/app-hotkeys.md index 00f44678..1d93810b 100644 --- a/docs/framework/ember/guides/app-hotkeys.md +++ b/docs/framework/ember/guides/app-hotkeys.md @@ -120,7 +120,7 @@ provideAppHotkeys(appHotkeys, { ``` - `customHotkeys` holds only the hotkeys that differ from the declared defaults, keyed by id. `null` means the user unbound that hotkey. Saving differences means users who never changed a hotkey get new defaults when you change them. -- `provideAppHotkeys` reads `customHotkeys` once, and the shared store owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning. +- `provideAppHotkeys` reads `customHotkeys` once, and the shared store owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning in development. - `onCustomHotkeysChange` receives the complete custom hotkeys after every change, ready to save. Storage can be anything: local storage, a server, or a user profile. The [hotkey recorder](./custom-hotkey-recording) records `Mod` rather than platform-specific modifiers, so a hotkey saved on one platform works on others. diff --git a/docs/framework/ember/guides/hotkey-manager.md b/docs/framework/ember/guides/hotkey-manager.md index f4a70f4e..1cc898e5 100644 --- a/docs/framework/ember/guides/hotkey-manager.md +++ b/docs/framework/ember/guides/hotkey-manager.md @@ -63,7 +63,7 @@ manager.isRegistered('Escape', panelElement) // Whether one matches on that targ `isRegistered` compares hotkeys the way [duplicate detection](./hotkeys#handle-duplicate-hotkeys) does, so `Meta+S` matches a `Mod+S` registration on macOS. -`manager.registrations` is a [TanStack Store](https://tanstack.com/store) that holds every registration in a `Map`, keyed by id. Subscribe to it to run code when registrations change: +`manager.registrations` is a store that holds every registration in a `Map`, keyed by id. It reads and subscribes like a [TanStack Store](https://tanstack.com/store), so it also works with TanStack Store's framework adapters. Subscribe to it to run code when registrations change: ```ts const subscription = manager.registrations.subscribe((registrations) => { diff --git a/docs/framework/ember/guides/hotkeys.md b/docs/framework/ember/guides/hotkeys.md index bbd6f424..31ea4554 100644 --- a/docs/framework/ember/guides/hotkeys.md +++ b/docs/framework/ember/guides/hotkeys.md @@ -362,9 +362,9 @@ Use an element target for hotkeys that belong to a focusable element, such as a ## Handle duplicate hotkeys -When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning, and both callbacks run. Set `conflictBehavior` to change that: +When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning in development, and both callbacks run. Set `conflictBehavior` to change that: -- `'warn'` (default) logs a warning and keeps both registrations. +- `'warn'` (default) logs a warning in development and keeps both registrations. - `'error'` throws an error. - `'replace'` unregisters the existing registration. - `'allow'` keeps both without a warning. diff --git a/docs/framework/lit/guides/app-hotkeys.md b/docs/framework/lit/guides/app-hotkeys.md index f2a0d1fc..042900d3 100644 --- a/docs/framework/lit/guides/app-hotkeys.md +++ b/docs/framework/lit/guides/app-hotkeys.md @@ -111,7 +111,7 @@ provideAppHotkeys(appHotkeys, { ``` - `customHotkeys` holds only the hotkeys that differ from the declared defaults, keyed by id. `null` means the user unbound that hotkey. Saving differences means users who never changed a hotkey get new defaults when you change them. -- `provideAppHotkeys` reads `customHotkeys` once, and the shared store owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning. +- `provideAppHotkeys` reads `customHotkeys` once, and the shared store owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning in development. - `onCustomHotkeysChange` receives the complete custom hotkeys after every change, ready to save. Storage can be anything: local storage, a server, or a user profile. The [hotkey recorder](./custom-hotkey-recording) records `Mod` rather than platform-specific modifiers, so a hotkey saved on one platform works on others. diff --git a/docs/framework/lit/guides/hotkey-manager.md b/docs/framework/lit/guides/hotkey-manager.md index b86afdc8..10d90d7c 100644 --- a/docs/framework/lit/guides/hotkey-manager.md +++ b/docs/framework/lit/guides/hotkey-manager.md @@ -62,7 +62,7 @@ manager.isRegistered('Escape', panelElement) // Whether one matches on that targ `isRegistered` compares hotkeys the way [duplicate detection](./hotkeys#handle-duplicate-hotkeys) does, so `Meta+S` matches a `Mod+S` registration on macOS. -`manager.registrations` is a [TanStack Store](https://tanstack.com/store) that holds every registration in a `Map`, keyed by id. Subscribe to it to run code when registrations change: +`manager.registrations` is a store that holds every registration in a `Map`, keyed by id. It reads and subscribes like a [TanStack Store](https://tanstack.com/store), so it also works with TanStack Store's framework adapters. Subscribe to it to run code when registrations change: ```ts const subscription = manager.registrations.subscribe((registrations) => { diff --git a/docs/framework/lit/guides/hotkeys.md b/docs/framework/lit/guides/hotkeys.md index c06e8c7c..098932a3 100644 --- a/docs/framework/lit/guides/hotkeys.md +++ b/docs/framework/lit/guides/hotkeys.md @@ -343,9 +343,9 @@ Use a target for hotkeys that belong to a focusable element, such as a list or a ## Handle duplicate hotkeys -When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning, and both callbacks run. Set `conflictBehavior` to change that: +When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning in development, and both callbacks run. Set `conflictBehavior` to change that: -- `'warn'` (default) logs a warning and keeps both registrations. +- `'warn'` (default) logs a warning in development and keeps both registrations. - `'error'` throws an error. - `'replace'` unregisters the existing registration. - `'allow'` keeps both without a warning. diff --git a/docs/framework/octane/guides/app-hotkeys.md b/docs/framework/octane/guides/app-hotkeys.md index 4d1fa727..5a8d0184 100644 --- a/docs/framework/octane/guides/app-hotkeys.md +++ b/docs/framework/octane/guides/app-hotkeys.md @@ -119,7 +119,7 @@ function Root() @{ ``` - `customHotkeys` holds only the hotkeys that differ from the declared defaults, keyed by id. `null` means the user unbound that hotkey. Saving differences means users who never changed a hotkey get new defaults when you change them. -- The provider reads `customHotkeys` once and owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning. +- The provider reads `customHotkeys` once and owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning in development. - `onCustomHotkeysChange` receives the complete custom hotkeys after every change, ready to save. Storage can be anything: local storage, a server, or a user profile. The [hotkey recorder](./custom-hotkey-recording) records `Mod` rather than platform-specific modifiers, so a hotkey saved on one platform works on others. diff --git a/docs/framework/octane/guides/hotkey-manager.md b/docs/framework/octane/guides/hotkey-manager.md index 71e26459..e20236ae 100644 --- a/docs/framework/octane/guides/hotkey-manager.md +++ b/docs/framework/octane/guides/hotkey-manager.md @@ -62,7 +62,7 @@ manager.isRegistered('Escape', panelElement) // Whether one matches on that targ `isRegistered` compares hotkeys the way [duplicate detection](./hotkeys#handle-duplicate-hotkeys) does, so `Meta+S` matches a `Mod+S` registration on macOS. -`manager.registrations` is a [TanStack Store](https://tanstack.com/store) that holds every registration in a `Map`, keyed by id. Subscribe to it to run code when registrations change: +`manager.registrations` is a store that holds every registration in a `Map`, keyed by id. It reads and subscribes like a [TanStack Store](https://tanstack.com/store), so it also works with TanStack Store's framework adapters. Subscribe to it to run code when registrations change: ```ts const subscription = manager.registrations.subscribe((registrations) => { diff --git a/docs/framework/octane/guides/hotkeys.md b/docs/framework/octane/guides/hotkeys.md index 268cfbd4..ab18f9e7 100644 --- a/docs/framework/octane/guides/hotkeys.md +++ b/docs/framework/octane/guides/hotkeys.md @@ -317,9 +317,9 @@ Use a target for hotkeys that belong to a focusable element, such as a list or a ## Handle duplicate hotkeys -When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning, and both callbacks run. Set `conflictBehavior` to change that: +When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning in development, and both callbacks run. Set `conflictBehavior` to change that: -- `'warn'` (default) logs a warning and keeps both registrations. +- `'warn'` (default) logs a warning in development and keeps both registrations. - `'error'` throws an error. - `'replace'` unregisters the existing registration. - `'allow'` keeps both without a warning. diff --git a/docs/framework/octane/reference/functions/HotkeysProvider.md b/docs/framework/octane/reference/functions/HotkeysProvider.md index a8a02eea..5d98f9e3 100644 --- a/docs/framework/octane/reference/functions/HotkeysProvider.md +++ b/docs/framework/octane/reference/functions/HotkeysProvider.md @@ -15,7 +15,7 @@ function HotkeysProvider(__namedParameters): ElementDescriptor<{ }>; ``` -Defined in: [HotkeysProvider.ts:86](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L86) +Defined in: [HotkeysProvider.ts:88](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L88) Sets defaults, app hotkeys, and custom hotkeys for descendant components. diff --git a/docs/framework/octane/reference/functions/useDefaultHotkeysOptions.md b/docs/framework/octane/reference/functions/useDefaultHotkeysOptions.md index ffb87f7a..fc255b86 100644 --- a/docs/framework/octane/reference/functions/useDefaultHotkeysOptions.md +++ b/docs/framework/octane/reference/functions/useDefaultHotkeysOptions.md @@ -7,7 +7,7 @@ title: useDefaultHotkeysOptions function useDefaultHotkeysOptions(): DefaultHotkeysOptions; ``` -Defined in: [HotkeysProvider.ts:75](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L75) +Defined in: [HotkeysProvider.ts:77](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L77) Reads the nearest provider's defaults, or an empty object. diff --git a/docs/framework/octane/reference/functions/useHotkeysContext.md b/docs/framework/octane/reference/functions/useHotkeysContext.md index 92ba9170..9dfe61fb 100644 --- a/docs/framework/octane/reference/functions/useHotkeysContext.md +++ b/docs/framework/octane/reference/functions/useHotkeysContext.md @@ -7,7 +7,7 @@ title: useHotkeysContext function useHotkeysContext(): HotkeysContextValue | null; ``` -Defined in: [HotkeysProvider.ts:70](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L70) +Defined in: [HotkeysProvider.ts:72](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L72) Reads the nearest provider, or null outside a provider. diff --git a/docs/framework/octane/reference/interfaces/DefaultHotkeysOptions.md b/docs/framework/octane/reference/interfaces/DefaultHotkeysOptions.md index 13af4f50..6990a365 100644 --- a/docs/framework/octane/reference/interfaces/DefaultHotkeysOptions.md +++ b/docs/framework/octane/reference/interfaces/DefaultHotkeysOptions.md @@ -3,7 +3,7 @@ id: DefaultHotkeysOptions title: DefaultHotkeysOptions --- -Defined in: [HotkeysProvider.ts:24](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L24) +Defined in: [HotkeysProvider.ts:26](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L26) ## Properties @@ -13,7 +13,7 @@ Defined in: [HotkeysProvider.ts:24](https://github.com/TanStack/hotkeys/blob/mai optional hotkey?: UseHotkeyCommonOptions; ``` -Defined in: [HotkeysProvider.ts:29](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L29) +Defined in: [HotkeysProvider.ts:31](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L31) Defaults for every hotkey registered by `useHotkey` and `useHotkeys`. `requireReset` applies to chords and `timeout` applies to sequences. @@ -26,6 +26,6 @@ Defaults for every hotkey registered by `useHotkey` and `useHotkeys`. optional hotkeyRecorder?: Partial>; ``` -Defined in: [HotkeysProvider.ts:31](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L31) +Defined in: [HotkeysProvider.ts:33](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L33) Defaults for every `useHotkeyRecorder`. diff --git a/docs/framework/octane/reference/interfaces/HotkeysProviderProps.md b/docs/framework/octane/reference/interfaces/HotkeysProviderProps.md index 1174a210..179ecbf3 100644 --- a/docs/framework/octane/reference/interfaces/HotkeysProviderProps.md +++ b/docs/framework/octane/reference/interfaces/HotkeysProviderProps.md @@ -3,7 +3,7 @@ id: HotkeysProviderProps title: HotkeysProviderProps --- -Defined in: [HotkeysProvider.ts:51](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L51) +Defined in: [HotkeysProvider.ts:53](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L53) ## Extends @@ -17,7 +17,7 @@ Defined in: [HotkeysProvider.ts:51](https://github.com/TanStack/hotkeys/blob/mai optional appHotkeys?: Readonly>>; ``` -Defined in: [HotkeysProvider.ts:59](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L59) +Defined in: [HotkeysProvider.ts:61](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L61) Every app hotkey, from `defineAppHotkeys`. Read when the provider first renders; listed by `useAppHotkeyList` whether or not they are registered. @@ -30,7 +30,7 @@ renders; listed by `useAppHotkeyList` whether or not they are registered. optional children?: unknown; ``` -Defined in: [HotkeysProvider.ts:52](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L52) +Defined in: [HotkeysProvider.ts:54](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L54) *** @@ -42,7 +42,7 @@ optional customHotkeys?: | null; ``` -Defined in: [HotkeysProvider.ts:64](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L64) +Defined in: [HotkeysProvider.ts:66](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L66) Starting custom hotkeys, such as saved data. Read once; the provider owns the state afterwards. Invalid entries are ignored with a warning. @@ -55,7 +55,7 @@ the state afterwards. Invalid entries are ignored with a warning. optional defaultOptions?: DefaultHotkeysOptions; ``` -Defined in: [HotkeysProvider.ts:54](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L54) +Defined in: [HotkeysProvider.ts:56](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L56) Merged with the parent provider's defaults. @@ -67,7 +67,7 @@ Merged with the parent provider's defaults. optional onCustomHotkeysChange?: (customHotkeys) => void; ``` -Defined in: [HotkeysProvider.ts:66](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L66) +Defined in: [HotkeysProvider.ts:68](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L68) Called with the custom hotkeys after every change, ready to save. diff --git a/docs/framework/octane/reference/type-aliases/HotkeysProviderOptions.md b/docs/framework/octane/reference/type-aliases/HotkeysProviderOptions.md index 4104ed28..7a37ae73 100644 --- a/docs/framework/octane/reference/type-aliases/HotkeysProviderOptions.md +++ b/docs/framework/octane/reference/type-aliases/HotkeysProviderOptions.md @@ -7,4 +7,4 @@ title: HotkeysProviderOptions type HotkeysProviderOptions = DefaultHotkeysOptions; ``` -Defined in: [HotkeysProvider.ts:49](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L49) +Defined in: [HotkeysProvider.ts:51](https://github.com/TanStack/hotkeys/blob/main/packages/octane-hotkeys/src/HotkeysProvider.ts#L51) diff --git a/docs/framework/preact/guides/app-hotkeys.md b/docs/framework/preact/guides/app-hotkeys.md index 8ec79a77..89760cf8 100644 --- a/docs/framework/preact/guides/app-hotkeys.md +++ b/docs/framework/preact/guides/app-hotkeys.md @@ -122,7 +122,7 @@ function Root() { ``` - `customHotkeys` holds only the hotkeys that differ from the declared defaults, keyed by id. `null` means the user unbound that hotkey. Saving differences means users who never changed a hotkey get new defaults when you change them. -- The provider reads `customHotkeys` once and owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning. +- The provider reads `customHotkeys` once and owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning in development. - `onCustomHotkeysChange` receives the complete custom hotkeys after every change, ready to save. Storage can be anything: local storage, a server, or a user profile. The [hotkey recorder](./custom-hotkey-recording) records `Mod` rather than platform-specific modifiers, so a hotkey saved on one platform works on others. diff --git a/docs/framework/preact/guides/hotkey-manager.md b/docs/framework/preact/guides/hotkey-manager.md index 5dfa7d42..c5849387 100644 --- a/docs/framework/preact/guides/hotkey-manager.md +++ b/docs/framework/preact/guides/hotkey-manager.md @@ -63,7 +63,7 @@ manager.isRegistered('Escape', panelElement) // Whether one matches on that targ `isRegistered` compares hotkeys the way [duplicate detection](./hotkeys#handle-duplicate-hotkeys) does, so `Meta+S` matches a `Mod+S` registration on macOS. -`manager.registrations` is a [TanStack Store](https://tanstack.com/store) that holds every registration in a `Map`, keyed by id. Subscribe to it to run code when registrations change: +`manager.registrations` is a store that holds every registration in a `Map`, keyed by id. It reads and subscribes like a [TanStack Store](https://tanstack.com/store), so it also works with TanStack Store's framework adapters. Subscribe to it to run code when registrations change: ```ts const subscription = manager.registrations.subscribe((registrations) => { diff --git a/docs/framework/preact/guides/hotkeys.md b/docs/framework/preact/guides/hotkeys.md index 28ba581d..5bce9f36 100644 --- a/docs/framework/preact/guides/hotkeys.md +++ b/docs/framework/preact/guides/hotkeys.md @@ -313,9 +313,9 @@ Use a target for hotkeys that belong to a focusable element, such as a list or a ## Handle duplicate hotkeys -When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning, and both callbacks run. Set `conflictBehavior` to change that: +When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning in development, and both callbacks run. Set `conflictBehavior` to change that: -- `'warn'` (default) logs a warning and keeps both registrations. +- `'warn'` (default) logs a warning in development and keeps both registrations. - `'error'` throws an error. - `'replace'` unregisters the existing registration. - `'allow'` keeps both without a warning. diff --git a/docs/framework/preact/reference/functions/HotkeysProvider.md b/docs/framework/preact/reference/functions/HotkeysProvider.md index 11948129..e86f3f83 100644 --- a/docs/framework/preact/reference/functions/HotkeysProvider.md +++ b/docs/framework/preact/reference/functions/HotkeysProvider.md @@ -7,7 +7,7 @@ title: HotkeysProvider function HotkeysProvider(__namedParameters): Element; ``` -Defined in: [HotkeysProvider.tsx:102](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L102) +Defined in: [HotkeysProvider.tsx:104](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L104) Provides default options, app hotkeys, and the user's custom hotkeys. diff --git a/docs/framework/preact/reference/functions/useDefaultHotkeysOptions.md b/docs/framework/preact/reference/functions/useDefaultHotkeysOptions.md index feca2c69..7a616a77 100644 --- a/docs/framework/preact/reference/functions/useDefaultHotkeysOptions.md +++ b/docs/framework/preact/reference/functions/useDefaultHotkeysOptions.md @@ -7,7 +7,7 @@ title: useDefaultHotkeysOptions function useDefaultHotkeysOptions(): HotkeysProviderOptions; ``` -Defined in: [HotkeysProvider.tsx:174](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L174) +Defined in: [HotkeysProvider.tsx:176](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L176) ## Returns diff --git a/docs/framework/preact/reference/functions/useHeldKeys.md b/docs/framework/preact/reference/functions/useHeldKeys.md index 04a8cef0..b3f4ca23 100644 --- a/docs/framework/preact/reference/functions/useHeldKeys.md +++ b/docs/framework/preact/reference/functions/useHeldKeys.md @@ -7,12 +7,11 @@ title: useHeldKeys function useHeldKeys(): string[]; ``` -Defined in: [useHeldKeys.ts:26](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/useHeldKeys.ts#L26) +Defined in: [useHeldKeys.ts:25](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/useHeldKeys.ts#L25) Preact hook that returns an array of currently held keyboard keys. -This hook uses `useSelector` from `@tanstack/preact-store` to subscribe -to the global KeyStateTracker and updates whenever keys are pressed +This hook subscribes to the global KeyStateTracker and updates whenever keys are pressed or released. ## Returns diff --git a/docs/framework/preact/reference/functions/useHotkeysContext.md b/docs/framework/preact/reference/functions/useHotkeysContext.md index 6409bcb7..d0a364fe 100644 --- a/docs/framework/preact/reference/functions/useHotkeysContext.md +++ b/docs/framework/preact/reference/functions/useHotkeysContext.md @@ -7,7 +7,7 @@ title: useHotkeysContext function useHotkeysContext(): HotkeysContextValue | null; ``` -Defined in: [HotkeysProvider.tsx:170](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L170) +Defined in: [HotkeysProvider.tsx:172](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L172) ## Returns diff --git a/docs/framework/preact/reference/functions/useKeyHold.md b/docs/framework/preact/reference/functions/useKeyHold.md index 0c14980d..120ef460 100644 --- a/docs/framework/preact/reference/functions/useKeyHold.md +++ b/docs/framework/preact/reference/functions/useKeyHold.md @@ -7,12 +7,11 @@ title: useKeyHold function useKeyHold(key): boolean; ``` -Defined in: [useKeyHold.ts:45](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/useKeyHold.ts#L45) +Defined in: [useKeyHold.ts:44](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/useKeyHold.ts#L44) Preact hook that returns whether a specific key is currently being held. -This hook uses `useSelector` from `@tanstack/preact-store` to subscribe -to the global KeyStateTracker and uses a selector to determine if +This hook subscribes to the global KeyStateTracker and uses a selector to determine if the specified key is held. ## Parameters diff --git a/docs/framework/preact/reference/interfaces/HotkeysProviderOptions.md b/docs/framework/preact/reference/interfaces/HotkeysProviderOptions.md index 44d639de..70256ea4 100644 --- a/docs/framework/preact/reference/interfaces/HotkeysProviderOptions.md +++ b/docs/framework/preact/reference/interfaces/HotkeysProviderOptions.md @@ -3,7 +3,7 @@ id: HotkeysProviderOptions title: HotkeysProviderOptions --- -Defined in: [HotkeysProvider.tsx:19](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L19) +Defined in: [HotkeysProvider.tsx:21](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L21) ## Properties @@ -13,7 +13,7 @@ Defined in: [HotkeysProvider.tsx:19](https://github.com/TanStack/hotkeys/blob/ma optional hotkey?: UseHotkeyCommonOptions; ``` -Defined in: [HotkeysProvider.tsx:24](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L24) +Defined in: [HotkeysProvider.tsx:26](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L26) Defaults for every hotkey registered by `useHotkey` and `useHotkeys`. `requireReset` applies to chords and `timeout` applies to sequences. @@ -26,6 +26,6 @@ Defaults for every hotkey registered by `useHotkey` and `useHotkeys`. optional hotkeyRecorder?: Partial>; ``` -Defined in: [HotkeysProvider.tsx:26](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L26) +Defined in: [HotkeysProvider.tsx:28](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L28) Defaults for every `useHotkeyRecorder`. diff --git a/docs/framework/preact/reference/interfaces/HotkeysProviderProps.md b/docs/framework/preact/reference/interfaces/HotkeysProviderProps.md index 44fd9260..54f78aa6 100644 --- a/docs/framework/preact/reference/interfaces/HotkeysProviderProps.md +++ b/docs/framework/preact/reference/interfaces/HotkeysProviderProps.md @@ -3,7 +3,7 @@ id: HotkeysProviderProps title: HotkeysProviderProps --- -Defined in: [HotkeysProvider.tsx:44](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L44) +Defined in: [HotkeysProvider.tsx:46](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L46) ## Extends @@ -23,7 +23,7 @@ Defined in: [HotkeysProvider.tsx:44](https://github.com/TanStack/hotkeys/blob/ma optional appHotkeys?: T; ``` -Defined in: [HotkeysProvider.tsx:52](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L52) +Defined in: [HotkeysProvider.tsx:54](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L54) Every app hotkey, from `defineAppHotkeys`. Listed by `useAppHotkeyList` whether or not their components have mounted. @@ -36,7 +36,7 @@ whether or not their components have mounted. children: ComponentChildren; ``` -Defined in: [HotkeysProvider.tsx:47](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L47) +Defined in: [HotkeysProvider.tsx:49](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L49) *** @@ -46,7 +46,7 @@ Defined in: [HotkeysProvider.tsx:47](https://github.com/TanStack/hotkeys/blob/ma optional customHotkeys?: CustomHotkeys | null; ``` -Defined in: [HotkeysProvider.tsx:57](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L57) +Defined in: [HotkeysProvider.tsx:59](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L59) Starting custom hotkeys, such as saved data. Read once; the provider owns the state afterwards. Invalid entries are ignored with a warning. @@ -59,7 +59,7 @@ the state afterwards. Invalid entries are ignored with a warning. optional defaultOptions?: HotkeysProviderOptions; ``` -Defined in: [HotkeysProvider.tsx:61](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L61) +Defined in: [HotkeysProvider.tsx:63](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L63) Merged with the parent provider's defaults. @@ -71,7 +71,7 @@ Merged with the parent provider's defaults. optional onCustomHotkeysChange?: (customHotkeys) => void; ``` -Defined in: [HotkeysProvider.tsx:59](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L59) +Defined in: [HotkeysProvider.tsx:61](https://github.com/TanStack/hotkeys/blob/main/packages/preact-hotkeys/src/HotkeysProvider.tsx#L61) Called with the custom hotkeys after every change, ready to save. diff --git a/docs/framework/react/guides/app-hotkeys.md b/docs/framework/react/guides/app-hotkeys.md index 22a10bb1..cb10355f 100644 --- a/docs/framework/react/guides/app-hotkeys.md +++ b/docs/framework/react/guides/app-hotkeys.md @@ -122,7 +122,7 @@ function Root() { ``` - `customHotkeys` holds only the hotkeys that differ from the declared defaults, keyed by id. `null` means the user unbound that hotkey. Saving differences means users who never changed a hotkey get new defaults when you change them. -- The provider reads `customHotkeys` once and owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning. +- The provider reads `customHotkeys` once and owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning in development. - `onCustomHotkeysChange` receives the complete custom hotkeys after every change, ready to save. Storage can be anything: local storage, a server, or a user profile. The [hotkey recorder](./custom-hotkey-recording) records `Mod` rather than platform-specific modifiers, so a hotkey saved on one platform works on others. diff --git a/docs/framework/react/guides/hotkey-manager.md b/docs/framework/react/guides/hotkey-manager.md index 819f8842..694cc621 100644 --- a/docs/framework/react/guides/hotkey-manager.md +++ b/docs/framework/react/guides/hotkey-manager.md @@ -63,7 +63,7 @@ manager.isRegistered('Escape', panelElement) // Whether one matches on that targ `isRegistered` compares hotkeys the way [duplicate detection](./hotkeys#handle-duplicate-hotkeys) does, so `Meta+S` matches a `Mod+S` registration on macOS. -`manager.registrations` is a [TanStack Store](https://tanstack.com/store) that holds every registration in a `Map`, keyed by id. Subscribe to it to run code when registrations change: +`manager.registrations` is a store that holds every registration in a `Map`, keyed by id. It reads and subscribes like a [TanStack Store](https://tanstack.com/store), so it also works with TanStack Store's framework adapters. Subscribe to it to run code when registrations change: ```ts const subscription = manager.registrations.subscribe((registrations) => { diff --git a/docs/framework/react/guides/hotkeys.md b/docs/framework/react/guides/hotkeys.md index 791c6787..38b85eff 100644 --- a/docs/framework/react/guides/hotkeys.md +++ b/docs/framework/react/guides/hotkeys.md @@ -309,9 +309,9 @@ Use a target for hotkeys that belong to a focusable element, such as a list or a ## Handle duplicate hotkeys -When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning, and both callbacks run. Set `conflictBehavior` to change that: +When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning in development, and both callbacks run. Set `conflictBehavior` to change that: -- `'warn'` (default) logs a warning and keeps both registrations. +- `'warn'` (default) logs a warning in development and keeps both registrations. - `'error'` throws an error. - `'replace'` unregisters the existing registration. - `'allow'` keeps both without a warning. diff --git a/docs/framework/react/reference/functions/HotkeysProvider.md b/docs/framework/react/reference/functions/HotkeysProvider.md index 7bc86b51..f087872e 100644 --- a/docs/framework/react/reference/functions/HotkeysProvider.md +++ b/docs/framework/react/reference/functions/HotkeysProvider.md @@ -7,7 +7,7 @@ title: HotkeysProvider function HotkeysProvider(__namedParameters): ReactElement; ``` -Defined in: [HotkeysProvider.tsx:109](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L109) +Defined in: [HotkeysProvider.tsx:111](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L111) Provides default options, app hotkeys, and the user's custom hotkeys. diff --git a/docs/framework/react/reference/functions/useDefaultHotkeysOptions.md b/docs/framework/react/reference/functions/useDefaultHotkeysOptions.md index b8fe3140..2eb933f4 100644 --- a/docs/framework/react/reference/functions/useDefaultHotkeysOptions.md +++ b/docs/framework/react/reference/functions/useDefaultHotkeysOptions.md @@ -7,7 +7,7 @@ title: useDefaultHotkeysOptions function useDefaultHotkeysOptions(): HotkeysProviderOptions; ``` -Defined in: [HotkeysProvider.tsx:184](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L184) +Defined in: [HotkeysProvider.tsx:186](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L186) ## Returns diff --git a/docs/framework/react/reference/functions/useHeldKeys.md b/docs/framework/react/reference/functions/useHeldKeys.md index dbe23bf4..5510a136 100644 --- a/docs/framework/react/reference/functions/useHeldKeys.md +++ b/docs/framework/react/reference/functions/useHeldKeys.md @@ -7,12 +7,11 @@ title: useHeldKeys function useHeldKeys(): string[]; ``` -Defined in: [useHeldKeys.ts:28](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/useHeldKeys.ts#L28) +Defined in: [useHeldKeys.ts:27](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/useHeldKeys.ts#L27) React hook that returns an array of currently held keyboard keys. -This hook uses `useSelector` from `@tanstack/react-store` to subscribe -to the global KeyStateTracker and updates whenever keys are pressed +This hook subscribes to the global KeyStateTracker and updates whenever keys are pressed or released. ## Returns diff --git a/docs/framework/react/reference/functions/useHotkeysContext.md b/docs/framework/react/reference/functions/useHotkeysContext.md index 35056054..5fce7aae 100644 --- a/docs/framework/react/reference/functions/useHotkeysContext.md +++ b/docs/framework/react/reference/functions/useHotkeysContext.md @@ -7,7 +7,7 @@ title: useHotkeysContext function useHotkeysContext(): HotkeysContextValue | null; ``` -Defined in: [HotkeysProvider.tsx:179](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L179) +Defined in: [HotkeysProvider.tsx:181](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L181) ## Returns diff --git a/docs/framework/react/reference/functions/useKeyHold.md b/docs/framework/react/reference/functions/useKeyHold.md index e0b42ab3..14605197 100644 --- a/docs/framework/react/reference/functions/useKeyHold.md +++ b/docs/framework/react/reference/functions/useKeyHold.md @@ -7,12 +7,11 @@ title: useKeyHold function useKeyHold(key): boolean; ``` -Defined in: [useKeyHold.ts:47](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/useKeyHold.ts#L47) +Defined in: [useKeyHold.ts:46](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/useKeyHold.ts#L46) React hook that returns whether a specific key is currently being held. -This hook uses `useSelector` from `@tanstack/react-store` to subscribe -to the global KeyStateTracker and uses a selector to determine if +This hook subscribes to the global KeyStateTracker and uses a selector to determine if the specified key is held. ## Parameters diff --git a/docs/framework/react/reference/interfaces/HotkeysProviderOptions.md b/docs/framework/react/reference/interfaces/HotkeysProviderOptions.md index 5a486b3f..6fa86938 100644 --- a/docs/framework/react/reference/interfaces/HotkeysProviderOptions.md +++ b/docs/framework/react/reference/interfaces/HotkeysProviderOptions.md @@ -3,7 +3,7 @@ id: HotkeysProviderOptions title: HotkeysProviderOptions --- -Defined in: [HotkeysProvider.tsx:26](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L26) +Defined in: [HotkeysProvider.tsx:28](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L28) ## Properties @@ -13,7 +13,7 @@ Defined in: [HotkeysProvider.tsx:26](https://github.com/TanStack/hotkeys/blob/ma optional hotkey?: UseHotkeyCommonOptions; ``` -Defined in: [HotkeysProvider.tsx:31](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L31) +Defined in: [HotkeysProvider.tsx:33](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L33) Defaults for every hotkey registered by `useHotkey` and `useHotkeys`. `requireReset` applies to chords and `timeout` applies to sequences. @@ -26,6 +26,6 @@ Defaults for every hotkey registered by `useHotkey` and `useHotkeys`. optional hotkeyRecorder?: Partial>; ``` -Defined in: [HotkeysProvider.tsx:33](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L33) +Defined in: [HotkeysProvider.tsx:35](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L35) Defaults for every `useHotkeyRecorder`. diff --git a/docs/framework/react/reference/interfaces/HotkeysProviderProps.md b/docs/framework/react/reference/interfaces/HotkeysProviderProps.md index 18306b0d..2d8ce232 100644 --- a/docs/framework/react/reference/interfaces/HotkeysProviderProps.md +++ b/docs/framework/react/reference/interfaces/HotkeysProviderProps.md @@ -3,7 +3,7 @@ id: HotkeysProviderProps title: HotkeysProviderProps --- -Defined in: [HotkeysProvider.tsx:51](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L51) +Defined in: [HotkeysProvider.tsx:53](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L53) ## Extends @@ -23,7 +23,7 @@ Defined in: [HotkeysProvider.tsx:51](https://github.com/TanStack/hotkeys/blob/ma optional appHotkeys?: T; ``` -Defined in: [HotkeysProvider.tsx:59](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L59) +Defined in: [HotkeysProvider.tsx:61](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L61) Every app hotkey, from `defineAppHotkeys`. Listed by `useAppHotkeyList` whether or not their components have mounted. @@ -36,7 +36,7 @@ whether or not their components have mounted. children: ReactNode; ``` -Defined in: [HotkeysProvider.tsx:54](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L54) +Defined in: [HotkeysProvider.tsx:56](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L56) *** @@ -46,7 +46,7 @@ Defined in: [HotkeysProvider.tsx:54](https://github.com/TanStack/hotkeys/blob/ma optional customHotkeys?: CustomHotkeys | null; ``` -Defined in: [HotkeysProvider.tsx:64](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L64) +Defined in: [HotkeysProvider.tsx:66](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L66) Starting custom hotkeys, such as saved data. Read once; the provider owns the state afterwards. Invalid entries are ignored with a warning. @@ -59,7 +59,7 @@ the state afterwards. Invalid entries are ignored with a warning. optional defaultOptions?: HotkeysProviderOptions; ``` -Defined in: [HotkeysProvider.tsx:68](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L68) +Defined in: [HotkeysProvider.tsx:70](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L70) Merged with the parent provider's defaults. @@ -71,7 +71,7 @@ Merged with the parent provider's defaults. optional onCustomHotkeysChange?: (customHotkeys) => void; ``` -Defined in: [HotkeysProvider.tsx:66](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L66) +Defined in: [HotkeysProvider.tsx:68](https://github.com/TanStack/hotkeys/blob/main/packages/react-hotkeys/src/HotkeysProvider.tsx#L68) Called with the custom hotkeys after every change, ready to save. diff --git a/docs/framework/solid/guides/app-hotkeys.md b/docs/framework/solid/guides/app-hotkeys.md index bbc40196..1d46f538 100644 --- a/docs/framework/solid/guides/app-hotkeys.md +++ b/docs/framework/solid/guides/app-hotkeys.md @@ -126,7 +126,7 @@ function Root() { ``` - `customHotkeys` holds only the hotkeys that differ from the declared defaults, keyed by id. `null` means the user unbound that hotkey. Saving differences means users who never changed a hotkey get new defaults when you change them. -- The provider reads `customHotkeys` once and owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning. +- The provider reads `customHotkeys` once and owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning in development. - `onCustomHotkeysChange` receives the complete custom hotkeys after every change, ready to save. Storage can be anything: local storage, a server, or a user profile. The [hotkey recorder](./custom-hotkey-recording) records `Mod` rather than platform-specific modifiers, so a hotkey saved on one platform works on others. diff --git a/docs/framework/solid/guides/hotkey-manager.md b/docs/framework/solid/guides/hotkey-manager.md index 9ae85e06..be182c4b 100644 --- a/docs/framework/solid/guides/hotkey-manager.md +++ b/docs/framework/solid/guides/hotkey-manager.md @@ -63,7 +63,7 @@ manager.isRegistered('Escape', panelElement) // Whether one matches on that targ `isRegistered` compares hotkeys the way [duplicate detection](./hotkeys#handle-duplicate-hotkeys) does, so `Meta+S` matches a `Mod+S` registration on macOS. -`manager.registrations` is a [TanStack Store](https://tanstack.com/store) that holds every registration in a `Map`, keyed by id. Subscribe to it to run code when registrations change: +`manager.registrations` is a store that holds every registration in a `Map`, keyed by id. It reads and subscribes like a [TanStack Store](https://tanstack.com/store), so it also works with TanStack Store's framework adapters. Subscribe to it to run code when registrations change: ```ts const subscription = manager.registrations.subscribe((registrations) => { diff --git a/docs/framework/solid/guides/hotkeys.md b/docs/framework/solid/guides/hotkeys.md index adebe00d..fcb00df4 100644 --- a/docs/framework/solid/guides/hotkeys.md +++ b/docs/framework/solid/guides/hotkeys.md @@ -329,9 +329,9 @@ Use a target for hotkeys that belong to a focusable element, such as a list or a ## Handle duplicate hotkeys -When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning, and both callbacks run. Set `conflictBehavior` to change that: +When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning in development, and both callbacks run. Set `conflictBehavior` to change that: -- `'warn'` (default) logs a warning and keeps both registrations. +- `'warn'` (default) logs a warning in development and keeps both registrations. - `'error'` throws an error. - `'replace'` unregisters the existing registration. - `'allow'` keeps both without a warning. diff --git a/docs/framework/solid/reference/functions/createHeldKeyCodes.md b/docs/framework/solid/reference/functions/createHeldKeyCodes.md index e4bf3bb0..3b0c85ec 100644 --- a/docs/framework/solid/reference/functions/createHeldKeyCodes.md +++ b/docs/framework/solid/reference/functions/createHeldKeyCodes.md @@ -7,15 +7,14 @@ title: createHeldKeyCodes function createHeldKeyCodes(): () => Record; ``` -Defined in: [createHeldKeyCodes.ts:35](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/createHeldKeyCodes.ts#L35) +Defined in: [createHeldKeyCodes.ts:34](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/createHeldKeyCodes.ts#L34) SolidJS primitive that returns a signal of a map from currently held key names to their physical `event.code` values. This is useful for debugging which physical key was pressed (e.g. distinguishing left vs right Shift via "ShiftLeft" / "ShiftRight"). -This primitive uses `useSelector` from `@tanstack/solid-store` to subscribe -to the global KeyStateTracker. +This primitive subscribes to the global KeyStateTracker. ## Returns diff --git a/docs/framework/solid/reference/functions/createHeldKeys.md b/docs/framework/solid/reference/functions/createHeldKeys.md index 5645686f..49ec5bde 100644 --- a/docs/framework/solid/reference/functions/createHeldKeys.md +++ b/docs/framework/solid/reference/functions/createHeldKeys.md @@ -7,12 +7,11 @@ title: createHeldKeys function createHeldKeys(): () => string[]; ``` -Defined in: [createHeldKeys.ts:26](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/createHeldKeys.ts#L26) +Defined in: [createHeldKeys.ts:25](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/createHeldKeys.ts#L25) SolidJS primitive that returns a signal of currently held keyboard keys. -This primitive uses `useSelector` from `@tanstack/solid-store` to subscribe -to the global KeyStateTracker and updates whenever keys are pressed +This primitive subscribes to the global KeyStateTracker and updates whenever keys are pressed or released. ## Returns diff --git a/docs/framework/solid/reference/functions/createKeyHold.md b/docs/framework/solid/reference/functions/createKeyHold.md index ac42f849..61185f50 100644 --- a/docs/framework/solid/reference/functions/createKeyHold.md +++ b/docs/framework/solid/reference/functions/createKeyHold.md @@ -7,12 +7,11 @@ title: createKeyHold function createKeyHold(key): () => boolean; ``` -Defined in: [createKeyHold.ts:46](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/createKeyHold.ts#L46) +Defined in: [createKeyHold.ts:45](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/createKeyHold.ts#L45) SolidJS primitive that returns whether a specific key is currently being held. -This primitive uses `useSelector` from `@tanstack/solid-store` to subscribe -to the global KeyStateTracker and uses a selector to determine if the +This primitive subscribes to the global KeyStateTracker and uses a selector to determine if the specified key is held. ## Parameters diff --git a/docs/framework/solid/reference/functions/useDefaultHotkeysOptions.md b/docs/framework/solid/reference/functions/useDefaultHotkeysOptions.md index 0fe2a790..544490d4 100644 --- a/docs/framework/solid/reference/functions/useDefaultHotkeysOptions.md +++ b/docs/framework/solid/reference/functions/useDefaultHotkeysOptions.md @@ -7,7 +7,7 @@ title: useDefaultHotkeysOptions function useDefaultHotkeysOptions(): HotkeysProviderOptions; ``` -Defined in: [HotkeysProvider.tsx:165](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L165) +Defined in: [HotkeysProvider.tsx:167](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L167) ## Returns diff --git a/docs/framework/solid/reference/functions/useHotkeysContext.md b/docs/framework/solid/reference/functions/useHotkeysContext.md index 2ed26979..e1dc40f0 100644 --- a/docs/framework/solid/reference/functions/useHotkeysContext.md +++ b/docs/framework/solid/reference/functions/useHotkeysContext.md @@ -7,7 +7,7 @@ title: useHotkeysContext function useHotkeysContext(): HotkeysContextValue | null; ``` -Defined in: [HotkeysProvider.tsx:161](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L161) +Defined in: [HotkeysProvider.tsx:163](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L163) ## Returns diff --git a/docs/framework/solid/reference/interfaces/HotkeysProviderOptions.md b/docs/framework/solid/reference/interfaces/HotkeysProviderOptions.md index bb8f62eb..e8c17567 100644 --- a/docs/framework/solid/reference/interfaces/HotkeysProviderOptions.md +++ b/docs/framework/solid/reference/interfaces/HotkeysProviderOptions.md @@ -3,7 +3,7 @@ id: HotkeysProviderOptions title: HotkeysProviderOptions --- -Defined in: [HotkeysProvider.tsx:25](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L25) +Defined in: [HotkeysProvider.tsx:27](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L27) ## Properties @@ -13,7 +13,7 @@ Defined in: [HotkeysProvider.tsx:25](https://github.com/TanStack/hotkeys/blob/ma optional hotkey?: CreateHotkeyCommonOptions; ``` -Defined in: [HotkeysProvider.tsx:30](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L30) +Defined in: [HotkeysProvider.tsx:32](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L32) Defaults for every hotkey registered by `createHotkey` and `createHotkeys`. `requireReset` applies to chords and `timeout` applies to sequences. @@ -26,6 +26,6 @@ Defaults for every hotkey registered by `createHotkey` and `createHotkeys`. optional hotkeyRecorder?: Partial>; ``` -Defined in: [HotkeysProvider.tsx:32](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L32) +Defined in: [HotkeysProvider.tsx:34](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L34) Defaults for every `createHotkeyRecorder`. diff --git a/docs/framework/solid/reference/interfaces/HotkeysProviderProps.md b/docs/framework/solid/reference/interfaces/HotkeysProviderProps.md index c7ec548b..37a334df 100644 --- a/docs/framework/solid/reference/interfaces/HotkeysProviderProps.md +++ b/docs/framework/solid/reference/interfaces/HotkeysProviderProps.md @@ -3,7 +3,7 @@ id: HotkeysProviderProps title: HotkeysProviderProps --- -Defined in: [HotkeysProvider.tsx:50](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L50) +Defined in: [HotkeysProvider.tsx:52](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L52) ## Extends @@ -17,7 +17,7 @@ Defined in: [HotkeysProvider.tsx:50](https://github.com/TanStack/hotkeys/blob/ma optional appHotkeys?: Readonly>>; ``` -Defined in: [HotkeysProvider.tsx:56](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L56) +Defined in: [HotkeysProvider.tsx:58](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L58) Every app hotkey, from `defineAppHotkeys`. Read when the provider is created; listed by `createAppHotkeyList` whether or not they are registered. @@ -30,7 +30,7 @@ created; listed by `createAppHotkeyList` whether or not they are registered. children: Element; ``` -Defined in: [HotkeysProvider.tsx:51](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L51) +Defined in: [HotkeysProvider.tsx:53](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L53) *** @@ -42,7 +42,7 @@ optional customHotkeys?: | null; ``` -Defined in: [HotkeysProvider.tsx:61](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L61) +Defined in: [HotkeysProvider.tsx:63](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L63) Starting custom hotkeys, such as saved data. Read once; the provider owns the state afterwards. Invalid entries are ignored with a warning. @@ -55,7 +55,7 @@ the state afterwards. Invalid entries are ignored with a warning. optional defaultOptions?: HotkeysProviderOptions; ``` -Defined in: [HotkeysProvider.tsx:65](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L65) +Defined in: [HotkeysProvider.tsx:67](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L67) Merged with the parent provider's defaults. @@ -67,7 +67,7 @@ Merged with the parent provider's defaults. optional onCustomHotkeysChange?: (customHotkeys) => void; ``` -Defined in: [HotkeysProvider.tsx:63](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L63) +Defined in: [HotkeysProvider.tsx:65](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L65) Called with the custom hotkeys after every change, ready to save. diff --git a/docs/framework/solid/reference/variables/HotkeysProvider.md b/docs/framework/solid/reference/variables/HotkeysProvider.md index 41551648..37ec5e4d 100644 --- a/docs/framework/solid/reference/variables/HotkeysProvider.md +++ b/docs/framework/solid/reference/variables/HotkeysProvider.md @@ -7,7 +7,7 @@ title: HotkeysProvider const HotkeysProvider: ParentComponent; ``` -Defined in: [HotkeysProvider.tsx:97](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L97) +Defined in: [HotkeysProvider.tsx:99](https://github.com/TanStack/hotkeys/blob/main/packages/solid-hotkeys/src/HotkeysProvider.tsx#L99) Provides default options, app hotkeys, and the user's custom hotkeys. diff --git a/docs/framework/svelte/guides/app-hotkeys.md b/docs/framework/svelte/guides/app-hotkeys.md index 83941280..da4c9e87 100644 --- a/docs/framework/svelte/guides/app-hotkeys.md +++ b/docs/framework/svelte/guides/app-hotkeys.md @@ -120,7 +120,7 @@ TanStack Hotkeys does not store anything. Pass the user's saved custom hotkeys t ``` - `customHotkeys` holds only the hotkeys that differ from the declared defaults, keyed by id. `null` means the user unbound that hotkey. Saving differences means users who never changed a hotkey get new defaults when you change them. -- The provider reads `customHotkeys` once and owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning. +- The provider reads `customHotkeys` once and owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning in development. - `onCustomHotkeysChange` receives the complete custom hotkeys after every change, ready to save. Storage can be anything: local storage, a server, or a user profile. `setHotkeysContext` accepts the same `appHotkeys`, `customHotkeys`, and `onCustomHotkeysChange` options. diff --git a/docs/framework/svelte/guides/hotkey-manager.md b/docs/framework/svelte/guides/hotkey-manager.md index febdeb5e..3ab9375a 100644 --- a/docs/framework/svelte/guides/hotkey-manager.md +++ b/docs/framework/svelte/guides/hotkey-manager.md @@ -64,7 +64,7 @@ manager.isRegistered('Escape', panelElement) // Whether one matches on that targ `isRegistered` compares hotkeys the way [duplicate detection](./hotkeys#handle-duplicate-hotkeys) does, so `Meta+S` matches a `Mod+S` registration on macOS. -`manager.registrations` is a [TanStack Store](https://tanstack.com/store) that holds every registration in a `Map`, keyed by id. Subscribe to it to run code when registrations change: +`manager.registrations` is a store that holds every registration in a `Map`, keyed by id. It reads and subscribes like a [TanStack Store](https://tanstack.com/store), so it also works with TanStack Store's framework adapters. Subscribe to it to run code when registrations change: ```ts const subscription = manager.registrations.subscribe((registrations) => { diff --git a/docs/framework/svelte/guides/hotkeys.md b/docs/framework/svelte/guides/hotkeys.md index 5b1db0f2..83fb70c5 100644 --- a/docs/framework/svelte/guides/hotkeys.md +++ b/docs/framework/svelte/guides/hotkeys.md @@ -326,9 +326,9 @@ Use an element target for hotkeys that belong to a focusable element, such as a ## Handle duplicate hotkeys -When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning, and both callbacks run. Set `conflictBehavior` to change that: +When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning in development, and both callbacks run. Set `conflictBehavior` to change that: -- `'warn'` (default) logs a warning and keeps both registrations. +- `'warn'` (default) logs a warning in development and keeps both registrations. - `'error'` throws an error. - `'replace'` unregisters the existing registration. - `'allow'` keeps both without a warning. diff --git a/docs/framework/svelte/reference/functions/getDefaultHotkeysOptions.md b/docs/framework/svelte/reference/functions/getDefaultHotkeysOptions.md index 9c3d7e34..ab05b44b 100644 --- a/docs/framework/svelte/reference/functions/getDefaultHotkeysOptions.md +++ b/docs/framework/svelte/reference/functions/getDefaultHotkeysOptions.md @@ -7,7 +7,7 @@ title: getDefaultHotkeysOptions function getDefaultHotkeysOptions(): HotkeysProviderOptions; ``` -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:146](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L146) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:148](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L148) ## Returns diff --git a/docs/framework/svelte/reference/functions/getHotkeysContext.md b/docs/framework/svelte/reference/functions/getHotkeysContext.md index fc8f0696..48b66c52 100644 --- a/docs/framework/svelte/reference/functions/getHotkeysContext.md +++ b/docs/framework/svelte/reference/functions/getHotkeysContext.md @@ -7,7 +7,7 @@ title: getHotkeysContext function getHotkeysContext(): HotkeysContextValue | null; ``` -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:138](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L138) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:140](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L140) ## Returns diff --git a/docs/framework/svelte/reference/functions/setHotkeysContext.md b/docs/framework/svelte/reference/functions/setHotkeysContext.md index 397380ce..55b44a4b 100644 --- a/docs/framework/svelte/reference/functions/setHotkeysContext.md +++ b/docs/framework/svelte/reference/functions/setHotkeysContext.md @@ -7,7 +7,7 @@ title: setHotkeysContext function setHotkeysContext(options?): HotkeysContextValue; ``` -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:89](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L89) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:91](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L91) Sets the hotkeys context for descendants. `HotkeysProvider` calls this; call it directly in a component's script instead of rendering the provider. diff --git a/docs/framework/svelte/reference/interfaces/HotkeysContextOptions.md b/docs/framework/svelte/reference/interfaces/HotkeysContextOptions.md index 7d933191..7147b6c9 100644 --- a/docs/framework/svelte/reference/interfaces/HotkeysContextOptions.md +++ b/docs/framework/svelte/reference/interfaces/HotkeysContextOptions.md @@ -3,7 +3,7 @@ id: HotkeysContextOptions title: HotkeysContextOptions --- -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:34](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L34) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:36](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L36) Options for `setHotkeysContext` and props for `HotkeysProvider`. @@ -23,7 +23,7 @@ Options for `setHotkeysContext` and props for `HotkeysProvider`. optional appHotkeys?: Readonly>>; ``` -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:41](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L41) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:43](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L43) Every app hotkey, from `defineAppHotkeys`. Read when the context is set; listed by `getAppHotkeyList` whether or not they are registered. @@ -38,7 +38,7 @@ optional customHotkeys?: | null; ``` -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:46](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L46) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:48](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L48) Starting custom hotkeys, such as saved data. Read once; the context owns the state afterwards. Invalid entries are ignored with a warning. @@ -51,7 +51,7 @@ the state afterwards. Invalid entries are ignored with a warning. optional defaultOptions?: HotkeysProviderOptions; ``` -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:36](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L36) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:38](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L38) Merged with the parent context's defaults. @@ -63,7 +63,7 @@ Merged with the parent context's defaults. optional onCustomHotkeysChange?: (customHotkeys) => void; ``` -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:48](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L48) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:50](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L50) Called with the custom hotkeys after every change, ready to save. diff --git a/docs/framework/svelte/reference/interfaces/HotkeysProviderOptions.md b/docs/framework/svelte/reference/interfaces/HotkeysProviderOptions.md index 6331d2bd..ccfffa3c 100644 --- a/docs/framework/svelte/reference/interfaces/HotkeysProviderOptions.md +++ b/docs/framework/svelte/reference/interfaces/HotkeysProviderOptions.md @@ -3,7 +3,7 @@ id: HotkeysProviderOptions title: HotkeysProviderOptions --- -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:18](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L18) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:20](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L20) ## Properties @@ -13,7 +13,7 @@ Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:18](https://github.com/Ta optional hotkey?: CreateHotkeyCommonOptions; ``` -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:23](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L23) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:25](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L25) Defaults for every hotkey registered by `createHotkey` and `createHotkeys`. `requireReset` applies to chords and `timeout` applies to sequences. @@ -26,6 +26,6 @@ Defaults for every hotkey registered by `createHotkey` and `createHotkeys`. optional hotkeyRecorder?: Partial>; ``` -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:25](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L25) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:27](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L27) Defaults for every `createHotkeyRecorder`. diff --git a/docs/framework/svelte/reference/interfaces/HotkeysProviderProps.md b/docs/framework/svelte/reference/interfaces/HotkeysProviderProps.md index 00cf868e..4a53d59e 100644 --- a/docs/framework/svelte/reference/interfaces/HotkeysProviderProps.md +++ b/docs/framework/svelte/reference/interfaces/HotkeysProviderProps.md @@ -3,7 +3,7 @@ id: HotkeysProviderProps title: HotkeysProviderProps --- -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:51](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L51) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:53](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L53) Options for `setHotkeysContext` and props for `HotkeysProvider`. @@ -19,7 +19,7 @@ Options for `setHotkeysContext` and props for `HotkeysProvider`. optional appHotkeys?: Readonly>>; ``` -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:41](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L41) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:43](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L43) Every app hotkey, from `defineAppHotkeys`. Read when the context is set; listed by `getAppHotkeyList` whether or not they are registered. @@ -36,7 +36,7 @@ listed by `getAppHotkeyList` whether or not they are registered. children: Snippet; ``` -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:52](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L52) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:54](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L54) *** @@ -48,7 +48,7 @@ optional customHotkeys?: | null; ``` -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:46](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L46) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:48](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L48) Starting custom hotkeys, such as saved data. Read once; the context owns the state afterwards. Invalid entries are ignored with a warning. @@ -65,7 +65,7 @@ the state afterwards. Invalid entries are ignored with a warning. optional defaultOptions?: HotkeysProviderOptions; ``` -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:36](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L36) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:38](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L38) Merged with the parent context's defaults. @@ -81,7 +81,7 @@ Merged with the parent context's defaults. optional onCustomHotkeysChange?: (customHotkeys) => void; ``` -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:48](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L48) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:50](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L50) Called with the custom hotkeys after every change, ready to save. diff --git a/docs/framework/svelte/reference/variables/DEFAULT_OPTIONS.md b/docs/framework/svelte/reference/variables/DEFAULT_OPTIONS.md index 6adcd27f..7bd7a774 100644 --- a/docs/framework/svelte/reference/variables/DEFAULT_OPTIONS.md +++ b/docs/framework/svelte/reference/variables/DEFAULT_OPTIONS.md @@ -7,4 +7,4 @@ title: DEFAULT_OPTIONS const DEFAULT_OPTIONS: HotkeysProviderOptions = {}; ``` -Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:55](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L55) +Defined in: [packages/svelte-hotkeys/src/HotkeysCtx.ts:57](https://github.com/TanStack/hotkeys/blob/main/packages/svelte-hotkeys/src/HotkeysCtx.ts#L57) diff --git a/docs/framework/vue/guides/app-hotkeys.md b/docs/framework/vue/guides/app-hotkeys.md index 98650f2d..a4dbdd26 100644 --- a/docs/framework/vue/guides/app-hotkeys.md +++ b/docs/framework/vue/guides/app-hotkeys.md @@ -124,7 +124,7 @@ const save = (custom: CustomHotkeys) => ``` - `customHotkeys` holds only the hotkeys that differ from the declared defaults, keyed by id. `null` means the user unbound that hotkey. Saving differences means users who never changed a hotkey get new defaults when you change them. -- The provider reads `customHotkeys` once and owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning. +- The provider reads `customHotkeys` once and owns the state afterwards. Saved data can outlive the code that wrote it, so unknown ids and invalid hotkeys are ignored with a warning in development. - The provider emits `customHotkeysChange` with the complete custom hotkeys after every change, ready to save. Storage can be anything: local storage, a server, or a user profile. With `provideHotkeysContext`, pass `customHotkeys` and `onCustomHotkeysChange` in its options instead. The [hotkey recorder](./custom-hotkey-recording) records `Mod` rather than platform-specific modifiers, so a hotkey saved on one platform works on others. diff --git a/docs/framework/vue/guides/hotkey-manager.md b/docs/framework/vue/guides/hotkey-manager.md index 3e9929e5..2bf8bd38 100644 --- a/docs/framework/vue/guides/hotkey-manager.md +++ b/docs/framework/vue/guides/hotkey-manager.md @@ -63,7 +63,7 @@ manager.isRegistered('Escape', panelElement) // Whether one matches on that targ `isRegistered` compares hotkeys the way [duplicate detection](./hotkeys#handle-duplicate-hotkeys) does, so `Meta+S` matches a `Mod+S` registration on macOS. -`manager.registrations` is a [TanStack Store](https://tanstack.com/store) that holds every registration in a `Map`, keyed by id. Subscribe to it to run code when registrations change: +`manager.registrations` is a store that holds every registration in a `Map`, keyed by id. It reads and subscribes like a [TanStack Store](https://tanstack.com/store), so it also works with TanStack Store's framework adapters. Subscribe to it to run code when registrations change: ```ts const subscription = manager.registrations.subscribe((registrations) => { diff --git a/docs/framework/vue/guides/hotkeys.md b/docs/framework/vue/guides/hotkeys.md index adbb56a1..13a4d17e 100644 --- a/docs/framework/vue/guides/hotkeys.md +++ b/docs/framework/vue/guides/hotkeys.md @@ -343,9 +343,9 @@ Use a target for hotkeys that belong to a focusable element, such as a list or a ## Handle duplicate hotkeys -When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning, and both callbacks run. Set `conflictBehavior` to change that: +When you register a hotkey that is already registered on the same target and in the same scope, TanStack Hotkeys logs a warning in development, and both callbacks run. Set `conflictBehavior` to change that: -- `'warn'` (default) logs a warning and keeps both registrations. +- `'warn'` (default) logs a warning in development and keeps both registrations. - `'error'` throws an error. - `'replace'` unregisters the existing registration. - `'allow'` keeps both without a warning. diff --git a/docs/framework/vue/reference/functions/provideHotkeysContext.md b/docs/framework/vue/reference/functions/provideHotkeysContext.md index 31d8babd..c3f4b699 100644 --- a/docs/framework/vue/reference/functions/provideHotkeysContext.md +++ b/docs/framework/vue/reference/functions/provideHotkeysContext.md @@ -7,7 +7,7 @@ title: provideHotkeysContext function provideHotkeysContext(options?): void; ``` -Defined in: [HotkeysProviderContext.ts:99](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L99) +Defined in: [HotkeysProviderContext.ts:101](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L101) Provides default options, app hotkeys, and the user's custom hotkeys to descendants. `HotkeysProvider` calls this; call it directly in a component's diff --git a/docs/framework/vue/reference/functions/useDefaultHotkeysOptions.md b/docs/framework/vue/reference/functions/useDefaultHotkeysOptions.md index f7d73750..3dc2f1a3 100644 --- a/docs/framework/vue/reference/functions/useDefaultHotkeysOptions.md +++ b/docs/framework/vue/reference/functions/useDefaultHotkeysOptions.md @@ -7,7 +7,7 @@ title: useDefaultHotkeysOptions function useDefaultHotkeysOptions(): HotkeysProviderOptions; ``` -Defined in: [HotkeysProviderContext.ts:181](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L181) +Defined in: [HotkeysProviderContext.ts:183](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L183) ## Returns diff --git a/docs/framework/vue/reference/functions/useHeldKeys.md b/docs/framework/vue/reference/functions/useHeldKeys.md index c5d0e79e..83ab26f0 100644 --- a/docs/framework/vue/reference/functions/useHeldKeys.md +++ b/docs/framework/vue/reference/functions/useHeldKeys.md @@ -7,12 +7,11 @@ title: useHeldKeys function useHeldKeys(): Ref; ``` -Defined in: [useHeldKeys.ts:29](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/useHeldKeys.ts#L29) +Defined in: [useHeldKeys.ts:28](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/useHeldKeys.ts#L28) Vue composable that returns a reactive ref of currently held keyboard keys. -This composable uses `useSelector` from `@tanstack/vue-store` to subscribe -to the global KeyStateTracker and updates whenever keys are pressed +This composable subscribes to the global KeyStateTracker and updates whenever keys are pressed or released. ## Returns diff --git a/docs/framework/vue/reference/functions/useHotkeysContext.md b/docs/framework/vue/reference/functions/useHotkeysContext.md index b2a66ee3..89269afe 100644 --- a/docs/framework/vue/reference/functions/useHotkeysContext.md +++ b/docs/framework/vue/reference/functions/useHotkeysContext.md @@ -7,7 +7,7 @@ title: useHotkeysContext function useHotkeysContext(): HotkeysContextValue | null; ``` -Defined in: [HotkeysProviderContext.ts:177](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L177) +Defined in: [HotkeysProviderContext.ts:179](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L179) The nearest context, or `null`. Outside a component, such as in a bare `effectScope`, there is no context to read, so this skips `inject` and its diff --git a/docs/framework/vue/reference/interfaces/HotkeysProviderOptions.md b/docs/framework/vue/reference/interfaces/HotkeysProviderOptions.md index f94ccf20..1234933c 100644 --- a/docs/framework/vue/reference/interfaces/HotkeysProviderOptions.md +++ b/docs/framework/vue/reference/interfaces/HotkeysProviderOptions.md @@ -3,7 +3,7 @@ id: HotkeysProviderOptions title: HotkeysProviderOptions --- -Defined in: [HotkeysProviderContext.ts:27](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L27) +Defined in: [HotkeysProviderContext.ts:29](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L29) ## Properties @@ -13,7 +13,7 @@ Defined in: [HotkeysProviderContext.ts:27](https://github.com/TanStack/hotkeys/b optional hotkey?: UseHotkeyCommonOptions; ``` -Defined in: [HotkeysProviderContext.ts:32](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L32) +Defined in: [HotkeysProviderContext.ts:34](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L34) Defaults for every hotkey registered by `useHotkey` and `useHotkeys`. `requireReset` applies to chords and `timeout` applies to sequences. @@ -26,6 +26,6 @@ Defaults for every hotkey registered by `useHotkey` and `useHotkeys`. optional hotkeyRecorder?: Partial>; ``` -Defined in: [HotkeysProviderContext.ts:34](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L34) +Defined in: [HotkeysProviderContext.ts:36](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L36) Defaults for every `useHotkeyRecorder`. diff --git a/docs/framework/vue/reference/interfaces/ProvideHotkeysContextOptions.md b/docs/framework/vue/reference/interfaces/ProvideHotkeysContextOptions.md index 42a6e08c..fca694ee 100644 --- a/docs/framework/vue/reference/interfaces/ProvideHotkeysContextOptions.md +++ b/docs/framework/vue/reference/interfaces/ProvideHotkeysContextOptions.md @@ -3,7 +3,7 @@ id: ProvideHotkeysContextOptions title: ProvideHotkeysContextOptions --- -Defined in: [HotkeysProviderContext.ts:56](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L56) +Defined in: [HotkeysProviderContext.ts:58](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L58) Options for `provideHotkeysContext`. @@ -17,7 +17,7 @@ optional appHotkeys?: MaybeRefOrGetter< | undefined>; ``` -Defined in: [HotkeysProviderContext.ts:69](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L69) +Defined in: [HotkeysProviderContext.ts:71](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L71) Every app hotkey, from `defineAppHotkeys`. Read when the context is provided; later changes update the declarations. @@ -32,7 +32,7 @@ optional customHotkeys?: | null; ``` -Defined in: [HotkeysProviderContext.ts:74](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L74) +Defined in: [HotkeysProviderContext.ts:76](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L76) Starting custom hotkeys, such as saved data. Read once; the context owns the state afterwards. Invalid entries are ignored with a warning. @@ -45,7 +45,7 @@ the state afterwards. Invalid entries are ignored with a warning. optional defaultOptions?: MaybeRefOrGetter; ``` -Defined in: [HotkeysProviderContext.ts:58](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L58) +Defined in: [HotkeysProviderContext.ts:60](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L60) Merged with the parent context's defaults. @@ -57,7 +57,7 @@ Merged with the parent context's defaults. optional enabled?: MaybeRefOrGetter; ``` -Defined in: [HotkeysProviderContext.ts:64](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L64) +Defined in: [HotkeysProviderContext.ts:66](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L66) See `HotkeysProviderScopeProps['enabled']`. @@ -73,7 +73,7 @@ optional exclusive?: MaybeRefOrGetter< | undefined>; ``` -Defined in: [HotkeysProviderContext.ts:62](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L62) +Defined in: [HotkeysProviderContext.ts:64](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L64) See `HotkeysProviderScopeProps['exclusive']`. @@ -85,7 +85,7 @@ See `HotkeysProviderScopeProps['exclusive']`. optional onCustomHotkeysChange?: (customHotkeys) => void; ``` -Defined in: [HotkeysProviderContext.ts:76](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L76) +Defined in: [HotkeysProviderContext.ts:78](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L78) Called with the custom hotkeys after every change, ready to save. @@ -107,6 +107,6 @@ Called with the custom hotkeys after every change, ready to save. optional scope?: MaybeRefOrGetter; ``` -Defined in: [HotkeysProviderContext.ts:60](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L60) +Defined in: [HotkeysProviderContext.ts:62](https://github.com/TanStack/hotkeys/blob/main/packages/vue-hotkeys/src/HotkeysProviderContext.ts#L62) See `HotkeysProviderScopeProps['scope']`. diff --git a/docs/guides/sensible-defaults.md b/docs/guides/sensible-defaults.md index 1fcc42ad..bb2f2325 100644 --- a/docs/guides/sensible-defaults.md +++ b/docs/guides/sensible-defaults.md @@ -22,7 +22,7 @@ This guide describes each default, why it was chosen, and how to change it. | Where listeners attach | `document` | `target` | | When hotkeys run | After the keyboard handlers of widgets inside the target (bubble phase) | `capture` | | Time between sequence steps | 1 second | `timeout` | -| Duplicate registrations | Allowed, with a console warning | `conflictBehavior` | +| Duplicate registrations | Allowed, with a console warning in development | `conflictBehavior` | | Recording | Records key positions; Escape cancels | `recordBy`, recorder options | | Display | Symbols on macOS (`⇧ ⌘ S`), text elsewhere (`Ctrl+Shift+S`) | `formatForDisplay` options | @@ -224,10 +224,12 @@ Sequences are forgiving in a few other ways: ## Duplicate registrations warn -Registering a hotkey that is already registered on the same target logs a console warning, and both callbacks run. A warning surfaces accidental duplicates during development without breaking an app that intentionally shares a shortcut. Duplicates are compared in canonical form, so `Mod+S` and `Meta+S` are duplicates on macOS. +Registering a hotkey that is already registered on the same target logs a console warning in development, and both callbacks run. A warning surfaces accidental duplicates during development without breaking an app that intentionally shares a shortcut. Duplicates are compared in canonical form, so `Mod+S` and `Meta+S` are duplicates on macOS. Set `conflictBehavior` to `'replace'` to replace the existing registration, `'error'` to throw, or `'allow'` to silence the warning. +TanStack Hotkeys logs warnings only in development. Production builds, where bundlers set `process.env.NODE_ENV` to `'production'`, skip them and drop the warning code. + ## Recording captures what the user pressed The hotkey recorder records physical key positions by default (`recordBy: 'code'`). A modifier can change which character a key types (Option+S types `ß`, and Shift+1 types `!`), but its position does not change. Recording the position saves the key the user pressed, regardless of what it typed. Set `recordBy: 'key'` to record characters instead. diff --git a/docs/reference/adapter/functions/activateHotkeysProviderScope.md b/docs/reference/adapter/functions/activateHotkeysProviderScope.md index e0101da0..825ba922 100644 --- a/docs/reference/adapter/functions/activateHotkeysProviderScope.md +++ b/docs/reference/adapter/functions/activateHotkeysProviderScope.md @@ -7,7 +7,7 @@ title: activateHotkeysProviderScope function activateHotkeysProviderScope(key): () => void; ``` -Defined in: [adapter.ts:389](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L389) +Defined in: [adapter.ts:393](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L393) Activates the scope described by a key from `getHotkeysProviderScopeKey`. Returns a function that releases the activation. diff --git a/docs/reference/adapter/functions/createAppHotkeysStore.md b/docs/reference/adapter/functions/createAppHotkeysStore.md new file mode 100644 index 00000000..03e82355 --- /dev/null +++ b/docs/reference/adapter/functions/createAppHotkeysStore.md @@ -0,0 +1,32 @@ +--- +id: createAppHotkeysStore +title: createAppHotkeysStore +--- + +```ts +function createAppHotkeysStore(appHotkeys, options): AppHotkeysStore; +``` + +Defined in: [\_app-hotkeys-factory.ts:21](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/_app-hotkeys-factory.ts#L21) + +Creates the store for app hotkeys from `defineAppHotkeys`. + +## Type Parameters + +### T + +`T` *extends* `Readonly`\<`Record`\<`string`, `AppHotkey`\<`string`, `HotkeyChord` \| `HotkeySequence` \| `null`\>\>\> + +## Parameters + +### appHotkeys + +`T` + +### options + +`AppHotkeysStoreOptions`\<`T`\> + +## Returns + +`AppHotkeysStore`\<`T`\> diff --git a/docs/reference/adapter/functions/createHotkeyBindings.md b/docs/reference/adapter/functions/createHotkeyBindings.md index 61752586..2c714f03 100644 --- a/docs/reference/adapter/functions/createHotkeyBindings.md +++ b/docs/reference/adapter/functions/createHotkeyBindings.md @@ -7,7 +7,7 @@ title: createHotkeyBindings function createHotkeyBindings(): object; ``` -Defined in: [adapter.ts:51](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L51) +Defined in: [adapter.ts:55](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L55) Reconciles adapter registrations while retaining handles for option updates. diff --git a/docs/reference/adapter/functions/createStore.md b/docs/reference/adapter/functions/createStore.md new file mode 100644 index 00000000..830c801f --- /dev/null +++ b/docs/reference/adapter/functions/createStore.md @@ -0,0 +1,29 @@ +--- +id: createStore +title: createStore +--- + +```ts +function createStore(initialState): Store; +``` + +Defined in: \_store.ts:33 + +Creates a store. Listeners run synchronously after each change, and an +update to an equal value (by `Object.is`) notifies no one. + +## Type Parameters + +### T + +`T` + +## Parameters + +### initialState + +`T` + +## Returns + +[`Store`](../type-aliases/Store.md)\<`T`\> diff --git a/docs/reference/adapter/functions/getHotkeysProviderScopeKey.md b/docs/reference/adapter/functions/getHotkeysProviderScopeKey.md index 29081b9c..59d6103e 100644 --- a/docs/reference/adapter/functions/getHotkeysProviderScopeKey.md +++ b/docs/reference/adapter/functions/getHotkeysProviderScopeKey.md @@ -7,7 +7,7 @@ title: getHotkeysProviderScopeKey function getHotkeysProviderScopeKey(options): string | null; ``` -Defined in: [adapter.ts:368](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L368) +Defined in: [adapter.ts:372](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L372) A key for a provider's scope activation, or `null` when the scope should not be active. Equal keys mean the same activation, so adapters reactivate only diff --git a/docs/reference/adapter/functions/mergeHotkeysProviderDefaults.md b/docs/reference/adapter/functions/mergeHotkeysProviderDefaults.md index 468cb9bb..353c9936 100644 --- a/docs/reference/adapter/functions/mergeHotkeysProviderDefaults.md +++ b/docs/reference/adapter/functions/mergeHotkeysProviderDefaults.md @@ -10,7 +10,7 @@ function mergeHotkeysProviderDefaults( scope): T; ``` -Defined in: [adapter.ts:354](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L354) +Defined in: [adapter.ts:358](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L358) Merges a provider's default options over its parent's. A provider with a `scope` sets `hotkey.scope`, so hotkeys registered inside it use that scope. diff --git a/docs/reference/adapter/functions/prepareHotkeyDefinitions.md b/docs/reference/adapter/functions/prepareHotkeyDefinitions.md index b1913cc9..260eab94 100644 --- a/docs/reference/adapter/functions/prepareHotkeyDefinitions.md +++ b/docs/reference/adapter/functions/prepareHotkeyDefinitions.md @@ -7,7 +7,7 @@ title: prepareHotkeyDefinitions function prepareHotkeyDefinitions(definitions, options?): HotkeyDefinition[]; ``` -Defined in: [adapter.ts:271](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L271) +Defined in: [adapter.ts:275](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L275) Converts adapter definitions into `createHotkeyBindings` definitions. Options merge in this order: defaults, app hotkey declaration, common diff --git a/docs/reference/adapter/functions/subscribePublishedAppHotkeys.md b/docs/reference/adapter/functions/subscribePublishedAppHotkeys.md index ed6a3669..8fe814db 100644 --- a/docs/reference/adapter/functions/subscribePublishedAppHotkeys.md +++ b/docs/reference/adapter/functions/subscribePublishedAppHotkeys.md @@ -7,7 +7,7 @@ title: subscribePublishedAppHotkeys function subscribePublishedAppHotkeys(onChange): () => void; ``` -Defined in: [adapter.ts:310](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L310) +Defined in: [adapter.ts:314](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L314) Calls `onChange` when the store published with `publishAppHotkeysStore` or `provideAppHotkeys` changes, or when its app hotkeys or custom hotkeys diff --git a/docs/reference/adapter/index.md b/docs/reference/adapter/index.md index 4fcfac09..1e1d3eb7 100644 --- a/docs/reference/adapter/index.md +++ b/docs/reference/adapter/index.md @@ -19,12 +19,15 @@ title: "@tanstack/hotkeys" - [AdapterSequenceOptions](type-aliases/AdapterSequenceOptions.md) - [HotkeyBindingsCommonOptions](type-aliases/HotkeyBindingsCommonOptions.md) - [HotkeyDefinition](type-aliases/HotkeyDefinition.md) +- [Store](type-aliases/Store.md) - [WithTarget](type-aliases/WithTarget.md) ## Functions - [activateHotkeysProviderScope](functions/activateHotkeysProviderScope.md) +- [createAppHotkeysStore](functions/createAppHotkeysStore.md) - [createHotkeyBindings](functions/createHotkeyBindings.md) +- [createStore](functions/createStore.md) - [getHotkeysProviderScopeKey](functions/getHotkeysProviderScopeKey.md) - [mergeHotkeysProviderDefaults](functions/mergeHotkeysProviderDefaults.md) - [prepareHotkeyDefinitions](functions/prepareHotkeyDefinitions.md) diff --git a/docs/reference/adapter/interfaces/HotkeysProviderScopeProps.md b/docs/reference/adapter/interfaces/HotkeysProviderScopeProps.md index a8260bfd..66189c97 100644 --- a/docs/reference/adapter/interfaces/HotkeysProviderScopeProps.md +++ b/docs/reference/adapter/interfaces/HotkeysProviderScopeProps.md @@ -3,7 +3,7 @@ id: HotkeysProviderScopeProps title: HotkeysProviderScopeProps --- -Defined in: [adapter.ts:329](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L329) +Defined in: [adapter.ts:333](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L333) Scope props shared by framework providers. @@ -15,7 +15,7 @@ Scope props shared by framework providers. optional enabled?: boolean; ``` -Defined in: [adapter.ts:347](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L347) +Defined in: [adapter.ts:351](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L351) Set false to deactivate this provider's scope, and the scopes of providers nested in it, without unmounting. Defaults to true. @@ -32,7 +32,7 @@ optional exclusive?: }; ``` -Defined in: [adapter.ts:342](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L342) +Defined in: [adapter.ts:346](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L346) While mounted and enabled, suspend hotkeys in every other scope, including `'global'`, except scopes of nested providers. Pass @@ -47,7 +47,7 @@ with `scope`, for dialogs and other overlays. optional scope?: string; ``` -Defined in: [adapter.ts:335](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L335) +Defined in: [adapter.ts:339](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L339) Scope for hotkeys registered inside this provider, active while it is mounted and enabled. Defaults to the parent provider's scope, or diff --git a/docs/reference/adapter/interfaces/PrepareHotkeyDefinitionsOptions.md b/docs/reference/adapter/interfaces/PrepareHotkeyDefinitionsOptions.md index 47490175..4e4bfb86 100644 --- a/docs/reference/adapter/interfaces/PrepareHotkeyDefinitionsOptions.md +++ b/docs/reference/adapter/interfaces/PrepareHotkeyDefinitionsOptions.md @@ -3,7 +3,7 @@ id: PrepareHotkeyDefinitionsOptions title: PrepareHotkeyDefinitionsOptions --- -Defined in: [adapter.ts:249](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L249) +Defined in: [adapter.ts:253](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L253) Context for `prepareHotkeyDefinitions`. @@ -23,7 +23,7 @@ optional appHotkeysStore?: | null; ``` -Defined in: [adapter.ts:251](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L251) +Defined in: [adapter.ts:255](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L255) The provider's app hotkeys store, so app hotkeys use custom hotkeys. @@ -35,7 +35,7 @@ The provider's app hotkeys store, so app hotkeys use custom hotkeys. optional commonOptions?: AdapterCommonOptions; ``` -Defined in: [adapter.ts:255](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L255) +Defined in: [adapter.ts:259](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L259) Options for every definition, applied after app hotkey declarations. @@ -47,7 +47,7 @@ Options for every definition, applied after app hotkey declarations. optional defaults?: AdapterCommonOptions; ``` -Defined in: [adapter.ts:253](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L253) +Defined in: [adapter.ts:257](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L257) Provider defaults, applied first. @@ -59,7 +59,7 @@ Provider defaults, applied first. optional resolveTarget?: (target) => Target | null | undefined; ``` -Defined in: [adapter.ts:261](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L261) +Defined in: [adapter.ts:265](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L265) Resolves a framework target, such as a ref. Return `undefined` for the document or `null` to skip registration until the target exists. diff --git a/docs/reference/adapter/type-aliases/AdapterAppHotkeyOptions.md b/docs/reference/adapter/type-aliases/AdapterAppHotkeyOptions.md index a5ed4005..0841b37f 100644 --- a/docs/reference/adapter/type-aliases/AdapterAppHotkeyOptions.md +++ b/docs/reference/adapter/type-aliases/AdapterAppHotkeyOptions.md @@ -7,7 +7,7 @@ title: AdapterAppHotkeyOptions type AdapterAppHotkeyOptions = Omit<[T["defaultHotkey"]] extends [HotkeySequence] ? AdapterSequenceOptions : [T["defaultHotkey"]] extends [HotkeyChord] ? AdapterChordOptions : AdapterCommonOptions, "meta">; ``` -Defined in: [adapter.ts:200](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L200) +Defined in: [adapter.ts:204](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L204) Call-site options for an app hotkey. `meta` comes from the declaration. Kind-specific options follow the declared default: `requireReset` for a diff --git a/docs/reference/adapter/type-aliases/AdapterChordOptions.md b/docs/reference/adapter/type-aliases/AdapterChordOptions.md index 4f79fd3b..1dfc575e 100644 --- a/docs/reference/adapter/type-aliases/AdapterChordOptions.md +++ b/docs/reference/adapter/type-aliases/AdapterChordOptions.md @@ -7,7 +7,7 @@ title: AdapterChordOptions type AdapterChordOptions = WithTarget; ``` -Defined in: [adapter.ts:167](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L167) +Defined in: [adapter.ts:171](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L171) Options for a chord such as `'Mod+S'`, with a framework target. diff --git a/docs/reference/adapter/type-aliases/AdapterCommonOptions.md b/docs/reference/adapter/type-aliases/AdapterCommonOptions.md index c5c649ca..f8d2a679 100644 --- a/docs/reference/adapter/type-aliases/AdapterCommonOptions.md +++ b/docs/reference/adapter/type-aliases/AdapterCommonOptions.md @@ -7,7 +7,7 @@ title: AdapterCommonOptions type AdapterCommonOptions = AdapterChordOptions & AdapterSequenceOptions; ``` -Defined in: [adapter.ts:179](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L179) +Defined in: [adapter.ts:183](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L183) Options applied to every hotkey, such as defaults. Each applies to the kinds that support it. diff --git a/docs/reference/adapter/type-aliases/AdapterHotkeyDefinition.md b/docs/reference/adapter/type-aliases/AdapterHotkeyDefinition.md index 3dc9135e..c4bc0082 100644 --- a/docs/reference/adapter/type-aliases/AdapterHotkeyDefinition.md +++ b/docs/reference/adapter/type-aliases/AdapterHotkeyDefinition.md @@ -27,7 +27,7 @@ type AdapterHotkeyDefinition = }; ``` -Defined in: [adapter.ts:214](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L214) +Defined in: [adapter.ts:218](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L218) One hotkey and its callback for adapter APIs such as `useHotkeys`. Chords accept `requireReset`; sequences accept `timeout`; hotkeys of unknown kind diff --git a/docs/reference/adapter/type-aliases/AdapterHotkeyOptions.md b/docs/reference/adapter/type-aliases/AdapterHotkeyOptions.md index 47c1b872..d13ce788 100644 --- a/docs/reference/adapter/type-aliases/AdapterHotkeyOptions.md +++ b/docs/reference/adapter/type-aliases/AdapterHotkeyOptions.md @@ -7,7 +7,7 @@ title: AdapterHotkeyOptions type AdapterHotkeyOptions = WithTarget; ``` -Defined in: [adapter.ts:164](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L164) +Defined in: [adapter.ts:168](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L168) Options shared by chords and sequences, with a framework target. diff --git a/docs/reference/adapter/type-aliases/AdapterOptionsFor.md b/docs/reference/adapter/type-aliases/AdapterOptionsFor.md index 7252cc56..55a0371c 100644 --- a/docs/reference/adapter/type-aliases/AdapterOptionsFor.md +++ b/docs/reference/adapter/type-aliases/AdapterOptionsFor.md @@ -7,7 +7,7 @@ title: AdapterOptionsFor type AdapterOptionsFor = [T] extends [never] ? AdapterCommonOptions : T extends readonly [unknown] ? AdapterChordOptions : T extends ReadonlyArray ? AdapterSequenceOptions : AdapterChordOptions; ``` -Defined in: [adapter.ts:183](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L183) +Defined in: [adapter.ts:187](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L187) Chord options for chords, sequence options for sequences. diff --git a/docs/reference/adapter/type-aliases/AdapterSequenceOptions.md b/docs/reference/adapter/type-aliases/AdapterSequenceOptions.md index 1ecfa40a..bd15b73c 100644 --- a/docs/reference/adapter/type-aliases/AdapterSequenceOptions.md +++ b/docs/reference/adapter/type-aliases/AdapterSequenceOptions.md @@ -7,7 +7,7 @@ title: AdapterSequenceOptions type AdapterSequenceOptions = WithTarget; ``` -Defined in: [adapter.ts:173](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L173) +Defined in: [adapter.ts:177](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L177) Options for a sequence such as `['G', 'G']`, with a framework target. diff --git a/docs/reference/adapter/type-aliases/HotkeyBindingsCommonOptions.md b/docs/reference/adapter/type-aliases/HotkeyBindingsCommonOptions.md index 60a22561..a71859c6 100644 --- a/docs/reference/adapter/type-aliases/HotkeyBindingsCommonOptions.md +++ b/docs/reference/adapter/type-aliases/HotkeyBindingsCommonOptions.md @@ -7,6 +7,6 @@ title: HotkeyBindingsCommonOptions type HotkeyBindingsCommonOptions = HotkeyChordOptions & HotkeySequenceOptions; ``` -Defined in: [adapter.ts:45](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L45) +Defined in: [adapter.ts:49](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L49) Options shared by every definition. Each option applies only to the kinds that support it. diff --git a/docs/reference/adapter/type-aliases/HotkeyDefinition.md b/docs/reference/adapter/type-aliases/HotkeyDefinition.md index 934768b8..35178f70 100644 --- a/docs/reference/adapter/type-aliases/HotkeyDefinition.md +++ b/docs/reference/adapter/type-aliases/HotkeyDefinition.md @@ -17,7 +17,7 @@ type HotkeyDefinition = }; ``` -Defined in: [adapter.ts:32](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L32) +Defined in: [adapter.ts:36](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L36) A hotkey and its callback, with optional per-binding options. Chords accept `requireReset`; sequences accept `timeout`. diff --git a/docs/reference/adapter/type-aliases/Store.md b/docs/reference/adapter/type-aliases/Store.md new file mode 100644 index 00000000..3ce0d1f3 --- /dev/null +++ b/docs/reference/adapter/type-aliases/Store.md @@ -0,0 +1,20 @@ +--- +id: Store +title: Store +--- + +```ts +type Store = Pick, "state" | "get" | "setState" | "subscribe">; +``` + +Defined in: \_store.ts:8 + +The part of TanStack Store's `Store` that TanStack Hotkeys uses. Its stores +work with TanStack Store's framework adapters, such as `useSelector` from +`@tanstack/react-store`. + +## Type Parameters + +### T + +`T` diff --git a/docs/reference/adapter/type-aliases/WithTarget.md b/docs/reference/adapter/type-aliases/WithTarget.md index 0dea4a68..419aa913 100644 --- a/docs/reference/adapter/type-aliases/WithTarget.md +++ b/docs/reference/adapter/type-aliases/WithTarget.md @@ -7,7 +7,7 @@ title: WithTarget type WithTarget = Omit & object; ``` -Defined in: [adapter.ts:155](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L155) +Defined in: [adapter.ts:159](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/adapter.ts#L159) Options with a framework-specific target, such as a ref. diff --git a/docs/reference/classes/AppHotkeysStore.md b/docs/reference/classes/AppHotkeysStore.md index 775d5cd6..24d6f211 100644 --- a/docs/reference/classes/AppHotkeysStore.md +++ b/docs/reference/classes/AppHotkeysStore.md @@ -3,7 +3,7 @@ id: AppHotkeysStore title: AppHotkeysStore --- -Defined in: [app-hotkeys.ts:353](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L353) +Defined in: [app-hotkeys.ts:362](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L362) Holds declared app hotkeys and the user's custom hotkeys. Framework providers create one and expose it through hooks; devtools read it from @@ -34,7 +34,7 @@ store.setCustomHotkey('doc.save', 'Mod+Shift+S') new AppHotkeysStore(appHotkeys, options?): AppHotkeysStore; ``` -Defined in: [app-hotkeys.ts:358](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L358) +Defined in: [app-hotkeys.ts:367](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L367) #### Parameters @@ -58,7 +58,7 @@ Defined in: [app-hotkeys.ts:358](https://github.com/TanStack/hotkeys/blob/main/p readonly store: Store>; ``` -Defined in: [app-hotkeys.ts:354](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L354) +Defined in: [app-hotkeys.ts:363](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L363) ## Accessors @@ -70,7 +70,7 @@ Defined in: [app-hotkeys.ts:354](https://github.com/TanStack/hotkeys/blob/main/p get appHotkeys(): T; ``` -Defined in: [app-hotkeys.ts:376](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L376) +Defined in: [app-hotkeys.ts:385](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L385) Effective app hotkeys. @@ -88,7 +88,7 @@ Effective app hotkeys. get customHotkeys(): CustomHotkeys; ``` -Defined in: [app-hotkeys.ts:381](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L381) +Defined in: [app-hotkeys.ts:390](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L390) The user's hotkeys that differ from the defaults. @@ -107,7 +107,7 @@ findConflicts(id, hotkey): AppHotkey[]; ``` -Defined in: [app-hotkeys.ts:417](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L417) +Defined in: [app-hotkeys.ts:426](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L426) Other app hotkeys that would collide if `id` used `hotkey`. App hotkeys collide when their scopes match or either is `'global'`, and their @@ -143,7 +143,7 @@ get(id): | undefined; ``` -Defined in: [app-hotkeys.ts:408](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L408) +Defined in: [app-hotkeys.ts:417](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L417) Effective app hotkey for an id, or `undefined` when it is not declared. @@ -169,7 +169,7 @@ Effective app hotkey for an id, or `undefined` when it is not declared. getList(registrations): AppHotkeyListItem[]; ``` -Defined in: [app-hotkeys.ts:484](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L484) +Defined in: [app-hotkeys.ts:497](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L497) Joins app hotkeys with live registrations, in declaration order. Adapters call this with the manager's registration views. @@ -192,7 +192,7 @@ Adapters call this with the manager's registration views. resetCustomHotkey(id): void; ``` -Defined in: [app-hotkeys.ts:461](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L461) +Defined in: [app-hotkeys.ts:474](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L474) Restores the default hotkey for an app hotkey. @@ -214,7 +214,7 @@ keyof `T` & `string` resetCustomHotkeys(): void; ``` -Defined in: [app-hotkeys.ts:468](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L468) +Defined in: [app-hotkeys.ts:481](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L481) Restores every default hotkey. @@ -230,7 +230,7 @@ Restores every default hotkey. setAppHotkeys(appHotkeys): void; ``` -Defined in: [app-hotkeys.ts:394](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L394) +Defined in: [app-hotkeys.ts:403](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L403) Replaces the declarations, for example after hot module replacement. Custom hotkeys for ids that still exist are kept. @@ -256,7 +256,7 @@ setCustomHotkey(id, hotkey): AppHotkey[]; ``` -Defined in: [app-hotkeys.ts:436](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L436) +Defined in: [app-hotkeys.ts:445](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L445) Sets the user's hotkey for an app hotkey. `null` unbinds it. A hotkey equal to the default removes the customization. @@ -288,7 +288,7 @@ Conflicting app hotkeys. When any exist, nothing changes. setOptions(options): void; ``` -Defined in: [app-hotkeys.ts:386](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L386) +Defined in: [app-hotkeys.ts:395](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L395) Updates callbacks and other options without resetting custom hotkeys. diff --git a/docs/reference/classes/HotkeyManager.md b/docs/reference/classes/HotkeyManager.md index 07984383..f7b6194e 100644 --- a/docs/reference/classes/HotkeyManager.md +++ b/docs/reference/classes/HotkeyManager.md @@ -3,7 +3,7 @@ id: HotkeyManager title: HotkeyManager --- -Defined in: [hotkey-manager.ts:449](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L449) +Defined in: [hotkey-manager.ts:450](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L450) Singleton manager for hotkey registrations, including sequences. @@ -36,15 +36,10 @@ top.unregister() ### appHotkeys ```ts -readonly appHotkeys: Store< - | AppHotkeysStore>>> -| null>; +readonly appHotkeys: Store; ``` -Defined in: [hotkey-manager.ts:476](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L476) +Defined in: [hotkey-manager.ts:477](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L477) The app hotkeys store published by a framework provider, so tools such as devtools can list declared hotkeys that are not registered. @@ -57,7 +52,7 @@ devtools can list declared hotkeys that are not registered. readonly registrations: Store>; ``` -Defined in: [hotkey-manager.ts:469](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L469) +Defined in: [hotkey-manager.ts:470](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L470) The TanStack Store containing all hotkey registrations, chords and sequences. Use this to subscribe to registration changes or access current registrations. @@ -86,7 +81,7 @@ for (const [id, reg] of manager.registrations.state) { readonly scopes: Store; ``` -Defined in: [hotkey-manager.ts:479](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L479) +Defined in: [hotkey-manager.ts:480](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L480) Active scopes. Subscribe to show which hotkeys are suspended. @@ -98,7 +93,7 @@ Active scopes. Subscribe to show which hotkeys are suspended. activateScope(scope, options?): () => void; ``` -Defined in: [hotkey-manager.ts:541](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L541) +Defined in: [hotkey-manager.ts:542](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L542) Activates a scope until the returned function is called. Activations are counted, so a scope stays active until every activation is released. @@ -142,7 +137,7 @@ manager.activateScope('dialog', { exclusive: { allow: ['global'] } }) destroy(): void; ``` -Defined in: [hotkey-manager.ts:1518](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1518) +Defined in: [hotkey-manager.ts:1520](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1520) Destroys the manager and removes all listeners. @@ -158,7 +153,7 @@ Destroys the manager and removes all listeners. getRegistrationCount(): number; ``` -Defined in: [hotkey-manager.ts:1454](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1454) +Defined in: [hotkey-manager.ts:1456](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1456) Gets the number of registered hotkeys, chords and sequences. @@ -174,7 +169,7 @@ Gets the number of registered hotkeys, chords and sequences. hasActiveRegistration(hotkey): boolean; ``` -Defined in: [hotkey-manager.ts:1491](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1491) +Defined in: [hotkey-manager.ts:1493](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1493) Checks whether a hotkey can fire now: at least one registration is enabled, in an active scope, and listening where key presses go. A @@ -205,7 +200,7 @@ True if a registration that can fire exists isRegistered(hotkey, target?): boolean; ``` -Defined in: [hotkey-manager.ts:1465](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1465) +Defined in: [hotkey-manager.ts:1467](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1467) Checks if a specific hotkey is registered. @@ -237,7 +232,7 @@ True if a matching registration exists isScopeActive(scope?): boolean; ``` -Defined in: [hotkey-manager.ts:576](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L576) +Defined in: [hotkey-manager.ts:578](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L578) Whether hotkeys in a scope can fire: the scope is `'global'` or activated, and either no scope is exclusive or this scope is the @@ -264,7 +259,7 @@ register( options?): HotkeyRegistrationHandle>; ``` -Defined in: [hotkey-manager.ts:751](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L751) +Defined in: [hotkey-manager.ts:753](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L753) Registers a hotkey handler and returns a handle for updating the registration. @@ -330,7 +325,7 @@ handle.unregister() resetSequenceProgress(): void; ``` -Defined in: [hotkey-manager.ts:1401](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1401) +Defined in: [hotkey-manager.ts:1403](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1403) Resets the progress of every in-progress sequence. @@ -346,7 +341,7 @@ Resets the progress of every in-progress sequence. triggerRegistration(id): boolean; ``` -Defined in: [hotkey-manager.ts:1421](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1421) +Defined in: [hotkey-manager.ts:1423](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1423) Triggers a registration's callback programmatically from devtools. Creates a synthetic KeyboardEvent from the chord (or a sequence's last step) @@ -374,7 +369,7 @@ True if the registration was found and triggered static getInstance(): HotkeyManager; ``` -Defined in: [hotkey-manager.ts:509](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L509) +Defined in: [hotkey-manager.ts:510](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L510) Gets the singleton instance of HotkeyManager. @@ -390,7 +385,7 @@ Gets the singleton instance of HotkeyManager. static resetInstance(): void; ``` -Defined in: [hotkey-manager.ts:516](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L516) +Defined in: [hotkey-manager.ts:517](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L517) Resets the singleton instance. Useful for testing. diff --git a/docs/reference/classes/HotkeyRecorder.md b/docs/reference/classes/HotkeyRecorder.md index 41b7efd1..ba92485f 100644 --- a/docs/reference/classes/HotkeyRecorder.md +++ b/docs/reference/classes/HotkeyRecorder.md @@ -3,7 +3,7 @@ id: HotkeyRecorder title: HotkeyRecorder --- -Defined in: [hotkey-recorder.ts:192](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L192) +Defined in: [hotkey-recorder.ts:193](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L193) Framework-agnostic class for recording keyboard shortcuts. @@ -87,7 +87,7 @@ Defined in: [hotkey-recorder.ts:220](https://github.com/TanStack/hotkeys/blob/ma readonly store: Store; ``` -Defined in: [hotkey-recorder.ts:193](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L193) +Defined in: [hotkey-recorder.ts:194](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L194) ## Methods diff --git a/docs/reference/classes/KeyStateTracker.md b/docs/reference/classes/KeyStateTracker.md index 597778da..6a013f50 100644 --- a/docs/reference/classes/KeyStateTracker.md +++ b/docs/reference/classes/KeyStateTracker.md @@ -3,7 +3,7 @@ id: KeyStateTracker title: KeyStateTracker --- -Defined in: [key-state-tracker.ts:63](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L63) +Defined in: [key-state-tracker.ts:64](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L64) Singleton tracker for currently held keyboard keys. @@ -47,7 +47,7 @@ unsubscribe() readonly store: Store; ``` -Defined in: [key-state-tracker.ts:70](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L70) +Defined in: [key-state-tracker.ts:71](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L71) The TanStack Store instance containing the tracker state. Use this to subscribe to state changes or access current state. @@ -60,7 +60,7 @@ Use this to subscribe to state changes or access current state. areAllKeysHeld(keys): boolean; ``` -Defined in: [key-state-tracker.ts:268](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L268) +Defined in: [key-state-tracker.ts:269](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L269) Checks if all of the given keys are currently held. @@ -86,7 +86,7 @@ True if all of the keys are currently held destroy(): void; ``` -Defined in: [key-state-tracker.ts:275](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L275) +Defined in: [key-state-tracker.ts:276](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L276) Destroys the tracker and removes all listeners. @@ -102,7 +102,7 @@ Destroys the tracker and removes all listeners. getHeldKeys(): string[]; ``` -Defined in: [key-state-tracker.ts:235](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L235) +Defined in: [key-state-tracker.ts:236](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L236) Gets an array of currently held key names. @@ -120,7 +120,7 @@ Array of key names currently being pressed isAnyKeyHeld(keys): boolean; ``` -Defined in: [key-state-tracker.ts:258](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L258) +Defined in: [key-state-tracker.ts:259](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L259) Checks if any of the given keys are currently held. @@ -146,7 +146,7 @@ True if any of the keys are currently held isKeyHeld(key): boolean; ``` -Defined in: [key-state-tracker.ts:245](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L245) +Defined in: [key-state-tracker.ts:246](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L246) Checks if a specific key is currently being held. @@ -172,7 +172,7 @@ True if the key is currently held static getInstance(): KeyStateTracker; ``` -Defined in: [key-state-tracker.ts:85](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L85) +Defined in: [key-state-tracker.ts:86](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L86) Gets the singleton instance of KeyStateTracker. @@ -188,7 +188,7 @@ Gets the singleton instance of KeyStateTracker. static resetInstance(): void; ``` -Defined in: [key-state-tracker.ts:95](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L95) +Defined in: [key-state-tracker.ts:96](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L96) Resets the singleton instance. Useful for testing. diff --git a/docs/reference/functions/checkHotkey.md b/docs/reference/functions/checkHotkey.md index e5a12c81..62308068 100644 --- a/docs/reference/functions/checkHotkey.md +++ b/docs/reference/functions/checkHotkey.md @@ -9,8 +9,8 @@ function checkHotkey(hotkey): boolean; Defined in: [validate.ts:164](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L164) -Validates a hotkey and logs warnings to the console. -Useful for development-time feedback. +Validates a hotkey and logs errors and warnings to the console. +Useful for development-time feedback. Logs nothing in production builds. ## Parameters diff --git a/docs/reference/functions/defineAppHotkeys.md b/docs/reference/functions/defineAppHotkeys.md index 8de5d302..2b046856 100644 --- a/docs/reference/functions/defineAppHotkeys.md +++ b/docs/reference/functions/defineAppHotkeys.md @@ -7,7 +7,7 @@ title: defineAppHotkeys function defineAppHotkeys(definitions): DefinedAppHotkeys; ``` -Defined in: [app-hotkeys.ts:179](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L179) +Defined in: [app-hotkeys.ts:181](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L181) Declares every app hotkey up front, without registering any, so cheat sheets and settings screens can list hotkeys whose components have not diff --git a/docs/reference/functions/getAppHotkeyRegistrationOptions.md b/docs/reference/functions/getAppHotkeyRegistrationOptions.md index 9d222709..24f496f9 100644 --- a/docs/reference/functions/getAppHotkeyRegistrationOptions.md +++ b/docs/reference/functions/getAppHotkeyRegistrationOptions.md @@ -7,7 +7,7 @@ title: getAppHotkeyRegistrationOptions function getAppHotkeyRegistrationOptions(appHotkey): AppHotkeyChordOptions & AppHotkeySequenceOptions & object; ``` -Defined in: [app-hotkeys.ts:536](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L536) +Defined in: [app-hotkeys.ts:549](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L549) Options that adapters pass to the manager when registering an app hotkey: declared options, scope, meta, and the app hotkey id. The manager drops options diff --git a/docs/reference/functions/getHotkeyManager.md b/docs/reference/functions/getHotkeyManager.md index c8a96ff1..90e48f80 100644 --- a/docs/reference/functions/getHotkeyManager.md +++ b/docs/reference/functions/getHotkeyManager.md @@ -7,7 +7,7 @@ title: getHotkeyManager function getHotkeyManager(): HotkeyManager; ``` -Defined in: [hotkey-manager.ts:1531](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1531) +Defined in: [hotkey-manager.ts:1533](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1533) Gets the singleton HotkeyManager instance. Convenience function for accessing the manager. diff --git a/docs/reference/functions/getKeyStateTracker.md b/docs/reference/functions/getKeyStateTracker.md index 9aeb5b87..c6dea0f4 100644 --- a/docs/reference/functions/getKeyStateTracker.md +++ b/docs/reference/functions/getKeyStateTracker.md @@ -7,7 +7,7 @@ title: getKeyStateTracker function getKeyStateTracker(): KeyStateTracker; ``` -Defined in: [key-state-tracker.ts:286](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L286) +Defined in: [key-state-tracker.ts:287](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L287) Gets the singleton KeyStateTracker instance. Convenience function for accessing the tracker. diff --git a/docs/reference/functions/isAppHotkey.md b/docs/reference/functions/isAppHotkey.md index e00538a8..9e42cd1f 100644 --- a/docs/reference/functions/isAppHotkey.md +++ b/docs/reference/functions/isAppHotkey.md @@ -7,7 +7,7 @@ title: isAppHotkey function isAppHotkey(value): value is AppHotkey; ``` -Defined in: [app-hotkeys.ts:199](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L199) +Defined in: [app-hotkeys.ts:204](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L204) Whether a value is an app hotkey created by `defineAppHotkeys`. diff --git a/docs/reference/functions/isCustomHotkey.md b/docs/reference/functions/isCustomHotkey.md index 03c894f3..d945b801 100644 --- a/docs/reference/functions/isCustomHotkey.md +++ b/docs/reference/functions/isCustomHotkey.md @@ -7,7 +7,7 @@ title: isCustomHotkey function isCustomHotkey(appHotkey, platform?): boolean; ``` -Defined in: [app-hotkeys.ts:217](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L217) +Defined in: [app-hotkeys.ts:222](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L222) Whether an app hotkey's effective hotkey differs from its default. diff --git a/docs/reference/functions/provideAppHotkeys.md b/docs/reference/functions/provideAppHotkeys.md index 8639819c..642668da 100644 --- a/docs/reference/functions/provideAppHotkeys.md +++ b/docs/reference/functions/provideAppHotkeys.md @@ -7,7 +7,7 @@ title: provideAppHotkeys function provideAppHotkeys(appHotkeys, options?): object; ``` -Defined in: [app-hotkeys.ts:583](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L583) +Defined in: [app-hotkeys.ts:596](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L596) Creates an app hotkeys store and publishes it on the HotkeyManager, for adapters without a provider component (such as Lit and Alpine). Hotkey diff --git a/docs/reference/functions/publishAppHotkeysStore.md b/docs/reference/functions/publishAppHotkeysStore.md index 8d0e565e..3882d7da 100644 --- a/docs/reference/functions/publishAppHotkeysStore.md +++ b/docs/reference/functions/publishAppHotkeysStore.md @@ -7,7 +7,7 @@ title: publishAppHotkeysStore function publishAppHotkeysStore(store): () => void; ``` -Defined in: [app-hotkeys.ts:557](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L557) +Defined in: [app-hotkeys.ts:570](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L570) Publishes a provider's store on the HotkeyManager so devtools can list declared hotkeys. Returns a cleanup function that unpublishes it if it is diff --git a/docs/reference/functions/resolveAppHotkey.md b/docs/reference/functions/resolveAppHotkey.md index 33152a44..09bf0d86 100644 --- a/docs/reference/functions/resolveAppHotkey.md +++ b/docs/reference/functions/resolveAppHotkey.md @@ -7,7 +7,7 @@ title: resolveAppHotkey function resolveAppHotkey(appHotkey, store): AppHotkey; ``` -Defined in: [app-hotkeys.ts:524](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L524) +Defined in: [app-hotkeys.ts:537](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L537) Returns the provider's version of an app hotkey, so custom hotkeys apply even when a component imports the declaration directly. Falls back to the diff --git a/docs/reference/functions/toHotkeyRegistrationView.md b/docs/reference/functions/toHotkeyRegistrationView.md index 5a9e33fa..4dc81284 100644 --- a/docs/reference/functions/toHotkeyRegistrationView.md +++ b/docs/reference/functions/toHotkeyRegistrationView.md @@ -7,7 +7,7 @@ title: toHotkeyRegistrationView function toHotkeyRegistrationView(reg): HotkeyRegistrationView; ``` -Defined in: [hotkey-manager.ts:240](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L240) +Defined in: [hotkey-manager.ts:241](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L241) Creates a public view from an internal registration, stripping the callback. diff --git a/docs/reference/interfaces/ActivateHotkeyScopeOptions.md b/docs/reference/interfaces/ActivateHotkeyScopeOptions.md index 818d5145..ad6bc493 100644 --- a/docs/reference/interfaces/ActivateHotkeyScopeOptions.md +++ b/docs/reference/interfaces/ActivateHotkeyScopeOptions.md @@ -3,7 +3,7 @@ id: ActivateHotkeyScopeOptions title: ActivateHotkeyScopeOptions --- -Defined in: [hotkey-manager.ts:399](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L399) +Defined in: [hotkey-manager.ts:400](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L400) Options for `HotkeyManager.activateScope`. @@ -19,7 +19,7 @@ optional exclusive?: }; ``` -Defined in: [hotkey-manager.ts:406](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L406) +Defined in: [hotkey-manager.ts:407](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L407) Suspend every other scope, including `'global'`, until this activation is released. Scopes nested in this one stay active. Pass `{ allow }` to keep @@ -34,7 +34,7 @@ still has to be activated, except `'global'`. optional parent?: string; ``` -Defined in: [hotkey-manager.ts:412](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L412) +Defined in: [hotkey-manager.ts:413](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L413) The scope this one is nested in. A nested scope takes precedence over its ancestors even when it was activated first, as nested providers are when diff --git a/docs/reference/interfaces/AppHotkey.md b/docs/reference/interfaces/AppHotkey.md index 9f1e1499..ca14ac18 100644 --- a/docs/reference/interfaces/AppHotkey.md +++ b/docs/reference/interfaces/AppHotkey.md @@ -3,7 +3,7 @@ id: AppHotkey title: AppHotkey --- -Defined in: [app-hotkeys.ts:73](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L73) +Defined in: [app-hotkeys.ts:75](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L75) A declared app hotkey. It never holds a callback: register it with `useHotkey(appHotkey, callback)` or the equivalent adapter API. @@ -35,7 +35,7 @@ A declared app hotkey. It never holds a callback: register it with readonly ~appHotkey: true; ``` -Defined in: [app-hotkeys.ts:79](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L79) +Defined in: [app-hotkeys.ts:81](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L81) Brand that distinguishes app hotkeys from raw hotkey objects. @@ -47,7 +47,7 @@ Brand that distinguishes app hotkeys from raw hotkey objects. readonly defaultHotkey: TDefault; ``` -Defined in: [app-hotkeys.ts:85](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L85) +Defined in: [app-hotkeys.ts:87](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L87) Hotkey declared in `defineAppHotkeys`. @@ -59,7 +59,7 @@ Hotkey declared in `defineAppHotkeys`. readonly hotkey: Hotkey | null; ``` -Defined in: [app-hotkeys.ts:83](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L83) +Defined in: [app-hotkeys.ts:85](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L85) Effective hotkey: the user's custom hotkey, or the default. `null` means unbound. @@ -71,7 +71,7 @@ Effective hotkey: the user's custom hotkey, or the default. `null` means unbound readonly id: TId; ``` -Defined in: [app-hotkeys.ts:81](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L81) +Defined in: [app-hotkeys.ts:83](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L83) Stable id. Saved custom hotkeys are keyed by this value. @@ -83,7 +83,7 @@ Stable id. Saved custom hotkeys are keyed by this value. readonly optional meta?: HotkeyMeta; ``` -Defined in: [app-hotkeys.ts:86](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L86) +Defined in: [app-hotkeys.ts:88](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L88) *** @@ -93,7 +93,7 @@ Defined in: [app-hotkeys.ts:86](https://github.com/TanStack/hotkeys/blob/main/pa readonly optional options?: AppHotkeyOptions; ``` -Defined in: [app-hotkeys.ts:88](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L88) +Defined in: [app-hotkeys.ts:90](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L90) *** @@ -103,4 +103,4 @@ Defined in: [app-hotkeys.ts:88](https://github.com/TanStack/hotkeys/blob/main/pa readonly optional scope?: string; ``` -Defined in: [app-hotkeys.ts:87](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L87) +Defined in: [app-hotkeys.ts:89](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L89) diff --git a/docs/reference/interfaces/AppHotkeyInput.md b/docs/reference/interfaces/AppHotkeyInput.md index 2edcc967..deaa08cc 100644 --- a/docs/reference/interfaces/AppHotkeyInput.md +++ b/docs/reference/interfaces/AppHotkeyInput.md @@ -3,7 +3,7 @@ id: AppHotkeyInput title: AppHotkeyInput --- -Defined in: [app-hotkeys.ts:47](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L47) +Defined in: [app-hotkeys.ts:49](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L49) One declaration passed to `defineAppHotkeys`. @@ -15,7 +15,7 @@ One declaration passed to `defineAppHotkeys`. hotkey: Hotkey | null; ``` -Defined in: [app-hotkeys.ts:49](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L49) +Defined in: [app-hotkeys.ts:51](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L51) Default hotkey: a chord, a sequence, or `null` for an action without a default. @@ -27,7 +27,7 @@ Default hotkey: a chord, a sequence, or `null` for an action without a default. optional meta?: HotkeyMeta; ``` -Defined in: [app-hotkeys.ts:51](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L51) +Defined in: [app-hotkeys.ts:53](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L53) Display metadata for cheat sheets and settings screens. @@ -39,7 +39,7 @@ Display metadata for cheat sheets and settings screens. optional options?: AppHotkeyOptions; ``` -Defined in: [app-hotkeys.ts:63](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L63) +Defined in: [app-hotkeys.ts:65](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L65) Options that describe the hotkey itself. Chord defaults accept `requireReset`; sequence defaults accept `timeout`. @@ -52,7 +52,7 @@ Options that describe the hotkey itself. Chord defaults accept optional scope?: string; ``` -Defined in: [app-hotkeys.ts:58](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L58) +Defined in: [app-hotkeys.ts:60](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L60) Scope this hotkey fires in, such as `'editor'`. Overrides the scope of the provider it registers under. App hotkeys in different scopes may share a diff --git a/docs/reference/interfaces/AppHotkeyListItem.md b/docs/reference/interfaces/AppHotkeyListItem.md index 7ab01861..536f822f 100644 --- a/docs/reference/interfaces/AppHotkeyListItem.md +++ b/docs/reference/interfaces/AppHotkeyListItem.md @@ -3,7 +3,7 @@ id: AppHotkeyListItem title: AppHotkeyListItem --- -Defined in: [app-hotkeys.ts:311](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L311) +Defined in: [app-hotkeys.ts:320](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L320) One row of an app hotkey cheat sheet. @@ -21,7 +21,7 @@ One row of an app hotkey cheat sheet. appHotkey: T; ``` -Defined in: [app-hotkeys.ts:312](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L312) +Defined in: [app-hotkeys.ts:321](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L321) *** @@ -31,7 +31,7 @@ Defined in: [app-hotkeys.ts:312](https://github.com/TanStack/hotkeys/blob/main/p isCustom: boolean; ``` -Defined in: [app-hotkeys.ts:315](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L315) +Defined in: [app-hotkeys.ts:324](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L324) Whether the effective hotkey differs from the declared default. @@ -43,7 +43,7 @@ Whether the effective hotkey differs from the declared default. registrations: HotkeyRegistrationView[]; ``` -Defined in: [app-hotkeys.ts:317](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L317) +Defined in: [app-hotkeys.ts:326](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L326) Live registrations of this app hotkey (for example, one per list row). @@ -55,4 +55,4 @@ Live registrations of this app hotkey (for example, one per list row). status: AppHotkeyStatus; ``` -Defined in: [app-hotkeys.ts:313](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L313) +Defined in: [app-hotkeys.ts:322](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L322) diff --git a/docs/reference/interfaces/AppHotkeysState.md b/docs/reference/interfaces/AppHotkeysState.md index a25c2ae4..db097350 100644 --- a/docs/reference/interfaces/AppHotkeysState.md +++ b/docs/reference/interfaces/AppHotkeysState.md @@ -3,7 +3,7 @@ id: AppHotkeysState title: AppHotkeysState --- -Defined in: [app-hotkeys.ts:321](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L321) +Defined in: [app-hotkeys.ts:330](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L330) State of an `AppHotkeysStore`. @@ -21,7 +21,7 @@ State of an `AppHotkeysStore`. appHotkeys: T; ``` -Defined in: [app-hotkeys.ts:323](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L323) +Defined in: [app-hotkeys.ts:332](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L332) Effective app hotkeys: declarations with custom hotkeys applied. @@ -33,6 +33,6 @@ Effective app hotkeys: declarations with custom hotkeys applied. customHotkeys: CustomHotkeys; ``` -Defined in: [app-hotkeys.ts:325](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L325) +Defined in: [app-hotkeys.ts:334](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L334) The user's hotkeys that differ from the defaults. diff --git a/docs/reference/interfaces/AppHotkeysStoreOptions.md b/docs/reference/interfaces/AppHotkeysStoreOptions.md index 19e13cb3..3a2a3880 100644 --- a/docs/reference/interfaces/AppHotkeysStoreOptions.md +++ b/docs/reference/interfaces/AppHotkeysStoreOptions.md @@ -3,7 +3,7 @@ id: AppHotkeysStoreOptions title: AppHotkeysStoreOptions --- -Defined in: [app-hotkeys.ts:329](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L329) +Defined in: [app-hotkeys.ts:338](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L338) Options for `AppHotkeysStore`. @@ -21,7 +21,7 @@ Options for `AppHotkeysStore`. optional customHotkeys?: CustomHotkeys | null; ``` -Defined in: [app-hotkeys.ts:331](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L331) +Defined in: [app-hotkeys.ts:340](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L340) Starting custom hotkeys, such as saved data. Invalid entries are ignored with a warning. @@ -33,7 +33,7 @@ Starting custom hotkeys, such as saved data. Invalid entries are ignored with a optional onCustomHotkeysChange?: (customHotkeys) => void; ``` -Defined in: [app-hotkeys.ts:333](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L333) +Defined in: [app-hotkeys.ts:342](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L342) Called with the custom hotkeys after every change, ready to save. @@ -55,6 +55,6 @@ Called with the custom hotkeys after every change, ready to save. optional platform?: Platform; ``` -Defined in: [app-hotkeys.ts:335](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L335) +Defined in: [app-hotkeys.ts:344](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L344) Platform used to compare hotkeys. Defaults to detection. diff --git a/docs/reference/interfaces/HotkeyChordOptions.md b/docs/reference/interfaces/HotkeyChordOptions.md index 9f629d72..7ee4d674 100644 --- a/docs/reference/interfaces/HotkeyChordOptions.md +++ b/docs/reference/interfaces/HotkeyChordOptions.md @@ -3,7 +3,7 @@ id: HotkeyChordOptions title: HotkeyChordOptions --- -Defined in: [hotkey-manager.ts:121](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L121) +Defined in: [hotkey-manager.ts:122](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L122) Options for a single chord such as `'Mod+S'`. @@ -19,7 +19,7 @@ Options for a single chord such as `'Mod+S'`. optional appHotkeyId?: string; ``` -Defined in: [hotkey-manager.ts:117](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L117) +Defined in: [hotkey-manager.ts:118](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L118) Id of the app hotkey this registration implements. Adapters set this when registering an app hotkey from `defineAppHotkeys`. @@ -35,7 +35,7 @@ Id of the app hotkey this registration implements. Adapters set this when regist optional capture?: boolean; ``` -Defined in: [hotkey-manager.ts:63](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L63) +Defined in: [hotkey-manager.ts:64](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L64) Listen during capture, before descendant listeners. Defaults to `false` (bubble). With `stopPropagation: true`, a match on an ancestor prevents the event from @@ -55,7 +55,7 @@ Changing this option preserves held-key reset state and sequence progress. optional conflictBehavior?: ConflictBehavior; ``` -Defined in: [hotkey-manager.ts:65](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L65) +Defined in: [hotkey-manager.ts:66](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L66) Behavior when this hotkey conflicts with an existing registration on the same target. Defaults to 'warn' @@ -71,7 +71,7 @@ Behavior when this hotkey conflicts with an existing registration on the same ta optional enabled?: boolean; ``` -Defined in: [hotkey-manager.ts:71](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L71) +Defined in: [hotkey-manager.ts:72](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L72) Soft-disable: when `false`, the callback does not run but the registration stays in `HotkeyManager` (and in devtools). Toggling this should update the @@ -89,7 +89,7 @@ existing handle via `setOptions` rather than unregistering. Defaults to `true`. optional eventType?: "keydown" | "keyup"; ``` -Defined in: [hotkey-manager.ts:73](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L73) +Defined in: [hotkey-manager.ts:74](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L74) The event type to listen for. Defaults to 'keydown' @@ -105,7 +105,7 @@ The event type to listen for. Defaults to 'keydown' optional ignoreInputs?: boolean | "auto"; ``` -Defined in: [hotkey-manager.ts:84](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L84) +Defined in: [hotkey-manager.ts:85](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L85) Skip keys that a focused control inside the target uses itself: typing in text inputs, textarea, select, and contenteditable; Enter/Space on buttons @@ -128,7 +128,7 @@ even in these controls. optional meta?: HotkeyMeta; ``` -Defined in: [hotkey-manager.ts:105](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L105) +Defined in: [hotkey-manager.ts:106](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L106) Optional metadata (name, description, custom fields via declaration merging) @@ -144,7 +144,7 @@ Optional metadata (name, description, custom fields via declaration merging) optional platform?: "mac" | "windows" | "linux"; ``` -Defined in: [hotkey-manager.ts:86](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L86) +Defined in: [hotkey-manager.ts:87](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L87) The target platform for resolving 'Mod' @@ -160,7 +160,7 @@ The target platform for resolving 'Mod' optional preventDefault?: boolean | "always"; ``` -Defined in: [hotkey-manager.ts:96](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L96) +Defined in: [hotkey-manager.ts:97](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L97) Prevent the default browser action when the hotkey matches. For a sequence, every step that advances it does. Defaults to true. @@ -182,7 +182,7 @@ treat `'always'` as `true`. optional requireReset?: boolean; ``` -Defined in: [hotkey-manager.ts:123](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L123) +Defined in: [hotkey-manager.ts:124](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L124) If true, only trigger once until all keys are released. Default: false @@ -194,7 +194,7 @@ If true, only trigger once until all keys are released. Default: false optional scope?: string; ``` -Defined in: [hotkey-manager.ts:115](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L115) +Defined in: [hotkey-manager.ts:116](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L116) Scope this hotkey belongs to. Defaults to `'global'`, which is always active. Other scopes are active while activated with @@ -216,7 +216,7 @@ activated scope handles it. optional stopPropagation?: boolean; ``` -Defined in: [hotkey-manager.ts:101](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L101) +Defined in: [hotkey-manager.ts:102](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L102) Stop event propagation when the hotkey matches. For a sequence, only the last step does, so earlier steps reach other listeners. Defaults to true @@ -233,7 +233,7 @@ last step does, so earlier steps reach other listeners. Defaults to true optional target?: Target | null; ``` -Defined in: [hotkey-manager.ts:103](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L103) +Defined in: [hotkey-manager.ts:104](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L104) The DOM element to attach the event listener to. Defaults to document. diff --git a/docs/reference/interfaces/HotkeyChordRecorderOptions.md b/docs/reference/interfaces/HotkeyChordRecorderOptions.md index 2896cdb9..67d338c0 100644 --- a/docs/reference/interfaces/HotkeyChordRecorderOptions.md +++ b/docs/reference/interfaces/HotkeyChordRecorderOptions.md @@ -3,7 +3,7 @@ id: HotkeyChordRecorderOptions title: HotkeyChordRecorderOptions --- -Defined in: [hotkey-recorder.ts:101](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L101) +Defined in: [hotkey-recorder.ts:102](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L102) Options for recording a single chord. This is the default (`maxSteps: 1`). @@ -19,7 +19,7 @@ Options for recording a single chord. This is the default (`maxSteps: 1`). optional detectConflicts?: boolean | HotkeyConflictOptions; ``` -Defined in: [hotkey-recorder.ts:39](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L39) +Defined in: [hotkey-recorder.ts:40](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L40) Opt in to live-registry conflicts, including sequence prefixes. Default: false. @@ -37,7 +37,7 @@ HotkeyRecorderBaseOptions.detectConflicts optional ignoreInputs?: boolean; ``` -Defined in: [hotkey-recorder.ts:97](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L97) +Defined in: [hotkey-recorder.ts:98](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L98) Whether to ignore keyboard events from input-like elements (text inputs, textarea, select, contenteditable) while recording. When true, typing in @@ -57,7 +57,7 @@ HotkeyRecorderBaseOptions.ignoreInputs optional maxSteps?: 1; ``` -Defined in: [hotkey-recorder.ts:103](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L103) +Defined in: [hotkey-recorder.ts:104](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L104) Maximum number of chords to record. Default: 1 @@ -69,7 +69,7 @@ Maximum number of chords to record. Default: 1 optional onCancel?: () => void; ``` -Defined in: [hotkey-recorder.ts:86](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L86) +Defined in: [hotkey-recorder.ts:87](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L87) Optional callback when recording is cancelled (Escape pressed) @@ -91,7 +91,7 @@ HotkeyRecorderBaseOptions.onCancel optional onClear?: () => void; ``` -Defined in: [hotkey-recorder.ts:91](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L91) +Defined in: [hotkey-recorder.ts:92](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L92) Optional callback when the recording is cleared: Backspace/Delete with no modifiers and no recorded steps @@ -114,7 +114,7 @@ HotkeyRecorderBaseOptions.onClear onRecord: (hotkey) => void; ``` -Defined in: [hotkey-recorder.ts:110](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L110) +Defined in: [hotkey-recorder.ts:111](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L111) Callback when a chord is successfully recorded @@ -136,7 +136,7 @@ Callback when a chord is successfully recorded optional onReject?: (rejection) => void; ``` -Defined in: [hotkey-recorder.ts:41](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L41) +Defined in: [hotkey-recorder.ts:42](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L42) Rejected candidates leave recording active. @@ -164,7 +164,7 @@ HotkeyRecorderBaseOptions.onReject optional platform?: "mac" | "windows" | "linux"; ``` -Defined in: [hotkey-recorder.ts:37](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L37) +Defined in: [hotkey-recorder.ts:38](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L38) Platform used for Mod and AltGraph handling. Defaults to platform detection. @@ -182,7 +182,7 @@ HotkeyRecorderBaseOptions.platform optional recordBy?: RecorderKeyMode; ``` -Defined in: [hotkey-recorder.ts:35](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L35) +Defined in: [hotkey-recorder.ts:36](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L36) Physical code recording is the default. Choose key to record logical characters. @@ -200,7 +200,7 @@ HotkeyRecorderBaseOptions.recordBy optional validate?: (hotkey, context) => string | boolean; ``` -Defined in: [hotkey-recorder.ts:105](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L105) +Defined in: [hotkey-recorder.ts:106](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L106) Return true to accept, or false/a message to reject while staying in recording mode. diff --git a/docs/reference/interfaces/HotkeyChordRecorderValidationContext.md b/docs/reference/interfaces/HotkeyChordRecorderValidationContext.md index 815535f7..3c2f1687 100644 --- a/docs/reference/interfaces/HotkeyChordRecorderValidationContext.md +++ b/docs/reference/interfaces/HotkeyChordRecorderValidationContext.md @@ -3,7 +3,7 @@ id: HotkeyChordRecorderValidationContext title: HotkeyChordRecorderValidationContext --- -Defined in: [hotkey-recorder.ts:45](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L45) +Defined in: [hotkey-recorder.ts:46](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L46) Validation context for a recorded chord. @@ -15,7 +15,7 @@ Validation context for a recorded chord. event: KeyboardEvent; ``` -Defined in: [hotkey-recorder.ts:48](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L48) +Defined in: [hotkey-recorder.ts:49](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L49) The event that recorded the chord. @@ -27,7 +27,7 @@ The event that recorded the chord. kind: "chord"; ``` -Defined in: [hotkey-recorder.ts:46](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L46) +Defined in: [hotkey-recorder.ts:47](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L47) *** @@ -37,6 +37,6 @@ Defined in: [hotkey-recorder.ts:46](https://github.com/TanStack/hotkeys/blob/mai parsedChord: ParsedHotkeyChord; ``` -Defined in: [hotkey-recorder.ts:50](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L50) +Defined in: [hotkey-recorder.ts:51](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L51) The chord with `Mod` resolved for the recorder's platform. diff --git a/docs/reference/interfaces/HotkeyChordRegistration.md b/docs/reference/interfaces/HotkeyChordRegistration.md index 4f8176d0..220aa80d 100644 --- a/docs/reference/interfaces/HotkeyChordRegistration.md +++ b/docs/reference/interfaces/HotkeyChordRegistration.md @@ -3,7 +3,7 @@ id: HotkeyChordRegistration title: HotkeyChordRegistration --- -Defined in: [hotkey-manager.ts:160](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L160) +Defined in: [hotkey-manager.ts:161](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L161) A registered chord in the HotkeyManager. @@ -19,7 +19,7 @@ A registered chord in the HotkeyManager. optional activeMatch?: object; ``` -Defined in: [hotkey-manager.ts:165](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L165) +Defined in: [hotkey-manager.ts:166](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L166) The concrete key/code that activated a requireReset registration. @@ -43,7 +43,7 @@ key: string; callback: HotkeyCallback; ``` -Defined in: [hotkey-manager.ts:148](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L148) +Defined in: [hotkey-manager.ts:149](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L149) The callback to invoke @@ -61,7 +61,7 @@ RegistrationBase.callback hasFired: boolean; ``` -Defined in: [hotkey-manager.ts:156](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L156) +Defined in: [hotkey-manager.ts:157](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L157) Whether this registration has fired (and, for requireReset chords, needs a reset) @@ -79,7 +79,7 @@ RegistrationBase.hasFired hotkey: HotkeyChord; ``` -Defined in: [hotkey-manager.ts:162](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L162) +Defined in: [hotkey-manager.ts:163](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L163) *** @@ -89,7 +89,7 @@ Defined in: [hotkey-manager.ts:162](https://github.com/TanStack/hotkeys/blob/mai id: string; ``` -Defined in: [hotkey-manager.ts:146](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L146) +Defined in: [hotkey-manager.ts:147](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L147) Unique identifier for this registration @@ -107,7 +107,7 @@ RegistrationBase.id kind: "chord"; ``` -Defined in: [hotkey-manager.ts:161](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L161) +Defined in: [hotkey-manager.ts:162](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L162) *** @@ -117,7 +117,7 @@ Defined in: [hotkey-manager.ts:161](https://github.com/TanStack/hotkeys/blob/mai options: HotkeyChordOptions; ``` -Defined in: [hotkey-manager.ts:150](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L150) +Defined in: [hotkey-manager.ts:151](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L151) Resolved options for this registration @@ -135,7 +135,7 @@ RegistrationBase.options parsedChord: ParsedHotkeyChord; ``` -Defined in: [hotkey-manager.ts:163](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L163) +Defined in: [hotkey-manager.ts:164](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L164) *** @@ -145,7 +145,7 @@ Defined in: [hotkey-manager.ts:163](https://github.com/TanStack/hotkeys/blob/mai target: Target; ``` -Defined in: [hotkey-manager.ts:152](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L152) +Defined in: [hotkey-manager.ts:153](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L153) The resolved target element for this registration @@ -163,7 +163,7 @@ RegistrationBase.target triggerCount: number; ``` -Defined in: [hotkey-manager.ts:154](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L154) +Defined in: [hotkey-manager.ts:155](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L155) How many times this registration's callback has been triggered diff --git a/docs/reference/interfaces/HotkeyChordRegistrationView.md b/docs/reference/interfaces/HotkeyChordRegistrationView.md index 6c89ef5b..9890efe0 100644 --- a/docs/reference/interfaces/HotkeyChordRegistrationView.md +++ b/docs/reference/interfaces/HotkeyChordRegistrationView.md @@ -3,7 +3,7 @@ id: HotkeyChordRegistrationView title: HotkeyChordRegistrationView --- -Defined in: [hotkey-manager.ts:202](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L202) +Defined in: [hotkey-manager.ts:203](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L203) Public view of a chord registration, without its callback. @@ -19,7 +19,7 @@ Public view of a chord registration, without its callback. hasFired: boolean; ``` -Defined in: [hotkey-manager.ts:198](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L198) +Defined in: [hotkey-manager.ts:199](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L199) #### Inherited from @@ -35,7 +35,7 @@ RegistrationViewBase.hasFired hotkey: HotkeyChord; ``` -Defined in: [hotkey-manager.ts:204](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L204) +Defined in: [hotkey-manager.ts:205](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L205) *** @@ -45,7 +45,7 @@ Defined in: [hotkey-manager.ts:204](https://github.com/TanStack/hotkeys/blob/mai id: string; ``` -Defined in: [hotkey-manager.ts:193](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L193) +Defined in: [hotkey-manager.ts:194](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L194) #### Inherited from @@ -61,7 +61,7 @@ RegistrationViewBase.id kind: "chord"; ``` -Defined in: [hotkey-manager.ts:203](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L203) +Defined in: [hotkey-manager.ts:204](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L204) *** @@ -71,7 +71,7 @@ Defined in: [hotkey-manager.ts:203](https://github.com/TanStack/hotkeys/blob/mai options: HotkeyChordOptions; ``` -Defined in: [hotkey-manager.ts:206](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L206) +Defined in: [hotkey-manager.ts:207](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L207) *** @@ -81,7 +81,7 @@ Defined in: [hotkey-manager.ts:206](https://github.com/TanStack/hotkeys/blob/mai parsedChord: ParsedHotkeyChord; ``` -Defined in: [hotkey-manager.ts:205](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L205) +Defined in: [hotkey-manager.ts:206](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L206) *** @@ -91,7 +91,7 @@ Defined in: [hotkey-manager.ts:205](https://github.com/TanStack/hotkeys/blob/mai status: HotkeyRegistrationStatus; ``` -Defined in: [hotkey-manager.ts:195](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L195) +Defined in: [hotkey-manager.ts:196](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L196) Whether the registration is enabled and in an active scope. @@ -109,7 +109,7 @@ RegistrationViewBase.status target: Target; ``` -Defined in: [hotkey-manager.ts:196](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L196) +Defined in: [hotkey-manager.ts:197](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L197) #### Inherited from @@ -125,7 +125,7 @@ RegistrationViewBase.target triggerCount: number; ``` -Defined in: [hotkey-manager.ts:197](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L197) +Defined in: [hotkey-manager.ts:198](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L198) #### Inherited from diff --git a/docs/reference/interfaces/HotkeyOptions.md b/docs/reference/interfaces/HotkeyOptions.md index a5be48b9..7364fb8b 100644 --- a/docs/reference/interfaces/HotkeyOptions.md +++ b/docs/reference/interfaces/HotkeyOptions.md @@ -3,7 +3,7 @@ id: HotkeyOptions title: HotkeyOptions --- -Defined in: [hotkey-manager.ts:55](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L55) +Defined in: [hotkey-manager.ts:56](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L56) Options shared by chords and sequences. @@ -20,7 +20,7 @@ Options shared by chords and sequences. optional appHotkeyId?: string; ``` -Defined in: [hotkey-manager.ts:117](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L117) +Defined in: [hotkey-manager.ts:118](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L118) Id of the app hotkey this registration implements. Adapters set this when registering an app hotkey from `defineAppHotkeys`. @@ -32,7 +32,7 @@ Id of the app hotkey this registration implements. Adapters set this when regist optional capture?: boolean; ``` -Defined in: [hotkey-manager.ts:63](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L63) +Defined in: [hotkey-manager.ts:64](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L64) Listen during capture, before descendant listeners. Defaults to `false` (bubble). With `stopPropagation: true`, a match on an ancestor prevents the event from @@ -48,7 +48,7 @@ Changing this option preserves held-key reset state and sequence progress. optional conflictBehavior?: ConflictBehavior; ``` -Defined in: [hotkey-manager.ts:65](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L65) +Defined in: [hotkey-manager.ts:66](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L66) Behavior when this hotkey conflicts with an existing registration on the same target. Defaults to 'warn' @@ -60,7 +60,7 @@ Behavior when this hotkey conflicts with an existing registration on the same ta optional enabled?: boolean; ``` -Defined in: [hotkey-manager.ts:71](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L71) +Defined in: [hotkey-manager.ts:72](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L72) Soft-disable: when `false`, the callback does not run but the registration stays in `HotkeyManager` (and in devtools). Toggling this should update the @@ -74,7 +74,7 @@ existing handle via `setOptions` rather than unregistering. Defaults to `true`. optional eventType?: "keydown" | "keyup"; ``` -Defined in: [hotkey-manager.ts:73](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L73) +Defined in: [hotkey-manager.ts:74](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L74) The event type to listen for. Defaults to 'keydown' @@ -86,7 +86,7 @@ The event type to listen for. Defaults to 'keydown' optional ignoreInputs?: boolean | "auto"; ``` -Defined in: [hotkey-manager.ts:84](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L84) +Defined in: [hotkey-manager.ts:85](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L85) Skip keys that a focused control inside the target uses itself: typing in text inputs, textarea, select, and contenteditable; Enter/Space on buttons @@ -105,7 +105,7 @@ even in these controls. optional meta?: HotkeyMeta; ``` -Defined in: [hotkey-manager.ts:105](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L105) +Defined in: [hotkey-manager.ts:106](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L106) Optional metadata (name, description, custom fields via declaration merging) @@ -117,7 +117,7 @@ Optional metadata (name, description, custom fields via declaration merging) optional platform?: "mac" | "windows" | "linux"; ``` -Defined in: [hotkey-manager.ts:86](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L86) +Defined in: [hotkey-manager.ts:87](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L87) The target platform for resolving 'Mod' @@ -129,7 +129,7 @@ The target platform for resolving 'Mod' optional preventDefault?: boolean | "always"; ``` -Defined in: [hotkey-manager.ts:96](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L96) +Defined in: [hotkey-manager.ts:97](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L97) Prevent the default browser action when the hotkey matches. For a sequence, every step that advances it does. Defaults to true. @@ -147,7 +147,7 @@ treat `'always'` as `true`. optional scope?: string; ``` -Defined in: [hotkey-manager.ts:115](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L115) +Defined in: [hotkey-manager.ts:116](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L116) Scope this hotkey belongs to. Defaults to `'global'`, which is always active. Other scopes are active while activated with @@ -165,7 +165,7 @@ activated scope handles it. optional stopPropagation?: boolean; ``` -Defined in: [hotkey-manager.ts:101](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L101) +Defined in: [hotkey-manager.ts:102](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L102) Stop event propagation when the hotkey matches. For a sequence, only the last step does, so earlier steps reach other listeners. Defaults to true @@ -178,6 +178,6 @@ last step does, so earlier steps reach other listeners. Defaults to true optional target?: Target | null; ``` -Defined in: [hotkey-manager.ts:103](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L103) +Defined in: [hotkey-manager.ts:104](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L104) The DOM element to attach the event listener to. Defaults to document. diff --git a/docs/reference/interfaces/HotkeyRecorderState.md b/docs/reference/interfaces/HotkeyRecorderState.md index fb0953e1..9fd61759 100644 --- a/docs/reference/interfaces/HotkeyRecorderState.md +++ b/docs/reference/interfaces/HotkeyRecorderState.md @@ -3,7 +3,7 @@ id: HotkeyRecorderState title: HotkeyRecorderState --- -Defined in: [hotkey-recorder.ts:72](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L72) +Defined in: [hotkey-recorder.ts:73](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L73) State interface for the HotkeyRecorder. @@ -15,7 +15,7 @@ State interface for the HotkeyRecorder. isRecording: boolean; ``` -Defined in: [hotkey-recorder.ts:74](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L74) +Defined in: [hotkey-recorder.ts:75](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L75) Whether recording is currently active @@ -27,7 +27,7 @@ Whether recording is currently active recordedHotkey: Hotkey | null; ``` -Defined in: [hotkey-recorder.ts:78](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L78) +Defined in: [hotkey-recorder.ts:79](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L79) The last committed hotkey: a chord, or a sequence of two or more steps @@ -39,6 +39,6 @@ The last committed hotkey: a chord, or a sequence of two or more steps steps: HotkeySequence; ``` -Defined in: [hotkey-recorder.ts:76](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L76) +Defined in: [hotkey-recorder.ts:77](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L77) Chords recorded so far in a multi-step recording (empty for `maxSteps: 1`) diff --git a/docs/reference/interfaces/HotkeyRegistrationHandle.md b/docs/reference/interfaces/HotkeyRegistrationHandle.md index 5511e9ac..abec8f3e 100644 --- a/docs/reference/interfaces/HotkeyRegistrationHandle.md +++ b/docs/reference/interfaces/HotkeyRegistrationHandle.md @@ -3,7 +3,7 @@ id: HotkeyRegistrationHandle title: HotkeyRegistrationHandle --- -Defined in: [hotkey-manager.ts:290](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L290) +Defined in: [hotkey-manager.ts:291](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L291) A handle returned from HotkeyManager.register() that allows updating the callback and options without re-registering the hotkey. @@ -39,7 +39,7 @@ handle.unregister() callback: HotkeyCallback; ``` -Defined in: [hotkey-manager.ts:297](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L297) +Defined in: [hotkey-manager.ts:298](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L298) The callback function. Can be set directly to update without re-registering. This avoids stale closures when the callback references React state. @@ -52,7 +52,7 @@ This avoids stale closures when the callback references React state. readonly id: string; ``` -Defined in: [hotkey-manager.ts:299](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L299) +Defined in: [hotkey-manager.ts:300](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L300) Unique identifier for this registration @@ -64,7 +64,7 @@ Unique identifier for this registration readonly isActive: boolean; ``` -Defined in: [hotkey-manager.ts:301](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L301) +Defined in: [hotkey-manager.ts:302](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L302) Check if this registration is still active (not unregistered) @@ -76,7 +76,7 @@ Check if this registration is still active (not unregistered) setOptions: (options) => void; ``` -Defined in: [hotkey-manager.ts:309](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L309) +Defined in: [hotkey-manager.ts:310](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L310) Update options (merged with existing options). Useful for updating `enabled`, `preventDefault`, etc. without re-registering. @@ -102,7 +102,7 @@ cannot process it again in another phase. unregister: () => void; ``` -Defined in: [hotkey-manager.ts:311](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L311) +Defined in: [hotkey-manager.ts:312](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L312) Unregister this hotkey diff --git a/docs/reference/interfaces/HotkeyScopesState.md b/docs/reference/interfaces/HotkeyScopesState.md index 08b7e3e6..89ca42c2 100644 --- a/docs/reference/interfaces/HotkeyScopesState.md +++ b/docs/reference/interfaces/HotkeyScopesState.md @@ -3,7 +3,7 @@ id: HotkeyScopesState title: HotkeyScopesState --- -Defined in: [hotkey-manager.ts:378](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L378) +Defined in: [hotkey-manager.ts:379](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L379) Active hotkey scopes, published on `HotkeyManager.scopes`. @@ -15,7 +15,7 @@ Active hotkey scopes, published on `HotkeyManager.scopes`. active: readonly string[]; ``` -Defined in: [hotkey-manager.ts:383](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L383) +Defined in: [hotkey-manager.ts:384](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L384) Activated scopes, lowest precedence first. `'global'` is always active and not listed. @@ -28,7 +28,7 @@ and not listed. allowed: readonly string[]; ``` -Defined in: [hotkey-manager.ts:390](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L390) +Defined in: [hotkey-manager.ts:391](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L391) Scopes the exclusive scope allows that are active, possibly including `'global'`. Empty when no scope is exclusive. @@ -41,7 +41,7 @@ Scopes the exclusive scope allows that are active, possibly including exclusive: string | null; ``` -Defined in: [hotkey-manager.ts:385](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L385) +Defined in: [hotkey-manager.ts:386](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L386) The exclusive scope that owns the keyboard, or `null` when none is active. @@ -53,7 +53,7 @@ The exclusive scope that owns the keyboard, or `null` when none is active. suspended: readonly string[]; ``` -Defined in: [hotkey-manager.ts:395](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L395) +Defined in: [hotkey-manager.ts:396](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L396) Scopes that are active but cannot fire because another scope is exclusive, possibly including `'global'`. diff --git a/docs/reference/interfaces/HotkeySequenceOptions.md b/docs/reference/interfaces/HotkeySequenceOptions.md index 1b923c77..0167cc2f 100644 --- a/docs/reference/interfaces/HotkeySequenceOptions.md +++ b/docs/reference/interfaces/HotkeySequenceOptions.md @@ -3,7 +3,7 @@ id: HotkeySequenceOptions title: HotkeySequenceOptions --- -Defined in: [hotkey-manager.ts:127](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L127) +Defined in: [hotkey-manager.ts:128](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L128) Options for a sequence such as `['G', 'G']`. @@ -19,7 +19,7 @@ Options for a sequence such as `['G', 'G']`. optional appHotkeyId?: string; ``` -Defined in: [hotkey-manager.ts:117](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L117) +Defined in: [hotkey-manager.ts:118](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L118) Id of the app hotkey this registration implements. Adapters set this when registering an app hotkey from `defineAppHotkeys`. @@ -35,7 +35,7 @@ Id of the app hotkey this registration implements. Adapters set this when regist optional capture?: boolean; ``` -Defined in: [hotkey-manager.ts:63](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L63) +Defined in: [hotkey-manager.ts:64](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L64) Listen during capture, before descendant listeners. Defaults to `false` (bubble). With `stopPropagation: true`, a match on an ancestor prevents the event from @@ -55,7 +55,7 @@ Changing this option preserves held-key reset state and sequence progress. optional conflictBehavior?: ConflictBehavior; ``` -Defined in: [hotkey-manager.ts:65](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L65) +Defined in: [hotkey-manager.ts:66](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L66) Behavior when this hotkey conflicts with an existing registration on the same target. Defaults to 'warn' @@ -71,7 +71,7 @@ Behavior when this hotkey conflicts with an existing registration on the same ta optional enabled?: boolean; ``` -Defined in: [hotkey-manager.ts:71](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L71) +Defined in: [hotkey-manager.ts:72](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L72) Soft-disable: when `false`, the callback does not run but the registration stays in `HotkeyManager` (and in devtools). Toggling this should update the @@ -89,7 +89,7 @@ existing handle via `setOptions` rather than unregistering. Defaults to `true`. optional eventType?: "keydown" | "keyup"; ``` -Defined in: [hotkey-manager.ts:73](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L73) +Defined in: [hotkey-manager.ts:74](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L74) The event type to listen for. Defaults to 'keydown' @@ -105,7 +105,7 @@ The event type to listen for. Defaults to 'keydown' optional ignoreInputs?: boolean | "auto"; ``` -Defined in: [hotkey-manager.ts:84](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L84) +Defined in: [hotkey-manager.ts:85](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L85) Skip keys that a focused control inside the target uses itself: typing in text inputs, textarea, select, and contenteditable; Enter/Space on buttons @@ -128,7 +128,7 @@ even in these controls. optional meta?: HotkeyMeta; ``` -Defined in: [hotkey-manager.ts:105](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L105) +Defined in: [hotkey-manager.ts:106](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L106) Optional metadata (name, description, custom fields via declaration merging) @@ -144,7 +144,7 @@ Optional metadata (name, description, custom fields via declaration merging) optional platform?: "mac" | "windows" | "linux"; ``` -Defined in: [hotkey-manager.ts:86](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L86) +Defined in: [hotkey-manager.ts:87](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L87) The target platform for resolving 'Mod' @@ -160,7 +160,7 @@ The target platform for resolving 'Mod' optional preventDefault?: boolean | "always"; ``` -Defined in: [hotkey-manager.ts:96](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L96) +Defined in: [hotkey-manager.ts:97](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L97) Prevent the default browser action when the hotkey matches. For a sequence, every step that advances it does. Defaults to true. @@ -182,7 +182,7 @@ treat `'always'` as `true`. optional scope?: string; ``` -Defined in: [hotkey-manager.ts:115](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L115) +Defined in: [hotkey-manager.ts:116](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L116) Scope this hotkey belongs to. Defaults to `'global'`, which is always active. Other scopes are active while activated with @@ -204,7 +204,7 @@ activated scope handles it. optional stopPropagation?: boolean; ``` -Defined in: [hotkey-manager.ts:101](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L101) +Defined in: [hotkey-manager.ts:102](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L102) Stop event propagation when the hotkey matches. For a sequence, only the last step does, so earlier steps reach other listeners. Defaults to true @@ -221,7 +221,7 @@ last step does, so earlier steps reach other listeners. Defaults to true optional target?: Target | null; ``` -Defined in: [hotkey-manager.ts:103](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L103) +Defined in: [hotkey-manager.ts:104](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L104) The DOM element to attach the event listener to. Defaults to document. @@ -237,6 +237,6 @@ The DOM element to attach the event listener to. Defaults to document. optional timeout?: number; ``` -Defined in: [hotkey-manager.ts:129](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L129) +Defined in: [hotkey-manager.ts:130](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L130) Maximum time between steps in milliseconds. Default: 1000 diff --git a/docs/reference/interfaces/HotkeySequenceRecorderOptions.md b/docs/reference/interfaces/HotkeySequenceRecorderOptions.md index 8e2ce535..3465859b 100644 --- a/docs/reference/interfaces/HotkeySequenceRecorderOptions.md +++ b/docs/reference/interfaces/HotkeySequenceRecorderOptions.md @@ -3,7 +3,7 @@ id: HotkeySequenceRecorderOptions title: HotkeySequenceRecorderOptions --- -Defined in: [hotkey-recorder.ts:117](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L117) +Defined in: [hotkey-recorder.ts:118](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L118) Options for recording up to `maxSteps` chords. A one-step recording commits as a chord string; two or more steps commit as a sequence. @@ -20,7 +20,7 @@ as a chord string; two or more steps commit as a sequence. optional commitKeys?: HotkeyRecorderCommitKeys; ``` -Defined in: [hotkey-recorder.ts:128](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L128) +Defined in: [hotkey-recorder.ts:129](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L129) Whether plain Enter commits the recorded steps. Default: 'enter' @@ -32,7 +32,7 @@ Whether plain Enter commits the recorded steps. Default: 'enter' optional detectConflicts?: boolean | HotkeyConflictOptions; ``` -Defined in: [hotkey-recorder.ts:39](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L39) +Defined in: [hotkey-recorder.ts:40](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L40) Opt in to live-registry conflicts, including sequence prefixes. Default: false. @@ -50,7 +50,7 @@ HotkeyRecorderBaseOptions.detectConflicts optional idleTimeoutMs?: number; ``` -Defined in: [hotkey-recorder.ts:130](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L130) +Defined in: [hotkey-recorder.ts:131](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L131) Commit automatically after this many milliseconds without a new step. Disabled when unset or 0. @@ -62,7 +62,7 @@ Commit automatically after this many milliseconds without a new step. Disabled w optional ignoreInputs?: boolean; ``` -Defined in: [hotkey-recorder.ts:97](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L97) +Defined in: [hotkey-recorder.ts:98](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L98) Whether to ignore keyboard events from input-like elements (text inputs, textarea, select, contenteditable) while recording. When true, typing in @@ -82,7 +82,7 @@ HotkeyRecorderBaseOptions.ignoreInputs maxSteps: number; ``` -Defined in: [hotkey-recorder.ts:119](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L119) +Defined in: [hotkey-recorder.ts:120](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L120) Maximum number of chords to record. Reaching it commits automatically. Use `Infinity` for no limit. @@ -94,7 +94,7 @@ Maximum number of chords to record. Reaching it commits automatically. Use `Infi optional onCancel?: () => void; ``` -Defined in: [hotkey-recorder.ts:86](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L86) +Defined in: [hotkey-recorder.ts:87](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L87) Optional callback when recording is cancelled (Escape pressed) @@ -116,7 +116,7 @@ HotkeyRecorderBaseOptions.onCancel optional onClear?: () => void; ``` -Defined in: [hotkey-recorder.ts:91](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L91) +Defined in: [hotkey-recorder.ts:92](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L92) Optional callback when the recording is cleared: Backspace/Delete with no modifiers and no recorded steps @@ -139,7 +139,7 @@ HotkeyRecorderBaseOptions.onClear onRecord: (hotkey) => void; ``` -Defined in: [hotkey-recorder.ts:126](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L126) +Defined in: [hotkey-recorder.ts:127](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L127) Callback when a hotkey is successfully recorded @@ -161,7 +161,7 @@ Callback when a hotkey is successfully recorded optional onReject?: (rejection) => void; ``` -Defined in: [hotkey-recorder.ts:41](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L41) +Defined in: [hotkey-recorder.ts:42](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L42) Rejected candidates leave recording active. @@ -189,7 +189,7 @@ HotkeyRecorderBaseOptions.onReject optional platform?: "mac" | "windows" | "linux"; ``` -Defined in: [hotkey-recorder.ts:37](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L37) +Defined in: [hotkey-recorder.ts:38](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L38) Platform used for Mod and AltGraph handling. Defaults to platform detection. @@ -207,7 +207,7 @@ HotkeyRecorderBaseOptions.platform optional recordBy?: RecorderKeyMode; ``` -Defined in: [hotkey-recorder.ts:35](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L35) +Defined in: [hotkey-recorder.ts:36](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L36) Physical code recording is the default. Choose key to record logical characters. @@ -225,7 +225,7 @@ HotkeyRecorderBaseOptions.recordBy optional validate?: (hotkey, context) => string | boolean; ``` -Defined in: [hotkey-recorder.ts:121](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L121) +Defined in: [hotkey-recorder.ts:122](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L122) Return true to accept, or false/a message to reject while staying in recording mode. diff --git a/docs/reference/interfaces/HotkeySequenceRecorderValidationContext.md b/docs/reference/interfaces/HotkeySequenceRecorderValidationContext.md index e0efb5bf..e2f1b60d 100644 --- a/docs/reference/interfaces/HotkeySequenceRecorderValidationContext.md +++ b/docs/reference/interfaces/HotkeySequenceRecorderValidationContext.md @@ -3,7 +3,7 @@ id: HotkeySequenceRecorderValidationContext title: HotkeySequenceRecorderValidationContext --- -Defined in: [hotkey-recorder.ts:54](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L54) +Defined in: [hotkey-recorder.ts:55](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L55) Validation context for a recorded sequence. @@ -15,7 +15,7 @@ Validation context for a recorded sequence. events: readonly KeyboardEvent[]; ``` -Defined in: [hotkey-recorder.ts:57](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L57) +Defined in: [hotkey-recorder.ts:58](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L58) The event that recorded each step. @@ -27,7 +27,7 @@ The event that recorded each step. kind: "sequence"; ``` -Defined in: [hotkey-recorder.ts:55](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L55) +Defined in: [hotkey-recorder.ts:56](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L56) *** @@ -37,6 +37,6 @@ Defined in: [hotkey-recorder.ts:55](https://github.com/TanStack/hotkeys/blob/mai parsedSequence: ParsedHotkeyChord[]; ``` -Defined in: [hotkey-recorder.ts:59](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L59) +Defined in: [hotkey-recorder.ts:60](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L60) Each step with `Mod` resolved for the recorder's platform. diff --git a/docs/reference/interfaces/HotkeySequenceRegistration.md b/docs/reference/interfaces/HotkeySequenceRegistration.md index 313b1785..db0ec6c5 100644 --- a/docs/reference/interfaces/HotkeySequenceRegistration.md +++ b/docs/reference/interfaces/HotkeySequenceRegistration.md @@ -3,7 +3,7 @@ id: HotkeySequenceRegistration title: HotkeySequenceRegistration --- -Defined in: [hotkey-manager.ts:169](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L169) +Defined in: [hotkey-manager.ts:170](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L170) A registered sequence in the HotkeyManager. @@ -19,7 +19,7 @@ A registered sequence in the HotkeyManager. callback: HotkeyCallback; ``` -Defined in: [hotkey-manager.ts:148](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L148) +Defined in: [hotkey-manager.ts:149](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L149) The callback to invoke @@ -37,7 +37,7 @@ RegistrationBase.callback currentIndex: number; ``` -Defined in: [hotkey-manager.ts:174](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L174) +Defined in: [hotkey-manager.ts:175](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L175) Steps matched in the current attempt @@ -49,7 +49,7 @@ Steps matched in the current attempt hasFired: boolean; ``` -Defined in: [hotkey-manager.ts:156](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L156) +Defined in: [hotkey-manager.ts:157](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L157) Whether this registration has fired (and, for requireReset chords, needs a reset) @@ -67,7 +67,7 @@ RegistrationBase.hasFired hotkey: HotkeySequence; ``` -Defined in: [hotkey-manager.ts:171](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L171) +Defined in: [hotkey-manager.ts:172](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L172) *** @@ -77,7 +77,7 @@ Defined in: [hotkey-manager.ts:171](https://github.com/TanStack/hotkeys/blob/mai id: string; ``` -Defined in: [hotkey-manager.ts:146](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L146) +Defined in: [hotkey-manager.ts:147](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L147) Unique identifier for this registration @@ -95,7 +95,7 @@ RegistrationBase.id kind: "sequence"; ``` -Defined in: [hotkey-manager.ts:170](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L170) +Defined in: [hotkey-manager.ts:171](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L171) *** @@ -105,7 +105,7 @@ Defined in: [hotkey-manager.ts:170](https://github.com/TanStack/hotkeys/blob/mai lastKeyTime: number; ``` -Defined in: [hotkey-manager.ts:176](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L176) +Defined in: [hotkey-manager.ts:177](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L177) `Date.now()` when the last step in the current attempt matched @@ -117,7 +117,7 @@ Defined in: [hotkey-manager.ts:176](https://github.com/TanStack/hotkeys/blob/mai options: HotkeySequenceOptions; ``` -Defined in: [hotkey-manager.ts:150](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L150) +Defined in: [hotkey-manager.ts:151](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L151) Resolved options for this registration @@ -135,7 +135,7 @@ RegistrationBase.options parsedSequence: ParsedHotkeyChord[]; ``` -Defined in: [hotkey-manager.ts:172](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L172) +Defined in: [hotkey-manager.ts:173](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L173) *** @@ -145,7 +145,7 @@ Defined in: [hotkey-manager.ts:172](https://github.com/TanStack/hotkeys/blob/mai target: Target; ``` -Defined in: [hotkey-manager.ts:152](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L152) +Defined in: [hotkey-manager.ts:153](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L153) The resolved target element for this registration @@ -163,7 +163,7 @@ RegistrationBase.target triggerCount: number; ``` -Defined in: [hotkey-manager.ts:154](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L154) +Defined in: [hotkey-manager.ts:155](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L155) How many times this registration's callback has been triggered diff --git a/docs/reference/interfaces/HotkeySequenceRegistrationView.md b/docs/reference/interfaces/HotkeySequenceRegistrationView.md index 6403eca9..77e2f009 100644 --- a/docs/reference/interfaces/HotkeySequenceRegistrationView.md +++ b/docs/reference/interfaces/HotkeySequenceRegistrationView.md @@ -3,7 +3,7 @@ id: HotkeySequenceRegistrationView title: HotkeySequenceRegistrationView --- -Defined in: [hotkey-manager.ts:210](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L210) +Defined in: [hotkey-manager.ts:211](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L211) Public view of a sequence registration, without its callback. @@ -19,7 +19,7 @@ Public view of a sequence registration, without its callback. hasFired: boolean; ``` -Defined in: [hotkey-manager.ts:198](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L198) +Defined in: [hotkey-manager.ts:199](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L199) #### Inherited from @@ -35,7 +35,7 @@ RegistrationViewBase.hasFired hotkey: HotkeySequence; ``` -Defined in: [hotkey-manager.ts:212](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L212) +Defined in: [hotkey-manager.ts:213](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L213) *** @@ -45,7 +45,7 @@ Defined in: [hotkey-manager.ts:212](https://github.com/TanStack/hotkeys/blob/mai id: string; ``` -Defined in: [hotkey-manager.ts:193](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L193) +Defined in: [hotkey-manager.ts:194](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L194) #### Inherited from @@ -61,7 +61,7 @@ RegistrationViewBase.id kind: "sequence"; ``` -Defined in: [hotkey-manager.ts:211](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L211) +Defined in: [hotkey-manager.ts:212](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L212) *** @@ -71,7 +71,7 @@ Defined in: [hotkey-manager.ts:211](https://github.com/TanStack/hotkeys/blob/mai matchedStepCount: number; ``` -Defined in: [hotkey-manager.ts:216](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L216) +Defined in: [hotkey-manager.ts:217](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L217) Steps matched in the current attempt (0 when idle or just completed). @@ -83,7 +83,7 @@ Steps matched in the current attempt (0 when idle or just completed). options: HotkeySequenceOptions; ``` -Defined in: [hotkey-manager.ts:214](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L214) +Defined in: [hotkey-manager.ts:215](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L215) *** @@ -93,7 +93,7 @@ Defined in: [hotkey-manager.ts:214](https://github.com/TanStack/hotkeys/blob/mai parsedSequence: ParsedHotkeyChord[]; ``` -Defined in: [hotkey-manager.ts:213](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L213) +Defined in: [hotkey-manager.ts:214](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L214) *** @@ -103,7 +103,7 @@ Defined in: [hotkey-manager.ts:213](https://github.com/TanStack/hotkeys/blob/mai partialMatchLastKeyTime: number; ``` -Defined in: [hotkey-manager.ts:218](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L218) +Defined in: [hotkey-manager.ts:219](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L219) `Date.now()` when the last step in the current attempt matched; 0 if none. @@ -115,7 +115,7 @@ Defined in: [hotkey-manager.ts:218](https://github.com/TanStack/hotkeys/blob/mai status: HotkeyRegistrationStatus; ``` -Defined in: [hotkey-manager.ts:195](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L195) +Defined in: [hotkey-manager.ts:196](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L196) Whether the registration is enabled and in an active scope. @@ -133,7 +133,7 @@ RegistrationViewBase.status target: Target; ``` -Defined in: [hotkey-manager.ts:196](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L196) +Defined in: [hotkey-manager.ts:197](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L197) #### Inherited from @@ -149,7 +149,7 @@ RegistrationViewBase.target triggerCount: number; ``` -Defined in: [hotkey-manager.ts:197](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L197) +Defined in: [hotkey-manager.ts:198](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L198) #### Inherited from diff --git a/docs/reference/interfaces/KeyStateTrackerState.md b/docs/reference/interfaces/KeyStateTrackerState.md index e0c4cbc7..8528dab4 100644 --- a/docs/reference/interfaces/KeyStateTrackerState.md +++ b/docs/reference/interfaces/KeyStateTrackerState.md @@ -3,7 +3,7 @@ id: KeyStateTrackerState title: KeyStateTrackerState --- -Defined in: [key-state-tracker.ts:7](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L7) +Defined in: [key-state-tracker.ts:8](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L8) State interface for the KeyStateTracker. @@ -15,7 +15,7 @@ State interface for the KeyStateTracker. heldCodes: Record; ``` -Defined in: [key-state-tracker.ts:16](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L16) +Defined in: [key-state-tracker.ts:17](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L17) Map from normalized key name to the physical `event.code` (e.g. "KeyA", "ShiftLeft"). Useful for debugging which physical key was pressed. @@ -28,6 +28,6 @@ Useful for debugging which physical key was pressed. heldKeys: string[]; ``` -Defined in: [key-state-tracker.ts:11](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L11) +Defined in: [key-state-tracker.ts:12](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/key-state-tracker.ts#L12) Array of currently held key names (normalized, e.g. "Control", "A"). diff --git a/docs/reference/interfaces/RecorderOptions.md b/docs/reference/interfaces/RecorderOptions.md index 31ffd75d..f07556dc 100644 --- a/docs/reference/interfaces/RecorderOptions.md +++ b/docs/reference/interfaces/RecorderOptions.md @@ -3,7 +3,7 @@ id: RecorderOptions title: RecorderOptions --- -Defined in: [hotkey-recorder.ts:33](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L33) +Defined in: [hotkey-recorder.ts:34](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L34) ## Properties @@ -13,7 +13,7 @@ Defined in: [hotkey-recorder.ts:33](https://github.com/TanStack/hotkeys/blob/mai optional detectConflicts?: boolean | HotkeyConflictOptions; ``` -Defined in: [hotkey-recorder.ts:39](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L39) +Defined in: [hotkey-recorder.ts:40](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L40) Opt in to live-registry conflicts, including sequence prefixes. Default: false. @@ -25,7 +25,7 @@ Opt in to live-registry conflicts, including sequence prefixes. Default: false. optional onReject?: (rejection) => void; ``` -Defined in: [hotkey-recorder.ts:41](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L41) +Defined in: [hotkey-recorder.ts:42](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L42) Rejected candidates leave recording active. @@ -47,7 +47,7 @@ Rejected candidates leave recording active. optional platform?: "mac" | "windows" | "linux"; ``` -Defined in: [hotkey-recorder.ts:37](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L37) +Defined in: [hotkey-recorder.ts:38](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L38) Platform used for Mod and AltGraph handling. Defaults to platform detection. @@ -59,6 +59,6 @@ Platform used for Mod and AltGraph handling. Defaults to platform detection. optional recordBy?: RecorderKeyMode; ``` -Defined in: [hotkey-recorder.ts:35](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L35) +Defined in: [hotkey-recorder.ts:36](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L36) Physical code recording is the default. Choose key to record logical characters. diff --git a/docs/reference/interfaces/RecorderRejection.md b/docs/reference/interfaces/RecorderRejection.md index ec48cb06..760cf975 100644 --- a/docs/reference/interfaces/RecorderRejection.md +++ b/docs/reference/interfaces/RecorderRejection.md @@ -3,7 +3,7 @@ id: RecorderRejection title: RecorderRejection --- -Defined in: [hotkey-recorder.ts:25](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L25) +Defined in: [hotkey-recorder.ts:26](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L26) ## Properties @@ -13,7 +13,7 @@ Defined in: [hotkey-recorder.ts:25](https://github.com/TanStack/hotkeys/blob/mai optional conflicts?: HotkeyConflict[]; ``` -Defined in: [hotkey-recorder.ts:30](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L30) +Defined in: [hotkey-recorder.ts:31](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L31) *** @@ -23,7 +23,7 @@ Defined in: [hotkey-recorder.ts:30](https://github.com/TanStack/hotkeys/blob/mai optional hotkey?: Hotkey; ``` -Defined in: [hotkey-recorder.ts:29](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L29) +Defined in: [hotkey-recorder.ts:30](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L30) The rejected chord or sequence, when one was recorded. @@ -35,7 +35,7 @@ The rejected chord or sequence, when one was recorded. message: string; ``` -Defined in: [hotkey-recorder.ts:27](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L27) +Defined in: [hotkey-recorder.ts:28](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L28) *** @@ -45,4 +45,4 @@ Defined in: [hotkey-recorder.ts:27](https://github.com/TanStack/hotkeys/blob/mai reason: "invalid" | "missing-code" | "alt-graph" | "conflict" | "validation"; ``` -Defined in: [hotkey-recorder.ts:26](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L26) +Defined in: [hotkey-recorder.ts:27](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L27) diff --git a/docs/reference/interfaces/Register.md b/docs/reference/interfaces/Register.md index 83260bca..707d64b4 100644 --- a/docs/reference/interfaces/Register.md +++ b/docs/reference/interfaces/Register.md @@ -3,7 +3,7 @@ id: Register title: Register --- -Defined in: [app-hotkeys.ts:145](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L145) +Defined in: [app-hotkeys.ts:147](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L147) Register your app hotkeys to type `useAppHotkeys()` and `CustomHotkeys`. diff --git a/docs/reference/interfaces/ValidationResult.md b/docs/reference/interfaces/ValidationResult.md index 680fd4e4..2120e89c 100644 --- a/docs/reference/interfaces/ValidationResult.md +++ b/docs/reference/interfaces/ValidationResult.md @@ -3,7 +3,7 @@ id: ValidationResult title: ValidationResult --- -Defined in: [validate.ts:187](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L187) +Defined in: [validate.ts:189](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L189) Result of validating a hotkey string. @@ -15,7 +15,7 @@ Result of validating a hotkey string. errors: string[]; ``` -Defined in: [validate.ts:193](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L193) +Defined in: [validate.ts:195](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L195) Error messages about invalid syntax @@ -27,7 +27,7 @@ Error messages about invalid syntax valid: boolean; ``` -Defined in: [validate.ts:189](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L189) +Defined in: [validate.ts:191](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L191) Whether the hotkey is valid (can still have warnings) @@ -39,6 +39,6 @@ Whether the hotkey is valid (can still have warnings) warnings: string[]; ``` -Defined in: [validate.ts:191](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L191) +Defined in: [validate.ts:193](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L193) Warning messages about potential issues diff --git a/docs/reference/type-aliases/AppHotkeyChordOptions.md b/docs/reference/type-aliases/AppHotkeyChordOptions.md index 9ee2fe1a..2df72aaf 100644 --- a/docs/reference/type-aliases/AppHotkeyChordOptions.md +++ b/docs/reference/type-aliases/AppHotkeyChordOptions.md @@ -7,6 +7,6 @@ title: AppHotkeyChordOptions type AppHotkeyChordOptions = Pick; ``` -Defined in: [app-hotkeys.ts:32](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L32) +Defined in: [app-hotkeys.ts:34](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L34) Declared options for an app hotkey whose default is a chord. diff --git a/docs/reference/type-aliases/AppHotkeyDefaultKind.md b/docs/reference/type-aliases/AppHotkeyDefaultKind.md index a87777b9..7e5c734f 100644 --- a/docs/reference/type-aliases/AppHotkeyDefaultKind.md +++ b/docs/reference/type-aliases/AppHotkeyDefaultKind.md @@ -7,7 +7,7 @@ title: AppHotkeyDefaultKind type AppHotkeyDefaultKind = THotkey extends null ? null : THotkey extends readonly [unknown] ? HotkeyChord : THotkey extends ReadonlyArray ? HotkeySequence : HotkeyChord; ``` -Defined in: [app-hotkeys.ts:117](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L117) +Defined in: [app-hotkeys.ts:119](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L119) The kind of a declared default hotkey; a one-step sequence is a chord. diff --git a/docs/reference/type-aliases/AppHotkeyId.md b/docs/reference/type-aliases/AppHotkeyId.md index f698ef23..71155ba7 100644 --- a/docs/reference/type-aliases/AppHotkeyId.md +++ b/docs/reference/type-aliases/AppHotkeyId.md @@ -7,6 +7,6 @@ title: AppHotkeyId type AppHotkeyId = keyof RegisteredAppHotkeys & string; ``` -Defined in: [app-hotkeys.ts:155](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L155) +Defined in: [app-hotkeys.ts:157](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L157) Ids of the registered app hotkeys. diff --git a/docs/reference/type-aliases/AppHotkeyOptions.md b/docs/reference/type-aliases/AppHotkeyOptions.md index 0ef9bdfc..d9c9d68a 100644 --- a/docs/reference/type-aliases/AppHotkeyOptions.md +++ b/docs/reference/type-aliases/AppHotkeyOptions.md @@ -7,6 +7,6 @@ title: AppHotkeyOptions type AppHotkeyOptions = AppHotkeyChordOptions & AppHotkeySequenceOptions; ``` -Defined in: [app-hotkeys.ts:44](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L44) +Defined in: [app-hotkeys.ts:46](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L46) Every declared option. Kind-specific options apply only while the effective hotkey has that kind. diff --git a/docs/reference/type-aliases/AppHotkeySequenceOptions.md b/docs/reference/type-aliases/AppHotkeySequenceOptions.md index 6ac4c6ae..a1faca1e 100644 --- a/docs/reference/type-aliases/AppHotkeySequenceOptions.md +++ b/docs/reference/type-aliases/AppHotkeySequenceOptions.md @@ -7,6 +7,6 @@ title: AppHotkeySequenceOptions type AppHotkeySequenceOptions = Pick; ``` -Defined in: [app-hotkeys.ts:38](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L38) +Defined in: [app-hotkeys.ts:40](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L40) Declared options for an app hotkey whose default is a sequence. diff --git a/docs/reference/type-aliases/AppHotkeyStatus.md b/docs/reference/type-aliases/AppHotkeyStatus.md index 60922fc4..d38a65d7 100644 --- a/docs/reference/type-aliases/AppHotkeyStatus.md +++ b/docs/reference/type-aliases/AppHotkeyStatus.md @@ -7,7 +7,7 @@ title: AppHotkeyStatus type AppHotkeyStatus = "active" | "suspended" | "disabled" | "inactive" | "unbound"; ``` -Defined in: [app-hotkeys.ts:307](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L307) +Defined in: [app-hotkeys.ts:316](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L316) Status of an app hotkey in the running app. - `'active'`: at least one enabled registration diff --git a/docs/reference/type-aliases/AppHotkeys.md b/docs/reference/type-aliases/AppHotkeys.md index 5e362973..bea79a2b 100644 --- a/docs/reference/type-aliases/AppHotkeys.md +++ b/docs/reference/type-aliases/AppHotkeys.md @@ -7,6 +7,6 @@ title: AppHotkeys type AppHotkeys = Readonly>; ``` -Defined in: [app-hotkeys.ts:92](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L92) +Defined in: [app-hotkeys.ts:94](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L94) A map of app hotkeys keyed by id. diff --git a/docs/reference/type-aliases/CustomHotkeys.md b/docs/reference/type-aliases/CustomHotkeys.md index 8921a401..221885ad 100644 --- a/docs/reference/type-aliases/CustomHotkeys.md +++ b/docs/reference/type-aliases/CustomHotkeys.md @@ -7,7 +7,7 @@ title: CustomHotkeys type CustomHotkeys = { -readonly [K in keyof T]?: Hotkey | null }; ``` -Defined in: [app-hotkeys.ts:161](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L161) +Defined in: [app-hotkeys.ts:163](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L163) The user's hotkeys that differ from the declared defaults, keyed by app hotkey id. This is the shape to save. `null` means the user unbound it. diff --git a/docs/reference/type-aliases/DefinedAppHotkeys.md b/docs/reference/type-aliases/DefinedAppHotkeys.md index a3cc4182..6a836886 100644 --- a/docs/reference/type-aliases/DefinedAppHotkeys.md +++ b/docs/reference/type-aliases/DefinedAppHotkeys.md @@ -7,7 +7,7 @@ title: DefinedAppHotkeys type DefinedAppHotkeys = { readonly [K in keyof T & string]: AppHotkey> }; ``` -Defined in: [app-hotkeys.ts:126](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L126) +Defined in: [app-hotkeys.ts:128](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L128) The app hotkeys returned by `defineAppHotkeys` for a declaration object. diff --git a/docs/reference/type-aliases/HotkeyOptionsFor.md b/docs/reference/type-aliases/HotkeyOptionsFor.md index 0e587dee..243ab7d6 100644 --- a/docs/reference/type-aliases/HotkeyOptionsFor.md +++ b/docs/reference/type-aliases/HotkeyOptionsFor.md @@ -7,7 +7,7 @@ title: HotkeyOptionsFor type HotkeyOptionsFor = [T] extends [never] ? HotkeyChordOptions & HotkeySequenceOptions : T extends readonly [RegisterableHotkeyChord] ? HotkeyChordOptions : T extends RegisterableHotkeySequence ? HotkeySequenceOptions : HotkeyChordOptions; ``` -Defined in: [hotkey-manager.ts:136](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L136) +Defined in: [hotkey-manager.ts:137](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L137) The options type for a hotkey: chord options for chords (including one-step tuples), sequence options for sequences. diff --git a/docs/reference/type-aliases/HotkeyRecorderCommitKeys.md b/docs/reference/type-aliases/HotkeyRecorderCommitKeys.md index e76a419c..752033a1 100644 --- a/docs/reference/type-aliases/HotkeyRecorderCommitKeys.md +++ b/docs/reference/type-aliases/HotkeyRecorderCommitKeys.md @@ -7,6 +7,6 @@ title: HotkeyRecorderCommitKeys type HotkeyRecorderCommitKeys = "enter" | "none"; ``` -Defined in: [hotkey-recorder.ts:82](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L82) +Defined in: [hotkey-recorder.ts:83](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L83) Which keys commit a multi-step recording before it reaches `maxSteps`. diff --git a/docs/reference/type-aliases/HotkeyRecorderOptions.md b/docs/reference/type-aliases/HotkeyRecorderOptions.md index 2f884be0..814e7dfa 100644 --- a/docs/reference/type-aliases/HotkeyRecorderOptions.md +++ b/docs/reference/type-aliases/HotkeyRecorderOptions.md @@ -9,7 +9,7 @@ type HotkeyRecorderOptions = | HotkeySequenceRecorderOptions; ``` -Defined in: [hotkey-recorder.ts:137](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L137) +Defined in: [hotkey-recorder.ts:138](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L138) Options for HotkeyRecorder. `maxSteps` (default 1) selects between recording a single chord and recording a sequence. diff --git a/docs/reference/type-aliases/HotkeyRecorderValidationContext.md b/docs/reference/type-aliases/HotkeyRecorderValidationContext.md index 377840ae..583ca469 100644 --- a/docs/reference/type-aliases/HotkeyRecorderValidationContext.md +++ b/docs/reference/type-aliases/HotkeyRecorderValidationContext.md @@ -9,7 +9,7 @@ type HotkeyRecorderValidationContext = | HotkeySequenceRecorderValidationContext; ``` -Defined in: [hotkey-recorder.ts:66](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L66) +Defined in: [hotkey-recorder.ts:67](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L67) Validation context for a recorded chord or sequence. Narrow with `kind` to read `parsedChord` or `parsedSequence`. diff --git a/docs/reference/type-aliases/HotkeyRegistration.md b/docs/reference/type-aliases/HotkeyRegistration.md index 4951c66d..81501464 100644 --- a/docs/reference/type-aliases/HotkeyRegistration.md +++ b/docs/reference/type-aliases/HotkeyRegistration.md @@ -9,6 +9,6 @@ type HotkeyRegistration = | HotkeySequenceRegistration; ``` -Defined in: [hotkey-manager.ts:180](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L180) +Defined in: [hotkey-manager.ts:181](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L181) A registered hotkey in the HotkeyManager. diff --git a/docs/reference/type-aliases/HotkeyRegistrationStatus.md b/docs/reference/type-aliases/HotkeyRegistrationStatus.md index a4d31f01..5a51dc12 100644 --- a/docs/reference/type-aliases/HotkeyRegistrationStatus.md +++ b/docs/reference/type-aliases/HotkeyRegistrationStatus.md @@ -7,7 +7,7 @@ title: HotkeyRegistrationStatus type HotkeyRegistrationStatus = "active" | "suspended" | "disabled"; ``` -Defined in: [hotkey-manager.ts:190](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L190) +Defined in: [hotkey-manager.ts:191](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L191) Whether a registration is on. Focus isn't checked: a registration on an element also needs focus inside that element to fire. diff --git a/docs/reference/type-aliases/HotkeyRegistrationView.md b/docs/reference/type-aliases/HotkeyRegistrationView.md index eb02ed8c..ce8bbbe3 100644 --- a/docs/reference/type-aliases/HotkeyRegistrationView.md +++ b/docs/reference/type-aliases/HotkeyRegistrationView.md @@ -9,7 +9,7 @@ type HotkeyRegistrationView = | HotkeySequenceRegistrationView; ``` -Defined in: [hotkey-manager.ts:225](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L225) +Defined in: [hotkey-manager.ts:226](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L226) Public view of a hotkey registration for display and introspection. Narrow with `kind` to read chord- or sequence-specific fields. diff --git a/docs/reference/type-aliases/RecorderKeyMode.md b/docs/reference/type-aliases/RecorderKeyMode.md index 7e9c395e..fdaec9fc 100644 --- a/docs/reference/type-aliases/RecorderKeyMode.md +++ b/docs/reference/type-aliases/RecorderKeyMode.md @@ -7,6 +7,6 @@ title: RecorderKeyMode type RecorderKeyMode = "code" | "key"; ``` -Defined in: [hotkey-recorder.ts:23](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L23) +Defined in: [hotkey-recorder.ts:24](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L24) Event property used to record a binding. Physical codes are the default. diff --git a/docs/reference/type-aliases/RegisteredAppHotkeys.md b/docs/reference/type-aliases/RegisteredAppHotkeys.md index db1791c8..818e358c 100644 --- a/docs/reference/type-aliases/RegisteredAppHotkeys.md +++ b/docs/reference/type-aliases/RegisteredAppHotkeys.md @@ -7,6 +7,6 @@ title: RegisteredAppHotkeys type RegisteredAppHotkeys = Register extends object ? T : AppHotkeys; ``` -Defined in: [app-hotkeys.ts:148](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L148) +Defined in: [app-hotkeys.ts:150](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L150) The app hotkeys type from `Register`, or a generic map when none is registered. diff --git a/docs/reference/type-aliases/Target.md b/docs/reference/type-aliases/Target.md index e181934f..2e2be5c8 100644 --- a/docs/reference/type-aliases/Target.md +++ b/docs/reference/type-aliases/Target.md @@ -7,6 +7,6 @@ title: Target type Target = HTMLElement | Document | Window; ``` -Defined in: [hotkey-manager.ts:50](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L50) +Defined in: [hotkey-manager.ts:51](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L51) An element, document, or window that hotkeys can listen on. diff --git a/examples/angular/injectHeldKeys/package.json b/examples/angular/injectHeldKeys/package.json index d2c64c0e..38736e31 100644 --- a/examples/angular/injectHeldKeys/package.json +++ b/examples/angular/injectHeldKeys/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^22.2.1", "@angular/platform-browser-dynamic": "^22.2.1", "@angular/router": "^22.2.1", - "@tanstack/angular-devtools": "^0.0.12", + "@tanstack/angular-devtools": "^0.0.13", "@tanstack/angular-hotkeys": "^0.17.1", "@tanstack/angular-hotkeys-devtools": "^0.3.2", "rxjs": "~7.8.2", diff --git a/examples/angular/injectHotkey-sequences/package.json b/examples/angular/injectHotkey-sequences/package.json index 4917173d..70f29aaa 100644 --- a/examples/angular/injectHotkey-sequences/package.json +++ b/examples/angular/injectHotkey-sequences/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^22.2.1", "@angular/platform-browser-dynamic": "^22.2.1", "@angular/router": "^22.2.1", - "@tanstack/angular-devtools": "^0.0.12", + "@tanstack/angular-devtools": "^0.0.13", "@tanstack/angular-hotkeys": "^0.17.1", "@tanstack/angular-hotkeys-devtools": "^0.3.2", "rxjs": "~7.8.2", diff --git a/examples/angular/injectHotkey/package.json b/examples/angular/injectHotkey/package.json index bb3843fd..b3b8cceb 100644 --- a/examples/angular/injectHotkey/package.json +++ b/examples/angular/injectHotkey/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^22.2.1", "@angular/platform-browser-dynamic": "^22.2.1", "@angular/router": "^22.2.1", - "@tanstack/angular-devtools": "^0.0.12", + "@tanstack/angular-devtools": "^0.0.13", "@tanstack/angular-hotkeys": "^0.17.1", "@tanstack/angular-hotkeys-devtools": "^0.3.2", "rxjs": "~7.8.2", diff --git a/examples/angular/injectHotkeyRecorder-sequences/package.json b/examples/angular/injectHotkeyRecorder-sequences/package.json index 38e33926..d0dec75b 100644 --- a/examples/angular/injectHotkeyRecorder-sequences/package.json +++ b/examples/angular/injectHotkeyRecorder-sequences/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^22.2.1", "@angular/platform-browser-dynamic": "^22.2.1", "@angular/router": "^22.2.1", - "@tanstack/angular-devtools": "^0.0.12", + "@tanstack/angular-devtools": "^0.0.13", "@tanstack/angular-hotkeys": "^0.17.1", "@tanstack/angular-hotkeys-devtools": "^0.3.2", "rxjs": "~7.8.2", diff --git a/examples/angular/injectHotkeyRecorder/package.json b/examples/angular/injectHotkeyRecorder/package.json index 91f9aef1..f7b4790a 100644 --- a/examples/angular/injectHotkeyRecorder/package.json +++ b/examples/angular/injectHotkeyRecorder/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^22.2.1", "@angular/platform-browser-dynamic": "^22.2.1", "@angular/router": "^22.2.1", - "@tanstack/angular-devtools": "^0.0.12", + "@tanstack/angular-devtools": "^0.0.13", "@tanstack/angular-hotkeys": "^0.17.1", "@tanstack/angular-hotkeys-devtools": "^0.3.2", "rxjs": "~7.8.2", diff --git a/examples/angular/injectHotkeys-sequences/package.json b/examples/angular/injectHotkeys-sequences/package.json index 03ace6d1..c21b5eaa 100644 --- a/examples/angular/injectHotkeys-sequences/package.json +++ b/examples/angular/injectHotkeys-sequences/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^22.2.1", "@angular/platform-browser-dynamic": "^22.2.1", "@angular/router": "^22.2.1", - "@tanstack/angular-devtools": "^0.0.12", + "@tanstack/angular-devtools": "^0.0.13", "@tanstack/angular-hotkeys": "^0.17.1", "@tanstack/angular-hotkeys-devtools": "^0.3.2", "rxjs": "~7.8.2", diff --git a/examples/angular/injectHotkeys/package.json b/examples/angular/injectHotkeys/package.json index 71708bc9..c33da8a5 100644 --- a/examples/angular/injectHotkeys/package.json +++ b/examples/angular/injectHotkeys/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^22.2.1", "@angular/platform-browser-dynamic": "^22.2.1", "@angular/router": "^22.2.1", - "@tanstack/angular-devtools": "^0.0.12", + "@tanstack/angular-devtools": "^0.0.13", "@tanstack/angular-hotkeys": "^0.17.1", "@tanstack/angular-hotkeys-devtools": "^0.3.2", "rxjs": "~7.8.2", diff --git a/examples/angular/injectKeyHold/package.json b/examples/angular/injectKeyHold/package.json index 301a7815..6cdffc8d 100644 --- a/examples/angular/injectKeyHold/package.json +++ b/examples/angular/injectKeyHold/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^22.2.1", "@angular/platform-browser-dynamic": "^22.2.1", "@angular/router": "^22.2.1", - "@tanstack/angular-devtools": "^0.0.12", + "@tanstack/angular-devtools": "^0.0.13", "@tanstack/angular-hotkeys": "^0.17.1", "@tanstack/angular-hotkeys-devtools": "^0.3.2", "rxjs": "~7.8.2", diff --git a/examples/angular/kitchen-sink/package.json b/examples/angular/kitchen-sink/package.json index 771df7ba..c3c780b4 100644 --- a/examples/angular/kitchen-sink/package.json +++ b/examples/angular/kitchen-sink/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^22.2.1", "@angular/platform-browser-dynamic": "^22.2.1", "@angular/router": "^22.2.1", - "@tanstack/angular-devtools": "^0.0.12", + "@tanstack/angular-devtools": "^0.0.13", "@tanstack/angular-hotkeys": "^0.17.1", "@tanstack/angular-hotkeys-devtools": "^0.3.2", "rxjs": "~7.8.2", diff --git a/examples/angular/scopes/package.json b/examples/angular/scopes/package.json index a6814cb5..407c4456 100644 --- a/examples/angular/scopes/package.json +++ b/examples/angular/scopes/package.json @@ -17,7 +17,7 @@ "@angular/platform-browser": "^22.2.1", "@angular/platform-browser-dynamic": "^22.2.1", "@angular/router": "^22.2.1", - "@tanstack/angular-devtools": "^0.0.12", + "@tanstack/angular-devtools": "^0.0.13", "@tanstack/angular-hotkeys": "^0.17.1", "@tanstack/angular-hotkeys-devtools": "^0.3.2", "rxjs": "~7.8.2", diff --git a/examples/preact/kitchen-sink/package.json b/examples/preact/kitchen-sink/package.json index c3206408..4ae0e9e5 100644 --- a/examples/preact/kitchen-sink/package.json +++ b/examples/preact/kitchen-sink/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@preact/preset-vite": "^2.10.6", - "@tanstack/preact-devtools": "0.10.13", + "@tanstack/preact-devtools": "0.10.15", "@tanstack/preact-hotkeys-devtools": "^0.11.2", "typescript": "6.0.3", "vite": "^8.3.2" diff --git a/examples/preact/scopes/package.json b/examples/preact/scopes/package.json index 2426e139..c70c8792 100644 --- a/examples/preact/scopes/package.json +++ b/examples/preact/scopes/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@preact/preset-vite": "^2.10.6", - "@tanstack/preact-devtools": "0.10.13", + "@tanstack/preact-devtools": "0.10.15", "@tanstack/preact-hotkeys-devtools": "^0.11.2", "typescript": "6.0.3", "vite": "^8.3.2" diff --git a/examples/preact/useHeldKeys/package.json b/examples/preact/useHeldKeys/package.json index 5420d1cf..0bd3dd5c 100644 --- a/examples/preact/useHeldKeys/package.json +++ b/examples/preact/useHeldKeys/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@preact/preset-vite": "^2.10.6", - "@tanstack/preact-devtools": "0.10.13", + "@tanstack/preact-devtools": "0.10.15", "@tanstack/preact-hotkeys-devtools": "^0.11.2", "typescript": "6.0.3", "vite": "^8.3.2" diff --git a/examples/preact/useHotkey-sequences/package.json b/examples/preact/useHotkey-sequences/package.json index e250886e..088546b5 100644 --- a/examples/preact/useHotkey-sequences/package.json +++ b/examples/preact/useHotkey-sequences/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@preact/preset-vite": "^2.10.6", - "@tanstack/preact-devtools": "0.10.13", + "@tanstack/preact-devtools": "0.10.15", "@tanstack/preact-hotkeys-devtools": "^0.11.2", "typescript": "6.0.3", "vite": "^8.3.2" diff --git a/examples/preact/useHotkey/package.json b/examples/preact/useHotkey/package.json index 94ad6102..d3039c99 100644 --- a/examples/preact/useHotkey/package.json +++ b/examples/preact/useHotkey/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@preact/preset-vite": "^2.10.6", - "@tanstack/preact-devtools": "0.10.13", + "@tanstack/preact-devtools": "0.10.15", "@tanstack/preact-hotkeys-devtools": "^0.11.2", "typescript": "6.0.3", "vite": "^8.3.2" diff --git a/examples/preact/useHotkeyRecorder-sequences/package.json b/examples/preact/useHotkeyRecorder-sequences/package.json index 3e38aaa9..4ad84425 100644 --- a/examples/preact/useHotkeyRecorder-sequences/package.json +++ b/examples/preact/useHotkeyRecorder-sequences/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@preact/preset-vite": "^2.10.6", - "@tanstack/preact-devtools": "0.10.13", + "@tanstack/preact-devtools": "0.10.15", "@tanstack/preact-hotkeys-devtools": "^0.11.2", "typescript": "6.0.3", "vite": "^8.3.2" diff --git a/examples/preact/useHotkeyRecorder/package.json b/examples/preact/useHotkeyRecorder/package.json index 873b83e5..9fd556f1 100644 --- a/examples/preact/useHotkeyRecorder/package.json +++ b/examples/preact/useHotkeyRecorder/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@preact/preset-vite": "^2.10.6", - "@tanstack/preact-devtools": "0.10.13", + "@tanstack/preact-devtools": "0.10.15", "@tanstack/preact-hotkeys-devtools": "^0.11.2", "typescript": "6.0.3", "vite": "^8.3.2" diff --git a/examples/preact/useHotkeys-sequences/package.json b/examples/preact/useHotkeys-sequences/package.json index 7484be4c..8d21385b 100644 --- a/examples/preact/useHotkeys-sequences/package.json +++ b/examples/preact/useHotkeys-sequences/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@preact/preset-vite": "^2.10.6", - "@tanstack/preact-devtools": "0.10.13", + "@tanstack/preact-devtools": "0.10.15", "@tanstack/preact-hotkeys-devtools": "^0.11.2", "typescript": "6.0.3", "vite": "^8.3.2" diff --git a/examples/preact/useHotkeys/package.json b/examples/preact/useHotkeys/package.json index e8cbd3f6..435da8f9 100644 --- a/examples/preact/useHotkeys/package.json +++ b/examples/preact/useHotkeys/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@preact/preset-vite": "^2.10.6", - "@tanstack/preact-devtools": "0.10.13", + "@tanstack/preact-devtools": "0.10.15", "@tanstack/preact-hotkeys-devtools": "^0.11.2", "typescript": "6.0.3", "vite": "^8.3.2" diff --git a/examples/preact/useKeyhold/package.json b/examples/preact/useKeyhold/package.json index 535b9d34..ebf27420 100644 --- a/examples/preact/useKeyhold/package.json +++ b/examples/preact/useKeyhold/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@preact/preset-vite": "^2.10.6", - "@tanstack/preact-devtools": "0.10.13", + "@tanstack/preact-devtools": "0.10.15", "@tanstack/preact-hotkeys-devtools": "^0.11.2", "typescript": "6.0.3", "vite": "^8.3.2" diff --git a/examples/react/kitchen-sink/package.json b/examples/react/kitchen-sink/package.json index 68b532d4..2ebbb2b6 100644 --- a/examples/react/kitchen-sink/package.json +++ b/examples/react/kitchen-sink/package.json @@ -17,7 +17,7 @@ "react-dom": "^19.3.0" }, "devDependencies": { - "@tanstack/react-devtools": "0.10.13", + "@tanstack/react-devtools": "0.10.14", "@tanstack/react-hotkeys-devtools": "^0.12.0", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", diff --git a/examples/react/scopes/package.json b/examples/react/scopes/package.json index 19c524e5..cf707caf 100644 --- a/examples/react/scopes/package.json +++ b/examples/react/scopes/package.json @@ -16,7 +16,7 @@ "react-dom": "^19.3.0" }, "devDependencies": { - "@tanstack/react-devtools": "0.10.13", + "@tanstack/react-devtools": "0.10.14", "@tanstack/react-hotkeys-devtools": "^0.12.0", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", diff --git a/examples/react/useHeldKeys/package.json b/examples/react/useHeldKeys/package.json index d575311b..6e42ce63 100644 --- a/examples/react/useHeldKeys/package.json +++ b/examples/react/useHeldKeys/package.json @@ -16,7 +16,7 @@ "react-dom": "^19.3.0" }, "devDependencies": { - "@tanstack/react-devtools": "0.10.13", + "@tanstack/react-devtools": "0.10.14", "@tanstack/react-hotkeys-devtools": "^0.12.0", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", diff --git a/examples/react/useHotkey-sequences/package.json b/examples/react/useHotkey-sequences/package.json index bc652681..79b590f1 100644 --- a/examples/react/useHotkey-sequences/package.json +++ b/examples/react/useHotkey-sequences/package.json @@ -16,7 +16,7 @@ "react-dom": "^19.3.0" }, "devDependencies": { - "@tanstack/react-devtools": "0.10.13", + "@tanstack/react-devtools": "0.10.14", "@tanstack/react-hotkeys-devtools": "^0.12.0", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", diff --git a/examples/react/useHotkey/package.json b/examples/react/useHotkey/package.json index 16a50165..e847214b 100644 --- a/examples/react/useHotkey/package.json +++ b/examples/react/useHotkey/package.json @@ -16,7 +16,7 @@ "react-dom": "^19.3.0" }, "devDependencies": { - "@tanstack/react-devtools": "0.10.13", + "@tanstack/react-devtools": "0.10.14", "@tanstack/react-hotkeys-devtools": "^0.12.0", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", diff --git a/examples/react/useHotkeyRecorder-sequences/package.json b/examples/react/useHotkeyRecorder-sequences/package.json index 0b818d8f..3ae92b7a 100644 --- a/examples/react/useHotkeyRecorder-sequences/package.json +++ b/examples/react/useHotkeyRecorder-sequences/package.json @@ -16,7 +16,7 @@ "react-dom": "^19.3.0" }, "devDependencies": { - "@tanstack/react-devtools": "0.10.13", + "@tanstack/react-devtools": "0.10.14", "@tanstack/react-hotkeys-devtools": "^0.12.0", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", diff --git a/examples/react/useHotkeyRecorder/package.json b/examples/react/useHotkeyRecorder/package.json index b82fe26b..c7df0983 100644 --- a/examples/react/useHotkeyRecorder/package.json +++ b/examples/react/useHotkeyRecorder/package.json @@ -16,7 +16,7 @@ "react-dom": "^19.3.0" }, "devDependencies": { - "@tanstack/react-devtools": "0.10.13", + "@tanstack/react-devtools": "0.10.14", "@tanstack/react-hotkeys-devtools": "^0.12.0", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", diff --git a/examples/react/useHotkeys-sequences/package.json b/examples/react/useHotkeys-sequences/package.json index d0bfa61d..0cab71cd 100644 --- a/examples/react/useHotkeys-sequences/package.json +++ b/examples/react/useHotkeys-sequences/package.json @@ -16,7 +16,7 @@ "react-dom": "^19.3.0" }, "devDependencies": { - "@tanstack/react-devtools": "0.10.13", + "@tanstack/react-devtools": "0.10.14", "@tanstack/react-hotkeys-devtools": "^0.12.0", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", diff --git a/examples/react/useHotkeys/package.json b/examples/react/useHotkeys/package.json index 61e07887..4538c17d 100644 --- a/examples/react/useHotkeys/package.json +++ b/examples/react/useHotkeys/package.json @@ -16,7 +16,7 @@ "react-dom": "^19.3.0" }, "devDependencies": { - "@tanstack/react-devtools": "0.10.13", + "@tanstack/react-devtools": "0.10.14", "@tanstack/react-hotkeys-devtools": "^0.12.0", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", diff --git a/examples/react/useKeyhold/package.json b/examples/react/useKeyhold/package.json index 196f94c9..219f8215 100644 --- a/examples/react/useKeyhold/package.json +++ b/examples/react/useKeyhold/package.json @@ -16,7 +16,7 @@ "react-dom": "^19.3.0" }, "devDependencies": { - "@tanstack/react-devtools": "0.10.13", + "@tanstack/react-devtools": "0.10.14", "@tanstack/react-hotkeys-devtools": "^0.12.0", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", diff --git a/examples/solid/createHeldKeys/package.json b/examples/solid/createHeldKeys/package.json index c61bbd26..fe2b6cad 100644 --- a/examples/solid/createHeldKeys/package.json +++ b/examples/solid/createHeldKeys/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/solid-devtools": "0.8.13", + "@tanstack/solid-devtools": "0.8.14", "@tanstack/solid-hotkeys": "^0.17.1", "@tanstack/solid-hotkeys-devtools": "^0.11.2", "solid-js": "^1.9.15" diff --git a/examples/solid/createHotkey-sequences/package.json b/examples/solid/createHotkey-sequences/package.json index f8b76e05..ce88e9f5 100644 --- a/examples/solid/createHotkey-sequences/package.json +++ b/examples/solid/createHotkey-sequences/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/solid-devtools": "0.8.13", + "@tanstack/solid-devtools": "0.8.14", "@tanstack/solid-hotkeys": "^0.17.1", "@tanstack/solid-hotkeys-devtools": "^0.11.2", "solid-js": "^1.9.15" diff --git a/examples/solid/createHotkey/package.json b/examples/solid/createHotkey/package.json index d0abd717..d0fa22cd 100644 --- a/examples/solid/createHotkey/package.json +++ b/examples/solid/createHotkey/package.json @@ -11,7 +11,7 @@ "test:types": "tsc" }, "dependencies": { - "@tanstack/solid-devtools": "0.8.13", + "@tanstack/solid-devtools": "0.8.14", "@tanstack/solid-hotkeys": "^0.17.1", "@tanstack/solid-hotkeys-devtools": "^0.11.2", "solid-js": "^1.9.15" diff --git a/examples/solid/createHotkeyRecorder-sequences/package.json b/examples/solid/createHotkeyRecorder-sequences/package.json index 4b6871e0..c985d881 100644 --- a/examples/solid/createHotkeyRecorder-sequences/package.json +++ b/examples/solid/createHotkeyRecorder-sequences/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/solid-devtools": "0.8.13", + "@tanstack/solid-devtools": "0.8.14", "@tanstack/solid-hotkeys": "^0.17.1", "@tanstack/solid-hotkeys-devtools": "^0.11.2", "solid-js": "^1.9.15" diff --git a/examples/solid/createHotkeyRecorder/package.json b/examples/solid/createHotkeyRecorder/package.json index 67e07c7a..e750ef14 100644 --- a/examples/solid/createHotkeyRecorder/package.json +++ b/examples/solid/createHotkeyRecorder/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/solid-devtools": "0.8.13", + "@tanstack/solid-devtools": "0.8.14", "@tanstack/solid-hotkeys": "^0.17.1", "@tanstack/solid-hotkeys-devtools": "^0.11.2", "solid-js": "^1.9.15" diff --git a/examples/solid/createHotkeys-sequences/package.json b/examples/solid/createHotkeys-sequences/package.json index c15daed6..5a3a429c 100644 --- a/examples/solid/createHotkeys-sequences/package.json +++ b/examples/solid/createHotkeys-sequences/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/solid-devtools": "0.8.13", + "@tanstack/solid-devtools": "0.8.14", "@tanstack/solid-hotkeys": "^0.17.1", "@tanstack/solid-hotkeys-devtools": "^0.11.2", "solid-js": "^1.9.15" diff --git a/examples/solid/createHotkeys/package.json b/examples/solid/createHotkeys/package.json index 25dbb074..e0cdc40b 100644 --- a/examples/solid/createHotkeys/package.json +++ b/examples/solid/createHotkeys/package.json @@ -11,7 +11,7 @@ "test:types": "tsc" }, "dependencies": { - "@tanstack/solid-devtools": "0.8.13", + "@tanstack/solid-devtools": "0.8.14", "@tanstack/solid-hotkeys": "^0.17.1", "@tanstack/solid-hotkeys-devtools": "^0.11.2", "solid-js": "^1.9.15" diff --git a/examples/solid/createKeyHold/package.json b/examples/solid/createKeyHold/package.json index aaaa5424..7a7faa5c 100644 --- a/examples/solid/createKeyHold/package.json +++ b/examples/solid/createKeyHold/package.json @@ -8,7 +8,7 @@ "preview": "vite preview" }, "dependencies": { - "@tanstack/solid-devtools": "0.8.13", + "@tanstack/solid-devtools": "0.8.14", "@tanstack/solid-hotkeys": "^0.17.1", "@tanstack/solid-hotkeys-devtools": "^0.11.2", "solid-js": "^1.9.15" diff --git a/examples/solid/kitchen-sink/package.json b/examples/solid/kitchen-sink/package.json index 7fcb1545..3999e2cf 100644 --- a/examples/solid/kitchen-sink/package.json +++ b/examples/solid/kitchen-sink/package.json @@ -11,7 +11,7 @@ "test:types": "tsc" }, "dependencies": { - "@tanstack/solid-devtools": "0.8.13", + "@tanstack/solid-devtools": "0.8.14", "@tanstack/solid-hotkeys": "^0.17.1", "@tanstack/solid-hotkeys-devtools": "^0.11.2", "solid-js": "^1.9.15" diff --git a/examples/solid/scopes/package.json b/examples/solid/scopes/package.json index 78fe5a35..5a563348 100644 --- a/examples/solid/scopes/package.json +++ b/examples/solid/scopes/package.json @@ -11,7 +11,7 @@ "test:types": "tsc" }, "dependencies": { - "@tanstack/solid-devtools": "0.8.13", + "@tanstack/solid-devtools": "0.8.14", "@tanstack/solid-hotkeys": "^0.17.1", "@tanstack/solid-hotkeys-devtools": "^0.11.2", "solid-js": "^1.9.15" diff --git a/examples/svelte/create-hotkey-recorder-sequences/package.json b/examples/svelte/create-hotkey-recorder-sequences/package.json index 1d424755..66a5e206 100644 --- a/examples/svelte/create-hotkey-recorder-sequences/package.json +++ b/examples/svelte/create-hotkey-recorder-sequences/package.json @@ -6,7 +6,7 @@ "dev": "vite --port=3069" }, "dependencies": { - "@tanstack/svelte-devtools": "^0.1.7", + "@tanstack/svelte-devtools": "^0.1.8", "@tanstack/svelte-hotkeys": "0.17.1", "@tanstack/svelte-hotkeys-devtools": "^0.3.2", "svelte": "^5.57.1" diff --git a/examples/svelte/create-hotkey-recorder/package.json b/examples/svelte/create-hotkey-recorder/package.json index 70ff141b..821159a8 100644 --- a/examples/svelte/create-hotkey-recorder/package.json +++ b/examples/svelte/create-hotkey-recorder/package.json @@ -6,7 +6,7 @@ "dev": "vite --port=3069" }, "dependencies": { - "@tanstack/svelte-devtools": "^0.1.7", + "@tanstack/svelte-devtools": "^0.1.8", "@tanstack/svelte-hotkeys": "0.17.1", "@tanstack/svelte-hotkeys-devtools": "^0.3.2", "svelte": "^5.57.1" diff --git a/examples/svelte/create-hotkey-sequences/package.json b/examples/svelte/create-hotkey-sequences/package.json index 34c7471e..b906c01d 100644 --- a/examples/svelte/create-hotkey-sequences/package.json +++ b/examples/svelte/create-hotkey-sequences/package.json @@ -6,7 +6,7 @@ "dev": "vite --port=3069" }, "dependencies": { - "@tanstack/svelte-devtools": "^0.1.7", + "@tanstack/svelte-devtools": "^0.1.8", "@tanstack/svelte-hotkeys": "0.17.1", "@tanstack/svelte-hotkeys-devtools": "^0.3.2", "svelte": "^5.57.1" diff --git a/examples/svelte/create-hotkey/package.json b/examples/svelte/create-hotkey/package.json index 56a8b639..a463fa4b 100644 --- a/examples/svelte/create-hotkey/package.json +++ b/examples/svelte/create-hotkey/package.json @@ -11,7 +11,7 @@ "test:types": "tsc" }, "dependencies": { - "@tanstack/svelte-devtools": "^0.1.7", + "@tanstack/svelte-devtools": "^0.1.8", "@tanstack/svelte-hotkeys": "0.17.1", "@tanstack/svelte-hotkeys-devtools": "^0.3.2", "svelte": "^5.57.1" diff --git a/examples/svelte/create-hotkeys-sequences/package.json b/examples/svelte/create-hotkeys-sequences/package.json index 5c6dd27c..d69fa16d 100644 --- a/examples/svelte/create-hotkeys-sequences/package.json +++ b/examples/svelte/create-hotkeys-sequences/package.json @@ -6,7 +6,7 @@ "dev": "vite --port=3069" }, "dependencies": { - "@tanstack/svelte-devtools": "^0.1.7", + "@tanstack/svelte-devtools": "^0.1.8", "@tanstack/svelte-hotkeys": "0.17.1", "@tanstack/svelte-hotkeys-devtools": "^0.3.2", "svelte": "^5.57.1" diff --git a/examples/svelte/create-hotkeys/package.json b/examples/svelte/create-hotkeys/package.json index cee5599b..049efc32 100644 --- a/examples/svelte/create-hotkeys/package.json +++ b/examples/svelte/create-hotkeys/package.json @@ -11,7 +11,7 @@ "test:types": "tsc" }, "dependencies": { - "@tanstack/svelte-devtools": "^0.1.7", + "@tanstack/svelte-devtools": "^0.1.8", "@tanstack/svelte-hotkeys": "0.17.1", "@tanstack/svelte-hotkeys-devtools": "^0.3.2", "svelte": "^5.57.1" diff --git a/examples/svelte/get-held-keys/package.json b/examples/svelte/get-held-keys/package.json index 2a20f857..bdab4894 100644 --- a/examples/svelte/get-held-keys/package.json +++ b/examples/svelte/get-held-keys/package.json @@ -6,7 +6,7 @@ "dev": "vite --port=3069" }, "dependencies": { - "@tanstack/svelte-devtools": "^0.1.7", + "@tanstack/svelte-devtools": "^0.1.8", "@tanstack/svelte-hotkeys": "0.17.1", "@tanstack/svelte-hotkeys-devtools": "^0.3.2", "svelte": "^5.57.1" diff --git a/examples/svelte/get-is-key-held/package.json b/examples/svelte/get-is-key-held/package.json index d69d0aa0..5b445c0d 100644 --- a/examples/svelte/get-is-key-held/package.json +++ b/examples/svelte/get-is-key-held/package.json @@ -6,7 +6,7 @@ "dev": "vite --port=3069" }, "dependencies": { - "@tanstack/svelte-devtools": "^0.1.7", + "@tanstack/svelte-devtools": "^0.1.8", "@tanstack/svelte-hotkeys": "0.17.1", "@tanstack/svelte-hotkeys-devtools": "^0.3.2", "svelte": "^5.57.1" diff --git a/examples/svelte/kitchen-sink/package.json b/examples/svelte/kitchen-sink/package.json index 39fbdf12..c8cf34d1 100644 --- a/examples/svelte/kitchen-sink/package.json +++ b/examples/svelte/kitchen-sink/package.json @@ -11,7 +11,7 @@ "test:types": "tsc" }, "dependencies": { - "@tanstack/svelte-devtools": "^0.1.7", + "@tanstack/svelte-devtools": "^0.1.8", "@tanstack/svelte-hotkeys": "0.17.1", "@tanstack/svelte-hotkeys-devtools": "^0.3.2", "svelte": "^5.57.1" diff --git a/examples/svelte/scopes/package.json b/examples/svelte/scopes/package.json index ac604b25..a9e624d3 100644 --- a/examples/svelte/scopes/package.json +++ b/examples/svelte/scopes/package.json @@ -11,7 +11,7 @@ "test:types": "tsc" }, "dependencies": { - "@tanstack/svelte-devtools": "^0.1.7", + "@tanstack/svelte-devtools": "^0.1.8", "@tanstack/svelte-hotkeys": "0.17.1", "@tanstack/svelte-hotkeys-devtools": "^0.3.2", "svelte": "^5.57.1" diff --git a/examples/vue/kitchen-sink/package.json b/examples/vue/kitchen-sink/package.json index c11059a6..084304b3 100644 --- a/examples/vue/kitchen-sink/package.json +++ b/examples/vue/kitchen-sink/package.json @@ -15,7 +15,7 @@ "vue": "^3.5.43" }, "devDependencies": { - "@tanstack/vue-devtools": "^0.2.27", + "@tanstack/vue-devtools": "^0.2.28", "@tanstack/vue-hotkeys-devtools": "^0.11.2", "@typescript-eslint/parser": "^8.71.0", "@vitejs/plugin-vue": "^6.0.9", diff --git a/examples/vue/scopes/package.json b/examples/vue/scopes/package.json index 831fbd35..de0a2c3b 100644 --- a/examples/vue/scopes/package.json +++ b/examples/vue/scopes/package.json @@ -15,7 +15,7 @@ "vue": "^3.5.43" }, "devDependencies": { - "@tanstack/vue-devtools": "^0.2.27", + "@tanstack/vue-devtools": "^0.2.28", "@tanstack/vue-hotkeys-devtools": "^0.11.2", "@typescript-eslint/parser": "^8.71.0", "@vitejs/plugin-vue": "^6.0.9", diff --git a/examples/vue/useHeldKeys/package.json b/examples/vue/useHeldKeys/package.json index 09b6deba..09c32fa6 100644 --- a/examples/vue/useHeldKeys/package.json +++ b/examples/vue/useHeldKeys/package.json @@ -15,7 +15,7 @@ "vue": "^3.5.43" }, "devDependencies": { - "@tanstack/vue-devtools": "^0.2.27", + "@tanstack/vue-devtools": "^0.2.28", "@tanstack/vue-hotkeys-devtools": "^0.11.2", "@typescript-eslint/parser": "^8.71.0", "@vitejs/plugin-vue": "^6.0.9", diff --git a/examples/vue/useHotkey-sequences/package.json b/examples/vue/useHotkey-sequences/package.json index 04aa330f..1664ca5c 100644 --- a/examples/vue/useHotkey-sequences/package.json +++ b/examples/vue/useHotkey-sequences/package.json @@ -15,7 +15,7 @@ "vue": "^3.5.43" }, "devDependencies": { - "@tanstack/vue-devtools": "^0.2.27", + "@tanstack/vue-devtools": "^0.2.28", "@tanstack/vue-hotkeys-devtools": "^0.11.2", "@typescript-eslint/parser": "^8.71.0", "@vitejs/plugin-vue": "^6.0.9", diff --git a/examples/vue/useHotkey/package.json b/examples/vue/useHotkey/package.json index a5fb2149..b80d5f30 100644 --- a/examples/vue/useHotkey/package.json +++ b/examples/vue/useHotkey/package.json @@ -15,7 +15,7 @@ "vue": "^3.5.43" }, "devDependencies": { - "@tanstack/vue-devtools": "^0.2.27", + "@tanstack/vue-devtools": "^0.2.28", "@tanstack/vue-hotkeys-devtools": "^0.11.2", "@typescript-eslint/parser": "^8.71.0", "@vitejs/plugin-vue": "^6.0.9", diff --git a/examples/vue/useHotkeyRecorder-sequences/package.json b/examples/vue/useHotkeyRecorder-sequences/package.json index 82f4192f..620acf8e 100644 --- a/examples/vue/useHotkeyRecorder-sequences/package.json +++ b/examples/vue/useHotkeyRecorder-sequences/package.json @@ -15,7 +15,7 @@ "vue": "^3.5.43" }, "devDependencies": { - "@tanstack/vue-devtools": "^0.2.27", + "@tanstack/vue-devtools": "^0.2.28", "@tanstack/vue-hotkeys-devtools": "^0.11.2", "@typescript-eslint/parser": "^8.71.0", "@vitejs/plugin-vue": "^6.0.9", diff --git a/examples/vue/useHotkeyRecorder/package.json b/examples/vue/useHotkeyRecorder/package.json index 2bc27bac..6a98e405 100644 --- a/examples/vue/useHotkeyRecorder/package.json +++ b/examples/vue/useHotkeyRecorder/package.json @@ -15,7 +15,7 @@ "vue": "^3.5.43" }, "devDependencies": { - "@tanstack/vue-devtools": "^0.2.27", + "@tanstack/vue-devtools": "^0.2.28", "@tanstack/vue-hotkeys-devtools": "^0.11.2", "@typescript-eslint/parser": "^8.71.0", "@vitejs/plugin-vue": "^6.0.9", diff --git a/examples/vue/useHotkeys-sequences/package.json b/examples/vue/useHotkeys-sequences/package.json index db51b6b2..d674022a 100644 --- a/examples/vue/useHotkeys-sequences/package.json +++ b/examples/vue/useHotkeys-sequences/package.json @@ -15,7 +15,7 @@ "vue": "^3.5.43" }, "devDependencies": { - "@tanstack/vue-devtools": "^0.2.27", + "@tanstack/vue-devtools": "^0.2.28", "@tanstack/vue-hotkeys-devtools": "^0.11.2", "@typescript-eslint/parser": "^8.71.0", "@vitejs/plugin-vue": "^6.0.9", diff --git a/examples/vue/useHotkeys/package.json b/examples/vue/useHotkeys/package.json index 9256d9aa..1226e681 100644 --- a/examples/vue/useHotkeys/package.json +++ b/examples/vue/useHotkeys/package.json @@ -15,7 +15,7 @@ "vue": "^3.5.43" }, "devDependencies": { - "@tanstack/vue-devtools": "^0.2.27", + "@tanstack/vue-devtools": "^0.2.28", "@tanstack/vue-hotkeys-devtools": "^0.11.2", "@typescript-eslint/parser": "^8.71.0", "@vitejs/plugin-vue": "^6.0.9", diff --git a/examples/vue/useKeyhold/package.json b/examples/vue/useKeyhold/package.json index 10764394..8f1ae479 100644 --- a/examples/vue/useKeyhold/package.json +++ b/examples/vue/useKeyhold/package.json @@ -15,7 +15,7 @@ "vue": "^3.5.43" }, "devDependencies": { - "@tanstack/vue-devtools": "^0.2.27", + "@tanstack/vue-devtools": "^0.2.28", "@tanstack/vue-hotkeys-devtools": "^0.11.2", "@typescript-eslint/parser": "^8.71.0", "@vitejs/plugin-vue": "^6.0.9", diff --git a/package.json b/package.json index 9216d3b5..abfe0fd0 100644 --- a/package.json +++ b/package.json @@ -75,6 +75,32 @@ "path": "packages/hotkeys/dist/index.js", "import": "{ formatForDisplay }", "limit": "3 KB" + }, + { + "name": "Provider without app hotkeys", + "path": "packages/hotkeys/dist/adapter.js", + "import": "{ createAppHotkeysStore }", + "limit": "0.5 KB" + }, + { + "name": "React useHotkey", + "path": "packages/react-hotkeys/dist/index.js", + "import": "{ useHotkey }", + "ignore": [ + "react", + "react-dom" + ], + "limit": "11 KB" + }, + { + "name": "React useHotkey + HotkeysProvider", + "path": "packages/react-hotkeys/dist/index.js", + "import": "{ useHotkey, HotkeysProvider }", + "ignore": [ + "react", + "react-dom" + ], + "limit": "12 KB" } ], "nx": { diff --git a/packages/alpine-hotkeys/package.json b/packages/alpine-hotkeys/package.json index 4f1b26d1..515fb480 100644 --- a/packages/alpine-hotkeys/package.json +++ b/packages/alpine-hotkeys/package.json @@ -46,8 +46,7 @@ "skills" ], "dependencies": { - "@tanstack/hotkeys": "workspace:*", - "@tanstack/store": "^0.11.2" + "@tanstack/hotkeys": "workspace:*" }, "devDependencies": { "@types/alpinejs": "^3.17.0", diff --git a/packages/alpine-hotkeys/src/scope.ts b/packages/alpine-hotkeys/src/scope.ts index 746b63b7..e294b492 100644 --- a/packages/alpine-hotkeys/src/scope.ts +++ b/packages/alpine-hotkeys/src/scope.ts @@ -2,7 +2,7 @@ import { getHotkeyManager } from '@tanstack/hotkeys' import { subscribePublishedAppHotkeys } from '@tanstack/hotkeys/adapter' import type Alpine from 'alpinejs' import type { AppHotkeysStore } from '@tanstack/hotkeys' -import type { ReadonlyStore } from '@tanstack/store' +import type { Store } from '@tanstack/hotkeys/adapter' import type { DefaultHotkeysOptions, MaybeGetter } from './types' type AlpineInstance = typeof Alpine @@ -52,7 +52,7 @@ export function createScope( } function select( - store: Pick, 'state' | 'subscribe'>, + store: Pick, 'state' | 'subscribe'>, selector: (state: T) => TSelected, ) { assertActive() diff --git a/packages/alpine-hotkeys/tsconfig.docs.json b/packages/alpine-hotkeys/tsconfig.docs.json index 3e0f6ff9..585e7071 100644 --- a/packages/alpine-hotkeys/tsconfig.docs.json +++ b/packages/alpine-hotkeys/tsconfig.docs.json @@ -4,7 +4,8 @@ "paths": { "@tanstack/hotkeys": ["../hotkeys/src/index.ts"], "@tanstack/hotkeys/adapter": ["../hotkeys/src/adapter.ts"] - } + }, + "types": ["node"] }, "include": ["src"] } diff --git a/packages/angular-hotkeys-devtools/package.json b/packages/angular-hotkeys-devtools/package.json index ddc7e5f6..95c57031 100644 --- a/packages/angular-hotkeys-devtools/package.json +++ b/packages/angular-hotkeys-devtools/package.json @@ -48,10 +48,16 @@ "dist" ], "peerDependencies": { - "@angular/core": ">=21.0.0" + "@angular/core": ">=21.0.0", + "@tanstack/angular-devtools": ">=0.0.13" + }, + "peerDependenciesMeta": { + "@tanstack/angular-devtools": { + "optional": true + } }, "dependencies": { - "@tanstack/devtools-utils": "^0.7.0", + "@tanstack/devtools-utils": "^0.7.2", "@tanstack/hotkeys-devtools": "workspace:*" }, "devDependencies": { diff --git a/packages/angular-hotkeys/package.json b/packages/angular-hotkeys/package.json index ceb872d9..bc947574 100644 --- a/packages/angular-hotkeys/package.json +++ b/packages/angular-hotkeys/package.json @@ -48,7 +48,6 @@ "skills" ], "dependencies": { - "@tanstack/angular-store": "^0.11.2", "@tanstack/hotkeys": "workspace:*" }, "peerDependencies": { diff --git a/packages/angular-hotkeys/src/_injectSelector.ts b/packages/angular-hotkeys/src/_injectSelector.ts new file mode 100644 index 00000000..61db3e7f --- /dev/null +++ b/packages/angular-hotkeys/src/_injectSelector.ts @@ -0,0 +1,22 @@ +import { DestroyRef, inject, linkedSignal } from '@angular/core' +import type { Signal } from '@angular/core' +import type { Store } from '@tanstack/hotkeys/adapter' + +/** + * Subscribes to a store until the injection context is destroyed and returns + * a signal of the selected value, which updates when it changes (by `===`). + * Must be called in an injection context. + */ +export function injectSelector( + store: Pick, 'get' | 'subscribe'>, + selector: (state: TState) => TSelected, +): Signal { + // Throws outside an injection context before subscribing + const destroyRef = inject(DestroyRef) + const selected = linkedSignal(() => selector(store.get())) + const { unsubscribe } = store.subscribe((state) => { + selected.set(selector(state)) + }) + destroyRef.onDestroy(unsubscribe) + return selected.asReadonly() +} diff --git a/packages/angular-hotkeys/src/hotkeys-provider.ts b/packages/angular-hotkeys/src/hotkeys-provider.ts index abae603b..889fedcd 100644 --- a/packages/angular-hotkeys/src/hotkeys-provider.ts +++ b/packages/angular-hotkeys/src/hotkeys-provider.ts @@ -8,9 +8,10 @@ import { runInInjectionContext, signal, } from '@angular/core' -import { AppHotkeysStore, publishAppHotkeysStore } from '@tanstack/hotkeys' +import { publishAppHotkeysStore } from '@tanstack/hotkeys' import { activateHotkeysProviderScope, + createAppHotkeysStore, getHotkeysProviderScopeKey, mergeHotkeysProviderDefaults, } from '@tanstack/hotkeys/adapter' @@ -19,6 +20,7 @@ import type { HotkeysProviderScopeProps } from '@tanstack/hotkeys/adapter' import type { AppHotkeys, AppHotkeysState, + AppHotkeysStore, CustomHotkeys, HotkeyChordRecorderOptions, HotkeySequenceRecorderOptions, @@ -116,7 +118,7 @@ function createHotkeysContext( let store: AppHotkeysStore | null = null let appHotkeysState = parent.appHotkeysState if (appHotkeys) { - store = new AppHotkeysStore(appHotkeys, { + store = createAppHotkeysStore(appHotkeys, { customHotkeys, onCustomHotkeysChange, }) diff --git a/packages/angular-hotkeys/src/injectHeldKeyCodes.ts b/packages/angular-hotkeys/src/injectHeldKeyCodes.ts index 25f6e3c4..b7b2009a 100644 --- a/packages/angular-hotkeys/src/injectHeldKeyCodes.ts +++ b/packages/angular-hotkeys/src/injectHeldKeyCodes.ts @@ -1,5 +1,5 @@ import { getKeyStateTracker } from '@tanstack/hotkeys' -import { injectSelector } from '@tanstack/angular-store' +import { injectSelector } from './_injectSelector' import type { Signal } from '@angular/core' /** diff --git a/packages/angular-hotkeys/src/injectHeldKeys.ts b/packages/angular-hotkeys/src/injectHeldKeys.ts index fd08a249..2f00ff85 100644 --- a/packages/angular-hotkeys/src/injectHeldKeys.ts +++ b/packages/angular-hotkeys/src/injectHeldKeys.ts @@ -1,5 +1,5 @@ import { getKeyStateTracker } from '@tanstack/hotkeys' -import { injectSelector } from '@tanstack/angular-store' +import { injectSelector } from './_injectSelector' import type { Signal } from '@angular/core' /** diff --git a/packages/angular-hotkeys/src/injectHotkeyHint.ts b/packages/angular-hotkeys/src/injectHotkeyHint.ts index 75110a3a..e175db10 100644 --- a/packages/angular-hotkeys/src/injectHotkeyHint.ts +++ b/packages/angular-hotkeys/src/injectHotkeyHint.ts @@ -1,5 +1,4 @@ import { computed } from '@angular/core' -import { injectSelector } from '@tanstack/angular-store' import { getHotkeyManager, getKeyStateTracker, @@ -7,6 +6,7 @@ import { matchesHeldModifiers, resolveAppHotkey, } from '@tanstack/hotkeys' +import { injectSelector } from './_injectSelector' import { injectHotkeysContext } from './hotkeys-provider' import type { Signal } from '@angular/core' import type { diff --git a/packages/angular-hotkeys/src/injectHotkeyRecorder.ts b/packages/angular-hotkeys/src/injectHotkeyRecorder.ts index 21f3de8b..1b0aa0b5 100644 --- a/packages/angular-hotkeys/src/injectHotkeyRecorder.ts +++ b/packages/angular-hotkeys/src/injectHotkeyRecorder.ts @@ -8,7 +8,7 @@ import { } from '@angular/core' import { HotkeyRecorder } from '@tanstack/hotkeys' import { injectDefaultHotkeysOptions } from './hotkeys-provider' -import type { Atom, ReadonlyAtom } from '@tanstack/angular-store' +import type { Store } from '@tanstack/hotkeys/adapter' import type { Signal } from '@angular/core' import type { Hotkey, @@ -141,7 +141,7 @@ export function injectHotkeyRecorder( } function injectLazyStore>( - storeSignal: Signal | ReadonlyAtom>, + storeSignal: Signal, 'get' | 'subscribe'>>, selector: (state: NoInfer) => TSelected, ): Signal { const slice = linkedSignal(() => selector(storeSignal().get())) diff --git a/packages/angular-hotkeys/src/injectHotkeyRegistrations.ts b/packages/angular-hotkeys/src/injectHotkeyRegistrations.ts index 38a2ae24..0516baf5 100644 --- a/packages/angular-hotkeys/src/injectHotkeyRegistrations.ts +++ b/packages/angular-hotkeys/src/injectHotkeyRegistrations.ts @@ -1,5 +1,5 @@ -import { injectSelector } from '@tanstack/angular-store' import { getHotkeyManager, toHotkeyRegistrationView } from '@tanstack/hotkeys' +import { injectSelector } from './_injectSelector' import type { Signal } from '@angular/core' import type { HotkeyRegistrationView } from '@tanstack/hotkeys' diff --git a/packages/angular-hotkeys/src/injectHotkeyScopesState.ts b/packages/angular-hotkeys/src/injectHotkeyScopesState.ts index 5881595a..087cf193 100644 --- a/packages/angular-hotkeys/src/injectHotkeyScopesState.ts +++ b/packages/angular-hotkeys/src/injectHotkeyScopesState.ts @@ -1,5 +1,5 @@ import { getHotkeyManager } from '@tanstack/hotkeys' -import { injectSelector } from '@tanstack/angular-store' +import { injectSelector } from './_injectSelector' import type { HotkeyScopesState } from '@tanstack/hotkeys' import type { Signal } from '@angular/core' diff --git a/packages/angular-hotkeys/src/injectKeyHold.ts b/packages/angular-hotkeys/src/injectKeyHold.ts index 5e2356f2..003ac236 100644 --- a/packages/angular-hotkeys/src/injectKeyHold.ts +++ b/packages/angular-hotkeys/src/injectKeyHold.ts @@ -1,6 +1,6 @@ import { computed } from '@angular/core' -import { injectSelector } from '@tanstack/angular-store' import { getKeyStateTracker } from '@tanstack/hotkeys' +import { injectSelector } from './_injectSelector' import type { IndividualKey } from '@tanstack/hotkeys' import type { Signal } from '@angular/core' diff --git a/packages/angular-hotkeys/tsconfig.docs.json b/packages/angular-hotkeys/tsconfig.docs.json index 4912b5ff..bb538b76 100644 --- a/packages/angular-hotkeys/tsconfig.docs.json +++ b/packages/angular-hotkeys/tsconfig.docs.json @@ -4,7 +4,8 @@ "paths": { "@tanstack/hotkeys": ["../hotkeys/src"], "@tanstack/hotkeys/adapter": ["../hotkeys/src/adapter"] - } + }, + "types": ["node"] }, "include": ["src"] } diff --git a/packages/ember-hotkeys/package.json b/packages/ember-hotkeys/package.json index 3ecce7b3..f2f1f092 100644 --- a/packages/ember-hotkeys/package.json +++ b/packages/ember-hotkeys/package.json @@ -52,7 +52,6 @@ "dependencies": { "@embroider/addon-shim": "^1.10.3", "@tanstack/hotkeys": "workspace:*", - "@tanstack/store": "^0.11.2", "ember-modifier": "^4.2.2" }, "devDependencies": { diff --git a/packages/ember-hotkeys/src/utils.ts b/packages/ember-hotkeys/src/utils.ts index aadaf84d..baf9358c 100644 --- a/packages/ember-hotkeys/src/utils.ts +++ b/packages/ember-hotkeys/src/utils.ts @@ -3,7 +3,7 @@ import { trackedObject } from '@ember/reactive/collections' import { getHotkeyManager } from '@tanstack/hotkeys' import { subscribePublishedAppHotkeys } from '@tanstack/hotkeys/adapter' import type { AppHotkeysStore } from '@tanstack/hotkeys' -import type { ReadonlyStore } from '@tanstack/store' +import type { Store } from '@tanstack/hotkeys/adapter' export type MaybeGetter = T | (() => T) @@ -13,7 +13,7 @@ export function read(value: MaybeGetter): T { export function select( owner: object, - store: Pick, 'state' | 'subscribe'>, + store: Pick, 'state' | 'subscribe'>, selector: (value: T) => TSelected, ) { const state = trackedObject({ snapshot: store.state }) diff --git a/packages/ember-hotkeys/tsconfig.docs.json b/packages/ember-hotkeys/tsconfig.docs.json index 1853afb3..71cf9f87 100644 --- a/packages/ember-hotkeys/tsconfig.docs.json +++ b/packages/ember-hotkeys/tsconfig.docs.json @@ -5,7 +5,14 @@ "@tanstack/hotkeys": ["../hotkeys/src/index.ts"], "@tanstack/hotkeys/adapter": ["../hotkeys/src/adapter.ts"] }, - "rootDir": ".." + "rootDir": "..", + "types": [ + "ember-source/types", + "vite/client", + "@embroider/core/virtual", + "@glint/ember-tsc/types", + "node" + ] }, "include": ["src"] } diff --git a/packages/hotkeys-devtools/package.json b/packages/hotkeys-devtools/package.json index eb505fb2..2ca85b6a 100644 --- a/packages/hotkeys-devtools/package.json +++ b/packages/hotkeys-devtools/package.json @@ -50,8 +50,8 @@ "@tanstack/hotkeys": "workspace:*" }, "dependencies": { - "@tanstack/devtools-ui": "^0.7.1", - "@tanstack/devtools-utils": "^0.7.0", + "@tanstack/devtools-ui": "^0.7.2", + "@tanstack/devtools-utils": "^0.7.2", "clsx": "^2.1.1", "goober": "^2.1.19", "match-sorter": "^8.3.0", diff --git a/packages/hotkeys-devtools/tests/live-updates.test.tsx b/packages/hotkeys-devtools/tests/live-updates.test.tsx new file mode 100644 index 00000000..eadbcc36 --- /dev/null +++ b/packages/hotkeys-devtools/tests/live-updates.test.tsx @@ -0,0 +1,82 @@ +import { afterEach, describe, expect, it } from 'vitest' +import { render } from 'solid-js/web' +import { + AppHotkeysStore, + HotkeyManager, + KeyStateTracker, + defineAppHotkeys, + publishAppHotkeysStore, +} from '@tanstack/hotkeys' +import { + HotkeysContextProvider, + useHotkeysDevtoolsState, +} from '../src/HotkeysContextProvider' + +let dispose: (() => void) | undefined + +/** Mounts the devtools state with its real subscriptions. */ +function mountState() { + let state!: ReturnType + dispose = render( + () => ( + + {(() => { + state = useHotkeysDevtoolsState() + return null + })()} + + ), + document.createElement('div'), + ) + return state +} + +afterEach(() => { + dispose?.() + dispose = undefined + HotkeyManager.resetInstance() + KeyStateTracker.resetInstance() +}) + +describe('devtools live updates', () => { + it('follows registrations, scopes, held keys, and app hotkeys', () => { + const manager = HotkeyManager.getInstance() + KeyStateTracker.getInstance() + const state = mountState() + + const handle = manager.register('Mod+K', () => {}) + expect(state.registrations().map((r) => r.hotkey)).toEqual(['Mod+K']) + handle.unregister() + expect(state.registrations()).toEqual([]) + + const release = manager.activateScope('dialog') + expect(state.scopes().active).toContain('dialog') + release() + expect(state.scopes().active).not.toContain('dialog') + + document.dispatchEvent( + new KeyboardEvent('keydown', { key: 'Shift', code: 'ShiftLeft' }), + ) + expect(state.heldKeys()).toEqual(['Shift']) + expect(state.heldCodes()).toEqual({ Shift: 'ShiftLeft' }) + document.dispatchEvent( + new KeyboardEvent('keyup', { key: 'Shift', code: 'ShiftLeft' }), + ) + expect(state.heldKeys()).toEqual([]) + + const appHotkeys = defineAppHotkeys({ + 'doc.save': { hotkey: 'Mod+S', meta: { name: 'Save' } }, + }) + const store = new AppHotkeysStore(appHotkeys) + const unpublish = publishAppHotkeysStore(store) + expect(state.appHotkeys().map((item) => item.appHotkey.hotkey)).toEqual([ + 'Mod+S', + ]) + store.setCustomHotkey('doc.save', 'Mod+Shift+S') + expect(state.appHotkeys().map((item) => item.appHotkey.hotkey)).toEqual([ + 'Mod+Shift+S', + ]) + unpublish() + expect(state.appHotkeys()).toEqual([]) + }) +}) diff --git a/packages/hotkeys/package.json b/packages/hotkeys/package.json index 17fc1f33..1949f3c2 100644 --- a/packages/hotkeys/package.json +++ b/packages/hotkeys/package.json @@ -50,7 +50,10 @@ "dist", "skills" ], - "dependencies": { + "devDependencies": { "@tanstack/store": "^0.11.2" + }, + "inlinedDependencies": { + "@tanstack/store": "0.11.2" } } diff --git a/packages/hotkeys/src/_app-hotkeys-factory.ts b/packages/hotkeys/src/_app-hotkeys-factory.ts new file mode 100644 index 00000000..04b6022f --- /dev/null +++ b/packages/hotkeys/src/_app-hotkeys-factory.ts @@ -0,0 +1,29 @@ +import type { + AppHotkeys, + AppHotkeysStore, + AppHotkeysStoreOptions, +} from './app-hotkeys' + +type Factory = ( + appHotkeys: AppHotkeys, + options: AppHotkeysStoreOptions, +) => AppHotkeysStore + +// Set by `defineAppHotkeys`, so providers create stores without importing the +// store class. Apps without app hotkeys never load it. +let factory: Factory | undefined + +export function setAppHotkeysStoreFactory(create: Factory): void { + factory = create +} + +/** Creates the store for app hotkeys from `defineAppHotkeys`. */ +export function createAppHotkeysStore( + appHotkeys: T, + options: AppHotkeysStoreOptions, +): AppHotkeysStore { + if (!factory) { + throw new Error('[hotkeys] App hotkeys must come from defineAppHotkeys.') + } + return factory(appHotkeys, options) as unknown as AppHotkeysStore +} diff --git a/packages/hotkeys/src/_registration.ts b/packages/hotkeys/src/_registration.ts index d27ce60e..61d14156 100644 --- a/packages/hotkeys/src/_registration.ts +++ b/packages/hotkeys/src/_registration.ts @@ -50,11 +50,13 @@ export function handleConflict( } if (conflictBehavior === 'warn') { - console.warn( - `'${keyDisplay}' is already registered. Multiple handlers may be triggered. ` + - `Use conflictBehavior: 'replace' to replace the existing handler, ` + - `or conflictBehavior: 'allow' to suppress this warning.`, - ) + if (process.env.NODE_ENV !== 'production') { + console.warn( + `'${keyDisplay}' is already registered. Multiple handlers may be triggered. ` + + `Use conflictBehavior: 'replace' to replace the existing handler, ` + + `or conflictBehavior: 'allow' to suppress this warning.`, + ) + } return } diff --git a/packages/hotkeys/src/_store.ts b/packages/hotkeys/src/_store.ts new file mode 100644 index 00000000..94fbf549 --- /dev/null +++ b/packages/hotkeys/src/_store.ts @@ -0,0 +1,61 @@ +import type { Store as TanStackStore } from '@tanstack/store' + +/** + * The part of TanStack Store's `Store` that TanStack Hotkeys uses. Its stores + * work with TanStack Store's framework adapters, such as `useSelector` from + * `@tanstack/react-store`. + */ +export type Store = Pick< + TanStackStore, + 'state' | 'get' | 'setState' | 'subscribe' +> + +type Listener = () => void + +// One queue for every store, like TanStack Store. An update made by a +// listener runs the queue right away, including listeners still waiting from +// the outer update. A listener queued more than once runs once, with the +// latest state. If a listener throws, the rest run on the next update. +const queue = new Set() + +function notify(listeners: Set): void { + for (const listener of listeners) queue.add(listener) + for (const listener of queue) { + queue.delete(listener) + listener() + } +} + +/** + * Creates a store. Listeners run synchronously after each change, and an + * update to an equal value (by `Object.is`) notifies no one. + */ +export function createStore(initialState: T): Store { + let state = initialState + const listeners = new Set() + return { + get state() { + return state + }, + get: () => state, + setState(updater) { + const next = updater(state) + if (Object.is(state, next)) return + state = next + notify(listeners) + }, + subscribe(observerOrFn) { + const listener = () => { + if (typeof observerOrFn === 'function') observerOrFn(state) + else observerOrFn.next?.(state) + } + listeners.add(listener) + return { + unsubscribe() { + listeners.delete(listener) + queue.delete(listener) + }, + } + }, + } +} diff --git a/packages/hotkeys/src/adapter.ts b/packages/hotkeys/src/adapter.ts index c8a60e13..062c091b 100644 --- a/packages/hotkeys/src/adapter.ts +++ b/packages/hotkeys/src/adapter.ts @@ -25,6 +25,10 @@ import type { Target, } from './hotkey-manager' +export { createAppHotkeysStore } from './_app-hotkeys-factory' +export { createStore } from './_store' +export type { Store } from './_store' + /** * A hotkey and its callback, with optional per-binding options. Chords accept * `requireReset`; sequences accept `timeout`. diff --git a/packages/hotkeys/src/app-hotkeys.ts b/packages/hotkeys/src/app-hotkeys.ts index 428ca1fc..4324f2e1 100644 --- a/packages/hotkeys/src/app-hotkeys.ts +++ b/packages/hotkeys/src/app-hotkeys.ts @@ -1,10 +1,12 @@ -import { Store } from '@tanstack/store' import { getHotkeyManager } from './hotkey-manager' import { areHotkeysEqual } from './match' import { detectPlatform } from './platform' import { isHotkeySequence, simplifyHotkey } from './parse' import { validateHotkey } from './validate' import { GLOBAL_SCOPE } from './_registration' +import { setAppHotkeysStoreFactory } from './_app-hotkeys-factory' +import { createStore } from './_store' +import type { Store } from './_store' import type { Hotkey, HotkeyChord, @@ -179,6 +181,9 @@ export type CustomHotkeys = { export function defineAppHotkeys< const T extends Record, >(definitions: T & ValidatedAppHotkeyInputs): DefinedAppHotkeys { + setAppHotkeysStoreFactory( + (appHotkeys, options) => new AppHotkeysStore(appHotkeys, options), + ) const result: Record = {} for (const [id, input] of Object.entries(definitions as T)) { const hotkey = input.hotkey === null ? null : simplifyHotkey(input.hotkey) @@ -258,15 +263,19 @@ function sanitizeCustomHotkeys( for (const [id, value] of Object.entries(saved)) { if (value === undefined) continue if (!(id in appHotkeys)) { - console.warn(`Ignoring custom hotkey for unknown app hotkey '${id}'`) + if (process.env.NODE_ENV !== 'production') { + console.warn(`Ignoring custom hotkey for unknown app hotkey '${id}'`) + } continue } const hotkey = parseCustomHotkey(value) if (hotkey === undefined) { - console.warn( - `Ignoring invalid custom hotkey for app hotkey '${id}':`, - value, - ) + if (process.env.NODE_ENV !== 'production') { + console.warn( + `Ignoring invalid custom hotkey for app hotkey '${id}':`, + value, + ) + } continue } result[id] = hotkey @@ -362,7 +371,7 @@ export class AppHotkeysStore { appHotkeys, options.customHotkeys, ) - this.store = new Store>({ + this.store = createStore>({ appHotkeys: applyCustomHotkeys(appHotkeys, customHotkeys), customHotkeys, }) @@ -439,7 +448,11 @@ export class AppHotkeysStore { ): Array { const appHotkey = this.store.state.appHotkeys[id] if (!appHotkey) { - console.warn(`Cannot set a custom hotkey for unknown app hotkey '${id}'`) + if (process.env.NODE_ENV !== 'production') { + console.warn( + `Cannot set a custom hotkey for unknown app hotkey '${id}'`, + ) + } return [] } const next = hotkey === null ? null : simplifyHotkey(hotkey) diff --git a/packages/hotkeys/src/hotkey-manager.ts b/packages/hotkeys/src/hotkey-manager.ts index 02899d15..dd283227 100644 --- a/packages/hotkeys/src/hotkey-manager.ts +++ b/packages/hotkeys/src/hotkey-manager.ts @@ -1,4 +1,4 @@ -import { Store } from '@tanstack/store' +import { createStore } from './_store' import { TargetListeners } from './_target-listeners' import { managerRef } from './_manager-ref' import { isRecordingEvent } from './_recording-guard' @@ -27,6 +27,7 @@ import { shouldIgnoreInputEvent, targetHasFocus, } from './_event-target' +import type { Store } from './_store' import type { AppHotkey, AppHotkeysStore } from './app-hotkeys' import type { CanonicalModifier } from './key.types' import type { @@ -466,7 +467,7 @@ export class HotkeyManager { * } * ``` */ - readonly registrations: Store> = new Store( + readonly registrations: Store> = createStore( new Map(), ) /** @@ -474,9 +475,9 @@ export class HotkeyManager { * devtools can list declared hotkeys that are not registered. */ readonly appHotkeys: Store = - new Store(null) + createStore(null) /** Active scopes. Subscribe to show which hotkeys are suspended. */ - readonly scopes: Store = new Store({ + readonly scopes: Store = createStore({ active: [], exclusive: null, allowed: [], @@ -546,6 +547,7 @@ export class HotkeyManager { const { exclusive } = options const allow = exclusive ? (exclusive === true ? [] : exclusive.allow) : null if ( + process.env.NODE_ENV !== 'production' && allow && [...this.#scopeActivations].some( (other) => other.allow && other.scope === scope, diff --git a/packages/hotkeys/src/hotkey-recorder.ts b/packages/hotkeys/src/hotkey-recorder.ts index b6ac3b00..159986e0 100644 --- a/packages/hotkeys/src/hotkey-recorder.ts +++ b/packages/hotkeys/src/hotkey-recorder.ts @@ -1,4 +1,4 @@ -import { Store } from '@tanstack/store' +import { createStore } from './_store' import { findHotkeyConflicts } from './conflicts' import { beginRecording, @@ -11,6 +11,7 @@ import { isModifierKey, parseHotkey, simplifyHotkey } from './parse' import { validateHotkey } from './validate' import { detectPlatform } from './platform' import { isTypingEvent } from './_event-target' +import type { Store } from './_store' import type { HotkeyConflict, HotkeyConflictOptions } from './conflicts' import type { Hotkey, @@ -190,9 +191,8 @@ const initialState: HotkeyRecorderState = { * ``` */ export class HotkeyRecorder { - readonly store: Store = new Store( - initialState, - ) + readonly store: Store = + createStore(initialState) #keydownHandler: ((event: KeyboardEvent) => void) | null = null #optionsSource: HotkeyRecorderOptions | (() => HotkeyRecorderOptions) diff --git a/packages/hotkeys/src/key-state-tracker.ts b/packages/hotkeys/src/key-state-tracker.ts index df895025..b5ae0cad 100644 --- a/packages/hotkeys/src/key-state-tracker.ts +++ b/packages/hotkeys/src/key-state-tracker.ts @@ -1,5 +1,6 @@ -import { Store } from '@tanstack/store' +import { createStore } from './_store' import { MODIFIER_KEYS, normalizeKeyName } from './constants' +import type { Store } from './_store' /** * State interface for the KeyStateTracker. @@ -67,7 +68,7 @@ export class KeyStateTracker { * The TanStack Store instance containing the tracker state. * Use this to subscribe to state changes or access current state. */ - readonly store: Store = new Store( + readonly store: Store = createStore( getDefaultKeyStateTrackerState(), ) diff --git a/packages/hotkeys/src/validate.ts b/packages/hotkeys/src/validate.ts index 40ed8634..9a409995 100644 --- a/packages/hotkeys/src/validate.ts +++ b/packages/hotkeys/src/validate.ts @@ -148,8 +148,8 @@ export function assertValidHotkey(hotkey: ValidatableHotkey): void { } /** - * Validates a hotkey and logs warnings to the console. - * Useful for development-time feedback. + * Validates a hotkey and logs errors and warnings to the console. + * Useful for development-time feedback. Logs nothing in production builds. * * @param hotkey - The hotkey string to validate * @returns True if the hotkey is valid (may still have warnings) @@ -164,18 +164,20 @@ export function assertValidHotkey(hotkey: ValidatableHotkey): void { export function checkHotkey(hotkey: ValidatableHotkey): boolean { const result = validateHotkey(hotkey) - if (result.errors.length > 0) { - console.error( - `Hotkey '${String(hotkey)}' errors:`, - result.errors.join('; '), - ) - } + if (process.env.NODE_ENV !== 'production') { + if (result.errors.length > 0) { + console.error( + `Hotkey '${String(hotkey)}' errors:`, + result.errors.join('; '), + ) + } - if (result.warnings.length > 0) { - console.warn( - `Hotkey '${String(hotkey)}' warnings:`, - result.warnings.join('; '), - ) + if (result.warnings.length > 0) { + console.warn( + `Hotkey '${String(hotkey)}' warnings:`, + result.warnings.join('; '), + ) + } } return result.valid diff --git a/packages/hotkeys/tests/adapter.test.ts b/packages/hotkeys/tests/adapter.test.ts index 82d8c231..26cea8f7 100644 --- a/packages/hotkeys/tests/adapter.test.ts +++ b/packages/hotkeys/tests/adapter.test.ts @@ -104,3 +104,28 @@ describe('adapter bindings', () => { expect(getHotkeyManager().registrations.state.size).toBe(0) }) }) + +describe('createAppHotkeysStore', () => { + it('creates a store for app hotkeys from defineAppHotkeys', async () => { + const { createAppHotkeysStore } = await import('../src/adapter') + const { AppHotkeysStore, defineAppHotkeys } = + await import('../src/app-hotkeys') + const appHotkeys = defineAppHotkeys({ 'doc.save': { hotkey: 'Mod+S' } }) + const onCustomHotkeysChange = vi.fn() + const store = createAppHotkeysStore(appHotkeys, { + customHotkeys: { 'doc.save': 'Mod+Shift+S' }, + onCustomHotkeysChange, + }) + expect(store).toBeInstanceOf(AppHotkeysStore) + expect(store.get('doc.save')?.hotkey).toBe('Mod+Shift+S') + store.resetCustomHotkey('doc.save') + expect(onCustomHotkeysChange).toHaveBeenCalledWith({}) + }) + + it('throws for app hotkeys not made by defineAppHotkeys', async () => { + // A fresh module graph, where defineAppHotkeys has never run + vi.resetModules() + const { createAppHotkeysStore } = await import('../src/adapter') + expect(() => createAppHotkeysStore({}, {})).toThrow(/defineAppHotkeys/) + }) +}) diff --git a/packages/hotkeys/tests/production-logs.test.ts b/packages/hotkeys/tests/production-logs.test.ts new file mode 100644 index 00000000..433c8d06 --- /dev/null +++ b/packages/hotkeys/tests/production-logs.test.ts @@ -0,0 +1,73 @@ +import { afterEach, describe, expect, it, vi } from 'vitest' +import { + AppHotkeysStore, + HotkeyManager, + checkHotkey, + defineAppHotkeys, + getHotkeyManager, +} from '../src' + +const appHotkeys = defineAppHotkeys({ 'doc.save': { hotkey: 'Mod+S' } }) + +// Every console call in the library, each triggered once +const scenarios: Record void> = { + 'duplicate registration': () => { + const manager = getHotkeyManager() + manager.register('Mod+K', () => {}) + manager.register('Mod+K', () => {}) + }, + 'checkHotkey errors': () => checkHotkey(''), + 'checkHotkey warnings': () => checkHotkey('Control+SomeWeirdKey'), + 'repeated exclusive scope': () => { + const manager = getHotkeyManager() + manager.activateScope('dialog', { exclusive: true }) + manager.activateScope('dialog', { exclusive: true }) + }, + 'custom hotkey for an unknown id': () => + new AppHotkeysStore(appHotkeys, { + customHotkeys: { 'doc.missing': 'Mod+M' } as never, + }), + 'invalid custom hotkey': () => + new AppHotkeysStore(appHotkeys, { + customHotkeys: { 'doc.save': 42 } as never, + }), + 'setCustomHotkey for an unknown id': () => + new AppHotkeysStore(appHotkeys).setCustomHotkey( + 'doc.missing' as never, + 'Mod+M', + ), +} + +function countLogs(run: () => void): number { + const warn = vi.spyOn(console, 'warn').mockImplementation(() => {}) + const error = vi.spyOn(console, 'error').mockImplementation(() => {}) + run() + return warn.mock.calls.length + error.mock.calls.length +} + +afterEach(() => { + vi.unstubAllEnvs() + vi.restoreAllMocks() + HotkeyManager.resetInstance() +}) + +describe('console output', () => { + it.each(Object.entries(scenarios))('logs for %s in development', (_, run) => { + vi.stubEnv('NODE_ENV', 'development') + expect(countLogs(run)).toBe(1) + }) + + it.each(Object.entries(scenarios))( + 'is silent for %s in production', + (_, run) => { + vi.stubEnv('NODE_ENV', 'production') + expect(countLogs(run)).toBe(0) + }, + ) + + it('still returns validity from checkHotkey in production', () => { + vi.stubEnv('NODE_ENV', 'production') + expect(checkHotkey('')).toBe(false) + expect(checkHotkey('Control+A')).toBe(true) + }) +}) diff --git a/packages/hotkeys/tests/store.test.ts b/packages/hotkeys/tests/store.test.ts new file mode 100644 index 00000000..9b03ba1b --- /dev/null +++ b/packages/hotkeys/tests/store.test.ts @@ -0,0 +1,101 @@ +import { describe, expect, it, vi } from 'vitest' +import { Store as TanStackStore } from '@tanstack/store' +import { createStore as createHotkeysStore } from '../src/_store' +import type { Store } from '../src/_store' + +// The same tests run against TanStack Store, so the two can't drift apart. +describe.each<[string, (value: T) => Store]>([ + ['createStore', createHotkeysStore], + ['TanStack Store', (value) => new TanStackStore(value)], +])('%s', (_, createStore) => { + it('reads state through state and get', () => { + const store = createStore({ count: 0 }) + expect(store.state).toEqual({ count: 0 }) + expect(store.get()).toBe(store.state) + store.setState((prev) => ({ count: prev.count + 1 })) + expect(store.get()).toEqual({ count: 1 }) + }) + + it('notifies listeners synchronously with the new state', () => { + const store = createStore(0) + const listener = vi.fn() + store.subscribe(listener) + store.setState(() => 1) + expect(listener).toHaveBeenCalledExactlyOnceWith(1) + }) + + it('accepts an observer object', () => { + const store = createStore(0) + const seen: Array = [] + store.subscribe({ next: (value) => seen.push(value) }) + store.setState(() => 2) + expect(seen).toEqual([2]) + }) + + it('skips updates to an equal value', () => { + const store = createStore(Number.NaN) + const listener = vi.fn() + store.subscribe(listener) + store.setState((prev) => prev) + store.setState(() => Number.NaN) + expect(listener).not.toHaveBeenCalled() + }) + + it('calls a function subscribed twice once per subscription', () => { + const store = createStore(0) + const listener = vi.fn() + store.subscribe(listener) + store.subscribe(listener) + store.setState(() => 1) + expect(listener).toHaveBeenCalledTimes(2) + }) + + it('stops notifying after unsubscribe, even mid-notification', () => { + const store = createStore(0) + const second = vi.fn() + const first = vi.fn(() => subscription.unsubscribe()) + store.subscribe(first) + const subscription = store.subscribe(second) + store.setState(() => 1) + expect(first).toHaveBeenCalledOnce() + expect(second).not.toHaveBeenCalled() + }) + + it('runs waiting listeners when a listener updates another store', () => { + const a = createStore(0) + const b = createStore(0) + const order: Array = [] + a.subscribe((value) => { + order.push(`a1:${value}`) + b.setState(() => value * 10) + order.push('a1 done') + }) + a.subscribe((value) => order.push(`a2:${value}`)) + b.subscribe((value) => order.push(`b:${value}`)) + a.setState(() => 1) + expect(order).toEqual(['a1:1', 'a2:1', 'b:10', 'a1 done']) + }) + + it('notifies a listener queued twice once, with the latest state', () => { + const a = createStore(0) + const b = createStore(0) + const seen: Array = [] + a.subscribe(() => b.setState((value) => value + 1)) + b.subscribe((value) => seen.push(value)) + a.subscribe(() => b.setState((value) => value + 1)) + a.setState(() => 1) + expect(seen).toEqual([2]) + }) + + it('keeps working after a listener throws', () => { + const store = createStore(0) + store.subscribe(() => { + throw new Error('listener failed') + }) + expect(() => store.setState(() => 1)).toThrow('listener failed') + const listener = vi.fn() + store.subscribe(listener) + expect(() => store.setState(() => 2)).toThrow('listener failed') + expect(store.state).toBe(2) + }) +}) diff --git a/packages/hotkeys/tsconfig.json b/packages/hotkeys/tsconfig.json index e01806d9..b47e1e1a 100644 --- a/packages/hotkeys/tsconfig.json +++ b/packages/hotkeys/tsconfig.json @@ -1,5 +1,9 @@ { "extends": "../../tsconfig.json", + "compilerOptions": { + // For process.env.NODE_ENV, which bundlers replace + "types": ["node"] + }, "include": ["src", "vite.config.ts", "tests"], "exclude": ["eslint.config.js"] } diff --git a/packages/hotkeys/tsdown.config.ts b/packages/hotkeys/tsdown.config.ts index fe6a28c2..1b9f259c 100644 --- a/packages/hotkeys/tsdown.config.ts +++ b/packages/hotkeys/tsdown.config.ts @@ -11,6 +11,13 @@ export default defineConfig({ minify: false, fixedExtension: false, exports: true, + // Types picked from @tanstack/store, a devDependency, are inlined. npm never + // publishes node_modules folders, so emit them under dist/vendor instead. + deps: { onlyBundle: ['@tanstack/store'] }, + outputOptions: { + entryFileNames: ({ name }) => + `${name.replace(/^node_modules\/.*\/node_modules\//, 'vendor/')}.js`, + }, publint: { strict: true, }, diff --git a/packages/lit-hotkeys/tests/ssr.test.ts b/packages/lit-hotkeys/tests/ssr.test.ts index 3c0770f8..5b224a9e 100644 --- a/packages/lit-hotkeys/tests/ssr.test.ts +++ b/packages/lit-hotkeys/tests/ssr.test.ts @@ -13,11 +13,39 @@ import { KeyHoldController, } from '../src/controllers' -/** Live subscribers on a store, read from its atom's subscriber list. */ +/** Live subscribers on each store, counted from when tracking starts. */ +const live = new WeakMap() + +function trackSubscribers(store: { + subscribe: (listener: () => void) => { unsubscribe: () => void } +}): void { + const subscribe = store.subscribe.bind(store) + live.set(store, 0) + store.subscribe = (listener) => { + live.set(store, live.get(store)! + 1) + const subscription = subscribe(listener) + let active = true + return { + unsubscribe: () => { + if (active) live.set(store, live.get(store)! - 1) + active = false + subscription.unsubscribe() + }, + } + } +} + function subscriberCount(store: object): number { - let count = 0 - for (let link = (store as any).atom.subs; link; link = link.nextSub) count++ - return count + return live.get(store) ?? 0 +} + +for (const store of [ + getKeyStateTracker().store, + getHotkeyManager().registrations, + getHotkeyManager().scopes, + getHotkeyManager().appHotkeys, +]) { + trackSubscribers(store) } function snapshot() { diff --git a/packages/lit-hotkeys/tsconfig.docs.json b/packages/lit-hotkeys/tsconfig.docs.json index 4912b5ff..bb538b76 100644 --- a/packages/lit-hotkeys/tsconfig.docs.json +++ b/packages/lit-hotkeys/tsconfig.docs.json @@ -4,7 +4,8 @@ "paths": { "@tanstack/hotkeys": ["../hotkeys/src"], "@tanstack/hotkeys/adapter": ["../hotkeys/src/adapter"] - } + }, + "types": ["node"] }, "include": ["src"] } diff --git a/packages/octane-hotkeys/package.json b/packages/octane-hotkeys/package.json index 1736b90a..e15e730f 100644 --- a/packages/octane-hotkeys/package.json +++ b/packages/octane-hotkeys/package.json @@ -46,8 +46,7 @@ "skills" ], "dependencies": { - "@tanstack/hotkeys": "workspace:*", - "@tanstack/octane-store": "^0.13.0" + "@tanstack/hotkeys": "workspace:*" }, "devDependencies": { "@tsrx/oxc": "0.20.0", diff --git a/packages/octane-hotkeys/src/HotkeysProvider.ts b/packages/octane-hotkeys/src/HotkeysProvider.ts index a7a64fa4..04ccd059 100644 --- a/packages/octane-hotkeys/src/HotkeysProvider.ts +++ b/packages/octane-hotkeys/src/HotkeysProvider.ts @@ -5,15 +5,17 @@ import { useLayoutEffect, useRef, } from 'octane' -import { AppHotkeysStore, publishAppHotkeysStore } from '@tanstack/hotkeys' +import { publishAppHotkeysStore } from '@tanstack/hotkeys' import { activateHotkeysProviderScope, + createAppHotkeysStore, getHotkeysProviderScopeKey, mergeHotkeysProviderDefaults, } from '@tanstack/hotkeys/adapter' import { subSlot } from './internal' import type { AppHotkeys, + AppHotkeysStore, CustomHotkeys, HotkeyChordRecorderOptions, HotkeySequenceRecorderOptions, @@ -104,7 +106,7 @@ export function HotkeysProvider({ subSlot(undefined, 'provider-store'), ) storeRef.current ??= appHotkeys - ? new AppHotkeysStore(appHotkeys, { + ? createAppHotkeysStore(appHotkeys, { customHotkeys, onCustomHotkeysChange: (custom) => callbackRef.current?.(custom), }) diff --git a/packages/octane-hotkeys/src/internal.ts b/packages/octane-hotkeys/src/internal.ts index dde1bf4a..59afbf81 100644 --- a/packages/octane-hotkeys/src/internal.ts +++ b/packages/octane-hotkeys/src/internal.ts @@ -1,6 +1,7 @@ -import { Store, useSelector } from '@tanstack/octane-store' +import { useCallback, useRef, useSyncExternalStore } from 'octane' +import { createStore } from '@tanstack/hotkeys/adapter' import type { AppHotkeysState, AppHotkeysStore } from '@tanstack/hotkeys' -import type { ReadonlyStore, UseSelectorOptions } from '@tanstack/octane-store' +import type { Store } from '@tanstack/hotkeys/adapter' // Slot mechanics for the binding's plain-`.ts` hooks. Octane injects a // per-call-site Symbol into calls made by compiled components; the binding @@ -41,15 +42,44 @@ export function splitSlot( return [slot === undefined ? args : args.slice(0, -1), slot] } -// Store's public overload hides the compiler-injected hook slot. -export const select = useSelector as ( - source: Pick, 'get' | 'subscribe'>, - selector: (state: T) => TSelected, - options: UseSelectorOptions | undefined, +/** + * Subscribes to a store and returns the selected value, re-rendering when it + * changes (by `Object.is`). The selector runs again only when the store's + * state or the selector itself changes. + */ +export function select( + store: Pick, 'get' | 'subscribe'>, + selector: (state: TState) => TSelected, slot: symbol, -) => TSelected +): TSelected { + const subscribe = useCallback( + (onChange: () => void) => store.subscribe(onChange).unsubscribe, + [store], + subSlot(slot, 'select:subscribe'), + ) + const memo = useRef<{ + state: TState + selector: (state: TState) => TSelected + selected: TSelected + } | null>(null, subSlot(slot, 'select:memo')) + const getSelection = () => { + const state = store.get() + const last = memo.current + if (last && last.selector === selector && Object.is(last.state, state)) { + return last.selected + } + memo.current = { state, selector, selected: selector(state) } + return memo.current.selected + } + return useSyncExternalStore( + subscribe, + getSelection, + getSelection, + subSlot(slot, 'select:store'), + ) +} -const NO_APP_HOTKEYS = new Store(null) +const NO_APP_HOTKEYS = createStore(null) /** * Re-renders when the provider's app hotkeys or custom hotkeys change and @@ -59,6 +89,6 @@ export function useAppHotkeysStore( store: AppHotkeysStore | null, slot: symbol, ): AppHotkeysStore | null { - select(store?.store ?? NO_APP_HOTKEYS, (value) => value, undefined, slot) + select(store?.store ?? NO_APP_HOTKEYS, (value) => value, slot) return store } diff --git a/packages/octane-hotkeys/src/useHeldKeyCodes.ts b/packages/octane-hotkeys/src/useHeldKeyCodes.ts index 66132a6f..3c2edcb9 100644 --- a/packages/octane-hotkeys/src/useHeldKeyCodes.ts +++ b/packages/octane-hotkeys/src/useHeldKeyCodes.ts @@ -7,7 +7,6 @@ export function useHeldKeyCodes(slot?: symbol): Record { return select( getKeyStateTracker().store, (state) => state.heldCodes, - undefined, subSlot(slot, 'held-codes'), ) } diff --git a/packages/octane-hotkeys/src/useHeldKeys.ts b/packages/octane-hotkeys/src/useHeldKeys.ts index 6d692b6f..0ff68c97 100644 --- a/packages/octane-hotkeys/src/useHeldKeys.ts +++ b/packages/octane-hotkeys/src/useHeldKeys.ts @@ -7,7 +7,6 @@ export function useHeldKeys(slot?: symbol): Array { return select( getKeyStateTracker().store, (state) => state.heldKeys, - undefined, subSlot(slot, 'held-keys'), ) } diff --git a/packages/octane-hotkeys/src/useHotkeyHint.ts b/packages/octane-hotkeys/src/useHotkeyHint.ts index d16a9bb4..cd67567a 100644 --- a/packages/octane-hotkeys/src/useHotkeyHint.ts +++ b/packages/octane-hotkeys/src/useHotkeyHint.ts @@ -40,7 +40,6 @@ export function useHotkeyHint( const active = select( manager.registrations, () => resolved !== null && manager.hasActiveRegistration(hotkey), - undefined, subSlot(slot, 'hint-active'), ) const held = select( @@ -52,7 +51,6 @@ export function useHotkeyHint( state.heldKeys, args[0] as HeldModifierOptions | undefined, ), - undefined, subSlot(slot, 'hint'), ) return active && held diff --git a/packages/octane-hotkeys/src/useHotkeyRecorder.ts b/packages/octane-hotkeys/src/useHotkeyRecorder.ts index 85fc819e..05efb1aa 100644 --- a/packages/octane-hotkeys/src/useHotkeyRecorder.ts +++ b/packages/octane-hotkeys/src/useHotkeyRecorder.ts @@ -44,12 +44,7 @@ export function useHotkeyRecorder( subSlot(slot, 'options'), ) useLayoutEffect(() => () => recorder.destroy(), [], subSlot(slot, 'cleanup')) - const state = select( - recorder.store, - (value) => value, - undefined, - subSlot(slot, 'state'), - ) + const state = select(recorder.store, (value) => value, subSlot(slot, 'state')) return { ...state, startRecording: () => recorder.start(), diff --git a/packages/octane-hotkeys/src/useHotkeyRegistrations.ts b/packages/octane-hotkeys/src/useHotkeyRegistrations.ts index 4ef01cd1..78092afb 100644 --- a/packages/octane-hotkeys/src/useHotkeyRegistrations.ts +++ b/packages/octane-hotkeys/src/useHotkeyRegistrations.ts @@ -10,7 +10,6 @@ export function useHotkeyRegistrations( const hotkeys = select( getHotkeyManager().registrations, (state) => Array.from(state.values()).map(toHotkeyRegistrationView), - undefined, subSlot(slot, 'hotkeys'), ) return { hotkeys } diff --git a/packages/octane-hotkeys/src/useHotkeyScopesState.ts b/packages/octane-hotkeys/src/useHotkeyScopesState.ts index b44ddf1a..767b986d 100644 --- a/packages/octane-hotkeys/src/useHotkeyScopesState.ts +++ b/packages/octane-hotkeys/src/useHotkeyScopesState.ts @@ -11,7 +11,6 @@ export function useHotkeyScopesState(slot?: symbol): HotkeyScopesState { return select( getHotkeyManager().scopes, (state) => state, - undefined, subSlot(slot, 'hotkey-scopes-state'), ) } diff --git a/packages/octane-hotkeys/src/useKeyHold.ts b/packages/octane-hotkeys/src/useKeyHold.ts index b258bbab..0a33ef4a 100644 --- a/packages/octane-hotkeys/src/useKeyHold.ts +++ b/packages/octane-hotkeys/src/useKeyHold.ts @@ -8,7 +8,6 @@ export function useKeyHold(key: IndividualKey, slot?: symbol): boolean { return select( getKeyStateTracker().store, (state) => state.heldKeys.includes(key), - undefined, subSlot(slot, 'key-hold'), ) } diff --git a/packages/octane-hotkeys/tsconfig.docs.json b/packages/octane-hotkeys/tsconfig.docs.json index 3e0f6ff9..585e7071 100644 --- a/packages/octane-hotkeys/tsconfig.docs.json +++ b/packages/octane-hotkeys/tsconfig.docs.json @@ -4,7 +4,8 @@ "paths": { "@tanstack/hotkeys": ["../hotkeys/src/index.ts"], "@tanstack/hotkeys/adapter": ["../hotkeys/src/adapter.ts"] - } + }, + "types": ["node"] }, "include": ["src"] } diff --git a/packages/preact-hotkeys-devtools/package.json b/packages/preact-hotkeys-devtools/package.json index bc91377c..c0085311 100644 --- a/packages/preact-hotkeys-devtools/package.json +++ b/packages/preact-hotkeys-devtools/package.json @@ -47,10 +47,16 @@ "dist" ], "peerDependencies": { + "@tanstack/preact-devtools": ">=0.10.15", "preact": ">=10.5.2" }, + "peerDependenciesMeta": { + "@tanstack/preact-devtools": { + "optional": true + } + }, "dependencies": { - "@tanstack/devtools-utils": "^0.7.0", + "@tanstack/devtools-utils": "^0.7.2", "@tanstack/hotkeys-devtools": "workspace:*" }, "devDependencies": { diff --git a/packages/preact-hotkeys-devtools/tests/panel.test.ts b/packages/preact-hotkeys-devtools/tests/panel.test.ts index e1f47c40..0eb03fb5 100644 --- a/packages/preact-hotkeys-devtools/tests/panel.test.ts +++ b/packages/preact-hotkeys-devtools/tests/panel.test.ts @@ -36,9 +36,7 @@ it('mounts a standalone panel with default props', () => { }) }) -// devtools-utils <=0.7.0 skips unmount on Preact 11 (TanStack/devtools#551). -// Switch back to `it` once a fixed devtools-utils is installed. -it.fails('unmounts the standalone panel', () => { +it('unmounts the standalone panel', () => { act(() => render(h(HotkeysDevtoolsPanel, emptyProps), host)) act(() => render(null, host)) expect(core.unmount).toHaveBeenCalledOnce() diff --git a/packages/preact-hotkeys/package.json b/packages/preact-hotkeys/package.json index b32f18a2..8c195766 100644 --- a/packages/preact-hotkeys/package.json +++ b/packages/preact-hotkeys/package.json @@ -46,8 +46,7 @@ "skills" ], "dependencies": { - "@tanstack/hotkeys": "workspace:*", - "@tanstack/preact-store": "^0.13.5" + "@tanstack/hotkeys": "workspace:*" }, "devDependencies": { "@preact/preset-vite": "^2.10.6", diff --git a/packages/preact-hotkeys/src/HotkeysProvider.tsx b/packages/preact-hotkeys/src/HotkeysProvider.tsx index e5844c6b..ac6f116c 100644 --- a/packages/preact-hotkeys/src/HotkeysProvider.tsx +++ b/packages/preact-hotkeys/src/HotkeysProvider.tsx @@ -1,14 +1,16 @@ import { createContext } from 'preact' import { useContext, useEffect, useMemo, useState } from 'preact/hooks' -import { AppHotkeysStore, publishAppHotkeysStore } from '@tanstack/hotkeys' +import { publishAppHotkeysStore } from '@tanstack/hotkeys' import { activateHotkeysProviderScope, + createAppHotkeysStore, getHotkeysProviderScopeKey, mergeHotkeysProviderDefaults, } from '@tanstack/hotkeys/adapter' import type { ComponentChildren } from 'preact' import type { AppHotkeys, + AppHotkeysStore, CustomHotkeys, HotkeyChordRecorderOptions, HotkeySequenceRecorderOptions, @@ -112,7 +114,7 @@ export function HotkeysProvider({ const parent = useContext(HotkeysContext) ?? NO_PARENT const [store] = useState(() => appHotkeys - ? new AppHotkeysStore(appHotkeys, { + ? createAppHotkeysStore(appHotkeys, { customHotkeys, onCustomHotkeysChange, }) diff --git a/packages/preact-hotkeys/src/_appHotkeysStore.ts b/packages/preact-hotkeys/src/_appHotkeysStore.ts index 6fe2902c..cfa3adc8 100644 --- a/packages/preact-hotkeys/src/_appHotkeysStore.ts +++ b/packages/preact-hotkeys/src/_appHotkeysStore.ts @@ -1,8 +1,9 @@ -import { Store, useSelector } from '@tanstack/preact-store' +import { createStore } from '@tanstack/hotkeys/adapter' +import { useSelector } from './_useSelector' import { useHotkeysContext } from './HotkeysProvider' import type { AppHotkeysState, AppHotkeysStore } from '@tanstack/hotkeys' -const NO_APP_HOTKEYS = new Store(null) +const NO_APP_HOTKEYS = createStore(null) /** * The provider's app hotkeys store, re-rendering when app hotkeys or custom diff --git a/packages/preact-hotkeys/src/_useSelector.ts b/packages/preact-hotkeys/src/_useSelector.ts new file mode 100644 index 00000000..7206260c --- /dev/null +++ b/packages/preact-hotkeys/src/_useSelector.ts @@ -0,0 +1,59 @@ +import { + useEffect, + useLayoutEffect, + useMemo, + useRef, + useState, +} from 'preact/hooks' +import type { Store } from '@tanstack/hotkeys/adapter' + +/** + * Subscribes to a store and returns the selected value, re-rendering when it + * changes (by `Object.is`). The selector runs again only when the store's + * state or the selector itself changes. Preact 10 has no + * `useSyncExternalStore` outside `preact/compat`, so this follows its approach. + */ +export function useSelector( + store: Pick, 'get' | 'subscribe'>, + selector: (state: TState) => TSelected, +): TSelected { + const select = useMemo(() => { + let memo: { state: TState; selected: TSelected } | undefined + return (state: TState) => { + if (!memo || !Object.is(memo.state, state)) { + memo = { state, selected: selector(state) } + } + return memo.selected + } + }, [selector]) + const selected = useRef(undefined) + const getSelection = () => { + const next = select(store.get()) + if (!Object.is(selected.current, next)) selected.current = next + return selected.current as TSelected + } + + const value = getSelection() + const [{ instance }, forceUpdate] = useState({ + instance: { value, getSelection }, + }) + const changed = () => { + try { + return !Object.is(instance.value, instance.getSelection()) + } catch { + return true + } + } + useLayoutEffect(() => { + instance.value = value + instance.getSelection = getSelection + if (changed()) forceUpdate({ instance }) + }) + useEffect(() => { + if (changed()) forceUpdate({ instance }) + return store.subscribe(() => { + if (changed()) forceUpdate({ instance }) + }).unsubscribe + }, [instance, store]) + return value +} diff --git a/packages/preact-hotkeys/src/useHeldKeyCodes.ts b/packages/preact-hotkeys/src/useHeldKeyCodes.ts index 199ed33a..9d2a5275 100644 --- a/packages/preact-hotkeys/src/useHeldKeyCodes.ts +++ b/packages/preact-hotkeys/src/useHeldKeyCodes.ts @@ -1,5 +1,5 @@ -import { useSelector } from '@tanstack/preact-store' import { getKeyStateTracker } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' /** * Preact hook that returns a map of currently held key names to their physical `event.code` values. diff --git a/packages/preact-hotkeys/src/useHeldKeys.ts b/packages/preact-hotkeys/src/useHeldKeys.ts index bd154faf..ee101ce4 100644 --- a/packages/preact-hotkeys/src/useHeldKeys.ts +++ b/packages/preact-hotkeys/src/useHeldKeys.ts @@ -1,11 +1,10 @@ -import { useSelector } from '@tanstack/preact-store' import { getKeyStateTracker } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' /** * Preact hook that returns an array of currently held keyboard keys. * - * This hook uses `useSelector` from `@tanstack/preact-store` to subscribe - * to the global KeyStateTracker and updates whenever keys are pressed + * This hook subscribes to the global KeyStateTracker and updates whenever keys are pressed * or released. * * @returns Array of currently held key names diff --git a/packages/preact-hotkeys/src/useHotkeyHint.ts b/packages/preact-hotkeys/src/useHotkeyHint.ts index b587db1b..27730fd2 100644 --- a/packages/preact-hotkeys/src/useHotkeyHint.ts +++ b/packages/preact-hotkeys/src/useHotkeyHint.ts @@ -1,4 +1,3 @@ -import { useSelector } from '@tanstack/preact-store' import { getHotkeyManager, getKeyStateTracker, @@ -6,6 +5,7 @@ import { matchesHeldModifiers, resolveAppHotkey, } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' import { useAppHotkeysStoreState } from './_appHotkeysStore' import type { AppHotkey, diff --git a/packages/preact-hotkeys/src/useHotkeyRecorder.ts b/packages/preact-hotkeys/src/useHotkeyRecorder.ts index a65e583b..be964688 100644 --- a/packages/preact-hotkeys/src/useHotkeyRecorder.ts +++ b/packages/preact-hotkeys/src/useHotkeyRecorder.ts @@ -1,6 +1,6 @@ import { useEffect, useRef } from 'preact/hooks' -import { useSelector } from '@tanstack/preact-store' import { HotkeyRecorder } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' import { useDefaultHotkeysOptions } from './HotkeysProvider' import type { Hotkey, diff --git a/packages/preact-hotkeys/src/useHotkeyRegistrations.ts b/packages/preact-hotkeys/src/useHotkeyRegistrations.ts index caa3dee7..f56fda5f 100644 --- a/packages/preact-hotkeys/src/useHotkeyRegistrations.ts +++ b/packages/preact-hotkeys/src/useHotkeyRegistrations.ts @@ -1,5 +1,5 @@ -import { useSelector } from '@tanstack/preact-store' import { getHotkeyManager, toHotkeyRegistrationView } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' import type { HotkeyRegistrationView } from '@tanstack/hotkeys' /** diff --git a/packages/preact-hotkeys/src/useHotkeyScopesState.ts b/packages/preact-hotkeys/src/useHotkeyScopesState.ts index 6a11b253..c940ee7f 100644 --- a/packages/preact-hotkeys/src/useHotkeyScopesState.ts +++ b/packages/preact-hotkeys/src/useHotkeyScopesState.ts @@ -1,5 +1,5 @@ -import { useSelector } from '@tanstack/preact-store' import { getHotkeyManager } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' import type { HotkeyScopesState } from '@tanstack/hotkeys' /** diff --git a/packages/preact-hotkeys/src/useKeyHold.ts b/packages/preact-hotkeys/src/useKeyHold.ts index 48c19712..c66190db 100644 --- a/packages/preact-hotkeys/src/useKeyHold.ts +++ b/packages/preact-hotkeys/src/useKeyHold.ts @@ -1,12 +1,11 @@ -import { useSelector } from '@tanstack/preact-store' import { getKeyStateTracker } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' import type { IndividualKey } from '@tanstack/hotkeys' /** * Preact hook that returns whether a specific key is currently being held. * - * This hook uses `useSelector` from `@tanstack/preact-store` to subscribe - * to the global KeyStateTracker and uses a selector to determine if + * This hook subscribes to the global KeyStateTracker and uses a selector to determine if * the specified key is held. * * @param key - The key to check (e.g., 'Shift', 'Control', 'A') diff --git a/packages/preact-hotkeys/tsconfig.docs.json b/packages/preact-hotkeys/tsconfig.docs.json index 4912b5ff..bb538b76 100644 --- a/packages/preact-hotkeys/tsconfig.docs.json +++ b/packages/preact-hotkeys/tsconfig.docs.json @@ -4,7 +4,8 @@ "paths": { "@tanstack/hotkeys": ["../hotkeys/src"], "@tanstack/hotkeys/adapter": ["../hotkeys/src/adapter"] - } + }, + "types": ["node"] }, "include": ["src"] } diff --git a/packages/react-hotkeys-devtools/package.json b/packages/react-hotkeys-devtools/package.json index bc85e427..e20f4151 100644 --- a/packages/react-hotkeys-devtools/package.json +++ b/packages/react-hotkeys-devtools/package.json @@ -48,13 +48,19 @@ "dist" ], "peerDependencies": { + "@tanstack/react-devtools": ">=0.10.14", "@types/react": ">=18.0.0", "@types/react-dom": ">=18.0.0", "react": ">=18.0.0", "react-dom": ">=18.0.0" }, + "peerDependenciesMeta": { + "@tanstack/react-devtools": { + "optional": true + } + }, "dependencies": { - "@tanstack/devtools-utils": "^0.7.0", + "@tanstack/devtools-utils": "^0.7.2", "@tanstack/hotkeys-devtools": "workspace:*" }, "devDependencies": { diff --git a/packages/react-hotkeys/package.json b/packages/react-hotkeys/package.json index 8da0615e..cd460a0d 100644 --- a/packages/react-hotkeys/package.json +++ b/packages/react-hotkeys/package.json @@ -46,11 +46,11 @@ "skills" ], "dependencies": { - "@tanstack/hotkeys": "workspace:*", - "@tanstack/react-store": "^0.11.2" + "@tanstack/hotkeys": "workspace:*" }, "devDependencies": { "@eslint-react/eslint-plugin": "^4.2.3", + "@tanstack/react-store": "^0.11.2", "@testing-library/react": "^16.3.3", "@types/react": "^19.3.0", "@vitejs/plugin-react": "^6.1.1", diff --git a/packages/react-hotkeys/src/HotkeysProvider.tsx b/packages/react-hotkeys/src/HotkeysProvider.tsx index b54ae8c5..42f9c7df 100644 --- a/packages/react-hotkeys/src/HotkeysProvider.tsx +++ b/packages/react-hotkeys/src/HotkeysProvider.tsx @@ -7,15 +7,17 @@ import React, { useMemo, useState, } from 'react' -import { AppHotkeysStore, publishAppHotkeysStore } from '@tanstack/hotkeys' +import { publishAppHotkeysStore } from '@tanstack/hotkeys' import { activateHotkeysProviderScope, + createAppHotkeysStore, getHotkeysProviderScopeKey, mergeHotkeysProviderDefaults, } from '@tanstack/hotkeys/adapter' import type { ReactElement, ReactNode } from 'react' import type { AppHotkeys, + AppHotkeysStore, CustomHotkeys, HotkeyChordRecorderOptions, HotkeySequenceRecorderOptions, @@ -120,7 +122,7 @@ export function HotkeysProvider({ const parent = useContext(HotkeysContext) ?? NO_PARENT const [store] = useState(() => appHotkeys - ? new AppHotkeysStore(appHotkeys, { + ? createAppHotkeysStore(appHotkeys, { customHotkeys, onCustomHotkeysChange, }) diff --git a/packages/react-hotkeys/src/_appHotkeysStore.ts b/packages/react-hotkeys/src/_appHotkeysStore.ts index 49bdec66..981da781 100644 --- a/packages/react-hotkeys/src/_appHotkeysStore.ts +++ b/packages/react-hotkeys/src/_appHotkeysStore.ts @@ -1,10 +1,11 @@ 'use client' -import { Store, useSelector } from '@tanstack/react-store' +import { createStore } from '@tanstack/hotkeys/adapter' +import { useSelector } from './_useSelector' import { useHotkeysContext } from './HotkeysProvider' import type { AppHotkeysState, AppHotkeysStore } from '@tanstack/hotkeys' -const NO_APP_HOTKEYS = new Store(null) +const NO_APP_HOTKEYS = createStore(null) /** * The provider's app hotkeys store, re-rendering when app hotkeys or custom diff --git a/packages/react-hotkeys/src/_useSelector.ts b/packages/react-hotkeys/src/_useSelector.ts new file mode 100644 index 00000000..e330f566 --- /dev/null +++ b/packages/react-hotkeys/src/_useSelector.ts @@ -0,0 +1,34 @@ +'use client' + +import { useCallback, useRef, useSyncExternalStore } from 'react' +import type { Store } from '@tanstack/hotkeys/adapter' + +/** + * Subscribes to a store and returns the selected value, re-rendering when it + * changes (by `Object.is`). The selector runs again only when the store's + * state or the selector itself changes. + */ +export function useSelector( + store: Pick, 'get' | 'subscribe'>, + selector: (state: TState) => TSelected, +): TSelected { + const subscribe = useCallback( + (onChange: () => void) => store.subscribe(onChange).unsubscribe, + [store], + ) + const memo = useRef<{ + state: TState + selector: (state: TState) => TSelected + selected: TSelected + }>(null) + const getSelection = () => { + const state = store.get() + const last = memo.current + if (last && last.selector === selector && Object.is(last.state, state)) { + return last.selected + } + memo.current = { state, selector, selected: selector(state) } + return memo.current.selected + } + return useSyncExternalStore(subscribe, getSelection, getSelection) +} diff --git a/packages/react-hotkeys/src/useHeldKeyCodes.ts b/packages/react-hotkeys/src/useHeldKeyCodes.ts index 766e8904..5300e518 100644 --- a/packages/react-hotkeys/src/useHeldKeyCodes.ts +++ b/packages/react-hotkeys/src/useHeldKeyCodes.ts @@ -1,7 +1,7 @@ 'use client' -import { useSelector } from '@tanstack/react-store' import { getKeyStateTracker } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' /** * React hook that returns a map of currently held key names to their physical `event.code` values. diff --git a/packages/react-hotkeys/src/useHeldKeys.ts b/packages/react-hotkeys/src/useHeldKeys.ts index fe3a94f0..9641a85a 100644 --- a/packages/react-hotkeys/src/useHeldKeys.ts +++ b/packages/react-hotkeys/src/useHeldKeys.ts @@ -1,13 +1,12 @@ 'use client' -import { useSelector } from '@tanstack/react-store' import { getKeyStateTracker } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' /** * React hook that returns an array of currently held keyboard keys. * - * This hook uses `useSelector` from `@tanstack/react-store` to subscribe - * to the global KeyStateTracker and updates whenever keys are pressed + * This hook subscribes to the global KeyStateTracker and updates whenever keys are pressed * or released. * * @returns Array of currently held key names diff --git a/packages/react-hotkeys/src/useHotkeyHint.ts b/packages/react-hotkeys/src/useHotkeyHint.ts index 44d9fdf6..6ca642d7 100644 --- a/packages/react-hotkeys/src/useHotkeyHint.ts +++ b/packages/react-hotkeys/src/useHotkeyHint.ts @@ -1,6 +1,5 @@ 'use client' -import { useSelector } from '@tanstack/react-store' import { getHotkeyManager, getKeyStateTracker, @@ -8,6 +7,7 @@ import { matchesHeldModifiers, resolveAppHotkey, } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' import { useAppHotkeysStoreState } from './_appHotkeysStore' import type { AppHotkey, diff --git a/packages/react-hotkeys/src/useHotkeyRecorder.ts b/packages/react-hotkeys/src/useHotkeyRecorder.ts index 6f3bfa83..fa0d4285 100644 --- a/packages/react-hotkeys/src/useHotkeyRecorder.ts +++ b/packages/react-hotkeys/src/useHotkeyRecorder.ts @@ -1,8 +1,8 @@ 'use client' import { useEffect, useRef } from 'react' -import { useSelector } from '@tanstack/react-store' import { HotkeyRecorder } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' import { useDefaultHotkeysOptions } from './HotkeysProvider' import type { Hotkey, diff --git a/packages/react-hotkeys/src/useHotkeyRegistrations.ts b/packages/react-hotkeys/src/useHotkeyRegistrations.ts index e090285b..279d979b 100644 --- a/packages/react-hotkeys/src/useHotkeyRegistrations.ts +++ b/packages/react-hotkeys/src/useHotkeyRegistrations.ts @@ -1,7 +1,7 @@ 'use client' -import { useSelector } from '@tanstack/react-store' import { getHotkeyManager, toHotkeyRegistrationView } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' import type { HotkeyRegistrationView } from '@tanstack/hotkeys' /** diff --git a/packages/react-hotkeys/src/useHotkeyScopesState.ts b/packages/react-hotkeys/src/useHotkeyScopesState.ts index 46c05e79..c08eff0b 100644 --- a/packages/react-hotkeys/src/useHotkeyScopesState.ts +++ b/packages/react-hotkeys/src/useHotkeyScopesState.ts @@ -1,7 +1,7 @@ 'use client' -import { useSelector } from '@tanstack/react-store' import { getHotkeyManager } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' import type { HotkeyScopesState } from '@tanstack/hotkeys' /** diff --git a/packages/react-hotkeys/src/useKeyHold.ts b/packages/react-hotkeys/src/useKeyHold.ts index fb41b945..9b75c6f4 100644 --- a/packages/react-hotkeys/src/useKeyHold.ts +++ b/packages/react-hotkeys/src/useKeyHold.ts @@ -1,14 +1,13 @@ 'use client' -import { useSelector } from '@tanstack/react-store' import { getKeyStateTracker } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' import type { IndividualKey } from '@tanstack/hotkeys' /** * React hook that returns whether a specific key is currently being held. * - * This hook uses `useSelector` from `@tanstack/react-store` to subscribe - * to the global KeyStateTracker and uses a selector to determine if + * This hook subscribes to the global KeyStateTracker and uses a selector to determine if * the specified key is held. * * @param key - The key to check (e.g., 'Shift', 'Control', 'A') diff --git a/packages/react-hotkeys/tests/stores.test.tsx b/packages/react-hotkeys/tests/stores.test.tsx new file mode 100644 index 00000000..15416f6f --- /dev/null +++ b/packages/react-hotkeys/tests/stores.test.tsx @@ -0,0 +1,69 @@ +import { afterEach, describe, expect, it } from 'vitest' +import { act, cleanup, renderHook } from '@testing-library/react' +import { useSelector } from '@tanstack/react-store' +import { + HotkeyManager, + KeyStateTracker, + getHotkeyManager, + getKeyStateTracker, +} from '@tanstack/hotkeys' +import { useHotkeyRegistrations, useKeyHold } from '../src' + +function press(type: 'keydown' | 'keyup', key: string) { + act(() => { + document.dispatchEvent(new KeyboardEvent(type, { key, bubbles: true })) + }) +} + +afterEach(() => { + cleanup() + HotkeyManager.resetInstance() + KeyStateTracker.resetInstance() +}) + +describe('stores', () => { + it('work with useSelector from @tanstack/react-store', () => { + const { result } = renderHook(() => ({ + count: useSelector(getHotkeyManager().registrations, (s) => s.size), + held: useSelector(getKeyStateTracker().store, (s) => s.heldKeys), + })) + expect(result.current).toEqual({ count: 0, held: [] }) + act(() => { + getHotkeyManager().register('Mod+K', () => {}) + }) + press('keydown', 'Shift') + expect(result.current).toEqual({ count: 1, held: ['Shift'] }) + }) + + it('re-render hooks only when the selected value changes', () => { + let renders = 0 + const { result } = renderHook(() => { + renders++ + return useKeyHold('Shift') + }) + expect(renders).toBe(1) + press('keydown', 'Control') + press('keyup', 'Control') + expect(renders).toBe(1) + press('keydown', 'Shift') + expect(result.current).toBe(true) + expect(renders).toBe(2) + }) + + it('keep the same selection between renders until the store changes', () => { + act(() => { + getHotkeyManager().register('Mod+K', () => {}) + }) + const { result, rerender } = renderHook(() => useHotkeyRegistrations()) + const first = result.current + expect(first).toHaveLength(1) + press('keydown', 'Shift') + expect(result.current).toBe(first) + act(() => { + getHotkeyManager().register('Mod+J', () => {}) + }) + expect(result.current).toHaveLength(2) + rerender() + expect(result.current).toHaveLength(2) + }) +}) diff --git a/packages/react-hotkeys/tsconfig.docs.json b/packages/react-hotkeys/tsconfig.docs.json index 4912b5ff..bb538b76 100644 --- a/packages/react-hotkeys/tsconfig.docs.json +++ b/packages/react-hotkeys/tsconfig.docs.json @@ -4,7 +4,8 @@ "paths": { "@tanstack/hotkeys": ["../hotkeys/src"], "@tanstack/hotkeys/adapter": ["../hotkeys/src/adapter"] - } + }, + "types": ["node"] }, "include": ["src"] } diff --git a/packages/solid-hotkeys-devtools/package.json b/packages/solid-hotkeys-devtools/package.json index c2d3bef9..de33fc13 100644 --- a/packages/solid-hotkeys-devtools/package.json +++ b/packages/solid-hotkeys-devtools/package.json @@ -49,10 +49,16 @@ "dist" ], "peerDependencies": { + "@tanstack/solid-devtools": ">=0.8.14", "solid-js": "^1.9.15" }, + "peerDependenciesMeta": { + "@tanstack/solid-devtools": { + "optional": true + } + }, "dependencies": { - "@tanstack/devtools-utils": "^0.7.0", + "@tanstack/devtools-utils": "^0.7.2", "@tanstack/hotkeys-devtools": "workspace:*" }, "devDependencies": { diff --git a/packages/solid-hotkeys/package.json b/packages/solid-hotkeys/package.json index c38404ce..f58d6f07 100644 --- a/packages/solid-hotkeys/package.json +++ b/packages/solid-hotkeys/package.json @@ -49,8 +49,7 @@ "skills" ], "dependencies": { - "@tanstack/hotkeys": "workspace:*", - "@tanstack/solid-store": "^0.11.2" + "@tanstack/hotkeys": "workspace:*" }, "devDependencies": { "@solidjs/testing-library": "^0.8.10", diff --git a/packages/solid-hotkeys/src/HotkeysProvider.tsx b/packages/solid-hotkeys/src/HotkeysProvider.tsx index 9def367b..29f0fee0 100644 --- a/packages/solid-hotkeys/src/HotkeysProvider.tsx +++ b/packages/solid-hotkeys/src/HotkeysProvider.tsx @@ -6,15 +6,17 @@ import { onMount, useContext, } from 'solid-js' -import { AppHotkeysStore, publishAppHotkeysStore } from '@tanstack/hotkeys' +import { publishAppHotkeysStore } from '@tanstack/hotkeys' import { activateHotkeysProviderScope, + createAppHotkeysStore, getHotkeysProviderScopeKey, mergeHotkeysProviderDefaults, } from '@tanstack/hotkeys/adapter' import type { JSX, ParentComponent } from 'solid-js' import type { AppHotkeys, + AppHotkeysStore, CustomHotkeys, HotkeyChordRecorderOptions, HotkeySequenceRecorderOptions, @@ -99,7 +101,7 @@ export const HotkeysProvider: ParentComponent = ( ) => { const parent = useContext(HotkeysContext) const store = props.appHotkeys - ? new AppHotkeysStore(props.appHotkeys, { + ? createAppHotkeysStore(props.appHotkeys, { customHotkeys: props.customHotkeys, onCustomHotkeysChange: (custom) => props.onCustomHotkeysChange?.(custom), diff --git a/packages/solid-hotkeys/src/_useSelector.ts b/packages/solid-hotkeys/src/_useSelector.ts new file mode 100644 index 00000000..8574a46e --- /dev/null +++ b/packages/solid-hotkeys/src/_useSelector.ts @@ -0,0 +1,19 @@ +import { createSignal, onCleanup } from 'solid-js' +import type { Accessor } from 'solid-js' +import type { Store } from '@tanstack/hotkeys/adapter' + +/** + * Subscribes to a store until the owner is cleaned up and returns an accessor + * for the selected value, which updates when it changes (by `===`). + */ +export function useSelector( + store: Pick, 'get' | 'subscribe'>, + selector: (state: TState) => TSelected, +): Accessor { + const [selected, setSelected] = createSignal(selector(store.get())) + const { unsubscribe } = store.subscribe((state) => { + setSelected(() => selector(state)) + }) + onCleanup(unsubscribe) + return selected +} diff --git a/packages/solid-hotkeys/src/createHeldKeyCodes.ts b/packages/solid-hotkeys/src/createHeldKeyCodes.ts index 8e6f9b3e..ae7df3b5 100644 --- a/packages/solid-hotkeys/src/createHeldKeyCodes.ts +++ b/packages/solid-hotkeys/src/createHeldKeyCodes.ts @@ -1,5 +1,5 @@ -import { useSelector } from '@tanstack/solid-store' import { getKeyStateTracker } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' /** * SolidJS primitive that returns a signal of a map from currently held key names to their physical `event.code` values. @@ -7,8 +7,7 @@ import { getKeyStateTracker } from '@tanstack/hotkeys' * This is useful for debugging which physical key was pressed (e.g. distinguishing * left vs right Shift via "ShiftLeft" / "ShiftRight"). * - * This primitive uses `useSelector` from `@tanstack/solid-store` to subscribe - * to the global KeyStateTracker. + * This primitive subscribes to the global KeyStateTracker. * * @returns Signal accessor for record mapping normalized key names to their `event.code` values * diff --git a/packages/solid-hotkeys/src/createHeldKeys.ts b/packages/solid-hotkeys/src/createHeldKeys.ts index 2e93f406..9bc50042 100644 --- a/packages/solid-hotkeys/src/createHeldKeys.ts +++ b/packages/solid-hotkeys/src/createHeldKeys.ts @@ -1,11 +1,10 @@ -import { useSelector } from '@tanstack/solid-store' import { getKeyStateTracker } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' /** * SolidJS primitive that returns a signal of currently held keyboard keys. * - * This primitive uses `useSelector` from `@tanstack/solid-store` to subscribe - * to the global KeyStateTracker and updates whenever keys are pressed + * This primitive subscribes to the global KeyStateTracker and updates whenever keys are pressed * or released. * * @returns Signal accessor for array of currently held key names diff --git a/packages/solid-hotkeys/src/createHotkeyHint.ts b/packages/solid-hotkeys/src/createHotkeyHint.ts index eb560864..7c9ef7cd 100644 --- a/packages/solid-hotkeys/src/createHotkeyHint.ts +++ b/packages/solid-hotkeys/src/createHotkeyHint.ts @@ -1,5 +1,4 @@ import { createMemo } from 'solid-js' -import { useSelector } from '@tanstack/solid-store' import { getHotkeyManager, getKeyStateTracker, @@ -7,6 +6,7 @@ import { matchesHeldModifiers, resolveAppHotkey, } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' import { useAppHotkeysStoreSource } from './defaultOptions' import type { AppHotkey, diff --git a/packages/solid-hotkeys/src/createHotkeyRecorder.ts b/packages/solid-hotkeys/src/createHotkeyRecorder.ts index 1352b08c..cf003903 100644 --- a/packages/solid-hotkeys/src/createHotkeyRecorder.ts +++ b/packages/solid-hotkeys/src/createHotkeyRecorder.ts @@ -1,6 +1,6 @@ import { createEffect, onCleanup } from 'solid-js' -import { useSelector } from '@tanstack/solid-store' import { HotkeyRecorder } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' import { useDefaultHotkeysOptionsSource } from './defaultOptions' import type { Hotkey, diff --git a/packages/solid-hotkeys/src/createHotkeyRegistrations.ts b/packages/solid-hotkeys/src/createHotkeyRegistrations.ts index a3dd1bb2..853ff386 100644 --- a/packages/solid-hotkeys/src/createHotkeyRegistrations.ts +++ b/packages/solid-hotkeys/src/createHotkeyRegistrations.ts @@ -1,5 +1,5 @@ -import { useSelector } from '@tanstack/solid-store' import { getHotkeyManager, toHotkeyRegistrationView } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' import type { HotkeyRegistrationView } from '@tanstack/hotkeys' /** diff --git a/packages/solid-hotkeys/src/createHotkeyScopesState.ts b/packages/solid-hotkeys/src/createHotkeyScopesState.ts index 4d4a9d2a..c83faef0 100644 --- a/packages/solid-hotkeys/src/createHotkeyScopesState.ts +++ b/packages/solid-hotkeys/src/createHotkeyScopesState.ts @@ -1,5 +1,5 @@ -import { useSelector } from '@tanstack/solid-store' import { getHotkeyManager } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' import type { HotkeyScopesState } from '@tanstack/hotkeys' /** diff --git a/packages/solid-hotkeys/src/createKeyHold.ts b/packages/solid-hotkeys/src/createKeyHold.ts index 6ecd6a66..0c8704ea 100644 --- a/packages/solid-hotkeys/src/createKeyHold.ts +++ b/packages/solid-hotkeys/src/createKeyHold.ts @@ -1,13 +1,12 @@ import { createMemo } from 'solid-js' -import { useSelector } from '@tanstack/solid-store' import { getKeyStateTracker } from '@tanstack/hotkeys' +import { useSelector } from './_useSelector' import type { IndividualKey } from '@tanstack/hotkeys' /** * SolidJS primitive that returns whether a specific key is currently being held. * - * This primitive uses `useSelector` from `@tanstack/solid-store` to subscribe - * to the global KeyStateTracker and uses a selector to determine if the + * This primitive subscribes to the global KeyStateTracker and uses a selector to determine if the * specified key is held. * * @param key - The key to check (e.g., 'Shift', 'Control', 'A') - can be an accessor function diff --git a/packages/solid-hotkeys/src/defaultOptions.ts b/packages/solid-hotkeys/src/defaultOptions.ts index 7c3703fc..12a2177c 100644 --- a/packages/solid-hotkeys/src/defaultOptions.ts +++ b/packages/solid-hotkeys/src/defaultOptions.ts @@ -1,4 +1,5 @@ -import { Store, useSelector } from '@tanstack/solid-store' +import { createStore } from '@tanstack/hotkeys/adapter' +import { useSelector } from './_useSelector' import { useHotkeysContext } from './HotkeysProvider' import type { AppHotkeysState, AppHotkeysStore } from '@tanstack/hotkeys' @@ -8,7 +9,7 @@ export function useDefaultHotkeysOptionsSource() { return () => context?.defaultOptions ?? {} } -const NO_APP_HOTKEYS = new Store(null) +const NO_APP_HOTKEYS = createStore(null) /** * The provider's app hotkeys store and an accessor that tracks its state, so diff --git a/packages/solid-hotkeys/tsconfig.docs.json b/packages/solid-hotkeys/tsconfig.docs.json index 4912b5ff..bb538b76 100644 --- a/packages/solid-hotkeys/tsconfig.docs.json +++ b/packages/solid-hotkeys/tsconfig.docs.json @@ -4,7 +4,8 @@ "paths": { "@tanstack/hotkeys": ["../hotkeys/src"], "@tanstack/hotkeys/adapter": ["../hotkeys/src/adapter"] - } + }, + "types": ["node"] }, "include": ["src"] } diff --git a/packages/svelte-hotkeys-devtools/package.json b/packages/svelte-hotkeys-devtools/package.json index 5c11f74e..8090f5ae 100644 --- a/packages/svelte-hotkeys-devtools/package.json +++ b/packages/svelte-hotkeys-devtools/package.json @@ -56,10 +56,16 @@ "dist" ], "peerDependencies": { + "@tanstack/svelte-devtools": ">=0.1.8", "svelte": "^5.40.0" }, + "peerDependenciesMeta": { + "@tanstack/svelte-devtools": { + "optional": true + } + }, "dependencies": { - "@tanstack/devtools-utils": "^0.7.0", + "@tanstack/devtools-utils": "^0.7.2", "@tanstack/hotkeys-devtools": "workspace:*" }, "devDependencies": { diff --git a/packages/svelte-hotkeys/src/HotkeysCtx.ts b/packages/svelte-hotkeys/src/HotkeysCtx.ts index 875a6aab..b28154b6 100644 --- a/packages/svelte-hotkeys/src/HotkeysCtx.ts +++ b/packages/svelte-hotkeys/src/HotkeysCtx.ts @@ -1,12 +1,14 @@ import { createContext, onMount } from 'svelte' -import { AppHotkeysStore, publishAppHotkeysStore } from '@tanstack/hotkeys' +import { publishAppHotkeysStore } from '@tanstack/hotkeys' import { + createAppHotkeysStore, getHotkeysProviderScopeKey, mergeHotkeysProviderDefaults, } from '@tanstack/hotkeys/adapter' import { activateScopeWhileMounted } from './internal.svelte.js' import type { AppHotkeys, + AppHotkeysStore, CustomHotkeys, HotkeyChordRecorderOptions, HotkeySequenceRecorderOptions, @@ -99,7 +101,7 @@ export function setHotkeysContextSource( const parent = getHotkeysContext() const { appHotkeys, customHotkeys } = source() const store = appHotkeys - ? new AppHotkeysStore(appHotkeys, { + ? createAppHotkeysStore(appHotkeys, { customHotkeys, onCustomHotkeysChange: (custom) => source().onCustomHotkeysChange?.(custom), diff --git a/packages/svelte-hotkeys/tsconfig.docs.json b/packages/svelte-hotkeys/tsconfig.docs.json index 4912b5ff..bb538b76 100644 --- a/packages/svelte-hotkeys/tsconfig.docs.json +++ b/packages/svelte-hotkeys/tsconfig.docs.json @@ -4,7 +4,8 @@ "paths": { "@tanstack/hotkeys": ["../hotkeys/src"], "@tanstack/hotkeys/adapter": ["../hotkeys/src/adapter"] - } + }, + "types": ["node"] }, "include": ["src"] } diff --git a/packages/vue-hotkeys-devtools/package.json b/packages/vue-hotkeys-devtools/package.json index 4a1d239d..dabdaf4d 100644 --- a/packages/vue-hotkeys-devtools/package.json +++ b/packages/vue-hotkeys-devtools/package.json @@ -49,8 +49,14 @@ "dist" ], "peerDependencies": { + "@tanstack/vue-devtools": ">=0.2.28", "vue": ">=3.3.0" }, + "peerDependenciesMeta": { + "@tanstack/vue-devtools": { + "optional": true + } + }, "dependencies": { "@tanstack/hotkeys-devtools": "workspace:*" }, diff --git a/packages/vue-hotkeys/package.json b/packages/vue-hotkeys/package.json index be279169..f9a12d4a 100644 --- a/packages/vue-hotkeys/package.json +++ b/packages/vue-hotkeys/package.json @@ -49,8 +49,7 @@ "skills" ], "dependencies": { - "@tanstack/hotkeys": "workspace:*", - "@tanstack/vue-store": "^0.11.2" + "@tanstack/hotkeys": "workspace:*" }, "devDependencies": { "@vitejs/plugin-vue": "^6.0.9", diff --git a/packages/vue-hotkeys/src/HotkeysProviderContext.ts b/packages/vue-hotkeys/src/HotkeysProviderContext.ts index 558d4bc5..38c6a0eb 100644 --- a/packages/vue-hotkeys/src/HotkeysProviderContext.ts +++ b/packages/vue-hotkeys/src/HotkeysProviderContext.ts @@ -8,15 +8,17 @@ import { toValue, watch, } from 'vue' -import { AppHotkeysStore, publishAppHotkeysStore } from '@tanstack/hotkeys' +import { publishAppHotkeysStore } from '@tanstack/hotkeys' import { activateHotkeysProviderScope, + createAppHotkeysStore, getHotkeysProviderScopeKey, mergeHotkeysProviderDefaults, } from '@tanstack/hotkeys/adapter' import type { InjectionKey, MaybeRefOrGetter } from 'vue' import type { AppHotkeys, + AppHotkeysStore, CustomHotkeys, HotkeyChordRecorderOptions, HotkeySequenceRecorderOptions, @@ -102,7 +104,7 @@ export function provideHotkeysContext( const parent = inject(HotkeysContext, null) const appHotkeys = toValue(options.appHotkeys) const store = appHotkeys - ? new AppHotkeysStore(appHotkeys, { + ? createAppHotkeysStore(appHotkeys, { customHotkeys: options.customHotkeys, onCustomHotkeysChange: (custom) => options.onCustomHotkeysChange?.(custom), diff --git a/packages/vue-hotkeys/src/useHeldKeys.ts b/packages/vue-hotkeys/src/useHeldKeys.ts index dca80d16..d0a8ffb5 100644 --- a/packages/vue-hotkeys/src/useHeldKeys.ts +++ b/packages/vue-hotkeys/src/useHeldKeys.ts @@ -5,8 +5,7 @@ import type { Ref } from 'vue' /** * Vue composable that returns a reactive ref of currently held keyboard keys. * - * This composable uses `useSelector` from `@tanstack/vue-store` to subscribe - * to the global KeyStateTracker and updates whenever keys are pressed + * This composable subscribes to the global KeyStateTracker and updates whenever keys are pressed * or released. * * @returns Reactive ref containing array of currently held key names diff --git a/packages/vue-hotkeys/src/useStoreSelector.ts b/packages/vue-hotkeys/src/useStoreSelector.ts index fb57c6fc..1904fa8b 100644 --- a/packages/vue-hotkeys/src/useStoreSelector.ts +++ b/packages/vue-hotkeys/src/useStoreSelector.ts @@ -1,17 +1,24 @@ -import { shallowRef } from 'vue' -import { useSelector } from '@tanstack/vue-store' +import { onScopeDispose, shallowReadonly, shallowRef } from 'vue' import type { Ref } from 'vue' +import type { Store } from '@tanstack/hotkeys/adapter' /** - * `useSelector` that does not subscribe during server rendering. Vue never - * disposes component scopes on the server, so a subscription to a shared - * store would never be released. The server gets the current value instead. + * Subscribes to a store until the effect scope is disposed and returns a ref + * to the selected value, which updates when it changes (by `===`). + * + * Does not subscribe during server rendering. Vue never disposes component + * scopes on the server, so a subscription to a shared store would never be + * released. The server gets the current value instead. */ export function useStoreSelector( - source: Parameters>[0], + store: Pick, 'get' | 'subscribe'>, selector: (state: TState) => TSelected, ): Readonly> { - return typeof document === 'undefined' - ? shallowRef(selector(source.get())) - : useSelector(source, selector) + const selected = shallowRef(selector(store.get())) + if (typeof document === 'undefined') return selected + const { unsubscribe } = store.subscribe((state) => { + selected.value = selector(state) + }) + onScopeDispose(unsubscribe) + return shallowReadonly(selected) } diff --git a/packages/vue-hotkeys/tests/ssr.test.ts b/packages/vue-hotkeys/tests/ssr.test.ts index da8a30f5..d90a18b6 100644 --- a/packages/vue-hotkeys/tests/ssr.test.ts +++ b/packages/vue-hotkeys/tests/ssr.test.ts @@ -16,41 +16,65 @@ import { useHotkeyRecorder } from '../src/useHotkeyRecorder' import { useHotkeyRegistrations } from '../src/useHotkeyRegistrations' import { useHotkeyScopesState } from '../src/useHotkeyScopesState' import { useKeyHold } from '../src/useKeyHold' -import type * as VueStore from '@tanstack/vue-store' -// Counts live useSelector subscriptions on any store, including stores that -// are private to the adapter. -const live = vi.hoisted(() => ({ count: 0 })) -vi.mock('@tanstack/vue-store', async (importOriginal) => { - const mod = await importOriginal() +// Counts live subscriptions made by useStoreSelector on any store, including +// stores that are private to the adapter. +const selector = vi.hoisted(() => ({ count: 0 })) +vi.mock('../src/useStoreSelector', async (importOriginal) => { + const mod = await importOriginal() return { - ...mod, - useSelector: ((source, selector, options) => - mod.useSelector( + useStoreSelector: ((source, select) => + mod.useStoreSelector( { get: () => source.get(), subscribe: (listener: Parameters[0]) => { - live.count++ + selector.count++ const subscription = source.subscribe(listener) return { unsubscribe: () => { - live.count-- + selector.count-- subscription.unsubscribe() }, } }, }, - selector, - options, - )) as typeof mod.useSelector, + select, + )) as typeof mod.useStoreSelector, } }) -/** Live subscribers on a store, read from its atom's subscriber list. */ +/** Live subscribers on each store, counted from when tracking starts. */ +const live = new WeakMap() + +function trackSubscribers(store: { + subscribe: (listener: () => void) => { unsubscribe: () => void } +}): void { + const subscribe = store.subscribe.bind(store) + live.set(store, 0) + store.subscribe = (listener) => { + live.set(store, live.get(store)! + 1) + const subscription = subscribe(listener) + let active = true + return { + unsubscribe: () => { + if (active) live.set(store, live.get(store)! - 1) + active = false + subscription.unsubscribe() + }, + } + } +} + function subscriberCount(store: object): number { - let count = 0 - for (let link = (store as any).atom.subs; link; link = link.nextSub) count++ - return count + return live.get(store) ?? 0 +} + +for (const store of [ + getKeyStateTracker().store, + getHotkeyManager().registrations, + getHotkeyManager().scopes, +]) { + trackSubscribers(store) } function snapshot() { @@ -59,7 +83,7 @@ function snapshot() { tracker: subscriberCount(getKeyStateTracker().store), registrations: subscriberCount(manager.registrations), scopes: subscriberCount(manager.scopes), - useSelector: live.count, + useStoreSelector: selector.count, } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0ac45276..77cef3ea 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -494,8 +494,8 @@ importers: specifier: ^22.2.1 version: 22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(@angular/platform-browser@22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3)))(rxjs@7.8.2) '@tanstack/angular-devtools': - specifier: ^0.0.12 - version: 0.0.12(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.0.13 + version: 0.0.13(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/angular-hotkeys': specifier: workspace:* version: link:../../../packages/angular-hotkeys @@ -570,8 +570,8 @@ importers: specifier: ^22.2.1 version: 22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(@angular/platform-browser@22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3)))(rxjs@7.8.2) '@tanstack/angular-devtools': - specifier: ^0.0.12 - version: 0.0.12(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.0.13 + version: 0.0.13(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/angular-hotkeys': specifier: workspace:* version: link:../../../packages/angular-hotkeys @@ -646,8 +646,8 @@ importers: specifier: ^22.2.1 version: 22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(@angular/platform-browser@22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3)))(rxjs@7.8.2) '@tanstack/angular-devtools': - specifier: ^0.0.12 - version: 0.0.12(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.0.13 + version: 0.0.13(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/angular-hotkeys': specifier: workspace:* version: link:../../../packages/angular-hotkeys @@ -722,8 +722,8 @@ importers: specifier: ^22.2.1 version: 22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(@angular/platform-browser@22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3)))(rxjs@7.8.2) '@tanstack/angular-devtools': - specifier: ^0.0.12 - version: 0.0.12(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.0.13 + version: 0.0.13(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/angular-hotkeys': specifier: workspace:* version: link:../../../packages/angular-hotkeys @@ -798,8 +798,8 @@ importers: specifier: ^22.2.1 version: 22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(@angular/platform-browser@22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3)))(rxjs@7.8.2) '@tanstack/angular-devtools': - specifier: ^0.0.12 - version: 0.0.12(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.0.13 + version: 0.0.13(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/angular-hotkeys': specifier: workspace:* version: link:../../../packages/angular-hotkeys @@ -874,8 +874,8 @@ importers: specifier: ^22.2.1 version: 22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(@angular/platform-browser@22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3)))(rxjs@7.8.2) '@tanstack/angular-devtools': - specifier: ^0.0.12 - version: 0.0.12(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.0.13 + version: 0.0.13(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/angular-hotkeys': specifier: workspace:* version: link:../../../packages/angular-hotkeys @@ -950,8 +950,8 @@ importers: specifier: ^22.2.1 version: 22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(@angular/platform-browser@22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3)))(rxjs@7.8.2) '@tanstack/angular-devtools': - specifier: ^0.0.12 - version: 0.0.12(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.0.13 + version: 0.0.13(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/angular-hotkeys': specifier: workspace:* version: link:../../../packages/angular-hotkeys @@ -1026,8 +1026,8 @@ importers: specifier: ^22.2.1 version: 22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(@angular/platform-browser@22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3)))(rxjs@7.8.2) '@tanstack/angular-devtools': - specifier: ^0.0.12 - version: 0.0.12(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.0.13 + version: 0.0.13(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/angular-hotkeys': specifier: workspace:* version: link:../../../packages/angular-hotkeys @@ -1102,8 +1102,8 @@ importers: specifier: ^22.2.1 version: 22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(@angular/platform-browser@22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3)))(rxjs@7.8.2) '@tanstack/angular-devtools': - specifier: ^0.0.12 - version: 0.0.12(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.0.13 + version: 0.0.13(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/angular-hotkeys': specifier: workspace:* version: link:../../../packages/angular-hotkeys @@ -1178,8 +1178,8 @@ importers: specifier: ^22.2.1 version: 22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(@angular/platform-browser@22.2.1(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3)))(rxjs@7.8.2) '@tanstack/angular-devtools': - specifier: ^0.0.12 - version: 0.0.12(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.0.13 + version: 0.0.13(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/angular-hotkeys': specifier: workspace:* version: link:../../../packages/angular-hotkeys @@ -2184,8 +2184,8 @@ importers: specifier: ^2.10.6 version: 2.10.6(@babel/core@7.29.7(supports-color@8.1.1))(preact@11.0.1)(rollup@4.57.1)(supports-color@8.1.1)(vite@8.3.2(@types/node@26.6.4)(esbuild@0.28.0)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.104.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) '@tanstack/preact-devtools': - specifier: 0.10.13 - version: 0.10.13(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) + specifier: 0.10.15 + version: 0.10.15(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) '@tanstack/preact-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/preact-hotkeys-devtools @@ -2209,8 +2209,8 @@ importers: specifier: ^2.10.6 version: 2.10.6(@babel/core@7.29.7(supports-color@8.1.1))(preact@11.0.1)(rollup@4.57.1)(supports-color@8.1.1)(vite@8.3.2(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.6.1)(less@4.9.1(supports-color@8.1.1))(sass-embedded@1.104.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.9.1)) '@tanstack/preact-devtools': - specifier: 0.10.13 - version: 0.10.13(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) + specifier: 0.10.15 + version: 0.10.15(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) '@tanstack/preact-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/preact-hotkeys-devtools @@ -2234,8 +2234,8 @@ importers: specifier: ^2.10.6 version: 2.10.6(@babel/core@7.29.7(supports-color@8.1.1))(preact@11.0.1)(rollup@4.57.1)(supports-color@8.1.1)(vite@8.3.2(@types/node@26.6.4)(esbuild@0.28.0)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.104.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) '@tanstack/preact-devtools': - specifier: 0.10.13 - version: 0.10.13(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) + specifier: 0.10.15 + version: 0.10.15(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) '@tanstack/preact-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/preact-hotkeys-devtools @@ -2259,8 +2259,8 @@ importers: specifier: ^2.10.6 version: 2.10.6(@babel/core@7.29.7(supports-color@8.1.1))(preact@11.0.1)(rollup@4.57.1)(supports-color@8.1.1)(vite@8.3.2(@types/node@26.6.4)(esbuild@0.28.0)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.104.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) '@tanstack/preact-devtools': - specifier: 0.10.13 - version: 0.10.13(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) + specifier: 0.10.15 + version: 0.10.15(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) '@tanstack/preact-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/preact-hotkeys-devtools @@ -2284,8 +2284,8 @@ importers: specifier: ^2.10.6 version: 2.10.6(@babel/core@7.29.7(supports-color@8.1.1))(preact@11.0.1)(rollup@4.57.1)(supports-color@8.1.1)(vite@8.3.2(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.6.1)(less@4.9.1(supports-color@8.1.1))(sass-embedded@1.104.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.9.1)) '@tanstack/preact-devtools': - specifier: 0.10.13 - version: 0.10.13(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) + specifier: 0.10.15 + version: 0.10.15(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) '@tanstack/preact-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/preact-hotkeys-devtools @@ -2309,8 +2309,8 @@ importers: specifier: ^2.10.6 version: 2.10.6(@babel/core@7.29.7(supports-color@8.1.1))(preact@11.0.1)(rollup@4.57.1)(supports-color@8.1.1)(vite@8.3.2(@types/node@26.6.4)(esbuild@0.28.0)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.104.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) '@tanstack/preact-devtools': - specifier: 0.10.13 - version: 0.10.13(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) + specifier: 0.10.15 + version: 0.10.15(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) '@tanstack/preact-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/preact-hotkeys-devtools @@ -2334,8 +2334,8 @@ importers: specifier: ^2.10.6 version: 2.10.6(@babel/core@7.29.7(supports-color@8.1.1))(preact@11.0.1)(rollup@4.57.1)(supports-color@8.1.1)(vite@8.3.2(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.6.1)(less@4.9.1(supports-color@8.1.1))(sass-embedded@1.104.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.9.1)) '@tanstack/preact-devtools': - specifier: 0.10.13 - version: 0.10.13(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) + specifier: 0.10.15 + version: 0.10.15(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) '@tanstack/preact-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/preact-hotkeys-devtools @@ -2359,8 +2359,8 @@ importers: specifier: ^2.10.6 version: 2.10.6(@babel/core@7.29.7(supports-color@8.1.1))(preact@11.0.1)(rollup@4.57.1)(supports-color@8.1.1)(vite@8.3.2(@types/node@26.6.4)(esbuild@0.28.0)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.104.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) '@tanstack/preact-devtools': - specifier: 0.10.13 - version: 0.10.13(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) + specifier: 0.10.15 + version: 0.10.15(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) '@tanstack/preact-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/preact-hotkeys-devtools @@ -2384,8 +2384,8 @@ importers: specifier: ^2.10.6 version: 2.10.6(@babel/core@7.29.7(supports-color@8.1.1))(preact@11.0.1)(rollup@4.57.1)(supports-color@8.1.1)(vite@8.3.2(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.6.1)(less@4.9.1(supports-color@8.1.1))(sass-embedded@1.104.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.9.1)) '@tanstack/preact-devtools': - specifier: 0.10.13 - version: 0.10.13(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) + specifier: 0.10.15 + version: 0.10.15(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) '@tanstack/preact-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/preact-hotkeys-devtools @@ -2409,8 +2409,8 @@ importers: specifier: ^2.10.6 version: 2.10.6(@babel/core@7.29.7(supports-color@8.1.1))(preact@11.0.1)(rollup@4.57.1)(supports-color@8.1.1)(vite@8.3.2(@types/node@26.6.4)(esbuild@0.28.0)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.104.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.8.2)) '@tanstack/preact-devtools': - specifier: 0.10.13 - version: 0.10.13(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) + specifier: 0.10.15 + version: 0.10.15(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) '@tanstack/preact-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/preact-hotkeys-devtools @@ -2437,8 +2437,8 @@ importers: version: 19.3.0(react@19.3.0) devDependencies: '@tanstack/react-devtools': - specifier: 0.10.13 - version: 0.10.13(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) + specifier: 0.10.14 + version: 0.10.14(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) '@tanstack/react-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/react-hotkeys-devtools @@ -2471,8 +2471,8 @@ importers: version: 19.3.0(react@19.3.0) devDependencies: '@tanstack/react-devtools': - specifier: 0.10.13 - version: 0.10.13(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) + specifier: 0.10.14 + version: 0.10.14(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) '@tanstack/react-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/react-hotkeys-devtools @@ -2505,8 +2505,8 @@ importers: version: 19.3.0(react@19.3.0) devDependencies: '@tanstack/react-devtools': - specifier: 0.10.13 - version: 0.10.13(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) + specifier: 0.10.14 + version: 0.10.14(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) '@tanstack/react-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/react-hotkeys-devtools @@ -2539,8 +2539,8 @@ importers: version: 19.3.0(react@19.3.0) devDependencies: '@tanstack/react-devtools': - specifier: 0.10.13 - version: 0.10.13(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) + specifier: 0.10.14 + version: 0.10.14(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) '@tanstack/react-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/react-hotkeys-devtools @@ -2573,8 +2573,8 @@ importers: version: 19.3.0(react@19.3.0) devDependencies: '@tanstack/react-devtools': - specifier: 0.10.13 - version: 0.10.13(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) + specifier: 0.10.14 + version: 0.10.14(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) '@tanstack/react-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/react-hotkeys-devtools @@ -2607,8 +2607,8 @@ importers: version: 19.3.0(react@19.3.0) devDependencies: '@tanstack/react-devtools': - specifier: 0.10.13 - version: 0.10.13(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) + specifier: 0.10.14 + version: 0.10.14(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) '@tanstack/react-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/react-hotkeys-devtools @@ -2641,8 +2641,8 @@ importers: version: 19.3.0(react@19.3.0) devDependencies: '@tanstack/react-devtools': - specifier: 0.10.13 - version: 0.10.13(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) + specifier: 0.10.14 + version: 0.10.14(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) '@tanstack/react-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/react-hotkeys-devtools @@ -2675,8 +2675,8 @@ importers: version: 19.3.0(react@19.3.0) devDependencies: '@tanstack/react-devtools': - specifier: 0.10.13 - version: 0.10.13(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) + specifier: 0.10.14 + version: 0.10.14(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) '@tanstack/react-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/react-hotkeys-devtools @@ -2709,8 +2709,8 @@ importers: version: 19.3.0(react@19.3.0) devDependencies: '@tanstack/react-devtools': - specifier: 0.10.13 - version: 0.10.13(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) + specifier: 0.10.14 + version: 0.10.14(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) '@tanstack/react-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/react-hotkeys-devtools @@ -2743,8 +2743,8 @@ importers: version: 19.3.0(react@19.3.0) devDependencies: '@tanstack/react-devtools': - specifier: 0.10.13 - version: 0.10.13(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) + specifier: 0.10.14 + version: 0.10.14(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) '@tanstack/react-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/react-hotkeys-devtools @@ -2767,8 +2767,8 @@ importers: examples/solid/createHeldKeys: dependencies: '@tanstack/solid-devtools': - specifier: 0.8.13 - version: 0.8.13(csstype@3.2.3)(solid-js@1.9.15) + specifier: 0.8.14 + version: 0.8.14(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/solid-hotkeys': specifier: workspace:* version: link:../../../packages/solid-hotkeys @@ -2789,8 +2789,8 @@ importers: examples/solid/createHotkey: dependencies: '@tanstack/solid-devtools': - specifier: 0.8.13 - version: 0.8.13(csstype@3.2.3)(solid-js@1.9.15) + specifier: 0.8.14 + version: 0.8.14(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/solid-hotkeys': specifier: workspace:* version: link:../../../packages/solid-hotkeys @@ -2817,8 +2817,8 @@ importers: examples/solid/createHotkey-sequences: dependencies: '@tanstack/solid-devtools': - specifier: 0.8.13 - version: 0.8.13(csstype@3.2.3)(solid-js@1.9.15) + specifier: 0.8.14 + version: 0.8.14(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/solid-hotkeys': specifier: workspace:* version: link:../../../packages/solid-hotkeys @@ -2839,8 +2839,8 @@ importers: examples/solid/createHotkeyRecorder: dependencies: '@tanstack/solid-devtools': - specifier: 0.8.13 - version: 0.8.13(csstype@3.2.3)(solid-js@1.9.15) + specifier: 0.8.14 + version: 0.8.14(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/solid-hotkeys': specifier: workspace:* version: link:../../../packages/solid-hotkeys @@ -2861,8 +2861,8 @@ importers: examples/solid/createHotkeyRecorder-sequences: dependencies: '@tanstack/solid-devtools': - specifier: 0.8.13 - version: 0.8.13(csstype@3.2.3)(solid-js@1.9.15) + specifier: 0.8.14 + version: 0.8.14(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/solid-hotkeys': specifier: workspace:* version: link:../../../packages/solid-hotkeys @@ -2883,8 +2883,8 @@ importers: examples/solid/createHotkeys: dependencies: '@tanstack/solid-devtools': - specifier: 0.8.13 - version: 0.8.13(csstype@3.2.3)(solid-js@1.9.15) + specifier: 0.8.14 + version: 0.8.14(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/solid-hotkeys': specifier: workspace:* version: link:../../../packages/solid-hotkeys @@ -2911,8 +2911,8 @@ importers: examples/solid/createHotkeys-sequences: dependencies: '@tanstack/solid-devtools': - specifier: 0.8.13 - version: 0.8.13(csstype@3.2.3)(solid-js@1.9.15) + specifier: 0.8.14 + version: 0.8.14(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/solid-hotkeys': specifier: workspace:* version: link:../../../packages/solid-hotkeys @@ -2933,8 +2933,8 @@ importers: examples/solid/createKeyHold: dependencies: '@tanstack/solid-devtools': - specifier: 0.8.13 - version: 0.8.13(csstype@3.2.3)(solid-js@1.9.15) + specifier: 0.8.14 + version: 0.8.14(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/solid-hotkeys': specifier: workspace:* version: link:../../../packages/solid-hotkeys @@ -2955,8 +2955,8 @@ importers: examples/solid/kitchen-sink: dependencies: '@tanstack/solid-devtools': - specifier: 0.8.13 - version: 0.8.13(csstype@3.2.3)(solid-js@1.9.15) + specifier: 0.8.14 + version: 0.8.14(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/solid-hotkeys': specifier: workspace:* version: link:../../../packages/solid-hotkeys @@ -2983,8 +2983,8 @@ importers: examples/solid/scopes: dependencies: '@tanstack/solid-devtools': - specifier: 0.8.13 - version: 0.8.13(csstype@3.2.3)(solid-js@1.9.15) + specifier: 0.8.14 + version: 0.8.14(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/solid-hotkeys': specifier: workspace:* version: link:../../../packages/solid-hotkeys @@ -3011,8 +3011,8 @@ importers: examples/svelte/create-hotkey: dependencies: '@tanstack/svelte-devtools': - specifier: ^0.1.7 - version: 0.1.7(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0)) + specifier: ^0.1.8 + version: 0.1.8(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0)) '@tanstack/svelte-hotkeys': specifier: workspace:* version: link:../../../packages/svelte-hotkeys @@ -3036,8 +3036,8 @@ importers: examples/svelte/create-hotkey-recorder: dependencies: '@tanstack/svelte-devtools': - specifier: ^0.1.7 - version: 0.1.7(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0)) + specifier: ^0.1.8 + version: 0.1.8(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0)) '@tanstack/svelte-hotkeys': specifier: workspace:* version: link:../../../packages/svelte-hotkeys @@ -3061,8 +3061,8 @@ importers: examples/svelte/create-hotkey-recorder-sequences: dependencies: '@tanstack/svelte-devtools': - specifier: ^0.1.7 - version: 0.1.7(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1)) + specifier: ^0.1.8 + version: 0.1.8(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1)) '@tanstack/svelte-hotkeys': specifier: workspace:* version: link:../../../packages/svelte-hotkeys @@ -3086,8 +3086,8 @@ importers: examples/svelte/create-hotkey-sequences: dependencies: '@tanstack/svelte-devtools': - specifier: ^0.1.7 - version: 0.1.7(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0)) + specifier: ^0.1.8 + version: 0.1.8(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0)) '@tanstack/svelte-hotkeys': specifier: workspace:* version: link:../../../packages/svelte-hotkeys @@ -3111,8 +3111,8 @@ importers: examples/svelte/create-hotkeys: dependencies: '@tanstack/svelte-devtools': - specifier: ^0.1.7 - version: 0.1.7(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0)) + specifier: ^0.1.8 + version: 0.1.8(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0)) '@tanstack/svelte-hotkeys': specifier: workspace:* version: link:../../../packages/svelte-hotkeys @@ -3136,8 +3136,8 @@ importers: examples/svelte/create-hotkeys-sequences: dependencies: '@tanstack/svelte-devtools': - specifier: ^0.1.7 - version: 0.1.7(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1)) + specifier: ^0.1.8 + version: 0.1.8(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1)) '@tanstack/svelte-hotkeys': specifier: workspace:* version: link:../../../packages/svelte-hotkeys @@ -3161,8 +3161,8 @@ importers: examples/svelte/get-held-keys: dependencies: '@tanstack/svelte-devtools': - specifier: ^0.1.7 - version: 0.1.7(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0)) + specifier: ^0.1.8 + version: 0.1.8(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0)) '@tanstack/svelte-hotkeys': specifier: workspace:* version: link:../../../packages/svelte-hotkeys @@ -3186,8 +3186,8 @@ importers: examples/svelte/get-is-key-held: dependencies: '@tanstack/svelte-devtools': - specifier: ^0.1.7 - version: 0.1.7(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0)) + specifier: ^0.1.8 + version: 0.1.8(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0)) '@tanstack/svelte-hotkeys': specifier: workspace:* version: link:../../../packages/svelte-hotkeys @@ -3211,8 +3211,8 @@ importers: examples/svelte/kitchen-sink: dependencies: '@tanstack/svelte-devtools': - specifier: ^0.1.7 - version: 0.1.7(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0)) + specifier: ^0.1.8 + version: 0.1.8(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0)) '@tanstack/svelte-hotkeys': specifier: workspace:* version: link:../../../packages/svelte-hotkeys @@ -3236,8 +3236,8 @@ importers: examples/svelte/scopes: dependencies: '@tanstack/svelte-devtools': - specifier: ^0.1.7 - version: 0.1.7(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1)) + specifier: ^0.1.8 + version: 0.1.8(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1)) '@tanstack/svelte-hotkeys': specifier: workspace:* version: link:../../../packages/svelte-hotkeys @@ -3281,8 +3281,8 @@ importers: version: 3.5.43(typescript@6.0.3) devDependencies: '@tanstack/vue-devtools': - specifier: ^0.2.27 - version: 0.2.27(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.2.28 + version: 0.2.28(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/vue-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/vue-hotkeys-devtools @@ -3312,8 +3312,8 @@ importers: version: 3.5.43(typescript@6.0.3) devDependencies: '@tanstack/vue-devtools': - specifier: ^0.2.27 - version: 0.2.27(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.2.28 + version: 0.2.28(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/vue-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/vue-hotkeys-devtools @@ -3343,8 +3343,8 @@ importers: version: 3.5.43(typescript@6.0.3) devDependencies: '@tanstack/vue-devtools': - specifier: ^0.2.27 - version: 0.2.27(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.2.28 + version: 0.2.28(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/vue-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/vue-hotkeys-devtools @@ -3374,8 +3374,8 @@ importers: version: 3.5.43(typescript@6.0.3) devDependencies: '@tanstack/vue-devtools': - specifier: ^0.2.27 - version: 0.2.27(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.2.28 + version: 0.2.28(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/vue-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/vue-hotkeys-devtools @@ -3405,8 +3405,8 @@ importers: version: 3.5.43(typescript@6.0.3) devDependencies: '@tanstack/vue-devtools': - specifier: ^0.2.27 - version: 0.2.27(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.2.28 + version: 0.2.28(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/vue-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/vue-hotkeys-devtools @@ -3436,8 +3436,8 @@ importers: version: 3.5.43(typescript@6.0.3) devDependencies: '@tanstack/vue-devtools': - specifier: ^0.2.27 - version: 0.2.27(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.2.28 + version: 0.2.28(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/vue-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/vue-hotkeys-devtools @@ -3467,8 +3467,8 @@ importers: version: 3.5.43(typescript@6.0.3) devDependencies: '@tanstack/vue-devtools': - specifier: ^0.2.27 - version: 0.2.27(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.2.28 + version: 0.2.28(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/vue-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/vue-hotkeys-devtools @@ -3498,8 +3498,8 @@ importers: version: 3.5.43(typescript@6.0.3) devDependencies: '@tanstack/vue-devtools': - specifier: ^0.2.27 - version: 0.2.27(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.2.28 + version: 0.2.28(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/vue-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/vue-hotkeys-devtools @@ -3529,8 +3529,8 @@ importers: version: 3.5.43(typescript@6.0.3) devDependencies: '@tanstack/vue-devtools': - specifier: ^0.2.27 - version: 0.2.27(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.2.28 + version: 0.2.28(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/vue-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/vue-hotkeys-devtools @@ -3560,8 +3560,8 @@ importers: version: 3.5.43(typescript@6.0.3) devDependencies: '@tanstack/vue-devtools': - specifier: ^0.2.27 - version: 0.2.27(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.2.28 + version: 0.2.28(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/vue-hotkeys-devtools': specifier: workspace:* version: link:../../../packages/vue-hotkeys-devtools @@ -3586,9 +3586,6 @@ importers: '@tanstack/hotkeys': specifier: workspace:* version: link:../hotkeys - '@tanstack/store': - specifier: ^0.11.2 - version: 0.11.2 devDependencies: '@types/alpinejs': specifier: ^3.17.0 @@ -3599,9 +3596,6 @@ importers: packages/angular-hotkeys: dependencies: - '@tanstack/angular-store': - specifier: ^0.11.2 - version: 0.11.2(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3)) '@tanstack/hotkeys': specifier: workspace:* version: link:../hotkeys @@ -3621,9 +3615,12 @@ importers: packages/angular-hotkeys-devtools: dependencies: + '@tanstack/angular-devtools': + specifier: '>=0.0.13' + version: 0.0.13(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/devtools-utils': - specifier: ^0.7.0 - version: 0.7.0(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(@types/react@19.3.0)(preact@10.29.8)(react@19.3.0)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.43(typescript@6.0.3)) + specifier: ^0.7.2 + version: 0.7.2(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(@types/react@19.3.0)(preact@10.29.8)(react@19.3.0)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.43(typescript@6.0.3)) '@tanstack/hotkeys-devtools': specifier: workspace:* version: link:../hotkeys-devtools @@ -3640,9 +3637,6 @@ importers: '@tanstack/hotkeys': specifier: workspace:* version: link:../hotkeys - '@tanstack/store': - specifier: ^0.11.2 - version: 0.11.2 ember-modifier: specifier: ^4.2.2 version: 4.2.2(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) @@ -3715,7 +3709,7 @@ importers: version: 8.3.2(@types/node@26.6.4)(esbuild@0.28.0)(jiti@2.6.1)(less@4.4.2)(sass-embedded@1.104.1)(sass@1.97.3)(terser@5.46.0)(yaml@2.9.1) packages/hotkeys: - dependencies: + devDependencies: '@tanstack/store': specifier: ^0.11.2 version: 0.11.2 @@ -3723,11 +3717,11 @@ importers: packages/hotkeys-devtools: dependencies: '@tanstack/devtools-ui': - specifier: ^0.7.1 - version: 0.7.1(csstype@3.2.3)(solid-js@1.9.15) + specifier: ^0.7.2 + version: 0.7.2(csstype@3.2.3)(solid-js@1.9.15) '@tanstack/devtools-utils': - specifier: ^0.7.0 - version: 0.7.0(@angular/core@21.2.10(@angular/compiler@21.2.10)(rxjs@7.8.2)(zone.js@0.16.3))(@types/react@19.2.14)(preact@10.29.1)(react@19.2.5)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.33(typescript@6.0.3)) + specifier: ^0.7.2 + version: 0.7.2(@angular/core@21.2.10(@angular/compiler@21.2.10)(rxjs@7.8.2)(zone.js@0.16.3))(@types/react@19.2.14)(preact@10.29.1)(react@19.2.5)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.33(typescript@6.0.3)) '@tanstack/hotkeys': specifier: workspace:* version: link:../hotkeys @@ -3763,9 +3757,6 @@ importers: '@tanstack/hotkeys': specifier: workspace:* version: link:../hotkeys - '@tanstack/octane-store': - specifier: ^0.13.0 - version: 0.13.0(octane@0.12.1(@tsrx/oxc@0.20.0(svelte@5.57.1(@typescript-eslint/types@8.70.1)))(@typescript-eslint/types@8.70.1)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(typescript@6.0.3)(vite@8.3.2(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.6.1)(less@4.9.0(supports-color@8.1.1))(sass-embedded@1.104.1)(sass@1.101.0)(terser@5.49.0)(yaml@2.8.2))) devDependencies: '@tsrx/oxc': specifier: 0.20.0 @@ -3785,9 +3776,6 @@ importers: '@tanstack/hotkeys': specifier: workspace:* version: link:../hotkeys - '@tanstack/preact-store': - specifier: ^0.13.5 - version: 0.13.5(preact@11.0.1) devDependencies: '@preact/preset-vite': specifier: ^2.10.6 @@ -3802,11 +3790,14 @@ importers: packages/preact-hotkeys-devtools: dependencies: '@tanstack/devtools-utils': - specifier: ^0.7.0 - version: 0.7.0(@angular/core@21.2.10)(@types/react@19.2.14)(preact@11.0.1)(react@19.2.5)(solid-js@1.9.12)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.33(typescript@6.0.3)) + specifier: ^0.7.2 + version: 0.7.2(@angular/core@21.2.10)(@types/react@19.2.14)(preact@11.0.1)(react@19.2.5)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.33(typescript@6.0.3)) '@tanstack/hotkeys-devtools': specifier: workspace:* version: link:../hotkeys-devtools + '@tanstack/preact-devtools': + specifier: '>=0.10.15' + version: 0.10.15(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15) devDependencies: '@preact/preset-vite': specifier: ^2.10.6 @@ -3820,13 +3811,13 @@ importers: '@tanstack/hotkeys': specifier: workspace:* version: link:../hotkeys - '@tanstack/react-store': - specifier: ^0.11.2 - version: 0.11.2(react-dom@19.3.0(react@19.3.0))(react@19.3.0) devDependencies: '@eslint-react/eslint-plugin': specifier: ^4.2.3 version: 4.2.3(eslint@10.11.0(jiti@2.6.1)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@6.0.3) + '@tanstack/react-store': + specifier: ^0.11.2 + version: 0.11.2(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@testing-library/react': specifier: ^16.3.3 version: 16.3.3(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.3.0))(@types/react@19.3.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0) @@ -3852,11 +3843,14 @@ importers: packages/react-hotkeys-devtools: dependencies: '@tanstack/devtools-utils': - specifier: ^0.7.0 - version: 0.7.0(@angular/core@21.2.10)(@types/react@19.3.0)(preact@10.29.1)(react@19.3.0)(solid-js@1.9.12)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.33(typescript@6.0.3)) + specifier: ^0.7.2 + version: 0.7.2(@angular/core@21.2.10)(@types/react@19.3.0)(preact@10.29.1)(react@19.3.0)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.33(typescript@6.0.3)) '@tanstack/hotkeys-devtools': specifier: workspace:* version: link:../hotkeys-devtools + '@tanstack/react-devtools': + specifier: '>=0.10.14' + version: 0.10.14(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15) '@types/react-dom': specifier: '>=18.0.0' version: 19.3.0(@types/react@19.3.0) @@ -3888,9 +3882,6 @@ importers: '@tanstack/hotkeys': specifier: workspace:* version: link:../hotkeys - '@tanstack/solid-store': - specifier: ^0.11.2 - version: 0.11.2(solid-js@1.9.15) devDependencies: '@solidjs/testing-library': specifier: ^0.8.10 @@ -3908,11 +3899,14 @@ importers: packages/solid-hotkeys-devtools: dependencies: '@tanstack/devtools-utils': - specifier: ^0.7.0 - version: 0.7.0(@angular/core@22.1.7(@angular/compiler@22.1.7)(rxjs@7.8.2)(zone.js@0.16.3))(@types/react@19.2.14)(preact@10.29.1)(react@19.2.5)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0))(vue@3.5.33(typescript@6.0.3)) + specifier: ^0.7.2 + version: 0.7.2(@angular/core@22.1.7(@angular/compiler@22.1.7)(rxjs@7.8.2)(zone.js@0.16.3))(@types/react@19.2.14)(preact@10.29.1)(react@19.2.5)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0))(vue@3.5.33(typescript@6.0.3)) '@tanstack/hotkeys-devtools': specifier: workspace:* version: link:../hotkeys-devtools + '@tanstack/solid-devtools': + specifier: '>=0.8.14' + version: 0.8.14(csstype@3.2.3)(solid-js@1.9.15) devDependencies: solid-js: specifier: ^1.9.15 @@ -3946,11 +3940,14 @@ importers: packages/svelte-hotkeys-devtools: dependencies: '@tanstack/devtools-utils': - specifier: ^0.7.0 - version: 0.7.0(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(@types/react@19.3.0)(preact@10.29.8)(react@19.3.0)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.43(typescript@6.0.3)) + specifier: ^0.7.2 + version: 0.7.2(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(@types/react@19.3.0)(preact@10.29.8)(react@19.3.0)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.43(typescript@6.0.3)) '@tanstack/hotkeys-devtools': specifier: workspace:* version: link:../hotkeys-devtools + '@tanstack/svelte-devtools': + specifier: '>=0.1.8' + version: 0.1.8(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1)) devDependencies: '@sveltejs/package': specifier: ^3.0.0 @@ -3973,9 +3970,6 @@ importers: '@tanstack/hotkeys': specifier: workspace:* version: link:../hotkeys - '@tanstack/vue-store': - specifier: ^0.11.2 - version: 0.11.2(vue@3.5.43(typescript@6.0.3)) devDependencies: '@vitejs/plugin-vue': specifier: ^6.0.9 @@ -3992,6 +3986,9 @@ importers: '@tanstack/hotkeys-devtools': specifier: workspace:* version: link:../hotkeys-devtools + '@tanstack/vue-devtools': + specifier: '>=0.2.28' + version: 0.2.28(csstype@3.2.3)(solid-js@1.9.15) devDependencies: '@vitejs/plugin-vue': specifier: ^6.0.9 @@ -8467,18 +8464,12 @@ packages: svelte: ^5.46.4 vite: ^8.0.0-beta.7 || ^8.0.0 - '@tanstack/angular-devtools@0.0.12': - resolution: {integrity: sha512-738bMu4x+DKf5T1QVHMep2NlnzNmE9hayzu2U50VW3t9XNMcYoEccMiYVr8JyDm7TbsE2T/ouZnc+NVHnKBMeA==} + '@tanstack/angular-devtools@0.0.13': + resolution: {integrity: sha512-w7XccHywjrRj6rGkQrKVOhaNkr5Jsq9xiWVlEnm3btjpGEVKk1menArn1X0fqM06LZS/hxn8Rv/0bJ4rQkd33Q==} engines: {node: '>=18'} peerDependencies: '@angular/core': '>=21.0.0' - '@tanstack/angular-store@0.11.2': - resolution: {integrity: sha512-KdyoiKicx807HbcH98Ses9hRM7tHrn+sq6ZEZsA3FIGF20/bCnOqVxRVef+m14OGgck+9cUlEKgkAH/SKW3sVQ==} - peerDependencies: - '@angular/common': '>=19.0.0' - '@angular/core': '>=19.0.0' - '@tanstack/devtools-client@0.0.8': resolution: {integrity: sha512-cG3iZkGWCwN330bLBKa8+9r4Of2AXNoz2zUqcsy/4XsD3105ghVBx78cGyvJj9fSclNomPxoqAnDGXXhg1WLvA==} engines: {node: '>=18'} @@ -8492,22 +8483,21 @@ packages: engines: {node: '>=18'} hasBin: true - '@tanstack/devtools-ui@0.7.1': - resolution: {integrity: sha512-3xQ/ezZ2qVNszhjpCN2N3jn7uHc2J1PMgcyjHzH4XZBt9xAQyMMcPNoR2cd7rzReyxWoJpZUWiDBmOJiCtLj9A==} + '@tanstack/devtools-ui@0.7.2': + resolution: {integrity: sha512-Ij6EpEXkx13OOVMJPCJpMzWzVV/mcsqfXM4d+ZjqCrQtgbt7cd2rsCseuKuYNmuGhJiOLYNXzYU5da7UqCY54g==} engines: {node: '>=18'} peerDependencies: - solid-js: '>=1.9.7' + solid-js: ^1.9.13 - '@tanstack/devtools-utils@0.7.0': - resolution: {integrity: sha512-D9oosgtwvOe5nHQuhCqO/pxZz923REExp2kTc2YaJQ5+0QjTU3xRU+KkwRbFmlJwEXRcJCeAGF5j9Y72TZQ/xQ==} + '@tanstack/devtools-utils@0.7.2': + resolution: {integrity: sha512-77pwyXlWsxiJJh/GKXjFNVl2Y2VnqDY4SFN9zsJcIcNElswZNg1Qtl1pPkukZwMcONxAPp7Rfa23O1R5SxOCZA==} engines: {node: '>=18'} - hasBin: true peerDependencies: '@angular/core': '>=19.0.0' '@types/react': '>=17.0.0' preact: '>=10.0.0' react: '>=17.0.0' - solid-js: '>=1.9.7' + solid-js: ^1.9.13 svelte: '>=5.0.0' vue: '>=3.2.0' peerDependenciesMeta: @@ -8526,12 +8516,11 @@ packages: vue: optional: true - '@tanstack/devtools@0.15.0': - resolution: {integrity: sha512-KyS7Qi82Eq9yG8C+uae3ikAPb+D5rfzVhvOOjXVAHZ/64s6TWJlDWpREw1FrHIYZaI7paErpsExSSKlF5BKA/A==} + '@tanstack/devtools@0.16.0': + resolution: {integrity: sha512-SgmsZ1RwWgohY+S2GhZ1bCttZ+bICb8EKaI1DUFBrs/CXL67IaW25TouoHflj5fGzrppfDM2ld56+TLuzMwJSA==} engines: {node: '>=18'} - hasBin: true peerDependencies: - solid-js: '>=1.9.7' + solid-js: ^1.9.13 '@tanstack/eslint-config@0.4.0': resolution: {integrity: sha512-V+Cd81W/f65dqKJKpytbwTGx9R+IwxKAHsG/uJ3nSLYEh36hlAr54lRpstUhggQB8nf/cP733cIw8DuD2dzQUg==} @@ -8548,25 +8537,14 @@ packages: engines: {node: '>=20.12.0'} hasBin: true - '@tanstack/octane-store@0.13.0': - resolution: {integrity: sha512-No0LCGE4B3bnAMN3FZqXcpDvNbf4MUf1Grq9IxC8by7toXPWYVaBeDt0VkRr5lG7/0ElhNTu50GUA5xmn5Yhzg==} - engines: {node: '>=22'} - peerDependencies: - octane: '>=0.12.0' - - '@tanstack/preact-devtools@0.10.13': - resolution: {integrity: sha512-r2INfcd0xvX3JgRuq8vn0Uy722gHiatDFBsgc4Wi9509ozGlEm8KPJXCa7rcg4o0vwyrIjYPgj0Cy4UyA399kQ==} + '@tanstack/preact-devtools@0.10.15': + resolution: {integrity: sha512-PyhCy7D7Rwp9ucyOYk0D0k6rRSgMdus2eoZs9yltc4bXt9DtqHKfBnI2CfCW1LT3G+BKfjmExbHK72flDV0rLA==} engines: {node: '>=18'} peerDependencies: preact: '>=10.0.0' - '@tanstack/preact-store@0.13.5': - resolution: {integrity: sha512-+ONKQNVqoGBpCbvahHjW39d28vwBVNRUa927m5owRQS6fySTORPKbOV6HYBXt0qHxOA8r0llg1Bfy/FKXsj3qw==} - peerDependencies: - preact: ^10.0.0 || ^11.0.0-0 - - '@tanstack/react-devtools@0.10.13': - resolution: {integrity: sha512-r0cdB/14+st2Vxl/1Bodlyq4VC8pf9SykLQDYbGHDc1+V146WQo5B3KlYLkfyxD9Q/6+9NPRQHZyl8fvZVMdRA==} + '@tanstack/react-devtools@0.10.14': + resolution: {integrity: sha512-wFoNpqiU03MDbY1RljhX4vMUoGWwqpa5AZthWEaJRrojBFWFoB57lzzIM5r+EPGi+BsEX+OcXkn8Zkfoe4hGiA==} engines: {node: '>=18'} peerDependencies: '@types/react': '>=16.8' @@ -8591,22 +8569,17 @@ packages: resolution: {integrity: sha512-X+19pGuuLVPvvAvPYw9v/+ktRk5cCll8AtfpBpOhDRmVgUMrfqze0467xtq8YRVVs/mmo5rVtWn/7Tp32RDBKw==} engines: {node: '>=20.19'} - '@tanstack/solid-devtools@0.8.13': - resolution: {integrity: sha512-B16MvCadUxE43ZMyxaPeE6FBbpTXlsnKBZDl9lp6o75s9EeiGdJ1KaB8L+EYx7wFdbFad+779M3Y3n7bc5H02g==} + '@tanstack/solid-devtools@0.8.14': + resolution: {integrity: sha512-IV0ONBeQMNRBSkVtwkcgsBK2j5huHz3VyhQXuoaOkfOlG/rVnX+suB4Wr+59eJVxm5+T1o7slvxk4a0zcZq3bw==} engines: {node: '>=18'} peerDependencies: - solid-js: '>=1.9.7' - - '@tanstack/solid-store@0.11.2': - resolution: {integrity: sha512-lscar3xeRKfs/RQBcZjR9NG55sfMP5Pb8S/URohUqcnSB8Yu19JLE/hPjfSd7pKmCpjYq1ZbjqtpIc5bDE1lAQ==} - peerDependencies: - solid-js: ^1.6.0 + solid-js: ^1.9.13 '@tanstack/store@0.11.2': resolution: {integrity: sha512-sJ4mjol8uQsHV0gOJzzjwXfh2Fwm+Sz0+8deqiTm4jGbMdjzNSW+xZCFm0kUa870uhd8yi+DpKnZb5Kc4apa0Q==} - '@tanstack/svelte-devtools@0.1.7': - resolution: {integrity: sha512-TbZeL5/v2othEC9hKIqnp+36sZZ81I4CfHFym9ds3CUoGZ2IPHwZq3lITNqe6dCldREsbMjKHCVnQ5wj1Z5MQg==} + '@tanstack/svelte-devtools@0.1.8': + resolution: {integrity: sha512-nynsVK7BJrsh7JpHwIrxBq+X7XMgKt3c4pXaasBOX5Ly/RN7/0MNemu/hkgomD9OtLedxcaB/0+/FJ/luVA5sg==} engines: {node: '>=18'} peerDependencies: svelte: '>=5.0.0' @@ -8615,19 +8588,10 @@ packages: resolution: {integrity: sha512-WXJavpiNqumNwdBQTM3wBqbHaULgoZ3cIri7xJinKqX/mOGXgc6ZghfAardD2PydP8tOcPf+xhrd1Qk/am9DMg==} engines: {node: '>=18'} - '@tanstack/vue-devtools@0.2.27': - resolution: {integrity: sha512-8/wIuSCmF+BTeVEl8qo4NGyMfRsJB//oW4tC7eDpmEPbsNuN2cxk3F29hlwZ19lfVhEm+ccUEK67u62Z6r9hTw==} + '@tanstack/vue-devtools@0.2.28': + resolution: {integrity: sha512-9u41nAP8vLTkF6yO/AwFyzTljhOvQMOyuDXh2KqDKwMVG6OVtr+1YFA76I0fx8kyecrhzd1o7k8VQCzq6M8gqA==} engines: {node: '>=18'} - '@tanstack/vue-store@0.11.2': - resolution: {integrity: sha512-wZmkfsvc0dNvOg/Xb/a7uTPKejleI0dR3HHi0t3ZyVM/23MJ7AC0bH6C7rp2seSY4mIYo0pLLbGJGZ/UpO93Zw==} - peerDependencies: - '@vue/composition-api': ^1.2.1 - vue: ^2.5.0 || ^3.0.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true - '@testing-library/dom@10.4.1': resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} engines: {node: '>=18'} @@ -13772,9 +13736,6 @@ packages: resolution: {integrity: sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A==} engines: {node: '>=10.2.0'} - solid-js@1.9.12: - resolution: {integrity: sha512-QzKaSJq2/iDrWR1As6MHZQ8fQkdOBf8GReYb7L5iKwMGceg7HxDcaOHk0at66tNgn9U2U7dXo8ZZpLIAmGMzgw==} - solid-js@1.9.15: resolution: {integrity: sha512-EeiY2xfpZJqPLjXspVEKjAII4yv8NyG//NxZ3IpOFHdUNnnTyL0uJOeS9LWGvA7cFCz5y94cjFwYlmw5Luncsg==} @@ -14574,17 +14535,6 @@ packages: vue-component-type-helpers@3.2.7: resolution: {integrity: sha512-+gPp5YGmhfsj1IN+xUo7y0fb4clfnOiiUA39y07yW1VzCRjzVgwLbtmdWlghh7mXrPsEaYc7rrIir/HT6C8vYQ==} - vue-demi@0.14.10: - resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} - engines: {node: '>=12'} - hasBin: true - peerDependencies: - '@vue/composition-api': ^1.0.0-rc.1 - vue: ^3.0.0-0 || ^2.6.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true - vue-eslint-parser@10.4.1: resolution: {integrity: sha512-Gk6gRDj0n/fkRa3C3l0bBheoBckUq/Rs0F/TvMWIS6nzzx67amAViMe9CkNgsP2tXyQONvGiHQESHwFtZ3aYDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -19662,10 +19612,10 @@ snapshots: vite: 8.3.2(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.6.1)(less@4.9.1(supports-color@8.1.1))(sass-embedded@1.104.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.9.1) vitefu: 1.1.2(vite@8.3.2(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.6.1)(less@4.9.1(supports-color@8.1.1))(sass-embedded@1.104.1)(sass@1.104.1)(terser@5.51.2)(yaml@2.9.1)) - '@tanstack/angular-devtools@0.0.12(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15)': + '@tanstack/angular-devtools@0.0.13(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(csstype@3.2.3)(solid-js@1.9.15)': dependencies: '@angular/core': 22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3) - '@tanstack/devtools': 0.15.0(csstype@3.2.3)(solid-js@1.9.15) + '@tanstack/devtools': 0.16.0(csstype@3.2.3)(solid-js@1.9.15) tslib: 2.8.1 transitivePeerDependencies: - bufferutil @@ -19673,12 +19623,6 @@ snapshots: - solid-js - utf-8-validate - '@tanstack/angular-store@0.11.2(@angular/common@22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2))(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))': - dependencies: - '@angular/common': 22.2.1(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(rxjs@7.8.2) - '@angular/core': 22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3) - '@tanstack/store': 0.11.2 - '@tanstack/devtools-client@0.0.8': dependencies: '@tanstack/devtools-event-client': 0.5.0 @@ -19692,7 +19636,7 @@ snapshots: '@tanstack/devtools-event-client@0.5.0': {} - '@tanstack/devtools-ui@0.7.1(csstype@3.2.3)(solid-js@1.9.15)': + '@tanstack/devtools-ui@0.7.2(csstype@3.2.3)(solid-js@1.9.15)': dependencies: clsx: 2.1.1 dayjs: 1.11.19 @@ -19701,7 +19645,7 @@ snapshots: transitivePeerDependencies: - csstype - '@tanstack/devtools-utils@0.7.0(@angular/core@21.2.10(@angular/compiler@21.2.10)(rxjs@7.8.2)(zone.js@0.16.3))(@types/react@19.2.14)(preact@10.29.1)(react@19.2.5)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.33(typescript@6.0.3))': + '@tanstack/devtools-utils@0.7.2(@angular/core@21.2.10(@angular/compiler@21.2.10)(rxjs@7.8.2)(zone.js@0.16.3))(@types/react@19.2.14)(preact@10.29.1)(react@19.2.5)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.33(typescript@6.0.3))': optionalDependencies: '@angular/core': 21.2.10(@angular/compiler@21.2.10)(rxjs@7.8.2)(zone.js@0.16.3) '@types/react': 19.2.14 @@ -19711,27 +19655,27 @@ snapshots: svelte: 5.57.1(@typescript-eslint/types@8.70.1) vue: 3.5.33(typescript@6.0.3) - '@tanstack/devtools-utils@0.7.0(@angular/core@21.2.10)(@types/react@19.2.14)(preact@11.0.1)(react@19.2.5)(solid-js@1.9.12)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.33(typescript@6.0.3))': + '@tanstack/devtools-utils@0.7.2(@angular/core@21.2.10)(@types/react@19.2.14)(preact@11.0.1)(react@19.2.5)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.33(typescript@6.0.3))': optionalDependencies: '@angular/core': 21.2.10(@angular/compiler@21.2.10)(rxjs@7.8.2)(zone.js@0.16.3) '@types/react': 19.2.14 preact: 11.0.1 react: 19.2.5 - solid-js: 1.9.12 + solid-js: 1.9.15 svelte: 5.57.1(@typescript-eslint/types@8.70.1) vue: 3.5.33(typescript@6.0.3) - '@tanstack/devtools-utils@0.7.0(@angular/core@21.2.10)(@types/react@19.3.0)(preact@10.29.1)(react@19.3.0)(solid-js@1.9.12)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.33(typescript@6.0.3))': + '@tanstack/devtools-utils@0.7.2(@angular/core@21.2.10)(@types/react@19.3.0)(preact@10.29.1)(react@19.3.0)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.33(typescript@6.0.3))': optionalDependencies: '@angular/core': 21.2.10(@angular/compiler@21.2.10)(rxjs@7.8.2)(zone.js@0.16.3) '@types/react': 19.3.0 preact: 10.29.1 react: 19.3.0 - solid-js: 1.9.12 + solid-js: 1.9.15 svelte: 5.57.1(@typescript-eslint/types@8.70.1) vue: 3.5.33(typescript@6.0.3) - '@tanstack/devtools-utils@0.7.0(@angular/core@22.1.7(@angular/compiler@22.1.7)(rxjs@7.8.2)(zone.js@0.16.3))(@types/react@19.2.14)(preact@10.29.1)(react@19.2.5)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0))(vue@3.5.33(typescript@6.0.3))': + '@tanstack/devtools-utils@0.7.2(@angular/core@22.1.7(@angular/compiler@22.1.7)(rxjs@7.8.2)(zone.js@0.16.3))(@types/react@19.2.14)(preact@10.29.1)(react@19.2.5)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0))(vue@3.5.33(typescript@6.0.3))': optionalDependencies: '@angular/core': 22.1.7(@angular/compiler@22.1.7)(rxjs@7.8.2)(zone.js@0.16.3) '@types/react': 19.2.14 @@ -19741,7 +19685,7 @@ snapshots: svelte: 5.57.1(@typescript-eslint/types@8.59.0) vue: 3.5.33(typescript@6.0.3) - '@tanstack/devtools-utils@0.7.0(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(@types/react@19.3.0)(preact@10.29.8)(react@19.3.0)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.43(typescript@6.0.3))': + '@tanstack/devtools-utils@0.7.2(@angular/core@22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3))(@types/react@19.3.0)(preact@10.29.8)(react@19.3.0)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1))(vue@3.5.43(typescript@6.0.3))': optionalDependencies: '@angular/core': 22.2.1(@angular/compiler@22.2.1)(rxjs@7.8.2)(zone.js@0.16.3) '@types/react': 19.3.0 @@ -19751,7 +19695,7 @@ snapshots: svelte: 5.57.1(@typescript-eslint/types@8.70.1) vue: 3.5.43(typescript@6.0.3) - '@tanstack/devtools@0.15.0(csstype@3.2.3)(solid-js@1.9.15)': + '@tanstack/devtools@0.16.0(csstype@3.2.3)(solid-js@1.9.15)': dependencies: '@neodrag/core': 3.0.0-next.11 '@neodrag/solid': 3.0.0-next.11(@neodrag/core@3.0.0-next.11)(solid-js@1.9.15) @@ -19760,7 +19704,7 @@ snapshots: '@solid-primitives/resize-observer': 2.1.3(solid-js@1.9.15) '@tanstack/devtools-client': 0.0.8 '@tanstack/devtools-event-bus': 0.4.3 - '@tanstack/devtools-ui': 0.7.1(csstype@3.2.3)(solid-js@1.9.15) + '@tanstack/devtools-ui': 0.7.2(csstype@3.2.3)(solid-js@1.9.15) clsx: 2.1.1 goober: 2.1.19(csstype@3.2.3) solid-js: 1.9.15 @@ -19789,14 +19733,9 @@ snapshots: '@tanstack/intent@0.5.5': {} - '@tanstack/octane-store@0.13.0(octane@0.12.1(@tsrx/oxc@0.20.0(svelte@5.57.1(@typescript-eslint/types@8.70.1)))(@typescript-eslint/types@8.70.1)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(typescript@6.0.3)(vite@8.3.2(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.6.1)(less@4.9.0(supports-color@8.1.1))(sass-embedded@1.104.1)(sass@1.101.0)(terser@5.49.0)(yaml@2.8.2)))': - dependencies: - '@tanstack/store': 0.11.2 - octane: 0.12.1(@tsrx/oxc@0.20.0(svelte@5.57.1(@typescript-eslint/types@8.70.1)))(@typescript-eslint/types@8.70.1)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(typescript@6.0.3)(vite@8.3.2(@types/node@26.6.4)(esbuild@0.28.2)(jiti@2.6.1)(less@4.9.0(supports-color@8.1.1))(sass-embedded@1.104.1)(sass@1.101.0)(terser@5.49.0)(yaml@2.8.2)) - - '@tanstack/preact-devtools@0.10.13(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15)': + '@tanstack/preact-devtools@0.10.15(csstype@3.2.3)(preact@11.0.1)(solid-js@1.9.15)': dependencies: - '@tanstack/devtools': 0.15.0(csstype@3.2.3)(solid-js@1.9.15) + '@tanstack/devtools': 0.16.0(csstype@3.2.3)(solid-js@1.9.15) preact: 11.0.1 transitivePeerDependencies: - bufferutil @@ -19804,14 +19743,9 @@ snapshots: - solid-js - utf-8-validate - '@tanstack/preact-store@0.13.5(preact@11.0.1)': + '@tanstack/react-devtools@0.10.14(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15)': dependencies: - '@tanstack/store': 0.11.2 - preact: 11.0.1 - - '@tanstack/react-devtools@0.10.13(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(csstype@3.2.3)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(solid-js@1.9.15)': - dependencies: - '@tanstack/devtools': 0.15.0(csstype@3.2.3)(solid-js@1.9.15) + '@tanstack/devtools': 0.16.0(csstype@3.2.3)(solid-js@1.9.15) '@types/react': 19.3.0 '@types/react-dom': 19.3.0(@types/react@19.3.0) react: 19.3.0 @@ -19845,25 +19779,20 @@ snapshots: seroval: 1.6.8 seroval-plugins: 1.6.8(seroval@1.6.8) - '@tanstack/solid-devtools@0.8.13(csstype@3.2.3)(solid-js@1.9.15)': + '@tanstack/solid-devtools@0.8.14(csstype@3.2.3)(solid-js@1.9.15)': dependencies: - '@tanstack/devtools': 0.15.0(csstype@3.2.3)(solid-js@1.9.15) + '@tanstack/devtools': 0.16.0(csstype@3.2.3)(solid-js@1.9.15) solid-js: 1.9.15 transitivePeerDependencies: - bufferutil - csstype - utf-8-validate - '@tanstack/solid-store@0.11.2(solid-js@1.9.15)': - dependencies: - '@tanstack/store': 0.11.2 - solid-js: 1.9.15 - '@tanstack/store@0.11.2': {} - '@tanstack/svelte-devtools@0.1.7(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0))': + '@tanstack/svelte-devtools@0.1.8(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.59.0))': dependencies: - '@tanstack/devtools': 0.15.0(csstype@3.2.3)(solid-js@1.9.15) + '@tanstack/devtools': 0.16.0(csstype@3.2.3)(solid-js@1.9.15) svelte: 5.57.1(@typescript-eslint/types@8.59.0) transitivePeerDependencies: - bufferutil @@ -19871,9 +19800,9 @@ snapshots: - solid-js - utf-8-validate - '@tanstack/svelte-devtools@0.1.7(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1))': + '@tanstack/svelte-devtools@0.1.8(csstype@3.2.3)(solid-js@1.9.15)(svelte@5.57.1(@typescript-eslint/types@8.70.1))': dependencies: - '@tanstack/devtools': 0.15.0(csstype@3.2.3)(solid-js@1.9.15) + '@tanstack/devtools': 0.16.0(csstype@3.2.3)(solid-js@1.9.15) svelte: 5.57.1(@typescript-eslint/types@8.70.1) transitivePeerDependencies: - bufferutil @@ -19889,21 +19818,15 @@ snapshots: transitivePeerDependencies: - typescript - '@tanstack/vue-devtools@0.2.27(csstype@3.2.3)(solid-js@1.9.15)': + '@tanstack/vue-devtools@0.2.28(csstype@3.2.3)(solid-js@1.9.15)': dependencies: - '@tanstack/devtools': 0.15.0(csstype@3.2.3)(solid-js@1.9.15) + '@tanstack/devtools': 0.16.0(csstype@3.2.3)(solid-js@1.9.15) transitivePeerDependencies: - bufferutil - csstype - solid-js - utf-8-validate - '@tanstack/vue-store@0.11.2(vue@3.5.43(typescript@6.0.3))': - dependencies: - '@tanstack/store': 0.11.2 - vue: 3.5.43(typescript@6.0.3) - vue-demi: 0.14.10(vue@3.5.43(typescript@6.0.3)) - '@testing-library/dom@10.4.1': dependencies: '@babel/code-frame': 7.29.7 @@ -26108,13 +26031,6 @@ snapshots: - supports-color - utf-8-validate - solid-js@1.9.12: - dependencies: - csstype: 3.2.3 - seroval: 1.5.6 - seroval-plugins: 1.5.6(seroval@1.5.6) - optional: true - solid-js@1.9.15: dependencies: csstype: 3.2.3 @@ -27152,10 +27068,6 @@ snapshots: vue-component-type-helpers@3.2.7: {} - vue-demi@0.14.10(vue@3.5.43(typescript@6.0.3)): - dependencies: - vue: 3.5.43(typescript@6.0.3) - vue-eslint-parser@10.4.1(eslint@10.11.0(jiti@2.6.1)(supports-color@7.2.0))(supports-color@7.2.0): dependencies: debug: 4.4.3(supports-color@7.2.0) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2781960b..3a5626c8 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -16,6 +16,16 @@ minimumReleaseAgeExclude: - '@tanstack/octane-store@0.13.0' # Preact 11 peer support: published less than 24 hours ago - '@tanstack/preact-store@0.13.5' + # devtools host peers: published less than 24 hours ago + - '@tanstack/angular-devtools@0.0.13' + - '@tanstack/devtools@0.16.0' + - '@tanstack/devtools-ui@0.7.2' + - '@tanstack/devtools-utils@0.7.2' + - '@tanstack/preact-devtools@0.10.15' + - '@tanstack/react-devtools@0.10.14' + - '@tanstack/solid-devtools@0.8.14' + - '@tanstack/svelte-devtools@0.1.8' + - '@tanstack/vue-devtools@0.2.28' packages: - 'e2e' - 'examples/**/*' From 73ec32a17c9a38e7c440827f37b886965b580c39 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Fri, 30 Oct 2026 17:11:11 +0000 Subject: [PATCH 2/7] ci: apply automated fixes --- docs/reference/adapter/functions/createStore.md | 2 +- docs/reference/adapter/type-aliases/Store.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/reference/adapter/functions/createStore.md b/docs/reference/adapter/functions/createStore.md index 830c801f..e643360c 100644 --- a/docs/reference/adapter/functions/createStore.md +++ b/docs/reference/adapter/functions/createStore.md @@ -7,7 +7,7 @@ title: createStore function createStore(initialState): Store; ``` -Defined in: \_store.ts:33 +Defined in: [\_store.ts:33](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/_store.ts#L33) Creates a store. Listeners run synchronously after each change, and an update to an equal value (by `Object.is`) notifies no one. diff --git a/docs/reference/adapter/type-aliases/Store.md b/docs/reference/adapter/type-aliases/Store.md index 3ce0d1f3..f7d2ef13 100644 --- a/docs/reference/adapter/type-aliases/Store.md +++ b/docs/reference/adapter/type-aliases/Store.md @@ -7,7 +7,7 @@ title: Store type Store = Pick, "state" | "get" | "setState" | "subscribe">; ``` -Defined in: \_store.ts:8 +Defined in: [\_store.ts:8](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/_store.ts#L8) The part of TanStack Store's `Store` that TanStack Hotkeys uses. Its stores work with TanStack Store's framework adapters, such as `useSelector` from From 4e4a856f07b871e81c0558c5b421946931a4d310 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Fri, 30 Oct 2026 13:08:05 -0500 Subject: [PATCH 3/7] perf(hotkeys)!: Make key names case-sensitive and drop the key-name tables Typed hotkeys and browser events don't need key aliases or case folding, so those tables no longer ship in every bundle: - normalizeKeyName uppercases letters and maps ' ' to Space; other names stay as written. Modifier aliases (Ctrl, Cmd, Option) still work. - validateHotkey warns about keys not written like a known key, using a small pattern instead of ALL_KEYS. In development, registering such a hotkey warns that it may never fire. - The recorder rejects whitespace keys directly instead of running validateHotkey. - formatForDisplay accepts hotkeys only; formatKeyForDisplay formats single keys such as held keys. - Key sets are built compactly and are dropped by bundles that don't import them. - Lookups by untrusted names use own properties only, so saved custom hotkeys and display labels ignore names such as toString. typed-behavior.test.ts fingerprints parsing, normalization, validation, display, matching, recording, and firing for every typed hotkey and a wide range of real events; the fingerprints match the previous implementation. --- .changeset/case-sensitive-key-names.md | 22 + .intent/review-state.json | 1342 ++++++++++++++--- docs/config.json | 4 + .../alpine/guides/formatting-display.md | 2 + .../alpine/guides/held-key-state-helpers.md | 2 + .../angular/guides/formatting-display.md | 2 + .../angular/guides/held-key-state-helpers.md | 2 + .../ember/guides/formatting-display.md | 2 + .../ember/guides/held-key-state-helpers.md | 2 + .../lit/guides/formatting-display.md | 2 + .../lit/guides/held-key-state-helpers.md | 2 + .../octane/guides/formatting-display.md | 2 + .../octane/guides/held-key-state-helpers.md | 2 + .../preact/guides/formatting-display.md | 2 + .../preact/guides/held-key-state-helpers.md | 2 + .../react/guides/formatting-display.md | 2 + .../react/guides/held-key-state-helpers.md | 2 + .../solid/guides/formatting-display.md | 2 + .../solid/guides/held-key-state-helpers.md | 2 + .../svelte/guides/formatting-display.md | 2 + .../svelte/guides/held-key-state-helpers.md | 2 + .../vue/guides/formatting-display.md | 2 + .../vue/guides/held-key-state-helpers.md | 2 + .../adapter/functions/createStore.md | 2 +- docs/reference/adapter/type-aliases/Store.md | 2 +- docs/reference/classes/AppHotkeysStore.md | 26 +- docs/reference/classes/HotkeyManager.md | 30 +- docs/reference/classes/HotkeyRecorder.md | 12 +- docs/reference/functions/assertValidHotkey.md | 2 +- docs/reference/functions/checkHotkey.md | 2 +- docs/reference/functions/formatForDisplay.md | 28 +- .../functions/formatKeyForDisplay.md | 40 + .../getAppHotkeyRegistrationOptions.md | 2 +- docs/reference/functions/getHotkeyManager.md | 2 +- docs/reference/functions/isSingleLetterKey.md | 2 +- docs/reference/functions/normalizeKeyName.md | 11 +- docs/reference/functions/provideAppHotkeys.md | 2 +- .../functions/publishAppHotkeysStore.md | 2 +- docs/reference/functions/resolveAppHotkey.md | 2 +- .../functions/toHotkeyRegistrationView.md | 2 +- docs/reference/index.md | 1 + .../interfaces/ActivateHotkeyScopeOptions.md | 6 +- .../reference/interfaces/AppHotkeyListItem.md | 10 +- docs/reference/interfaces/AppHotkeysState.md | 6 +- .../interfaces/AppHotkeysStoreOptions.md | 8 +- .../interfaces/FormatDisplayOptions.md | 16 +- .../interfaces/HotkeyChordOptions.md | 28 +- .../interfaces/HotkeyChordRecorderOptions.md | 22 +- .../HotkeyChordRecorderValidationContext.md | 8 +- .../interfaces/HotkeyChordRegistration.md | 22 +- .../interfaces/HotkeyChordRegistrationView.md | 20 +- docs/reference/interfaces/HotkeyOptions.md | 26 +- .../interfaces/HotkeyRecorderState.md | 8 +- .../interfaces/HotkeyRegistrationHandle.md | 12 +- .../reference/interfaces/HotkeyScopesState.md | 10 +- .../interfaces/HotkeySequenceOptions.md | 28 +- .../HotkeySequenceRecorderOptions.md | 26 +- ...HotkeySequenceRecorderValidationContext.md | 8 +- .../interfaces/HotkeySequenceRegistration.md | 24 +- .../HotkeySequenceRegistrationView.md | 24 +- docs/reference/interfaces/RecorderOptions.md | 10 +- .../reference/interfaces/RecorderRejection.md | 10 +- docs/reference/interfaces/ValidationResult.md | 8 +- .../reference/type-aliases/AppHotkeyStatus.md | 2 +- docs/reference/type-aliases/DisplayHotkey.md | 2 +- .../type-aliases/DisplayHotkeyChord.md | 5 +- .../type-aliases/HotkeyOptionsFor.md | 2 +- .../type-aliases/HotkeyRecorderCommitKeys.md | 2 +- .../type-aliases/HotkeyRecorderOptions.md | 2 +- .../HotkeyRecorderValidationContext.md | 2 +- .../type-aliases/HotkeyRegistration.md | 2 +- .../type-aliases/HotkeyRegistrationStatus.md | 2 +- .../type-aliases/HotkeyRegistrationView.md | 2 +- .../reference/type-aliases/RecorderKeyMode.md | 2 +- docs/reference/type-aliases/Target.md | 2 +- docs/reference/variables/ALL_KEYS.md | 8 +- docs/reference/variables/EDITING_KEYS.md | 2 +- docs/reference/variables/FUNCTION_KEYS.md | 2 +- docs/reference/variables/LETTER_KEYS.md | 2 +- docs/reference/variables/MODIFIER_ALIASES.md | 2 +- docs/reference/variables/MODIFIER_KEYS.md | 2 +- docs/reference/variables/MODIFIER_ORDER.md | 2 +- docs/reference/variables/NAVIGATION_KEYS.md | 2 +- docs/reference/variables/NUMBER_KEYS.md | 2 +- .../variables/PUNCTUATION_CODE_MAP.md | 2 +- docs/reference/variables/PUNCTUATION_KEYS.md | 2 +- examples/alpine/createHeldKeys/index.html | 2 +- examples/alpine/createHeldKeys/src/main.ts | 6 +- .../injectHeldKeys/src/app/app.component.html | 2 +- .../injectHeldKeys/src/app/app.component.ts | 6 +- .../src/app/shortcut-list-item.component.html | 2 +- .../src/app/shortcut-list-item.component.ts | 2 + .../src/app/shortcut-list-item.component.html | 2 +- .../src/app/shortcut-list-item.component.ts | 7 +- .../injectHotkeys/src/app/app.component.ts | 7 +- .../useHeldKeys/app/templates/application.gts | 6 +- examples/lit/held-keys/src/app.ts | 6 +- examples/octane/useHeldKeys/src/main.tsrx | 6 +- examples/preact/useHeldKeys/src/index.tsx | 6 +- examples/react/useHeldKeys/src/index.tsx | 6 +- examples/solid/createHeldKeys/src/index.tsx | 6 +- examples/solid/createHotkeys/src/index.tsx | 7 +- examples/svelte/get-held-keys/src/App.svelte | 6 +- examples/vanilla/formatForDisplay/src/main.ts | 9 +- examples/vue/useHeldKeys/src/App.vue | 6 +- .../src/components/HeldKeysTopbar.tsx | 4 +- packages/hotkeys/skills/hotkeys-core/SKILL.md | 3 +- packages/hotkeys/src/_keyboard-event.ts | 16 +- packages/hotkeys/src/_named-keys.ts | 22 + packages/hotkeys/src/app-hotkeys.ts | 10 +- packages/hotkeys/src/constants.ts | 209 +-- packages/hotkeys/src/format.ts | 131 +- packages/hotkeys/src/hotkey-manager.ts | 20 +- packages/hotkeys/src/hotkey-recorder.ts | 10 +- packages/hotkeys/src/validate.ts | 17 +- packages/hotkeys/tests/format.test.ts | 63 +- packages/hotkeys/tests/key-coverage.test.ts | 16 +- packages/hotkeys/tests/key-tables.test.ts | 211 +++ packages/hotkeys/tests/match.test.ts | 37 +- packages/hotkeys/tests/parse.test.ts | 41 +- .../hotkeys/tests/production-logs.test.ts | 4 +- .../tests/sequence-regressions.test.ts | 8 +- packages/hotkeys/tests/typed-behavior.test.ts | 473 ++++++ .../hotkeys/tests/unified-hotkeys.test.ts | 2 +- .../hotkeys/tests/untrusted-input.test.ts | 125 ++ packages/hotkeys/tests/validate.test.ts | 23 +- 126 files changed, 2705 insertions(+), 813 deletions(-) create mode 100644 .changeset/case-sensitive-key-names.md create mode 100644 docs/reference/functions/formatKeyForDisplay.md create mode 100644 packages/hotkeys/tests/key-tables.test.ts create mode 100644 packages/hotkeys/tests/typed-behavior.test.ts create mode 100644 packages/hotkeys/tests/untrusted-input.test.ts diff --git a/.changeset/case-sensitive-key-names.md b/.changeset/case-sensitive-key-names.md new file mode 100644 index 00000000..d7bd3775 --- /dev/null +++ b/.changeset/case-sensitive-key-names.md @@ -0,0 +1,22 @@ +--- +'@tanstack/hotkeys': minor +'@tanstack/react-hotkeys': minor +'@tanstack/preact-hotkeys': minor +'@tanstack/solid-hotkeys': minor +'@tanstack/vue-hotkeys': minor +'@tanstack/svelte-hotkeys': minor +'@tanstack/angular-hotkeys': minor +'@tanstack/lit-hotkeys': minor +'@tanstack/alpine-hotkeys': minor +'@tanstack/octane-hotkeys': minor +'@tanstack/ember-hotkeys': minor +'@tanstack/hotkeys-devtools': minor +--- + +Key names are case-sensitive, and key aliases are no longer resolved, which removes the key-name lookup tables from every bundle. Typed hotkeys, recording, matching, and display behave as before. + +- Spellings that the hotkey types don't allow, such as `escape`, `Esc`, `f1`, `Plus`, or `pgdn`, now stay as written and don't match. Use the canonical names: `Escape`, `F1`, `+`, `PageDown`. Letters still match in any case, and modifier aliases such as `Ctrl`, `Cmd`, and `Option` still work. +- `validateHotkey` and `checkHotkey` warn about keys that aren't written like a known key, such as `escape`, instead of checking a list of key names. In development, registering such a hotkey logs a warning that it may never fire. +- `formatForDisplay` accepts hotkeys only. Use the new `formatKeyForDisplay` to label a single key that isn't a hotkey, such as a held key from `useHeldKeys`. +- The recorder rejects whitespace characters, such as the non-breaking space from Option+Space on macOS, with the message "Whitespace keys cannot be recorded". +- Saved custom hotkeys and display labels ignore names inherited from `Object.prototype`, such as `toString`. Previously, saved custom hotkeys could keep those ids, and `formatForDisplay` could show function source text for them. diff --git a/.intent/review-state.json b/.intent/review-state.json index 44763dbe..0f00a4d2 100644 --- a/.intent/review-state.json +++ b/.intent/review-state.json @@ -64,16 +64,16 @@ ] }, "skill:packages/hotkeys/skills/app-hotkeys/SKILL.md": { - "fingerprint": "f7d762aa1eb6926c2f36b947922044dd103f11aadb623a86dada396bbb504deb", + "fingerprint": "a618f4422dd2ea09019e0452686c22a424b07b37063b3e80da88411e4dcc88fa", "snapshot": { "docs/framework/react/guides/app-hotkeys.md": "f518acca820445dfefde7a8db57f492022def97b96041f1d16573a2851ffa03e", "docs/framework/react/guides/cheat-sheet-ui-helpers.md": "a3f793e81c6a6e1e6aaf3d63c6b79114ea7d6f461123d371c0b4f0a23ffd88bc", "docs/framework/react/guides/custom-hotkey-recording.md": "ea9b70d7bbeb5846b0284e843960bf667b2ae6ffbe85742fb5ba332de170ca29", "packages/hotkeys/skills/app-hotkeys/SKILL.md": "1717fce82ea43b4947da276026504eb8832dc3094cc41cc7572701a7f27b5e58", "packages/hotkeys/skills/app-hotkeys/references/recording.md": "70dfa06d396a49e4a6033ec4f571ccdb9a74a439e989803c6120f219f720b8ad", - "packages/hotkeys/src/app-hotkeys.ts": "d1fc00e69777f9960da51c7ca02895caa8c001e52fb2b2bff1c1bb731450b3ed", + "packages/hotkeys/src/app-hotkeys.ts": "cd3e57af64f6292d40c36a44af5c5bb361af4739f2fb90a28a62613385131aa5", "packages/hotkeys/src/conflicts.ts": "750fe91126e87f062500d11d9bf19116d77c8509fdaa7644c847d49f1cbf40a3", - "packages/hotkeys/src/hotkey-recorder.ts": "082148a59db861e2f3b57495b4d70ae85dc0fdb086f42acb0a0294cf17e374ec", + "packages/hotkeys/src/hotkey-recorder.ts": "7d479391753ffa97e69a7d7cb994cb7053a7ffb3e0aed6dfbfb2dbbdf51a3d24", "packages/react-hotkeys/tests/skills/shortcut-settings/fixture.tsx": "ecc6155241ebccca4ef4cd76e8925b3abeec73e9d88e6906bdf70e4c604788aa", "packages/react-hotkeys/tests/skills/shortcut-settings/grade.tsx": "270c7b8ff9d30f09a458bc8907efa47813e1e192903cc0ca3a70f6820e39fc90", "packages/react-hotkeys/tests/skills/shortcut-settings/mistakes/full-list-storage.tsx": "62d4f4bd79de46fc4900d4f8202c7b16c672060ab66aaead9e7fcd8ea1958c59", @@ -83,24 +83,24 @@ "packages/react-hotkeys/tests/skills/shortcut-settings/solution.tsx": "23a9dd46565c8617361bad3bcf24903c6d2d0c1db8c5e16b66ee5a7bc02fc62b", "packages/react-hotkeys/tests/skills/shortcut-settings/task.md": "1104e51ba1cb603b145b5eece30197d2e2936e21b1592ea75004244d49fcadd1" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Skill guidance is unaffected: stores keep the same state/get/setState/subscribe API, providers behave the same, and warnings still appear in development.", + "reason": "App hotkey guidance is unchanged: saved custom hotkeys are still validated and unknown ids are still dropped with a warning; own-property checks only harden that path.", "evidence": [ - "grep of skills for store, subscribe, warning, and checkHotkey wording; the two warning mentions remain accurate." + "Reviewed app-hotkeys.ts and hotkey-recorder.ts diffs against app-hotkeys/SKILL.md." ] }, "skill:packages/hotkeys/skills/hotkeys-core/SKILL.md": { - "fingerprint": "610bfdd8ab791087ad65c84d09d8c95e110ab8c56ef274cce6e8fc146508cf6e", + "fingerprint": "7ac8b3e3c8a69c270f6744b35c0d30577673e0477b3986742d5ed9f39825c059", "snapshot": { "docs/framework/react/guides/hotkeys-provider-and-scopes.md": "1d39ab010d5bd99955b761dc7298987b332e15846546990dcf2a1ecfb5068469", "docs/framework/react/guides/hotkeys.md": "1591b315e7f0581265287b04210978fd4b0b85487070e744f7f52e1648e01ebf", "docs/framework/react/guides/sequences.md": "e66231380dab6222508a1305d83586459b59953c2ecc47b9549e3cb29ffcd355", "docs/guides/sensible-defaults.md": "f104881097a435a8f4874f969cef3d59e2ef17ec97f5a8c121ba303d036539b7", - "packages/hotkeys/skills/hotkeys-core/SKILL.md": "507ec6b32b7b1836276ee6527acdb3240f998d72dfb90f07c9e9820e688e8714", + "packages/hotkeys/skills/hotkeys-core/SKILL.md": "34af871e714639db1a97226b475402ea91d5aa09b138456007a7eadc1d6854bc", "packages/hotkeys/skills/hotkeys-core/references/scopes.md": "1ae616ff7ce92d9679bbd0752ada572c2060c33ea7e7e638bfcc9d5425ac6bfa", "packages/hotkeys/skills/hotkeys-core/references/testing.md": "90e6512868c194f6c906711cd16882c204600a3118b08b7a101ff6b409012538", - "packages/hotkeys/src/hotkey-manager.ts": "c824e47f3101b0cd7078894e74083455fdd55e407cf9a7511bd4e0c6668da4a0", + "packages/hotkeys/src/hotkey-manager.ts": "5025ea3627e11b181b6b54ea4da9d1d575cf21aa0bc99cccf159a6088cbc1c69", "packages/hotkeys/src/match.ts": "3a50921a68f79183b4ffac98e07e7fdf043711bc071f419c9cdc03422d25f268", "packages/react-hotkeys/tests/skills/editor-shortcuts/editor-shortcuts.test.tsx": "25c572e968a78fd8df61f0bc98ba8adb41ecf0874437725e5ba28dd171e44fe1", "packages/react-hotkeys/tests/skills/editor-shortcuts/fixture.tsx": "613a833bb6412b600925deb4009d16cfbfe7afa9a5dc0b82d1a39b8da8c0230b", @@ -112,11 +112,11 @@ "packages/react-hotkeys/tests/skills/editor-shortcuts/solution.tsx": "ec81379bf0e3a9950222cf8525f82f8abefeb6b46339550fd3a8622e61bf4f0d", "packages/react-hotkeys/tests/skills/editor-shortcuts/task.md": "451dc7569f71956e5ce5e691ecc18ce14d4240b7edaa20cad58075747416c33d" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", - "outcome": "no-change", - "reason": "Skill guidance is unaffected: stores keep the same state/get/setState/subscribe API, providers behave the same, and warnings still appear in development.", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "updated", + "reason": "Key names are now case-sensitive and key aliases are gone, so the skill gains a pitfall about spelling key names as the types do, and points to formatKeyForDisplay for held keys.", "evidence": [ - "grep of skills for store, subscribe, warning, and checkHotkey wording; the two warning mentions remain accurate." + "Added a Pitfalls bullet and updated the label row of the instead-of table in hotkeys-core/SKILL.md." ] }, "skill:packages/lit-hotkeys/skills/lit-hotkeys/SKILL.md": { @@ -276,7 +276,7 @@ ] }, "planning:_artifacts": { - "fingerprint": "cc29bd4ca440d60d07f07c28f07f60701df0a46e7a90329848b8c5150d633767", + "fingerprint": "ce60f0db248e34d3c2f2b6b8718a7096ee06bee2aef689abf384e8003f582abe", "snapshot": { "_artifacts/domain_map.yaml": "2563ba9b2d472df81206a62b1add175bd3341b9bb99bd51869c305746f2a4a46", "_artifacts/skill_spec.md": "58e19f35836571a37984e4435168651a2936dffb48ffe01cc7fddcc0eafea916", @@ -331,13 +331,13 @@ "packages/ember-hotkeys/src/useHotkeys.ts": "963345b3720ddefec8677b9b9d9dfa2b6346e22b32f9f2034d406b43e5c5ccf8", "packages/hotkeys/skills/app-hotkeys/SKILL.md": "1717fce82ea43b4947da276026504eb8832dc3094cc41cc7572701a7f27b5e58", "packages/hotkeys/skills/app-hotkeys/references/recording.md": "70dfa06d396a49e4a6033ec4f571ccdb9a74a439e989803c6120f219f720b8ad", - "packages/hotkeys/skills/hotkeys-core/SKILL.md": "507ec6b32b7b1836276ee6527acdb3240f998d72dfb90f07c9e9820e688e8714", + "packages/hotkeys/skills/hotkeys-core/SKILL.md": "34af871e714639db1a97226b475402ea91d5aa09b138456007a7eadc1d6854bc", "packages/hotkeys/skills/hotkeys-core/references/scopes.md": "1ae616ff7ce92d9679bbd0752ada572c2060c33ea7e7e638bfcc9d5425ac6bfa", "packages/hotkeys/skills/hotkeys-core/references/testing.md": "90e6512868c194f6c906711cd16882c204600a3118b08b7a101ff6b409012538", - "packages/hotkeys/src/app-hotkeys.ts": "d1fc00e69777f9960da51c7ca02895caa8c001e52fb2b2bff1c1bb731450b3ed", + "packages/hotkeys/src/app-hotkeys.ts": "cd3e57af64f6292d40c36a44af5c5bb361af4739f2fb90a28a62613385131aa5", "packages/hotkeys/src/conflicts.ts": "750fe91126e87f062500d11d9bf19116d77c8509fdaa7644c847d49f1cbf40a3", - "packages/hotkeys/src/hotkey-manager.ts": "c824e47f3101b0cd7078894e74083455fdd55e407cf9a7511bd4e0c6668da4a0", - "packages/hotkeys/src/hotkey-recorder.ts": "082148a59db861e2f3b57495b4d70ae85dc0fdb086f42acb0a0294cf17e374ec", + "packages/hotkeys/src/hotkey-manager.ts": "5025ea3627e11b181b6b54ea4da9d1d575cf21aa0bc99cccf159a6088cbc1c69", + "packages/hotkeys/src/hotkey-recorder.ts": "7d479391753ffa97e69a7d7cb994cb7053a7ffb3e0aed6dfbfb2dbbdf51a3d24", "packages/hotkeys/src/match.ts": "3a50921a68f79183b4ffac98e07e7fdf043711bc071f419c9cdc03422d25f268", "packages/lit-hotkeys/skills/lit-hotkeys/SKILL.md": "ecd0100b52a00fc90ce71f244093da667d0c5ff78ecaf632d9db26f1c66c8e40", "packages/lit-hotkeys/skills/lit-hotkeys/references/app-hotkeys.md": "659ca9bebf4200bb693c693addb17bd5a943904e482514f2014f5ca426629e96", @@ -405,12 +405,10 @@ "packages/vue-hotkeys/src/useHotkeyRecorder.ts": "7505949604490126567f9b61bb4d5c7d5ad05c2004e67a33dba979651014176c", "packages/vue-hotkeys/src/useHotkeys.ts": "f971e9938eca3188b3af0fcc96d095330f9f6abfd70cb848d2de5c80f8d09639" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Planning artifacts describe skill coverage, which this internal bundle-size change does not alter.", - "evidence": [ - "No new public API beyond adapter-only helpers (createAppHotkeysStore, createStore, Store type)." - ] + "reason": "Skill coverage is unchanged; the new formatKeyForDisplay export is covered by the hotkeys-core skill update.", + "evidence": ["hotkeys-core/SKILL.md now names formatKeyForDisplay."] }, "source:.changeset/intent-skills.md": { "fingerprint": "a3f3a7466ee28fed505a518e9cd18cfda96a2282d207d73317b00d60b4430f62", @@ -648,27 +646,27 @@ "evidence": ["docs/framework/vue/reference/functions/useHotkeyHint.md"] }, "source:docs/reference/classes/HotkeyManager.md": { - "fingerprint": "69d7ff1215b8220b8eae2a4c1e8fa9df2f61763ddf35f4cd1db39fc2bc875519", + "fingerprint": "e9aee4b57fb8953250c39ea1467f9d8e32b7f78d500b603c532a19cb7b14a077", "snapshot": { - "docs/reference/classes/HotkeyManager.md": "fd793d8f28b18bee4df8dd30e4a9c7cd3024854db74c5c129cc3aa83b68d7c07" + "docs/reference/classes/HotkeyManager.md": "e3c7579588a15ca96484e0dce51da7c2f0b9dc78c57430e91681aee07ad815d4" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/functions/getHotkeyManager.md": { - "fingerprint": "bd328730d65ed0c0c9e88d52a0331c36e26654071c78b786f735d6e62468eed1", + "fingerprint": "649a26edbf3e39e70bc77ec6132d24e9247b3d25561a53e162d5fa7941497d64", "snapshot": { - "docs/reference/functions/getHotkeyManager.md": "06489412a418aacde056367a882b421b7f7139c2d836052909ef7bc3f24d05c5" + "docs/reference/functions/getHotkeyManager.md": "5428e74d6c6261d844489354893928376eb3fbbba350e3f17240c95641671fed" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:examples/alpine/kitchen-sink/index.html": { @@ -1170,171 +1168,171 @@ ] }, "source:docs/reference/functions/toHotkeyRegistrationView.md": { - "fingerprint": "939f535fa15f84443374c203234808b23f02d78232b2df50877a5869e23e36a0", + "fingerprint": "28159911c67ff028336c014d350cf7638916ece724967828c029b38fb0f59fa5", "snapshot": { - "docs/reference/functions/toHotkeyRegistrationView.md": "022dbf74696054503def30712ed8e3dac298f1a008c61a4e405093475f80b840" + "docs/reference/functions/toHotkeyRegistrationView.md": "2922b400584602de1ac8abe067bbce451e945811999a12e00454f75b9e03371e" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/interfaces/ActivateHotkeyScopeOptions.md": { - "fingerprint": "5ec1d27ac8c4662653e9f8cda34f980797389be91532348eac5c6333edf1d4e2", + "fingerprint": "7ee44a619d444b1ebd93501a1df54695023e0cf2cd7a444cb0655bcff8f1f05b", "snapshot": { - "docs/reference/interfaces/ActivateHotkeyScopeOptions.md": "c23998d96f93717424f85124811ac4e2d91ee5231b23108b205f7f081a49f737" + "docs/reference/interfaces/ActivateHotkeyScopeOptions.md": "840ff3531009f6c88d03d67e54a44196593ee873ebfaa5bc927f31931e214602" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/interfaces/HotkeyChordOptions.md": { - "fingerprint": "5be2593358f4e3ea12f653b9ec62a305bfc9082a0dfff57c4c4d21303b4c098c", + "fingerprint": "707df0ba0f2eccb49f398223b47b22358f975e110947246f37f273217d0a1179", "snapshot": { - "docs/reference/interfaces/HotkeyChordOptions.md": "41e202851d47d0e8741d2d107071de465c15b5af6c4110596d387cd0e49c1736" + "docs/reference/interfaces/HotkeyChordOptions.md": "0c6e3d07495cfa2bcdb1ce38c25d55405006bdf68e53ba697f60f3e0293cb0e8" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/interfaces/HotkeyChordRegistration.md": { - "fingerprint": "917911f3e890f5399a21169c888d432c633ef44483454cb4df785aa1bfd104ba", + "fingerprint": "5b27b5b9ab8d5628bbad9e2313ac592739d7a203d41995f93e0e2203962da14f", "snapshot": { - "docs/reference/interfaces/HotkeyChordRegistration.md": "aa311bb758787a7705515c4337b629386df8082672aad2f39d1f790578fdf092" + "docs/reference/interfaces/HotkeyChordRegistration.md": "661e8077633aee1451eb13705d9de8ee92f780a57115b681467c444aca08c388" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/interfaces/HotkeyChordRegistrationView.md": { - "fingerprint": "583f8c2f999d4216c88b45a3071b29b7ac230088ffa2708032bb1a2c2280e93b", + "fingerprint": "86193dc061ade744540c9e9b284cc51b35b4e23b69423540fb14ce336092340a", "snapshot": { - "docs/reference/interfaces/HotkeyChordRegistrationView.md": "1671e8e2ed368b2f5c36a14c09eafbd82191c00c4022ea7da821a675e2ea115c" + "docs/reference/interfaces/HotkeyChordRegistrationView.md": "a2d3bee2ceec1b377bfce399f44dada5a3e51890fea45d54759bac5d5d702181" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/interfaces/HotkeyOptions.md": { - "fingerprint": "ca5e6ac373fbf21f4ec51e423e7e90bd13c63e14ba23078a99fc0a86ec12daff", + "fingerprint": "42063ca7090de2fd0a7afa372179cbc644b11192df67a58ea29283061e33036c", "snapshot": { - "docs/reference/interfaces/HotkeyOptions.md": "e9a93efb65a3e55ecf91c57b3bb326b9d37d4404172ae50fd0278297b0b4fbfd" + "docs/reference/interfaces/HotkeyOptions.md": "3b72082523f5207a74957138613b97f32f72cba8f60be4b128c95f88830e086d" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/interfaces/HotkeyRegistrationHandle.md": { - "fingerprint": "764c586afe3a6b838282105d6c3e8126e15753b58b147eb25727079d7c442600", + "fingerprint": "8558daca0d173c533f1e4c3f871e0effed853b801e53d7ac04ce40b0b0571d7c", "snapshot": { - "docs/reference/interfaces/HotkeyRegistrationHandle.md": "4e0aefb635a37fdfb96694b64f1be1f53b7c2e1fa5db2797d7bf66c9148d7daa" + "docs/reference/interfaces/HotkeyRegistrationHandle.md": "5bfee5ccfbaa20d9a7fc64eb366ec9f076070fad9a02a2d5ffdc3d78427916d7" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/interfaces/HotkeyScopesState.md": { - "fingerprint": "fc525c22b7adb576c076ce845abb896bf8c43798c649e5a362deae32b35b7312", + "fingerprint": "db47d0cb9da66bbfe97e776c02a07643540efb3d973066ffeed89dc6c6843a73", "snapshot": { - "docs/reference/interfaces/HotkeyScopesState.md": "75b4219121dd87b8ca5aa192b690f2c9b97f6fb6d99e5931cd878acc2439cafb" + "docs/reference/interfaces/HotkeyScopesState.md": "3700c5eb35ec3a475d917109f98fba3278f8482951c7ce376c9ba6f12fe03dd3" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/interfaces/HotkeySequenceOptions.md": { - "fingerprint": "9aa543511871fad9244082ca1316582d68614227417b7774ac7997aceccdddb2", + "fingerprint": "caf26f9288a03794305756214af7ca1c7d5b77d5d59f4594613dc20e6aaef6e0", "snapshot": { - "docs/reference/interfaces/HotkeySequenceOptions.md": "0761914baeb45f28538abe15602565303f2a9c23052eb459c0a2849d80847fe9" + "docs/reference/interfaces/HotkeySequenceOptions.md": "45d0e2b877ee47e2222f5bb7919e2c4c200f1cf19caaa20c5f90fb04c12574ea" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/interfaces/HotkeySequenceRegistration.md": { - "fingerprint": "a1d167d1e8b57886bfbc96fb0588b7985d444fcc1fb8a975838c1360ee626943", + "fingerprint": "eafb28175850a3613eabd124296d9e757ea3690bdecd9b51e86a9e42a50d80ea", "snapshot": { - "docs/reference/interfaces/HotkeySequenceRegistration.md": "f080a4a5062b187fa08a87abdf2d24c6fef1fe7ad2d6dac2ca3c8cb7700add47" + "docs/reference/interfaces/HotkeySequenceRegistration.md": "bf7c719a1ea5fb80d25255709d98c3ffb64f2a8f60d37111ebef7dcdf84bede7" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/interfaces/HotkeySequenceRegistrationView.md": { - "fingerprint": "64a6ff8315ba496e9b51dd77ec91611fa4e1c561cb46c7b631fc54b15ef98a03", + "fingerprint": "4b03349fbe17952bb1d4300c027e03e8a0bcc8e9810dcf378b58b44d0d8d45ef", "snapshot": { - "docs/reference/interfaces/HotkeySequenceRegistrationView.md": "3d2110cd4a1289dc16d4f40f52fe757e5514c1526293f217a27e10be27bbd1b3" + "docs/reference/interfaces/HotkeySequenceRegistrationView.md": "3c20ef9bd2476e2d377a8a791c7d081b335c52f58b33eaef3b0c89a014637e20" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/type-aliases/HotkeyOptionsFor.md": { - "fingerprint": "5056acbfc8b249d782fb86387204f796261896b1cfcfbbfb6d8f1656c85a68bd", + "fingerprint": "705b12b0d3e06e8441f165ec7fa5abdd5305319dc21917f6ba91307250b7a6cb", "snapshot": { - "docs/reference/type-aliases/HotkeyOptionsFor.md": "85d64a2e3fa6771ba1515672284e6dd8b11cd9be33cb99f67b0af1fb8070feae" + "docs/reference/type-aliases/HotkeyOptionsFor.md": "34f536e251bc394e7e0655a512acc46c4a6d90ba4c4dcfaf6084b89c9fd98082" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/type-aliases/HotkeyRegistration.md": { - "fingerprint": "fddf186572bf30c1ff52549ed161a7127b8c36a91ab0c6a3a7d060b568f4541b", + "fingerprint": "80bbf754db51d8f2605d49b6262714258b55b9b1453154ff8aeab538ff21cb52", "snapshot": { - "docs/reference/type-aliases/HotkeyRegistration.md": "ee848969de831a9d66e604b890e26bd98d06893a9f1488e02ed2ea6c1c907367" + "docs/reference/type-aliases/HotkeyRegistration.md": "9a075a1d9ff08cced641ad6f77b239a15df321a442714b6db2cfc0bf2f7c0b46" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/type-aliases/HotkeyRegistrationView.md": { - "fingerprint": "53747d9174d78a5ba78084865f10647679c60a8189c275508489299abf89712d", + "fingerprint": "88b1b7ccb3b94844307dddf6285f5e5c3271b1aa947dec725b362db4ccb3488e", "snapshot": { - "docs/reference/type-aliases/HotkeyRegistrationView.md": "1653d5a79ae3e6099456630f514f5a21034418d5764a731a19dcc95a897d310b" + "docs/reference/type-aliases/HotkeyRegistrationView.md": "e8a57ccf13dd7b7b599044e394b39307508522639470ea430091606230c97c11" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:packages/hotkeys-devtools/src/components/DetailsPanel.tsx": { @@ -1960,25 +1958,27 @@ "evidence": ["docs/framework/vue/reference/index.md"] }, "source:docs/reference/index.md": { - "fingerprint": "9a611b77990be4bef9ad2c13616c8ad15c2a18dd6d5f01f95eec2eacb75a241a", + "fingerprint": "e75d562209c8f2a3e3535e6aa8673c0e9081c70fbcc35be2c5d82299b9adf01d", "snapshot": { - "docs/reference/index.md": "3745141ef0859fff0b5156b1bc83e2a98b55e3d8fc37d1b1d59b916d81a9d974" + "docs/reference/index.md": "9666883a4c4d8fd64e44bf6486759102ae0f2a4a4965fd568ceca7696971de08" }, - "head": "2a31087b3ede3d5bb6b720009643ee65acb422e2", - "outcome": "out-of-scope", - "reason": "Generated reference docs, tests, or devtools display; no skill guidance depends on them.", - "evidence": ["docs/reference/index.md"] + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] }, "source:docs/reference/type-aliases/HotkeyRegistrationStatus.md": { - "fingerprint": "2d29ecee59333ef95f0744a0a49a5d4121f6c04893aee42de501ec97fe848f81", + "fingerprint": "ab117849be7b4071d31987d0a4b1c386e9e42c4c8e7ff9eac94e14d9e2f36362", "snapshot": { - "docs/reference/type-aliases/HotkeyRegistrationStatus.md": "c2e378bf843fc93f04bc52c5d8830bf06aa74e045316af281b82da4ecc20aebf" + "docs/reference/type-aliases/HotkeyRegistrationStatus.md": "b4ce364cd118f2070ac6ed4a004d85d26445bac68658a836c18f6dbd58547f45" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:packages/alpine-hotkeys/src/createHotkeyScopesState.ts": { @@ -2276,15 +2276,15 @@ "evidence": ["packages/vue-hotkeys/tests/scopes.test.ts"] }, "source:docs/reference/classes/AppHotkeysStore.md": { - "fingerprint": "8d68360d9dfe4c2c81c4b084e5e79224e321744a4705e2be3b120d7d63aabe12", + "fingerprint": "ccea5537859b08a3f7b064e5ef53d5fbb805d5a077c359ff3b0afa2090bdcdcc", "snapshot": { - "docs/reference/classes/AppHotkeysStore.md": "1e3ad702a0006cbba599159f26b1bf5aa3ee61b2aca38c26c6fa957b4aa4779d" + "docs/reference/classes/AppHotkeysStore.md": "abf0cfe6eb682074f251ed1342ecd47258918d07217f6d82e0b3973483a67e15" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/functions/defineAppHotkeys.md": { @@ -2300,15 +2300,15 @@ ] }, "source:docs/reference/functions/getAppHotkeyRegistrationOptions.md": { - "fingerprint": "421d1659d3681d601313d0fba42afc1fdeb34a83965c77c551bca48fdadd0208", + "fingerprint": "f3cf6c4fef2c7d60e8d394867879fdf76a2ae83d7fc1f1b07e80308529faa3db", "snapshot": { - "docs/reference/functions/getAppHotkeyRegistrationOptions.md": "cf0a2c23475811eb0b2821959b3cd83fa8ff36918f71a7ffea64e4c2f449f740" + "docs/reference/functions/getAppHotkeyRegistrationOptions.md": "c0786010cce0c8405130b878d3560fd752b2b3bd6d28d8d49dfda2375b594baa" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/functions/isAppHotkey.md": { @@ -2336,39 +2336,39 @@ ] }, "source:docs/reference/functions/provideAppHotkeys.md": { - "fingerprint": "6bb2b8a94adb4259baa47a7d2635da56efe510989fefd4e97ca8486b62d99006", + "fingerprint": "b8bbd14050f9cca7ba2997f2cd05dda5626815d79c4ba89a59ed529173f4c746", "snapshot": { - "docs/reference/functions/provideAppHotkeys.md": "e2109bc183aef4923b1f25cb23e7d1fd96f58ffe6cfdfc4cc0a6b2bf79b7511d" + "docs/reference/functions/provideAppHotkeys.md": "e797ca94aa7d2f61b93792071c7761038e3fef65673cce6166c7ddf4df7411ab" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/functions/publishAppHotkeysStore.md": { - "fingerprint": "067ce63bf0383740ab7d7d37307b680867f8c5dc4adfd345d64636c98dd3d227", + "fingerprint": "41656bf7ffa223bc4f87be4c3945b4476bf1155bde81fc3e5ffcb5210427d9fc", "snapshot": { - "docs/reference/functions/publishAppHotkeysStore.md": "cef9d31537b343be70436be590bd3c674a10216c941dc8c7771888a95b3ee66d" + "docs/reference/functions/publishAppHotkeysStore.md": "d5d5f31e15fc7c6cee7c5169598eb6c4238e6cb4822a0f82f556856a0bbb348a" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/functions/resolveAppHotkey.md": { - "fingerprint": "791c80088586d412be3f409efce025d38f29c2d2b68afe84c67d52e13ee69268", + "fingerprint": "602f591e77db229c3ff2214348878a0edc5363004dd1fb84fc40698e7493ad08", "snapshot": { - "docs/reference/functions/resolveAppHotkey.md": "737ac783544004c688c398af59d2a70d7d2a2928427e499ae4a72a3a6efb0d60" + "docs/reference/functions/resolveAppHotkey.md": "f2037c3950f80ae4b978b3d38151e2f2ac4e11be3077878284e44df9b7441ccd" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/interfaces/AppHotkey.md": { @@ -2396,39 +2396,39 @@ ] }, "source:docs/reference/interfaces/AppHotkeyListItem.md": { - "fingerprint": "bb44ca09aa85845b6c5c78cd5e8f888965b53936884decbed365c6d68f6a7c46", + "fingerprint": "8848632a4acd6264dd0508b1334d229cee18de72542d92bbd5adf4a0380e96d5", "snapshot": { - "docs/reference/interfaces/AppHotkeyListItem.md": "8f34cf62a174a1200727c4df9c32b0285bebc93623d7c6a90c93545c45e181d6" + "docs/reference/interfaces/AppHotkeyListItem.md": "42c691551e0d2c9939fe236cc39a8a83f731ce9ec26ede140ee568b03c420d31" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/interfaces/AppHotkeysState.md": { - "fingerprint": "68900a27694b4933bf1813c13df14e260e9b5724330cbd4517a2c9dc713627a3", + "fingerprint": "9f188d1d31930fdd7e6054bcb7caee1754291677d482e99e85878518712800ab", "snapshot": { - "docs/reference/interfaces/AppHotkeysState.md": "06007f517982c36f4fcd638ad560e00eca0ab4258461a48f28eee97235ba6ee3" + "docs/reference/interfaces/AppHotkeysState.md": "16992d37d2f592a8e569086985586eac28d4fdad562766c0b9b7ab32363c0a6e" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/interfaces/AppHotkeysStoreOptions.md": { - "fingerprint": "135feb1dde68d830ed08da08390cb4d0cb6ee35e0d37d8c4e9a2106874eb996f", + "fingerprint": "05969f7092b3ff99da4f5ece78fd40a8c2d31bf7c9251288e6df6bf8dd8f480b", "snapshot": { - "docs/reference/interfaces/AppHotkeysStoreOptions.md": "a9c2a2080272e3a04b00c2cba0f0e6f636d5635366b947cf7d71e7f50d5d0348" + "docs/reference/interfaces/AppHotkeysStoreOptions.md": "cbc33ba9f3a8c5858c85324a8d42984a99c6471364292cdfece4610b65ac5e35" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/interfaces/Register.md": { @@ -2504,15 +2504,15 @@ ] }, "source:docs/reference/type-aliases/AppHotkeyStatus.md": { - "fingerprint": "b9ebcef331a13b66c6557e92ef2dd152a2886f28d799a395c113dcf093eb612f", + "fingerprint": "af65e20da1147dffe91578e86a23586d5babc5b4c1fb8277fc5dd03ef0b87ca6", "snapshot": { - "docs/reference/type-aliases/AppHotkeyStatus.md": "0f6b676981116aeb031a08b7262bc9fa62832c33d82dd591f300e99fc6d1f56f" + "docs/reference/type-aliases/AppHotkeyStatus.md": "77d2de024b58f0b2c61cad3071747f31e7166cb1f3c908ee2f31f06c4431c71c" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/type-aliases/AppHotkeys.md": { @@ -2564,15 +2564,15 @@ ] }, "source:docs/reference/type-aliases/Target.md": { - "fingerprint": "d644ced87ab9db647b3057552ad87e46bcfcb595db90b6e4d1d4c9e33d2f61a4", + "fingerprint": "f6627d19939fcd76343abff5b9a400654c5251e3a0416ab193cd3763d34e1d64", "snapshot": { - "docs/reference/type-aliases/Target.md": "7c5f4053621ef6f500d6bb2b32dfe2be2487523edf1df310c43d8d0a7e7cf23d" + "docs/reference/type-aliases/Target.md": "7ef0c12402023fb70770610eb61bef667c9ba77b06e7c99701ed02ec47513c77" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:packages/hotkeys/src/_event-target.ts": { @@ -2586,14 +2586,16 @@ "evidence": ["packages/hotkeys/src/_event-target.ts"] }, "source:docs/config.json": { - "fingerprint": "0cb4a1bd42647637f05ce7b7ff6121bdd4a0e8a013d45d787bc1c4a07dfebb95", + "fingerprint": "bbe02c079b1c1c417c9845cfd903dcbc6de47d13b3777f6ec26c6a85197b6799", "snapshot": { - "docs/config.json": "36232fa7bc9c068ef992988036485655fb9587f7dee6029abe19f19f81a94021" + "docs/config.json": "883ddba51303b84d8ec6110eed42649237b7d7fc71ee3ebe342a342795f4b9af" }, - "head": "391443cd0c92b1040b7a9f3270c97c48850f4f36", - "outcome": "out-of-scope", - "reason": "Tests, sidebar config, or regenerated reference docs.", - "evidence": ["docs/config.json"] + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] }, "source:docs/devtools.md": { "fingerprint": "0d96d99c22bf4ab92be7d2a0db8af69c80cd3d1c7212491ecc532d1749e7553c", @@ -3124,14 +3126,16 @@ "evidence": ["docs/framework/alpine/reference/functions/hotkeysPlugin.md"] }, "source:examples/alpine/createHeldKeys/src/main.ts": { - "fingerprint": "a970a6bbb2942767514753a2f50fc3a59a72b13f770f2620cee0a650a77e4bdc", + "fingerprint": "73362a756659fc6fd1c6eaa2461081882b3ff2d6db14107b0b58cd9979a5e235", "snapshot": { - "examples/alpine/createHeldKeys/src/main.ts": "75f29fc337259be17e2792324969fd6b20755f0b2b65f42a5b3bcad7fd37d0bb" + "examples/alpine/createHeldKeys/src/main.ts": "cb7caa403981482eb278d0f408f002c7a74f0a18fffd0195acc5c5dd1aa81c41" }, - "head": "a61d917542e56c07f1a3d2aa3f6eb951e5150818", - "outcome": "out-of-scope", - "reason": "Examples install hotkeysPlugin before Alpine.start(), as the adapter now requires. No guidance depends on the examples.", - "evidence": ["examples/alpine/createHeldKeys/src/main.ts"] + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] }, "source:examples/alpine/createHotkey-sequences/src/main.ts": { "fingerprint": "291e42f3732289a5500e8aa933111c7695b9ae07f751cf70f2598a3ad7159ea0", @@ -3858,14 +3862,16 @@ "evidence": ["packages/vue-hotkeys/skills/vue-hotkeys/SKILL.md"] }, "source:docs/framework/lit/guides/held-key-state-helpers.md": { - "fingerprint": "4518330655b30ff3798a0e110b1b04c6ab7874be6562dcfc3398ac81de69d127", + "fingerprint": "625c3d46e46bba9925649ee653cccb2795a02d28a888c2f3361564764aa6be5a", "snapshot": { - "docs/framework/lit/guides/held-key-state-helpers.md": "bc20ab354e2919d5bba8485bc359c5e50146ac3e9cfb6270fb6a727213edd41f" + "docs/framework/lit/guides/held-key-state-helpers.md": "388c4cf1df6e552aeb3cbb12ef20ff11f86eba3fd374916b8ca500c18f7c6a45" }, - "head": "5053876bbd97d6b056cef9eddddcc4e28c249aba", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Adapter bug fix (SSR subscriptions, reactive key-hold keys, cleanup outside components), its tests, user docs, or regenerated reference docs; covered by the skill review.", - "evidence": ["docs/framework/lit/guides/held-key-state-helpers.md"] + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] }, "source:docs/framework/lit/reference/classes/AppHotkeysController.md": { "fingerprint": "c73bd934701be78e27215ad3bd133aac42547532e553bc64655c17561053a7a6", @@ -4184,15 +4190,15 @@ "evidence": ["packages/svelte-hotkeys/tests/effect-root.test.ts"] }, "source:docs/reference/classes/HotkeyRecorder.md": { - "fingerprint": "09b053092959b064ef579e7acfa0474896b340b66d4886e4a0da66e9064cca4f", + "fingerprint": "b5d797690264252f9877f556645dae43691a59406723dd8a38a46310f6efc1be", "snapshot": { - "docs/reference/classes/HotkeyRecorder.md": "c1cd5087d40fe1c81542acb8fc1e0927a221828e59923b34539d8d718eb1ef66" + "docs/reference/classes/HotkeyRecorder.md": "55d6b9d2e5fb8cfa0ae739cf5b6982123153d97f1ce507dd8e21821411ff9ef9" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:packages/hotkeys/tests/hotkey-recorder-ssr.test.ts": { @@ -4278,24 +4284,28 @@ "evidence": ["packages/hotkeys/src/_match.ts"] }, "source:packages/hotkeys/tests/match.test.ts": { - "fingerprint": "772ef55007f01169680bcf72ecca934e93c38d7d142bfa323eda2e1d259e9b3e", + "fingerprint": "cb19ebad70781e3da9bd0750608bee772e75efb24ee8e8d3b331e49db0ae4f80", "snapshot": { - "packages/hotkeys/tests/match.test.ts": "a433f330161f4f6c7e0e73221cd7cffb548ff248882acb1460cd21624ca23b12" + "packages/hotkeys/tests/match.test.ts": "050203d0606119ba5bc737cc30146e230711dd96507d1e77437d587471986ccd" }, - "head": "210b3fb5577b3e7381a7c74d70e87cf395ae6682", - "outcome": "out-of-scope", - "reason": "Matcher source and tests; the guidance impact is reviewed on the hotkeys-core skill item.", - "evidence": ["packages/hotkeys/tests/match.test.ts"] + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] }, "source:packages/hotkeys/tests/sequence-regressions.test.ts": { - "fingerprint": "0df4f71842f1e3aa3bb0e7521a1f5e04d30b1c9a9ff270b7914fdf09b773e32a", + "fingerprint": "9f235b4f747d09b413f754ab5a6b1397f72accb5cb138ab7be3bd34798239073", "snapshot": { - "packages/hotkeys/tests/sequence-regressions.test.ts": "80db8a2da40225783f823edfba6b5beb97b3bdbd1e754b7952e9eb34957f48c6" + "packages/hotkeys/tests/sequence-regressions.test.ts": "aa7d6e70b184ebcc8c12081f7494fce31cd303c3c953ccc0c5f4cea577599929" }, - "head": "2f73a120955c389d30d110aaf63307c077d92323", - "outcome": "out-of-scope", - "reason": "Test fixtures only; the guidance impact is reviewed on the hotkeys-core skill item.", - "evidence": ["packages/hotkeys/tests/sequence-regressions.test.ts"] + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] }, "source:.gitignore": { "fingerprint": "a84d15c818af0081559065548b39cfc324106ad5c821ac4408caa442f419fc0d", @@ -4860,15 +4870,15 @@ ] }, "source:docs/reference/adapter/functions/createStore.md": { - "fingerprint": "8dd1da61c6db9787765f59709468cb3e3d284218ac8b67e3f870af5212f7df65", + "fingerprint": "e0c7f0a8e4dde18b56f3a33b0bd14a16bfb4350a77783907b318ea5f613a2e5f", "snapshot": { - "docs/reference/adapter/functions/createStore.md": "16bd14da1f45cb868ff30f836666147d12644213edde30ba73c5f6c3d828054a" + "docs/reference/adapter/functions/createStore.md": "374975d4f0093cd0befdf96b58dcc7d4db69ceaf7dbf164adc5c50d9c968b1d4" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Key tables are built more compactly with identical exported values and types; skills describe key names, not how the tables are built.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "key-tables.test.ts pins every exported table and checks normalizeKeyName and unknown-key warnings against the previous implementation; regenerated docs differ only in line numbers and one comment." ] }, "source:docs/reference/adapter/functions/getHotkeysProviderScopeKey.md": { @@ -5064,15 +5074,15 @@ ] }, "source:docs/reference/adapter/type-aliases/Store.md": { - "fingerprint": "f040174c6312b2ecd62f649d78b8af7ce7eb5108869b0d4c28b734a1b5941571", + "fingerprint": "3cd577f1021a9e1df706137e46a9df81e70b04cb1823e5dddadb7ebd53d1c551", "snapshot": { - "docs/reference/adapter/type-aliases/Store.md": "6c8e071c5807eba990c276b7fe42224793a5bd94f30aef6dfb6a1858bf564509" + "docs/reference/adapter/type-aliases/Store.md": "05fdd489e7506f0c4ef5d4cd0ce0bf528471b5003a7a9298ec236f3378da4819" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Key tables are built more compactly with identical exported values and types; skills describe key names, not how the tables are built.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "key-tables.test.ts pins every exported table and checks normalizeKeyName and unknown-key warnings against the previous implementation; regenerated docs differ only in line numbers and one comment." ] }, "source:docs/reference/adapter/type-aliases/WithTarget.md": { @@ -5100,15 +5110,15 @@ ] }, "source:docs/reference/functions/checkHotkey.md": { - "fingerprint": "5c39b16a57e3913f3a213a7d489170b7ec52204a19f2a08ac9dd4979615305ae", + "fingerprint": "3c6e95ce89a73171d88060c9a53a04d9036c58190b57c1b40eaf9060d8e806ad", "snapshot": { - "docs/reference/functions/checkHotkey.md": "71d7bc0c2f94a62703c46ce71e6e31f189dcdb4e40b4689ef9ce20f519f601a3" + "docs/reference/functions/checkHotkey.md": "ff9207a9408df5d27821813e8d7fdeb97115a2e2305bfb25dad3c488714a3885" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/functions/getKeyStateTracker.md": { @@ -5220,15 +5230,15 @@ ] }, "source:docs/reference/interfaces/ValidationResult.md": { - "fingerprint": "60d5866bb52bdcc952fee97710ed9470a8ea27705911a6ea2742d1676691289d", + "fingerprint": "0fe460871bc4ca99f97bdf75464646c4bfc32fa0d2e9e2334b28baede4766f26", "snapshot": { - "docs/reference/interfaces/ValidationResult.md": "9a6af3321c26510e21f2f8c2dc9052373f9532827b973f7ecd17fa997d6537e4" + "docs/reference/interfaces/ValidationResult.md": "4bd5b2b28acc86d1be97916b20165efc9de89de2066c1f34210a92fc7d98d02f" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:docs/reference/type-aliases/HotkeyRecorderCommitKeys.md": { @@ -5460,15 +5470,15 @@ ] }, "source:packages/hotkeys/src/validate.ts": { - "fingerprint": "51c8b7f3ed7c34b1e679487d932c566c07d6013eb0f67efdc25b23a5aad078f6", + "fingerprint": "0a16fac9834f08dd26568013132ac573af7fb2a0110cbd2e51dfcfd3e61c7882", "snapshot": { - "packages/hotkeys/src/validate.ts": "1b3621875e0696bf75768b505b5f232b14caedc725d9b807ba17427f609da4e3" + "packages/hotkeys/src/validate.ts": "35272df45145910ef744b1d99620608bfde9d4b25ccb1928ace1b057506865e0" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:packages/hotkeys/tests/adapter.test.ts": { @@ -5484,15 +5494,15 @@ ] }, "source:packages/hotkeys/tests/production-logs.test.ts": { - "fingerprint": "e44d564ed0e6fe38638387c6246b839d47d478b1401dd4e0fd779f5654518a53", + "fingerprint": "5b0bc4d295d32a7eeb1e08145be2091656364a3934101d2783d95b22eac05cb3", "snapshot": { - "packages/hotkeys/tests/production-logs.test.ts": "34ccec288d02e111912fc92684c8d5b2dcbb4a3973b7120976a660b7337795e0" + "packages/hotkeys/tests/production-logs.test.ts": "c602325fd78192fed9ed82e5b9050cb9b412c3e794f68ea64b1c0a5fa3c4531c" }, - "head": "8602ebef6af01c1b563ca61902df0abacdb45c87", + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", "outcome": "no-change", - "reason": "Source or generated docs changed without affecting skill guidance (store internals, provider loading, dev-only warnings, regenerated line numbers).", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", "evidence": [ - "Reviewed the diff for this file against the skills that reference it." + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." ] }, "source:packages/hotkeys/tests/store.test.ts": { @@ -5890,6 +5900,882 @@ "evidence": [ "Reviewed the diff for this file against the skills that reference it." ] + }, + "source:docs/framework/ember/reference/classes/useHotkey.md": { + "fingerprint": "a87d96a5ffeb7fb947a9cad8820ed65ba73052550e4d7ab720738290f30e7e92", + "snapshot": { + "docs/framework/ember/reference/classes/useHotkey.md": "d0d97cbe9dae2a6d763e7d539442587b9ab1ee7dc9b4a7574b7901289d626c90" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Key tables are built more compactly with identical exported values and types; skills describe key names, not how the tables are built.", + "evidence": [ + "key-tables.test.ts pins every exported table and checks normalizeKeyName and unknown-key warnings against the previous implementation; regenerated docs differ only in line numbers and one comment." + ] + }, + "source:docs/framework/ember/reference/classes/useHotkeys.md": { + "fingerprint": "942a5fd69c87dc90a903ad7591af335944521efedf6f4c3fd81f84fd4a59ee38", + "snapshot": { + "docs/framework/ember/reference/classes/useHotkeys.md": "886c88ed940ff8a4b10d7d5c97298b822479ecf6adf3a8f111a31baf21b3a36a" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Key tables are built more compactly with identical exported values and types; skills describe key names, not how the tables are built.", + "evidence": [ + "key-tables.test.ts pins every exported table and checks normalizeKeyName and unknown-key warnings against the previous implementation; regenerated docs differ only in line numbers and one comment." + ] + }, + "source:docs/reference/functions/assertValidHotkey.md": { + "fingerprint": "5ada8f7a49dc6def64f255c1f103b8ef5fa183f9947ad6d521494e9eed8f8a67", + "snapshot": { + "docs/reference/functions/assertValidHotkey.md": "dbbb437814b6344c4d9b276273eefdf23ce788da707bfcf161ab6849e37c23e9" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/functions/isSingleLetterKey.md": { + "fingerprint": "5049fa2606149865534a0fc8b33b7524be2808bcbcf7016b320ef33a4b3916e2", + "snapshot": { + "docs/reference/functions/isSingleLetterKey.md": "8133be8f0922c98a0205a76963466861e2a91ac39430cf8aff8b6b2d71c9d726" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/functions/normalizeKeyName.md": { + "fingerprint": "ce8c700e2c8685bcac5c3441fe5aed82315ed9f5cb9cc3fdd9ba7798bec3e11f", + "snapshot": { + "docs/reference/functions/normalizeKeyName.md": "d00f5f3f8d6e07656681f745c76d8f13cf78f89fab0f611e24dfc058a481fdae" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/functions/validateHotkey.md": { + "fingerprint": "57c383d22517b7aa32c4f2712a0984eac48130a8e74775d8ddfd8cabe8629fd0", + "snapshot": { + "docs/reference/functions/validateHotkey.md": "1e003da6d95b13d9f5eab93a16c5c47102d692f39b69c068a2d8470da8483b7c" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Key tables are built more compactly with identical exported values and types; skills describe key names, not how the tables are built.", + "evidence": [ + "key-tables.test.ts pins every exported table and checks normalizeKeyName and unknown-key warnings against the previous implementation; regenerated docs differ only in line numbers and one comment." + ] + }, + "source:docs/reference/type-aliases/ValidatableHotkey.md": { + "fingerprint": "deb197e41daa8eed9b28709cc1b83202ee50fc919cac7f63afba09958243fa01", + "snapshot": { + "docs/reference/type-aliases/ValidatableHotkey.md": "b9e6bf04acaeb532666202ddf5b7c4ceb51f00470043a4f7e9b3d5daf191ae38" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Key tables are built more compactly with identical exported values and types; skills describe key names, not how the tables are built.", + "evidence": [ + "key-tables.test.ts pins every exported table and checks normalizeKeyName and unknown-key warnings against the previous implementation; regenerated docs differ only in line numbers and one comment." + ] + }, + "source:docs/reference/variables/ALL_KEYS.md": { + "fingerprint": "bf6258c090d2f8ce713e8ddb9cd0f5e8a531352a5f7b0e9d2b036fce4fb8d9d2", + "snapshot": { + "docs/reference/variables/ALL_KEYS.md": "3e17dc808561a702ee8f2b219796f1ba990cdf2db7e911d12020d5d5bea897d3" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/variables/EDITING_KEYS.md": { + "fingerprint": "64e8363a29a9ddc9ea2230e611adc8f1e7d505f3f50f6052b3b6dc0ba5cf5319", + "snapshot": { + "docs/reference/variables/EDITING_KEYS.md": "a3986f8144cd05e439cfca0d429d0541a00f2d18a82b12fb69974d9c69b70374" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/variables/FUNCTION_KEYS.md": { + "fingerprint": "01491775b2667cb731476b88b8859e1c36cc14fabfde68ad242f073cf087aca0", + "snapshot": { + "docs/reference/variables/FUNCTION_KEYS.md": "0b1819b11fdefc9af2c4d0cb40b1caeecc7064b5b2d867e24626e3f0280e8cf6" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/variables/LETTER_KEYS.md": { + "fingerprint": "8bb8930a4e6fa47af7bfec63e4d65f383556adcc8e649b8237f5859c54201864", + "snapshot": { + "docs/reference/variables/LETTER_KEYS.md": "86bce94ce153921ad832e31b331d6eeaa9ee88bf5ef165acf7a075cd33e61cd9" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/variables/MODIFIER_ALIASES.md": { + "fingerprint": "08efd3d3dff330b692df59eae9162d39d3d6f8de5e220f7640a0a5576ad8440f", + "snapshot": { + "docs/reference/variables/MODIFIER_ALIASES.md": "336a3c15609a12de7fd1cdc0fc7b8ba5c31c7a44c365a5b3b981fbbbdaf3afbc" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/variables/MODIFIER_KEYS.md": { + "fingerprint": "f41d61ac558c2e12531b9495cd45ca899196a3b93bf716f5efb974447d9795dd", + "snapshot": { + "docs/reference/variables/MODIFIER_KEYS.md": "0f50474b3fee90ac432c8db280dcfefee3062fa2ff30ee8acab29f1a682eb348" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/variables/MODIFIER_ORDER.md": { + "fingerprint": "26c4ee5e64f5fbea2901bb194da4969ee4374d1a2b3a3615e4e342792b42b3fe", + "snapshot": { + "docs/reference/variables/MODIFIER_ORDER.md": "9af07023c4e74b62cc32c03946be11258d44d8dd9bc24e2ae4cbe1ae827d42d5" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/variables/NAVIGATION_KEYS.md": { + "fingerprint": "9e7d59bcbc07c66d78ff97f721f0d6aaf00dd54bb5ad9227b6d838e75a2252a1", + "snapshot": { + "docs/reference/variables/NAVIGATION_KEYS.md": "0bdaefd637d3dd06428fc96148e2a388b952db2d17abfe22cb389f23a583b811" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/variables/NUMBER_KEYS.md": { + "fingerprint": "91c8bde9634f6f567d8e20f3850979d67f58a4fafa7b63bf1d2931befe81f075", + "snapshot": { + "docs/reference/variables/NUMBER_KEYS.md": "317dbf8511e4b7f9c91af38bba27ea854e23eff6d7b1eb92ada8e0cb60d2ad37" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/variables/PUNCTUATION_CODE_MAP.md": { + "fingerprint": "9baa635e82f25c930eebf0b06e2f0eb143ea88fca586441e357ceaaea98f8f45", + "snapshot": { + "docs/reference/variables/PUNCTUATION_CODE_MAP.md": "e2d8b22ccf972ec369b622b5c60d90e82dc65dd20088b629fc46086391af0436" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/variables/PUNCTUATION_KEYS.md": { + "fingerprint": "8fc6aa53fef19bee8e488a872c8442b847b7c879b37d29e9c8ed8b5160278079", + "snapshot": { + "docs/reference/variables/PUNCTUATION_KEYS.md": "2508006f6a884972a2c8af56d8b0aa909a889521cd212c5a220acfba6bb742cd" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:packages/hotkeys/src/_named-keys.ts": { + "fingerprint": "b7b4da97ff25896c3c61e8e2110c60fbe193978155b36a7765769e3287fd226d", + "snapshot": { + "packages/hotkeys/src/_named-keys.ts": "1d3c8524b3a5bed2e58ffce4029d166f57b646fbf004ea0d3e11b6785f9a0656" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:packages/hotkeys/src/constants.ts": { + "fingerprint": "d0dd243fe5d95b222dcda9e1bb77a96b8525f7b6be45559a8d167aaac4c0446a", + "snapshot": { + "packages/hotkeys/src/constants.ts": "3c0606eba9381d47bad82d9afde2fedc0846aeae1708f284ebb21f94a81525a3" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:packages/hotkeys/tests/key-tables.test.ts": { + "fingerprint": "f475cdf547dee756021e59a0d8c44faa4895d3e4cbbe826f1d76e07f170c60bf", + "snapshot": { + "packages/hotkeys/tests/key-tables.test.ts": "b3367c4736a811c60c6e5a28ba5a936d82f686840c10bdf80895b8af1cbd2957" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/alpine/guides/formatting-display.md": { + "fingerprint": "eba774be9bd938b4746fe8e96ada3735d7d908e88af774c4d35eb2124ec58015", + "snapshot": { + "docs/framework/alpine/guides/formatting-display.md": "c90d468057e360518bfb668ac66378adbd0ae0e8cb63a8503fd4e481a0fbad35" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/alpine/guides/held-key-state-helpers.md": { + "fingerprint": "8a43fda0cc1a9802fd1fbc91f715faa4da3088ed8ca0a95103f3ef18352229fc", + "snapshot": { + "docs/framework/alpine/guides/held-key-state-helpers.md": "70750c534f34c6d3f1c1571a22e0d7e6afe205c6ed1fe2ab28ca9d4b752d547b" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/angular/guides/formatting-display.md": { + "fingerprint": "7577ee9800452470258d6669f0bf2a44e33318740299cc4a87e259ebb9d95004", + "snapshot": { + "docs/framework/angular/guides/formatting-display.md": "6387b102f4fa7d2fbb44b3016f4fbf4218967daf0574724237ee913bddce6078" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/angular/guides/held-key-state-helpers.md": { + "fingerprint": "a410ac3e72cdb42be8561d6aff176f79bc49fa5d43d13ff046b72e3cc77d3f4d", + "snapshot": { + "docs/framework/angular/guides/held-key-state-helpers.md": "01ed3312e5d4aa0a23c17962ab1b16cca0182a10a1c02fec69ffc689a581d79c" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/ember/guides/formatting-display.md": { + "fingerprint": "eafdfd78fec0512f99de1f1f4aaa2c9db4b0a25ccd3cf65a1d5c6554b3022e7a", + "snapshot": { + "docs/framework/ember/guides/formatting-display.md": "241cd8072044d75614a83a08157613e94530740f6de6b99d8402355576aa3472" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/ember/guides/held-key-state-helpers.md": { + "fingerprint": "45edaa33160cfe3f3e80816b13c6d2148bf095a9bea08758c830f0b8c09b9e88", + "snapshot": { + "docs/framework/ember/guides/held-key-state-helpers.md": "13cf6ad3b6fac6a05afc9f70186c635b2191b7a5845250794468564c9d6920af" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/lit/guides/formatting-display.md": { + "fingerprint": "6984bd99522bf14984ed298ac485e5399c98e6c1f21c579bad5daeb44b250781", + "snapshot": { + "docs/framework/lit/guides/formatting-display.md": "8b271291617f3a81698969237b0f1eac7d8171919f5250458486355b1efe370b" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/octane/guides/formatting-display.md": { + "fingerprint": "de3abaf483f5449cfd45a2f416bb5d0c7b900ee276bd7ac7f60f6c1c63b9b47e", + "snapshot": { + "docs/framework/octane/guides/formatting-display.md": "6261fc9647469022bc3b020070ab3b5423a3ca5b5af2756925562ed1acad6c17" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/octane/guides/held-key-state-helpers.md": { + "fingerprint": "ff2fe971f20fc4a03df033799ccb10973d714f3b8722be649137205b8aa00e24", + "snapshot": { + "docs/framework/octane/guides/held-key-state-helpers.md": "a5d380f20a72551cff8ecdfb45382f4b23d2a99c72cd5cb90244633ce2dcab9b" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/preact/guides/formatting-display.md": { + "fingerprint": "33eeb7740f08b31565b4ae2c8eb83c63ac266f3a9ed032e39ac3a46b7bcbda1a", + "snapshot": { + "docs/framework/preact/guides/formatting-display.md": "18b2903e5f2437b2d2226518903100bf08cd667a888e1a6a4529920bb6af10d8" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/preact/guides/held-key-state-helpers.md": { + "fingerprint": "182b125302476bda7ca563e4430a25d9efaf8337e69126e0b24ef1993a4cdfa8", + "snapshot": { + "docs/framework/preact/guides/held-key-state-helpers.md": "2d873b2ebdccab9978b5c9d7b28e2449427f9037d866072f21f41f735022fbf2" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/react/guides/formatting-display.md": { + "fingerprint": "85f9a44cd9844e19cb06b154f309ed0af7c6d21e27efbff379ed97ea01c291fb", + "snapshot": { + "docs/framework/react/guides/formatting-display.md": "1979bb91e18bac66bf46cf6899da1a1386c0dddada5d747c5172216f5b5b7d86" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/react/guides/held-key-state-helpers.md": { + "fingerprint": "b9baad37e175558111cb93f5d1a4c2f418292fe60c23a6aafe52af59b46fd4db", + "snapshot": { + "docs/framework/react/guides/held-key-state-helpers.md": "cd655057bfa7261520f7138bb9cc7abc96c7f23cca539873d34f4107ecc1bb04" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/solid/guides/formatting-display.md": { + "fingerprint": "9f88a5521a65cd9f71abdd54cf84c962d63117129596f8ca3d90dd5cfbee2f71", + "snapshot": { + "docs/framework/solid/guides/formatting-display.md": "6729f123c4aa012e906ff6a25d84861e8ae76704b85d3884ac8b8b17cd600e03" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/solid/guides/held-key-state-helpers.md": { + "fingerprint": "b596d59e42aa650b38c5a7eef156b5d4104f30690b84ced18576ea90f6a9f655", + "snapshot": { + "docs/framework/solid/guides/held-key-state-helpers.md": "8b208caedeaf0aa31bd107c8223112a210a95da855463c480db66396b67bb29c" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/svelte/guides/formatting-display.md": { + "fingerprint": "67b065072fe425e849b86719e69ae5b9d7e7d302ee7aed939baf27c132e765a0", + "snapshot": { + "docs/framework/svelte/guides/formatting-display.md": "5ac9316e596969f2ed2439c4f5d2bf75c32a7bfce2e69d7667a8607bec57b338" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/svelte/guides/held-key-state-helpers.md": { + "fingerprint": "a8eb395707d01298d9051070faab6de91a387509cdf776a7da363bc611cc8963", + "snapshot": { + "docs/framework/svelte/guides/held-key-state-helpers.md": "990c306c135b83d90b5349a5e7aa77828cf6e2ceb18e6ea08566257c8c941b60" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/vue/guides/formatting-display.md": { + "fingerprint": "fb9b89f48bbce97f69c62a1a1a8841f8177d58d83cbf0bb8ab29f80d5a4f4512", + "snapshot": { + "docs/framework/vue/guides/formatting-display.md": "dda79208642889d348fbf2c34ca4d707dc6e472a40042c407f5bcffda15c08cd" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/framework/vue/guides/held-key-state-helpers.md": { + "fingerprint": "0a3b33c36e7f46abada8cf3f429115aa28161c9fda29c446b3c8f6145e321838", + "snapshot": { + "docs/framework/vue/guides/held-key-state-helpers.md": "9c1c3d6aed73b813e981f2cf68dc19a787daa4bbf957c90a8d3594eb19b2f526" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/functions/formatForDisplay.md": { + "fingerprint": "a4937b7f6a4648cc5ee5d80fd547b27a169f3662e84b2b6f6584593b78816f65", + "snapshot": { + "docs/reference/functions/formatForDisplay.md": "23be6862887c17faaf05cf90af83d242d4abbf60e5d0ff038ec9d379c35115ec" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/functions/formatKeyForDisplay.md": { + "fingerprint": "22f378a7170ecee1ae241e883a41bd6dc41fde438827d1d40be8a4d140488a45", + "snapshot": { + "docs/reference/functions/formatKeyForDisplay.md": "0f94b6d8a2f54d50d21f76a3f14e2a9d39a6f619ca104e25e485e49f79312f4f" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/interfaces/FormatDisplayOptions.md": { + "fingerprint": "8270a4ba5027cc73337eb9242bbfacc64390b66ea13875c6f30b7860de955f77", + "snapshot": { + "docs/reference/interfaces/FormatDisplayOptions.md": "778164029efb27d71c1e2ad04412acbd1cee29b78adb0d07d08a5ae4d8f8002a" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/type-aliases/DisplayHotkey.md": { + "fingerprint": "9b22bbc9980af19d13dee3ce7d4dbc802d7faf514ffb9d1dff2b7a191ea2277c", + "snapshot": { + "docs/reference/type-aliases/DisplayHotkey.md": "cc699380c29f032ddfd7af3337dc19d0b79ec36008aa13c6e1d4202ebe204276" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:docs/reference/type-aliases/DisplayHotkeyChord.md": { + "fingerprint": "9516886f9a3db7df301fe298ce17b769df8400117dfac3c6b50f8b4ddd57114f", + "snapshot": { + "docs/reference/type-aliases/DisplayHotkeyChord.md": "7e0006bb8b7b8e17a32a423e3844c7ed39ece6f11cd3ae7777333beb4e025101" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/alpine/createHeldKeys/index.html": { + "fingerprint": "9bd610fab13afadac5d721f2bff4e6c1eecf09b05c7ae084578b965de23c2bce", + "snapshot": { + "examples/alpine/createHeldKeys/index.html": "da2ace20075c20f81920514570edf301aa09125bb4105edbae05d48cd7a95dfa" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/angular/injectHeldKeys/src/app/app.component.html": { + "fingerprint": "7e5819dc3cda7f5dcbd8da4929141ee7e39f1a1af32910c7fb4814405ddf3d61", + "snapshot": { + "examples/angular/injectHeldKeys/src/app/app.component.html": "0f168e0bc5dec200585bf9645ea865a4fc9f27f7e59a2055eb116a0c55357459" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/angular/injectHeldKeys/src/app/app.component.ts": { + "fingerprint": "7584bdd8f07c7537e3b31a2f2ecc06b60c222fb5e8216a0208431538f2bd42da", + "snapshot": { + "examples/angular/injectHeldKeys/src/app/app.component.ts": "cf7a514f6d8f7ff80e13f58974ad7941c3ff630ae3b43bd7d4b79001bcd9e2ec" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/angular/injectHotkeyRecorder-sequences/src/app/shortcut-list-item.component.html": { + "fingerprint": "df67168e91f7a12e96832d32f3b721fc60a0b4a256e9ce04290cf20944d9bdd4", + "snapshot": { + "examples/angular/injectHotkeyRecorder-sequences/src/app/shortcut-list-item.component.html": "60d7d977205f48d9b838bd2589e9a947922fcabb2cb21aac1d48e9c05e3e1a57" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/angular/injectHotkeyRecorder-sequences/src/app/shortcut-list-item.component.ts": { + "fingerprint": "4eb9f2f87c68b31b9d19598bc2854377fb6b53a4bf9540528a72a76deeb9a775", + "snapshot": { + "examples/angular/injectHotkeyRecorder-sequences/src/app/shortcut-list-item.component.ts": "8d4eb897a2672d230bbffd59e1ba622007d996cddf88d3fa813c166942eaa708" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/angular/injectHotkeyRecorder/src/app/shortcut-list-item.component.html": { + "fingerprint": "82672e1d4e5f9adfbffffdee5a647c1555260859eef2d6bb44c8f1be64fa79b1", + "snapshot": { + "examples/angular/injectHotkeyRecorder/src/app/shortcut-list-item.component.html": "5446b192477e539890d79707e37c1a7897802b988fe09d538cb12e0bd5eb096f" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/angular/injectHotkeyRecorder/src/app/shortcut-list-item.component.ts": { + "fingerprint": "0682f2bb982e5fce0931e0a3a41be046c1a40e537fa16c3786a72e13024c5e75", + "snapshot": { + "examples/angular/injectHotkeyRecorder/src/app/shortcut-list-item.component.ts": "b32aa1b977137b9fc751fe6a8571c726118a4685d0882c5f4af97c9b9a616ad5" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/angular/injectHotkeys/src/app/app.component.ts": { + "fingerprint": "c71b34b23b8f0df9b242ed689cd050f6467b7c83f48bc97df2bdcdec7a336cc4", + "snapshot": { + "examples/angular/injectHotkeys/src/app/app.component.ts": "5f51475129329fc00fd296bb30307bb93ef08962e08790555f49cb1efb05fced" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/ember/useHeldKeys/app/templates/application.gts": { + "fingerprint": "799ed6c29881f94a4e3f2ca846e184c5fd3edb402ad90756c998620d74a8b331", + "snapshot": { + "examples/ember/useHeldKeys/app/templates/application.gts": "788a62a208a9bb58b84d3ecc10c9e72cfbd7b77b58a2fc44b0c1f0b563887fa7" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/lit/held-keys/src/app.ts": { + "fingerprint": "61223ee431649fc563c10dead536b1ff37408bb7e7cd01aa4de202503ffc9492", + "snapshot": { + "examples/lit/held-keys/src/app.ts": "906dc28f1612cb034fcab3b076403c172c29a7cd7ac53bad76e4aec9968637c9" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/octane/useHeldKeys/src/main.tsrx": { + "fingerprint": "438df13c2c16eef7402929928148c6a388b72016ec82ed3a41ed5eafb4c2aec7", + "snapshot": { + "examples/octane/useHeldKeys/src/main.tsrx": "90bb42bcfadb1b39524d3d7f6e825e7baba0d35a0fdcbb1d6c6145ac9746ea01" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/preact/useHeldKeys/src/index.tsx": { + "fingerprint": "d50b654d1e47fda0a4b7a21567c1b23da92930fba7e58123cabb3c6d8c44e83f", + "snapshot": { + "examples/preact/useHeldKeys/src/index.tsx": "fb7e21268a7756239a45e7e2d63b407a8a9233a060e58392eda0efd4354e16de" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/react/useHeldKeys/src/index.tsx": { + "fingerprint": "caaf5a67e21cc974e04b0c4db08b61575ba4111bc23ab17f9206abb174852abe", + "snapshot": { + "examples/react/useHeldKeys/src/index.tsx": "98277b2e20901ec962fa179ad41e6cc529b6fc80f5f776ab5d036601420a883d" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/solid/createHeldKeys/src/index.tsx": { + "fingerprint": "7aebfb85c7961f99a709de06f876775195df542410d9a6330772418c086c6741", + "snapshot": { + "examples/solid/createHeldKeys/src/index.tsx": "2f0f6a11611b2e792c42ab8108ce4b592e6f7ef2c9f0b278fa348c7a24a8d7f2" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/solid/createHotkeys/src/index.tsx": { + "fingerprint": "cb6b0c722aee34bed39fc9ea9c8bb63c4cd61ced3adedeb4ccf3dea05c2fa07a", + "snapshot": { + "examples/solid/createHotkeys/src/index.tsx": "78fd9be4f1b6f0807574aa414a5fbd66a632f94570a94f56a417984b66f49cea" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/svelte/get-held-keys/src/App.svelte": { + "fingerprint": "d2ce5b4b8c76a159f91b293758e3ff95af35df0261d0c48810491fd2659193c0", + "snapshot": { + "examples/svelte/get-held-keys/src/App.svelte": "117384a4a16f29584a22a2196623670a8a3a2cfeec646bc44248be3ad9526661" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/vanilla/formatForDisplay/src/main.ts": { + "fingerprint": "56eb3702d1a512c982b8a1905f45c631c1f65a7af50fb6187fcd35b41d3381f2", + "snapshot": { + "examples/vanilla/formatForDisplay/src/main.ts": "7e785d7ae756627cf413db38cb3be5746cc5852015fc6fc78edc7d5b0fd829ed" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:examples/vue/useHeldKeys/src/App.vue": { + "fingerprint": "f7d133d2c24a9114cf68e7fad85786a8dd7b2a3d8dba80df09dc918c71df8aaa", + "snapshot": { + "examples/vue/useHeldKeys/src/App.vue": "fb6ed10a8a3b693de1ea2e3726fdcac9935d05bf4868e1ed289f0489c1529a57" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:packages/hotkeys-devtools/src/components/HeldKeysTopbar.tsx": { + "fingerprint": "79a8fbfc21d4f2f08d4dd9e8a64cb9fc9680daac08b3307d760977385a07c01c", + "snapshot": { + "packages/hotkeys-devtools/src/components/HeldKeysTopbar.tsx": "a446418f534c24973e19d3961855c7dfb1da3c431b232d742514a305645befe5" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:packages/hotkeys/src/_keyboard-event.ts": { + "fingerprint": "c69ca358e87eef6fd7968475411fd88eb7ed182daac2e5f2ae58415dd3d63f61", + "snapshot": { + "packages/hotkeys/src/_keyboard-event.ts": "8412a21edf9396cbd71fc2b422293da86e59c00db23e822b811774080646d7f7" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:packages/hotkeys/src/format.ts": { + "fingerprint": "ef12dd98924daef804bcf88e93cd64dc13fef7ec88314134b65bb097d3f34872", + "snapshot": { + "packages/hotkeys/src/format.ts": "1e90d395202d1594cfa7c0ee7eec5663f8177374fd0d64932e8224fb910e3e73" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:packages/hotkeys/tests/format.test.ts": { + "fingerprint": "1096c1cc2e5865743771fe04b2e7c3f30602e6a4d31ab5bd391f21a004c103d1", + "snapshot": { + "packages/hotkeys/tests/format.test.ts": "2a210868c4b0cd1c0abe4fd28fba188206e991b2d7c442d94892fb11b8c7977a" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:packages/hotkeys/tests/key-coverage.test.ts": { + "fingerprint": "3e987fb968e7d13e432e8b1b4f813630569da504f168763906d05d877c4e4d7f", + "snapshot": { + "packages/hotkeys/tests/key-coverage.test.ts": "3a9c74e69c7f974a29c5d2823bb269e168b82ef7b12a1910c87670a33197cd12" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:packages/hotkeys/tests/parse.test.ts": { + "fingerprint": "4dabf58fa9a6c54120699227495764acb8e909a892f566f1dea0b77ad3bfa714", + "snapshot": { + "packages/hotkeys/tests/parse.test.ts": "82cf384f5db3715452d4da221866268533dd1fa66266e91da4d50aa96e431177" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:packages/hotkeys/tests/typed-behavior.test.ts": { + "fingerprint": "d5c4046f5f70d0cd19807202ec3f440aef9acb9a132efa52d9f788f00d5e37dc", + "snapshot": { + "packages/hotkeys/tests/typed-behavior.test.ts": "1c89fdbf789c0fd3eae7c216ce2658805c47a1ff55e90a8147cfd9247858c15d" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:packages/hotkeys/tests/unified-hotkeys.test.ts": { + "fingerprint": "eb7ca333403ae706648f51156536a2f263674d0f23bf2648be98e6dc6f05539d", + "snapshot": { + "packages/hotkeys/tests/unified-hotkeys.test.ts": "5cbf94a85a08eff0d82bc531d2ddeab6bf68c1fd70a7160b16e28a4d9c3eb634" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:packages/hotkeys/tests/untrusted-input.test.ts": { + "fingerprint": "f7c756ac90b6f9d5552ec23cd606d6c8c335579bbb45ff751212e4ee8463c096", + "snapshot": { + "packages/hotkeys/tests/untrusted-input.test.ts": "726ba4a69f7e7bb1826744fddf18eac73e0a7d5f667d1c43f5d0cc428172dcfa" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] + }, + "source:packages/hotkeys/tests/validate.test.ts": { + "fingerprint": "59ef4f65e32b0cd8af5d0f2b70549b6e9479ec908bcbd151bd92a1f7beeda909", + "snapshot": { + "packages/hotkeys/tests/validate.test.ts": "e93c6c7cd256bff61f7fa63138066f303c9d6839797ecb2f695bc16cd712a775" + }, + "head": "0a0a2ca93d6e4cc471a8994b6b8ec7354cddd12a", + "outcome": "no-change", + "reason": "Source, tests, examples, or regenerated docs for the case-sensitive key names and formatKeyForDisplay change; skill guidance is updated in hotkeys-core.", + "evidence": [ + "Reviewed the diff for this file; typed-behavior fingerprints show no change for typed hotkeys." + ] } } } diff --git a/docs/config.json b/docs/config.json index 0e800936..fff37e85 100644 --- a/docs/config.json +++ b/docs/config.json @@ -2296,6 +2296,10 @@ "label": "formatForDisplay", "to": "reference/functions/formatForDisplay" }, + { + "label": "formatKeyForDisplay", + "to": "reference/functions/formatKeyForDisplay" + }, { "label": "FormatDisplayOptions", "to": "reference/interfaces/FormatDisplayOptions" diff --git a/docs/framework/alpine/guides/formatting-display.md b/docs/framework/alpine/guides/formatting-display.md index 8d5bddc9..da47230b 100644 --- a/docs/framework/alpine/guides/formatting-display.md +++ b/docs/framework/alpine/guides/formatting-display.md @@ -21,6 +21,8 @@ The same label can stand for different hotkeys. `Mod+S` follows the character S, Omit `platform` to use detection. On macOS, the label joins modifier symbols with spaces. Windows and Linux use names joined with `+`. macOS orders modifiers as Control, Option, Shift, Command, so `Mod+Shift+S` displays as `⇧ ⌘ S`, while the hotkey itself stays `Mod+Shift+S`. +`formatForDisplay` accepts hotkeys only. To label a single key that isn't a hotkey, such as a held key or a modifier on its own, use `formatKeyForDisplay`. + ## Render individual keycaps Set `parts: true` to get one label per key instead of a joined string: diff --git a/docs/framework/alpine/guides/held-key-state-helpers.md b/docs/framework/alpine/guides/held-key-state-helpers.md index c75ebd28..d04fac63 100644 --- a/docs/framework/alpine/guides/held-key-state-helpers.md +++ b/docs/framework/alpine/guides/held-key-state-helpers.md @@ -33,6 +33,8 @@ Alpine.data('keyDisplay', () => { }) ``` +To label each held key the way hotkeys are labeled, pass it to `formatKeyForDisplay`: `Shift` becomes `⇧` on macOS and `Escape` becomes `Esc`. + ```html
``` diff --git a/docs/framework/angular/guides/formatting-display.md b/docs/framework/angular/guides/formatting-display.md index 3e9573c2..e466d698 100644 --- a/docs/framework/angular/guides/formatting-display.md +++ b/docs/framework/angular/guides/formatting-display.md @@ -21,6 +21,8 @@ The same label can stand for different hotkeys. `Mod+S` follows the character S, Omit `platform` to use detection. On macOS, the label joins modifier symbols with spaces. Windows and Linux use names joined with `+`. macOS orders modifiers as Control, Option, Shift, Command, so `Mod+Shift+S` displays as `⇧ ⌘ S`, while the hotkey itself stays `Mod+Shift+S`. +`formatForDisplay` accepts hotkeys only. To label a single key that isn't a hotkey, such as a held key or a modifier on its own, use `formatKeyForDisplay`. + ## Render individual keycaps Set `parts: true` to get one label per key instead of a joined string: diff --git a/docs/framework/angular/guides/held-key-state-helpers.md b/docs/framework/angular/guides/held-key-state-helpers.md index 2a3f356a..16a77af2 100644 --- a/docs/framework/angular/guides/held-key-state-helpers.md +++ b/docs/framework/angular/guides/held-key-state-helpers.md @@ -31,6 +31,8 @@ export class KeyDisplayComponent { } ``` +To label each held key the way hotkeys are labeled, pass it to `formatKeyForDisplay`: `Shift` becomes `⇧` on macOS and `Escape` becomes `Esc`. + ## Check whether a key is held `injectKeyHold` returns whether one key is held. It updates only when that key is pressed or released, and accepts a getter for a key that changes: diff --git a/docs/framework/ember/guides/formatting-display.md b/docs/framework/ember/guides/formatting-display.md index 4b7b7551..e1765ad5 100644 --- a/docs/framework/ember/guides/formatting-display.md +++ b/docs/framework/ember/guides/formatting-display.md @@ -21,6 +21,8 @@ The same label can stand for different hotkeys. `Mod+S` follows the character S, Omit `platform` to use detection. On macOS, the label joins modifier symbols with spaces. Windows and Linux use names joined with `+`. macOS orders modifiers as Control, Option, Shift, Command, so `Mod+Shift+S` displays as `⇧ ⌘ S`, while the hotkey itself stays `Mod+Shift+S`. +`formatForDisplay` accepts hotkeys only. To label a single key that isn't a hotkey, such as a held key or a modifier on its own, use `formatKeyForDisplay`. + ## Render individual keycaps Set `parts: true` to get one label per key instead of a joined string: diff --git a/docs/framework/ember/guides/held-key-state-helpers.md b/docs/framework/ember/guides/held-key-state-helpers.md index 5489305e..49d851bc 100644 --- a/docs/framework/ember/guides/held-key-state-helpers.md +++ b/docs/framework/ember/guides/held-key-state-helpers.md @@ -32,6 +32,8 @@ export default class KeyDisplay extends Component { } ``` +To label each held key the way hotkeys are labeled, pass it to `formatKeyForDisplay`: `Shift` becomes `⇧` on macOS and `Escape` becomes `Esc`. + ## Check whether a key is held `useKeyHold` tracks whether one key is held. It updates only when that key is pressed or released, and accepts a getter for a key that changes: diff --git a/docs/framework/lit/guides/formatting-display.md b/docs/framework/lit/guides/formatting-display.md index c5c4991f..22206161 100644 --- a/docs/framework/lit/guides/formatting-display.md +++ b/docs/framework/lit/guides/formatting-display.md @@ -21,6 +21,8 @@ The same label can stand for different hotkeys. `Mod+S` follows the character S, Omit `platform` to use detection. On macOS, the label joins modifier symbols with spaces. Windows and Linux use names joined with `+`. macOS orders modifiers as Control, Option, Shift, Command, so `Mod+Shift+S` displays as `⇧ ⌘ S`, while the hotkey itself stays `Mod+Shift+S`. +`formatForDisplay` accepts hotkeys only. To label a single key that isn't a hotkey, such as a held key or a modifier on its own, use `formatKeyForDisplay`. + ## Render individual keycaps Set `parts: true` to get one label per key instead of a joined string: diff --git a/docs/framework/lit/guides/held-key-state-helpers.md b/docs/framework/lit/guides/held-key-state-helpers.md index ec21a7c1..2d9abd41 100644 --- a/docs/framework/lit/guides/held-key-state-helpers.md +++ b/docs/framework/lit/guides/held-key-state-helpers.md @@ -30,6 +30,8 @@ class KeyDisplay extends LitElement { } ``` +To label each held key the way hotkeys are labeled, pass it to `formatKeyForDisplay`: `Shift` becomes `⇧` on macOS and `Escape` becomes `Esc`. + ## Check whether a key is held `KeyHoldController` tracks whether one key is held. It updates the element only when that key is pressed or released: diff --git a/docs/framework/octane/guides/formatting-display.md b/docs/framework/octane/guides/formatting-display.md index 54f494b9..290db505 100644 --- a/docs/framework/octane/guides/formatting-display.md +++ b/docs/framework/octane/guides/formatting-display.md @@ -21,6 +21,8 @@ The same label can stand for different hotkeys. `Mod+S` follows the character S, Omit `platform` to use detection. On macOS, the label joins modifier symbols with spaces. Windows and Linux use names joined with `+`. macOS orders modifiers as Control, Option, Shift, Command, so `Mod+Shift+S` displays as `⇧ ⌘ S`, while the hotkey itself stays `Mod+Shift+S`. +`formatForDisplay` accepts hotkeys only. To label a single key that isn't a hotkey, such as a held key or a modifier on its own, use `formatKeyForDisplay`. + ## Render individual keycaps Set `parts: true` to get one label per key instead of a joined string: diff --git a/docs/framework/octane/guides/held-key-state-helpers.md b/docs/framework/octane/guides/held-key-state-helpers.md index 902a3daf..a164e7da 100644 --- a/docs/framework/octane/guides/held-key-state-helpers.md +++ b/docs/framework/octane/guides/held-key-state-helpers.md @@ -22,6 +22,8 @@ function KeyDisplay() @{ } ``` +To label each held key the way hotkeys are labeled, pass it to `formatKeyForDisplay`: `Shift` becomes `⇧` on macOS and `Escape` becomes `Esc`. + ## Check whether a key is held `useKeyHold` returns whether one key is held. The component updates only when that key is pressed or released: diff --git a/docs/framework/preact/guides/formatting-display.md b/docs/framework/preact/guides/formatting-display.md index 4a29d052..fb893d3e 100644 --- a/docs/framework/preact/guides/formatting-display.md +++ b/docs/framework/preact/guides/formatting-display.md @@ -21,6 +21,8 @@ The same label can stand for different hotkeys. `Mod+S` follows the character S, Omit `platform` to use detection. On macOS, the label joins modifier symbols with spaces. Windows and Linux use names joined with `+`. macOS orders modifiers as Control, Option, Shift, Command, so `Mod+Shift+S` displays as `⇧ ⌘ S`, while the hotkey itself stays `Mod+Shift+S`. +`formatForDisplay` accepts hotkeys only. To label a single key that isn't a hotkey, such as a held key or a modifier on its own, use `formatKeyForDisplay`. + ## Render individual keycaps Set `parts: true` to get one label per key instead of a joined string: diff --git a/docs/framework/preact/guides/held-key-state-helpers.md b/docs/framework/preact/guides/held-key-state-helpers.md index db1c7026..0ba70917 100644 --- a/docs/framework/preact/guides/held-key-state-helpers.md +++ b/docs/framework/preact/guides/held-key-state-helpers.md @@ -26,6 +26,8 @@ function KeyDisplay() { } ``` +To label each held key the way hotkeys are labeled, pass it to `formatKeyForDisplay`: `Shift` becomes `⇧` on macOS and `Escape` becomes `Esc`. + ## Check whether a key is held `useKeyHold` returns whether one key is held. The component re-renders only when that key is pressed or released: diff --git a/docs/framework/react/guides/formatting-display.md b/docs/framework/react/guides/formatting-display.md index c53bc985..2554d004 100644 --- a/docs/framework/react/guides/formatting-display.md +++ b/docs/framework/react/guides/formatting-display.md @@ -21,6 +21,8 @@ The same label can stand for different hotkeys. `Mod+S` follows the character S, Omit `platform` to use detection. On macOS, the label joins modifier symbols with spaces. Windows and Linux use names joined with `+`. macOS orders modifiers as Control, Option, Shift, Command, so `Mod+Shift+S` displays as `⇧ ⌘ S`, while the hotkey itself stays `Mod+Shift+S`. +`formatForDisplay` accepts hotkeys only. To label a single key that isn't a hotkey, such as a held key or a modifier on its own, use `formatKeyForDisplay`. + ## Render individual keycaps Set `parts: true` to get one label per key instead of a joined string: diff --git a/docs/framework/react/guides/held-key-state-helpers.md b/docs/framework/react/guides/held-key-state-helpers.md index a97d5100..e8fae618 100644 --- a/docs/framework/react/guides/held-key-state-helpers.md +++ b/docs/framework/react/guides/held-key-state-helpers.md @@ -26,6 +26,8 @@ function KeyDisplay() { } ``` +To label each held key the way hotkeys are labeled, pass it to `formatKeyForDisplay`: `Shift` becomes `⇧` on macOS and `Escape` becomes `Esc`. + ## Check whether a key is held `useKeyHold` returns whether one key is held. The component re-renders only when that key is pressed or released: diff --git a/docs/framework/solid/guides/formatting-display.md b/docs/framework/solid/guides/formatting-display.md index d51d27ea..f33c74df 100644 --- a/docs/framework/solid/guides/formatting-display.md +++ b/docs/framework/solid/guides/formatting-display.md @@ -21,6 +21,8 @@ The same label can stand for different hotkeys. `Mod+S` follows the character S, Omit `platform` to use detection. On macOS, the label joins modifier symbols with spaces. Windows and Linux use names joined with `+`. macOS orders modifiers as Control, Option, Shift, Command, so `Mod+Shift+S` displays as `⇧ ⌘ S`, while the hotkey itself stays `Mod+Shift+S`. +`formatForDisplay` accepts hotkeys only. To label a single key that isn't a hotkey, such as a held key or a modifier on its own, use `formatKeyForDisplay`. + ## Render individual keycaps Set `parts: true` to get one label per key instead of a joined string: diff --git a/docs/framework/solid/guides/held-key-state-helpers.md b/docs/framework/solid/guides/held-key-state-helpers.md index 5fc75e2e..74792adb 100644 --- a/docs/framework/solid/guides/held-key-state-helpers.md +++ b/docs/framework/solid/guides/held-key-state-helpers.md @@ -28,6 +28,8 @@ function KeyDisplay() { } ``` +To label each held key the way hotkeys are labeled, pass it to `formatKeyForDisplay`: `Shift` becomes `⇧` on macOS and `Escape` becomes `Esc`. + ## Check whether a key is held `createKeyHold` returns whether one key is held. It updates only when that key is pressed or released, and accepts an accessor for a key that changes: diff --git a/docs/framework/svelte/guides/formatting-display.md b/docs/framework/svelte/guides/formatting-display.md index 0bad3023..a1bffde1 100644 --- a/docs/framework/svelte/guides/formatting-display.md +++ b/docs/framework/svelte/guides/formatting-display.md @@ -21,6 +21,8 @@ The same label can stand for different hotkeys. `Mod+S` follows the character S, Omit `platform` to use detection. On macOS, the label joins modifier symbols with spaces. Windows and Linux use names joined with `+`. macOS orders modifiers as Control, Option, Shift, Command, so `Mod+Shift+S` displays as `⇧ ⌘ S`, while the hotkey itself stays `Mod+Shift+S`. +`formatForDisplay` accepts hotkeys only. To label a single key that isn't a hotkey, such as a held key or a modifier on its own, use `formatKeyForDisplay`. + ## Render individual keycaps Set `parts: true` to get one label per key instead of a joined string: diff --git a/docs/framework/svelte/guides/held-key-state-helpers.md b/docs/framework/svelte/guides/held-key-state-helpers.md index bfc80b7a..7c724560 100644 --- a/docs/framework/svelte/guides/held-key-state-helpers.md +++ b/docs/framework/svelte/guides/held-key-state-helpers.md @@ -26,6 +26,8 @@ Each function returns an object with a reactive getter. Read the getter where yo ``` +To label each held key the way hotkeys are labeled, pass it to `formatKeyForDisplay`: `Shift` becomes `⇧` on macOS and `Escape` becomes `Esc`. + ## Check whether a key is held `getIsKeyHeld(key).held` tells you whether one key is held. It updates only when that key is pressed or released: diff --git a/docs/framework/vue/guides/formatting-display.md b/docs/framework/vue/guides/formatting-display.md index e76429ca..04874508 100644 --- a/docs/framework/vue/guides/formatting-display.md +++ b/docs/framework/vue/guides/formatting-display.md @@ -21,6 +21,8 @@ The same label can stand for different hotkeys. `Mod+S` follows the character S, Omit `platform` to use detection. On macOS, the label joins modifier symbols with spaces. Windows and Linux use names joined with `+`. macOS orders modifiers as Control, Option, Shift, Command, so `Mod+Shift+S` displays as `⇧ ⌘ S`, while the hotkey itself stays `Mod+Shift+S`. +`formatForDisplay` accepts hotkeys only. To label a single key that isn't a hotkey, such as a held key or a modifier on its own, use `formatKeyForDisplay`. + ## Render individual keycaps Set `parts: true` to get one label per key instead of a joined string: diff --git a/docs/framework/vue/guides/held-key-state-helpers.md b/docs/framework/vue/guides/held-key-state-helpers.md index 66b2dadc..bbf2b32c 100644 --- a/docs/framework/vue/guides/held-key-state-helpers.md +++ b/docs/framework/vue/guides/held-key-state-helpers.md @@ -28,6 +28,8 @@ const heldKeys = useHeldKeys() ``` +To label each held key the way hotkeys are labeled, pass it to `formatKeyForDisplay`: `Shift` becomes `⇧` on macOS and `Escape` becomes `Esc`. + ## Check whether a key is held `useKeyHold` returns whether one key is held. It updates only when that key is pressed or released, and accepts a ref or getter for a key that changes: diff --git a/docs/reference/adapter/functions/createStore.md b/docs/reference/adapter/functions/createStore.md index 830c801f..e643360c 100644 --- a/docs/reference/adapter/functions/createStore.md +++ b/docs/reference/adapter/functions/createStore.md @@ -7,7 +7,7 @@ title: createStore function createStore(initialState): Store; ``` -Defined in: \_store.ts:33 +Defined in: [\_store.ts:33](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/_store.ts#L33) Creates a store. Listeners run synchronously after each change, and an update to an equal value (by `Object.is`) notifies no one. diff --git a/docs/reference/adapter/type-aliases/Store.md b/docs/reference/adapter/type-aliases/Store.md index 3ce0d1f3..f7d2ef13 100644 --- a/docs/reference/adapter/type-aliases/Store.md +++ b/docs/reference/adapter/type-aliases/Store.md @@ -7,7 +7,7 @@ title: Store type Store = Pick, "state" | "get" | "setState" | "subscribe">; ``` -Defined in: \_store.ts:8 +Defined in: [\_store.ts:8](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/_store.ts#L8) The part of TanStack Store's `Store` that TanStack Hotkeys uses. Its stores work with TanStack Store's framework adapters, such as `useSelector` from diff --git a/docs/reference/classes/AppHotkeysStore.md b/docs/reference/classes/AppHotkeysStore.md index 24d6f211..2603aecd 100644 --- a/docs/reference/classes/AppHotkeysStore.md +++ b/docs/reference/classes/AppHotkeysStore.md @@ -3,7 +3,7 @@ id: AppHotkeysStore title: AppHotkeysStore --- -Defined in: [app-hotkeys.ts:362](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L362) +Defined in: [app-hotkeys.ts:363](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L363) Holds declared app hotkeys and the user's custom hotkeys. Framework providers create one and expose it through hooks; devtools read it from @@ -34,7 +34,7 @@ store.setCustomHotkey('doc.save', 'Mod+Shift+S') new AppHotkeysStore(appHotkeys, options?): AppHotkeysStore; ``` -Defined in: [app-hotkeys.ts:367](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L367) +Defined in: [app-hotkeys.ts:368](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L368) #### Parameters @@ -58,7 +58,7 @@ Defined in: [app-hotkeys.ts:367](https://github.com/TanStack/hotkeys/blob/main/p readonly store: Store>; ``` -Defined in: [app-hotkeys.ts:363](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L363) +Defined in: [app-hotkeys.ts:364](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L364) ## Accessors @@ -70,7 +70,7 @@ Defined in: [app-hotkeys.ts:363](https://github.com/TanStack/hotkeys/blob/main/p get appHotkeys(): T; ``` -Defined in: [app-hotkeys.ts:385](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L385) +Defined in: [app-hotkeys.ts:386](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L386) Effective app hotkeys. @@ -88,7 +88,7 @@ Effective app hotkeys. get customHotkeys(): CustomHotkeys; ``` -Defined in: [app-hotkeys.ts:390](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L390) +Defined in: [app-hotkeys.ts:391](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L391) The user's hotkeys that differ from the defaults. @@ -107,7 +107,7 @@ findConflicts(id, hotkey): AppHotkey[]; ``` -Defined in: [app-hotkeys.ts:426](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L426) +Defined in: [app-hotkeys.ts:428](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L428) Other app hotkeys that would collide if `id` used `hotkey`. App hotkeys collide when their scopes match or either is `'global'`, and their @@ -143,7 +143,7 @@ get(id): | undefined; ``` -Defined in: [app-hotkeys.ts:417](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L417) +Defined in: [app-hotkeys.ts:418](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L418) Effective app hotkey for an id, or `undefined` when it is not declared. @@ -169,7 +169,7 @@ Effective app hotkey for an id, or `undefined` when it is not declared. getList(registrations): AppHotkeyListItem[]; ``` -Defined in: [app-hotkeys.ts:497](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L497) +Defined in: [app-hotkeys.ts:499](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L499) Joins app hotkeys with live registrations, in declaration order. Adapters call this with the manager's registration views. @@ -192,7 +192,7 @@ Adapters call this with the manager's registration views. resetCustomHotkey(id): void; ``` -Defined in: [app-hotkeys.ts:474](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L474) +Defined in: [app-hotkeys.ts:476](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L476) Restores the default hotkey for an app hotkey. @@ -214,7 +214,7 @@ keyof `T` & `string` resetCustomHotkeys(): void; ``` -Defined in: [app-hotkeys.ts:481](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L481) +Defined in: [app-hotkeys.ts:483](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L483) Restores every default hotkey. @@ -230,7 +230,7 @@ Restores every default hotkey. setAppHotkeys(appHotkeys): void; ``` -Defined in: [app-hotkeys.ts:403](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L403) +Defined in: [app-hotkeys.ts:404](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L404) Replaces the declarations, for example after hot module replacement. Custom hotkeys for ids that still exist are kept. @@ -256,7 +256,7 @@ setCustomHotkey(id, hotkey): AppHotkey[]; ``` -Defined in: [app-hotkeys.ts:445](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L445) +Defined in: [app-hotkeys.ts:447](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L447) Sets the user's hotkey for an app hotkey. `null` unbinds it. A hotkey equal to the default removes the customization. @@ -288,7 +288,7 @@ Conflicting app hotkeys. When any exist, nothing changes. setOptions(options): void; ``` -Defined in: [app-hotkeys.ts:395](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L395) +Defined in: [app-hotkeys.ts:396](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L396) Updates callbacks and other options without resetting custom hotkeys. diff --git a/docs/reference/classes/HotkeyManager.md b/docs/reference/classes/HotkeyManager.md index f7b6194e..aa2024e8 100644 --- a/docs/reference/classes/HotkeyManager.md +++ b/docs/reference/classes/HotkeyManager.md @@ -3,7 +3,7 @@ id: HotkeyManager title: HotkeyManager --- -Defined in: [hotkey-manager.ts:450](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L450) +Defined in: [hotkey-manager.ts:454](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L454) Singleton manager for hotkey registrations, including sequences. @@ -39,7 +39,7 @@ top.unregister() readonly appHotkeys: Store; ``` -Defined in: [hotkey-manager.ts:477](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L477) +Defined in: [hotkey-manager.ts:481](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L481) The app hotkeys store published by a framework provider, so tools such as devtools can list declared hotkeys that are not registered. @@ -52,7 +52,7 @@ devtools can list declared hotkeys that are not registered. readonly registrations: Store>; ``` -Defined in: [hotkey-manager.ts:470](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L470) +Defined in: [hotkey-manager.ts:474](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L474) The TanStack Store containing all hotkey registrations, chords and sequences. Use this to subscribe to registration changes or access current registrations. @@ -81,7 +81,7 @@ for (const [id, reg] of manager.registrations.state) { readonly scopes: Store; ``` -Defined in: [hotkey-manager.ts:480](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L480) +Defined in: [hotkey-manager.ts:484](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L484) Active scopes. Subscribe to show which hotkeys are suspended. @@ -93,7 +93,7 @@ Active scopes. Subscribe to show which hotkeys are suspended. activateScope(scope, options?): () => void; ``` -Defined in: [hotkey-manager.ts:542](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L542) +Defined in: [hotkey-manager.ts:546](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L546) Activates a scope until the returned function is called. Activations are counted, so a scope stays active until every activation is released. @@ -137,7 +137,7 @@ manager.activateScope('dialog', { exclusive: { allow: ['global'] } }) destroy(): void; ``` -Defined in: [hotkey-manager.ts:1520](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1520) +Defined in: [hotkey-manager.ts:1538](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1538) Destroys the manager and removes all listeners. @@ -153,7 +153,7 @@ Destroys the manager and removes all listeners. getRegistrationCount(): number; ``` -Defined in: [hotkey-manager.ts:1456](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1456) +Defined in: [hotkey-manager.ts:1474](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1474) Gets the number of registered hotkeys, chords and sequences. @@ -169,7 +169,7 @@ Gets the number of registered hotkeys, chords and sequences. hasActiveRegistration(hotkey): boolean; ``` -Defined in: [hotkey-manager.ts:1493](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1493) +Defined in: [hotkey-manager.ts:1511](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1511) Checks whether a hotkey can fire now: at least one registration is enabled, in an active scope, and listening where key presses go. A @@ -200,7 +200,7 @@ True if a registration that can fire exists isRegistered(hotkey, target?): boolean; ``` -Defined in: [hotkey-manager.ts:1467](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1467) +Defined in: [hotkey-manager.ts:1485](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1485) Checks if a specific hotkey is registered. @@ -232,7 +232,7 @@ True if a matching registration exists isScopeActive(scope?): boolean; ``` -Defined in: [hotkey-manager.ts:578](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L578) +Defined in: [hotkey-manager.ts:582](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L582) Whether hotkeys in a scope can fire: the scope is `'global'` or activated, and either no scope is exclusive or this scope is the @@ -259,7 +259,7 @@ register( options?): HotkeyRegistrationHandle>; ``` -Defined in: [hotkey-manager.ts:753](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L753) +Defined in: [hotkey-manager.ts:757](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L757) Registers a hotkey handler and returns a handle for updating the registration. @@ -325,7 +325,7 @@ handle.unregister() resetSequenceProgress(): void; ``` -Defined in: [hotkey-manager.ts:1403](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1403) +Defined in: [hotkey-manager.ts:1421](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1421) Resets the progress of every in-progress sequence. @@ -341,7 +341,7 @@ Resets the progress of every in-progress sequence. triggerRegistration(id): boolean; ``` -Defined in: [hotkey-manager.ts:1423](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1423) +Defined in: [hotkey-manager.ts:1441](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1441) Triggers a registration's callback programmatically from devtools. Creates a synthetic KeyboardEvent from the chord (or a sequence's last step) @@ -369,7 +369,7 @@ True if the registration was found and triggered static getInstance(): HotkeyManager; ``` -Defined in: [hotkey-manager.ts:510](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L510) +Defined in: [hotkey-manager.ts:514](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L514) Gets the singleton instance of HotkeyManager. @@ -385,7 +385,7 @@ Gets the singleton instance of HotkeyManager. static resetInstance(): void; ``` -Defined in: [hotkey-manager.ts:517](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L517) +Defined in: [hotkey-manager.ts:521](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L521) Resets the singleton instance. Useful for testing. diff --git a/docs/reference/classes/HotkeyRecorder.md b/docs/reference/classes/HotkeyRecorder.md index ba92485f..6ce392f2 100644 --- a/docs/reference/classes/HotkeyRecorder.md +++ b/docs/reference/classes/HotkeyRecorder.md @@ -3,7 +3,7 @@ id: HotkeyRecorder title: HotkeyRecorder --- -Defined in: [hotkey-recorder.ts:193](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L193) +Defined in: [hotkey-recorder.ts:192](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L192) Framework-agnostic class for recording keyboard shortcuts. @@ -47,7 +47,7 @@ recorder.destroy() new HotkeyRecorder(options): HotkeyRecorder; ``` -Defined in: [hotkey-recorder.ts:217](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L217) +Defined in: [hotkey-recorder.ts:216](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L216) #### Parameters @@ -66,7 +66,7 @@ Defined in: [hotkey-recorder.ts:217](https://github.com/TanStack/hotkeys/blob/ma new HotkeyRecorder(options): HotkeyRecorder; ``` -Defined in: [hotkey-recorder.ts:220](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L220) +Defined in: [hotkey-recorder.ts:219](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L219) #### Parameters @@ -87,7 +87,7 @@ Defined in: [hotkey-recorder.ts:220](https://github.com/TanStack/hotkeys/blob/ma readonly store: Store; ``` -Defined in: [hotkey-recorder.ts:194](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L194) +Defined in: [hotkey-recorder.ts:193](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L193) ## Methods @@ -153,7 +153,7 @@ all event listeners are properly removed. setOptions(options): void; ``` -Defined in: [hotkey-recorder.ts:233](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L233) +Defined in: [hotkey-recorder.ts:232](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L232) Updates the recorder options, including callbacks. This allows framework adapters to sync callback changes without recreating the recorder. @@ -176,7 +176,7 @@ This allows framework adapters to sync callback changes without recreating the r start(): void; ``` -Defined in: [hotkey-recorder.ts:267](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L267) +Defined in: [hotkey-recorder.ts:266](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L266) Start recording a new hotkey. diff --git a/docs/reference/functions/assertValidHotkey.md b/docs/reference/functions/assertValidHotkey.md index 2ba5ac89..6cb45e5b 100644 --- a/docs/reference/functions/assertValidHotkey.md +++ b/docs/reference/functions/assertValidHotkey.md @@ -7,7 +7,7 @@ title: assertValidHotkey function assertValidHotkey(hotkey): void; ``` -Defined in: [validate.ts:141](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L141) +Defined in: [validate.ts:132](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L132) Validates a hotkey and throws an error if invalid. Useful for development-time validation. diff --git a/docs/reference/functions/checkHotkey.md b/docs/reference/functions/checkHotkey.md index 62308068..2cd5aab8 100644 --- a/docs/reference/functions/checkHotkey.md +++ b/docs/reference/functions/checkHotkey.md @@ -7,7 +7,7 @@ title: checkHotkey function checkHotkey(hotkey): boolean; ``` -Defined in: [validate.ts:164](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L164) +Defined in: [validate.ts:155](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L155) Validates a hotkey and logs errors and warnings to the console. Useful for development-time feedback. Logs nothing in production builds. diff --git a/docs/reference/functions/formatForDisplay.md b/docs/reference/functions/formatForDisplay.md index 13d7edab..30d79fc1 100644 --- a/docs/reference/functions/formatForDisplay.md +++ b/docs/reference/functions/formatForDisplay.md @@ -9,7 +9,7 @@ title: formatForDisplay function formatForDisplay(hotkey, options): string[][]; ``` -Defined in: [format.ts:109](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L109) +Defined in: [format.ts:111](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L111) Formats a hotkey for display in a user interface. @@ -24,13 +24,16 @@ or change matching. Supply a resolved `layoutMap` for layout-aware labels; Sequence steps are formatted individually and joined with `sequenceSeparator` (a space by default). +To display a single key that is not a hotkey, such as a held key from +`KeyStateTracker`, use `formatKeyForDisplay`. + ### Parameters #### hotkey readonly [`DisplayHotkeyChord`](../type-aliases/DisplayHotkeyChord.md)[] -A logical or physical string, raw object, ParsedHotkeyChord, or sequence +A logical or physical hotkey string, raw object, ParsedHotkeyChord, or sequence #### options @@ -66,7 +69,7 @@ formatForDisplay(['G', 'H']) function formatForDisplay(hotkey, options): string[]; ``` -Defined in: [format.ts:113](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L113) +Defined in: [format.ts:115](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L115) Formats a hotkey for display in a user interface. @@ -81,13 +84,16 @@ or change matching. Supply a resolved `layoutMap` for layout-aware labels; Sequence steps are formatted individually and joined with `sequenceSeparator` (a space by default). +To display a single key that is not a hotkey, such as a held key from +`KeyStateTracker`, use `formatKeyForDisplay`. + ### Parameters #### hotkey [`DisplayHotkeyChord`](../type-aliases/DisplayHotkeyChord.md) -A logical or physical string, raw object, ParsedHotkeyChord, or sequence +A logical or physical hotkey string, raw object, ParsedHotkeyChord, or sequence #### options @@ -123,7 +129,7 @@ formatForDisplay(['G', 'H']) function formatForDisplay(hotkey, options?): string; ``` -Defined in: [format.ts:117](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L117) +Defined in: [format.ts:119](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L119) Formats a hotkey for display in a user interface. @@ -138,13 +144,16 @@ or change matching. Supply a resolved `layoutMap` for layout-aware labels; Sequence steps are formatted individually and joined with `sequenceSeparator` (a space by default). +To display a single key that is not a hotkey, such as a held key from +`KeyStateTracker`, use `formatKeyForDisplay`. + ### Parameters #### hotkey [`DisplayHotkey`](../type-aliases/DisplayHotkey.md) -A logical or physical string, raw object, ParsedHotkeyChord, or sequence +A logical or physical hotkey string, raw object, ParsedHotkeyChord, or sequence #### options? @@ -180,7 +189,7 @@ formatForDisplay(['G', 'H']) function formatForDisplay(hotkey, options): string | string[] | string[][]; ``` -Defined in: [format.ts:121](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L121) +Defined in: [format.ts:123](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L123) Formats a hotkey for display in a user interface. @@ -195,13 +204,16 @@ or change matching. Supply a resolved `layoutMap` for layout-aware labels; Sequence steps are formatted individually and joined with `sequenceSeparator` (a space by default). +To display a single key that is not a hotkey, such as a held key from +`KeyStateTracker`, use `formatKeyForDisplay`. + ### Parameters #### hotkey [`DisplayHotkey`](../type-aliases/DisplayHotkey.md) -A logical or physical string, raw object, ParsedHotkeyChord, or sequence +A logical or physical hotkey string, raw object, ParsedHotkeyChord, or sequence #### options diff --git a/docs/reference/functions/formatKeyForDisplay.md b/docs/reference/functions/formatKeyForDisplay.md new file mode 100644 index 00000000..d1d8e1ca --- /dev/null +++ b/docs/reference/functions/formatKeyForDisplay.md @@ -0,0 +1,40 @@ +--- +id: formatKeyForDisplay +title: formatKeyForDisplay +--- + +```ts +function formatKeyForDisplay(key, options?): string; +``` + +Defined in: [format.ts:249](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L249) + +Formats a single key for display, such as a held key from +`KeyStateTracker` or a modifier on its own. Uses the same labels as +`formatForDisplay`: `Shift` becomes `⇧` on macOS and `Escape` becomes `Esc`. + +## Parameters + +### key + +`string` + +A key name, such as a `KeyboardEvent.key` value or a modifier + +### options? + +`Pick`\<[`FormatDisplayOptions`](../interfaces/FormatDisplayOptions.md), `"platform"` \| `"useSymbols"` \| `"keyLabels"`\> = `{}` + +Formatting options + +## Returns + +`string` + +## Example + +```ts +formatKeyForDisplay('Shift', { platform: 'mac' }) // '⇧' +formatKeyForDisplay('Meta', { platform: 'windows' }) // 'Win' +formatKeyForDisplay('a') // 'A' +``` diff --git a/docs/reference/functions/getAppHotkeyRegistrationOptions.md b/docs/reference/functions/getAppHotkeyRegistrationOptions.md index 24f496f9..600c46d8 100644 --- a/docs/reference/functions/getAppHotkeyRegistrationOptions.md +++ b/docs/reference/functions/getAppHotkeyRegistrationOptions.md @@ -7,7 +7,7 @@ title: getAppHotkeyRegistrationOptions function getAppHotkeyRegistrationOptions(appHotkey): AppHotkeyChordOptions & AppHotkeySequenceOptions & object; ``` -Defined in: [app-hotkeys.ts:549](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L549) +Defined in: [app-hotkeys.ts:551](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L551) Options that adapters pass to the manager when registering an app hotkey: declared options, scope, meta, and the app hotkey id. The manager drops options diff --git a/docs/reference/functions/getHotkeyManager.md b/docs/reference/functions/getHotkeyManager.md index 90e48f80..f3193a9d 100644 --- a/docs/reference/functions/getHotkeyManager.md +++ b/docs/reference/functions/getHotkeyManager.md @@ -7,7 +7,7 @@ title: getHotkeyManager function getHotkeyManager(): HotkeyManager; ``` -Defined in: [hotkey-manager.ts:1533](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1533) +Defined in: [hotkey-manager.ts:1551](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L1551) Gets the singleton HotkeyManager instance. Convenience function for accessing the manager. diff --git a/docs/reference/functions/isSingleLetterKey.md b/docs/reference/functions/isSingleLetterKey.md index 2870cfa2..8b99077b 100644 --- a/docs/reference/functions/isSingleLetterKey.md +++ b/docs/reference/functions/isSingleLetterKey.md @@ -7,7 +7,7 @@ title: isSingleLetterKey function isSingleLetterKey(key): boolean; ``` -Defined in: [constants.ts:339](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L339) +Defined in: [constants.ts:229](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L229) Whether a key is a single Unicode letter, such as `'a'` or `'é'`. diff --git a/docs/reference/functions/normalizeKeyName.md b/docs/reference/functions/normalizeKeyName.md index 24f03120..e51563a2 100644 --- a/docs/reference/functions/normalizeKeyName.md +++ b/docs/reference/functions/normalizeKeyName.md @@ -7,9 +7,11 @@ title: normalizeKeyName function normalizeKeyName(key): string; ``` -Defined in: [constants.ts:357](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L357) +Defined in: [constants.ts:248](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L248) -Normalizes a key name to its canonical form. +Normalizes a key name from a `KeyboardEvent` or a hotkey: single letters +become uppercase, and the space character becomes `Space`. Other names are +returned as written, because key names are case-sensitive. ## Parameters @@ -17,7 +19,7 @@ Normalizes a key name to its canonical form. `string` -The key name to normalize (can be an alias, lowercase, etc.) +The key name to normalize ## Returns @@ -28,8 +30,7 @@ The canonical key name ## Example ```ts -normalizeKeyName('esc') // 'Escape' normalizeKeyName('a') // 'A' -normalizeKeyName('f1') // 'F1' +normalizeKeyName(' ') // 'Space' normalizeKeyName('ArrowUp') // 'ArrowUp' (already canonical) ``` diff --git a/docs/reference/functions/provideAppHotkeys.md b/docs/reference/functions/provideAppHotkeys.md index 642668da..4d94ff4a 100644 --- a/docs/reference/functions/provideAppHotkeys.md +++ b/docs/reference/functions/provideAppHotkeys.md @@ -7,7 +7,7 @@ title: provideAppHotkeys function provideAppHotkeys(appHotkeys, options?): object; ``` -Defined in: [app-hotkeys.ts:596](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L596) +Defined in: [app-hotkeys.ts:598](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L598) Creates an app hotkeys store and publishes it on the HotkeyManager, for adapters without a provider component (such as Lit and Alpine). Hotkey diff --git a/docs/reference/functions/publishAppHotkeysStore.md b/docs/reference/functions/publishAppHotkeysStore.md index 3882d7da..50a4b5ec 100644 --- a/docs/reference/functions/publishAppHotkeysStore.md +++ b/docs/reference/functions/publishAppHotkeysStore.md @@ -7,7 +7,7 @@ title: publishAppHotkeysStore function publishAppHotkeysStore(store): () => void; ``` -Defined in: [app-hotkeys.ts:570](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L570) +Defined in: [app-hotkeys.ts:572](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L572) Publishes a provider's store on the HotkeyManager so devtools can list declared hotkeys. Returns a cleanup function that unpublishes it if it is diff --git a/docs/reference/functions/resolveAppHotkey.md b/docs/reference/functions/resolveAppHotkey.md index 09bf0d86..8fc74ad0 100644 --- a/docs/reference/functions/resolveAppHotkey.md +++ b/docs/reference/functions/resolveAppHotkey.md @@ -7,7 +7,7 @@ title: resolveAppHotkey function resolveAppHotkey(appHotkey, store): AppHotkey; ``` -Defined in: [app-hotkeys.ts:537](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L537) +Defined in: [app-hotkeys.ts:539](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L539) Returns the provider's version of an app hotkey, so custom hotkeys apply even when a component imports the declaration directly. Falls back to the diff --git a/docs/reference/functions/toHotkeyRegistrationView.md b/docs/reference/functions/toHotkeyRegistrationView.md index 4dc81284..86880ed2 100644 --- a/docs/reference/functions/toHotkeyRegistrationView.md +++ b/docs/reference/functions/toHotkeyRegistrationView.md @@ -7,7 +7,7 @@ title: toHotkeyRegistrationView function toHotkeyRegistrationView(reg): HotkeyRegistrationView; ``` -Defined in: [hotkey-manager.ts:241](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L241) +Defined in: [hotkey-manager.ts:245](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L245) Creates a public view from an internal registration, stripping the callback. diff --git a/docs/reference/index.md b/docs/reference/index.md index 83b6c8e2..30ba75ed 100644 --- a/docs/reference/index.md +++ b/docs/reference/index.md @@ -141,6 +141,7 @@ title: "@tanstack/hotkeys" - [findHotkeyConflicts](functions/findHotkeyConflicts.md) - [formatForDisplay](functions/formatForDisplay.md) - [formatHotkey](functions/formatHotkey.md) +- [formatKeyForDisplay](functions/formatKeyForDisplay.md) - [getAppHotkeyRegistrationOptions](functions/getAppHotkeyRegistrationOptions.md) - [getHotkeyManager](functions/getHotkeyManager.md) - [getKeyStateTracker](functions/getKeyStateTracker.md) diff --git a/docs/reference/interfaces/ActivateHotkeyScopeOptions.md b/docs/reference/interfaces/ActivateHotkeyScopeOptions.md index ad6bc493..e46a613d 100644 --- a/docs/reference/interfaces/ActivateHotkeyScopeOptions.md +++ b/docs/reference/interfaces/ActivateHotkeyScopeOptions.md @@ -3,7 +3,7 @@ id: ActivateHotkeyScopeOptions title: ActivateHotkeyScopeOptions --- -Defined in: [hotkey-manager.ts:400](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L400) +Defined in: [hotkey-manager.ts:404](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L404) Options for `HotkeyManager.activateScope`. @@ -19,7 +19,7 @@ optional exclusive?: }; ``` -Defined in: [hotkey-manager.ts:407](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L407) +Defined in: [hotkey-manager.ts:411](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L411) Suspend every other scope, including `'global'`, until this activation is released. Scopes nested in this one stay active. Pass `{ allow }` to keep @@ -34,7 +34,7 @@ still has to be activated, except `'global'`. optional parent?: string; ``` -Defined in: [hotkey-manager.ts:413](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L413) +Defined in: [hotkey-manager.ts:417](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L417) The scope this one is nested in. A nested scope takes precedence over its ancestors even when it was activated first, as nested providers are when diff --git a/docs/reference/interfaces/AppHotkeyListItem.md b/docs/reference/interfaces/AppHotkeyListItem.md index 536f822f..19be88fa 100644 --- a/docs/reference/interfaces/AppHotkeyListItem.md +++ b/docs/reference/interfaces/AppHotkeyListItem.md @@ -3,7 +3,7 @@ id: AppHotkeyListItem title: AppHotkeyListItem --- -Defined in: [app-hotkeys.ts:320](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L320) +Defined in: [app-hotkeys.ts:321](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L321) One row of an app hotkey cheat sheet. @@ -21,7 +21,7 @@ One row of an app hotkey cheat sheet. appHotkey: T; ``` -Defined in: [app-hotkeys.ts:321](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L321) +Defined in: [app-hotkeys.ts:322](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L322) *** @@ -31,7 +31,7 @@ Defined in: [app-hotkeys.ts:321](https://github.com/TanStack/hotkeys/blob/main/p isCustom: boolean; ``` -Defined in: [app-hotkeys.ts:324](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L324) +Defined in: [app-hotkeys.ts:325](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L325) Whether the effective hotkey differs from the declared default. @@ -43,7 +43,7 @@ Whether the effective hotkey differs from the declared default. registrations: HotkeyRegistrationView[]; ``` -Defined in: [app-hotkeys.ts:326](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L326) +Defined in: [app-hotkeys.ts:327](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L327) Live registrations of this app hotkey (for example, one per list row). @@ -55,4 +55,4 @@ Live registrations of this app hotkey (for example, one per list row). status: AppHotkeyStatus; ``` -Defined in: [app-hotkeys.ts:322](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L322) +Defined in: [app-hotkeys.ts:323](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L323) diff --git a/docs/reference/interfaces/AppHotkeysState.md b/docs/reference/interfaces/AppHotkeysState.md index db097350..6a34b255 100644 --- a/docs/reference/interfaces/AppHotkeysState.md +++ b/docs/reference/interfaces/AppHotkeysState.md @@ -3,7 +3,7 @@ id: AppHotkeysState title: AppHotkeysState --- -Defined in: [app-hotkeys.ts:330](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L330) +Defined in: [app-hotkeys.ts:331](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L331) State of an `AppHotkeysStore`. @@ -21,7 +21,7 @@ State of an `AppHotkeysStore`. appHotkeys: T; ``` -Defined in: [app-hotkeys.ts:332](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L332) +Defined in: [app-hotkeys.ts:333](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L333) Effective app hotkeys: declarations with custom hotkeys applied. @@ -33,6 +33,6 @@ Effective app hotkeys: declarations with custom hotkeys applied. customHotkeys: CustomHotkeys; ``` -Defined in: [app-hotkeys.ts:334](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L334) +Defined in: [app-hotkeys.ts:335](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L335) The user's hotkeys that differ from the defaults. diff --git a/docs/reference/interfaces/AppHotkeysStoreOptions.md b/docs/reference/interfaces/AppHotkeysStoreOptions.md index 3a2a3880..8c23bc53 100644 --- a/docs/reference/interfaces/AppHotkeysStoreOptions.md +++ b/docs/reference/interfaces/AppHotkeysStoreOptions.md @@ -3,7 +3,7 @@ id: AppHotkeysStoreOptions title: AppHotkeysStoreOptions --- -Defined in: [app-hotkeys.ts:338](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L338) +Defined in: [app-hotkeys.ts:339](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L339) Options for `AppHotkeysStore`. @@ -21,7 +21,7 @@ Options for `AppHotkeysStore`. optional customHotkeys?: CustomHotkeys | null; ``` -Defined in: [app-hotkeys.ts:340](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L340) +Defined in: [app-hotkeys.ts:341](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L341) Starting custom hotkeys, such as saved data. Invalid entries are ignored with a warning. @@ -33,7 +33,7 @@ Starting custom hotkeys, such as saved data. Invalid entries are ignored with a optional onCustomHotkeysChange?: (customHotkeys) => void; ``` -Defined in: [app-hotkeys.ts:342](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L342) +Defined in: [app-hotkeys.ts:343](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L343) Called with the custom hotkeys after every change, ready to save. @@ -55,6 +55,6 @@ Called with the custom hotkeys after every change, ready to save. optional platform?: Platform; ``` -Defined in: [app-hotkeys.ts:344](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L344) +Defined in: [app-hotkeys.ts:345](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L345) Platform used to compare hotkeys. Defaults to detection. diff --git a/docs/reference/interfaces/FormatDisplayOptions.md b/docs/reference/interfaces/FormatDisplayOptions.md index 0b60ac38..d447c840 100644 --- a/docs/reference/interfaces/FormatDisplayOptions.md +++ b/docs/reference/interfaces/FormatDisplayOptions.md @@ -3,7 +3,7 @@ id: FormatDisplayOptions title: FormatDisplayOptions --- -Defined in: [format.ts:218](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L218) +Defined in: [format.ts:269](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L269) Options for formatting hotkeys for display. @@ -15,7 +15,7 @@ Options for formatting hotkeys for display. optional keyLabels?: Readonly>; ``` -Defined in: [format.ts:233](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L233) +Defined in: [format.ts:284](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L284) Final display overrides for logical keys or physical codes; take precedence over layoutMap. Never changes matching. @@ -27,7 +27,7 @@ Final display overrides for logical keys or physical codes; take precedence over optional layoutMap?: object; ``` -Defined in: [format.ts:231](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L231) +Defined in: [format.ts:282](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L282) An already-resolved code-to-key map, such as KeyboardLayoutMap or Map. Used only for physical bindings. Mapped keys receive normal display formatting; @@ -58,7 +58,7 @@ get: (code) => string | undefined; optional parts?: boolean; ``` -Defined in: [format.ts:224](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L224) +Defined in: [format.ts:275](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L275) Return individual key labels instead of a joined string. Default: false. @@ -70,7 +70,7 @@ Return individual key labels instead of a joined string. Default: false. optional platform?: "mac" | "windows" | "linux"; ``` -Defined in: [format.ts:220](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L220) +Defined in: [format.ts:271](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L271) The target platform. Defaults to auto-detection. @@ -82,7 +82,7 @@ The target platform. Defaults to auto-detection. optional separatorToken?: string | null; ``` -Defined in: [format.ts:235](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L235) +Defined in: [format.ts:286](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L286) Override the separator between display tokens. Defaults to platform-specific formatting when null/undefined. @@ -94,7 +94,7 @@ Override the separator between display tokens. Defaults to platform-specific for optional sequenceSeparator?: string; ``` -Defined in: [format.ts:237](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L237) +Defined in: [format.ts:288](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L288) Separator between sequence steps. Default: a space. @@ -111,6 +111,6 @@ optional useSymbols?: }; ``` -Defined in: [format.ts:222](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L222) +Defined in: [format.ts:273](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L273) Whether to use symbols for the display. Defaults to true. diff --git a/docs/reference/interfaces/HotkeyChordOptions.md b/docs/reference/interfaces/HotkeyChordOptions.md index 7ee4d674..b19d4307 100644 --- a/docs/reference/interfaces/HotkeyChordOptions.md +++ b/docs/reference/interfaces/HotkeyChordOptions.md @@ -3,7 +3,7 @@ id: HotkeyChordOptions title: HotkeyChordOptions --- -Defined in: [hotkey-manager.ts:122](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L122) +Defined in: [hotkey-manager.ts:126](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L126) Options for a single chord such as `'Mod+S'`. @@ -19,7 +19,7 @@ Options for a single chord such as `'Mod+S'`. optional appHotkeyId?: string; ``` -Defined in: [hotkey-manager.ts:118](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L118) +Defined in: [hotkey-manager.ts:122](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L122) Id of the app hotkey this registration implements. Adapters set this when registering an app hotkey from `defineAppHotkeys`. @@ -35,7 +35,7 @@ Id of the app hotkey this registration implements. Adapters set this when regist optional capture?: boolean; ``` -Defined in: [hotkey-manager.ts:64](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L64) +Defined in: [hotkey-manager.ts:68](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L68) Listen during capture, before descendant listeners. Defaults to `false` (bubble). With `stopPropagation: true`, a match on an ancestor prevents the event from @@ -55,7 +55,7 @@ Changing this option preserves held-key reset state and sequence progress. optional conflictBehavior?: ConflictBehavior; ``` -Defined in: [hotkey-manager.ts:66](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L66) +Defined in: [hotkey-manager.ts:70](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L70) Behavior when this hotkey conflicts with an existing registration on the same target. Defaults to 'warn' @@ -71,7 +71,7 @@ Behavior when this hotkey conflicts with an existing registration on the same ta optional enabled?: boolean; ``` -Defined in: [hotkey-manager.ts:72](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L72) +Defined in: [hotkey-manager.ts:76](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L76) Soft-disable: when `false`, the callback does not run but the registration stays in `HotkeyManager` (and in devtools). Toggling this should update the @@ -89,7 +89,7 @@ existing handle via `setOptions` rather than unregistering. Defaults to `true`. optional eventType?: "keydown" | "keyup"; ``` -Defined in: [hotkey-manager.ts:74](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L74) +Defined in: [hotkey-manager.ts:78](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L78) The event type to listen for. Defaults to 'keydown' @@ -105,7 +105,7 @@ The event type to listen for. Defaults to 'keydown' optional ignoreInputs?: boolean | "auto"; ``` -Defined in: [hotkey-manager.ts:85](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L85) +Defined in: [hotkey-manager.ts:89](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L89) Skip keys that a focused control inside the target uses itself: typing in text inputs, textarea, select, and contenteditable; Enter/Space on buttons @@ -128,7 +128,7 @@ even in these controls. optional meta?: HotkeyMeta; ``` -Defined in: [hotkey-manager.ts:106](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L106) +Defined in: [hotkey-manager.ts:110](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L110) Optional metadata (name, description, custom fields via declaration merging) @@ -144,7 +144,7 @@ Optional metadata (name, description, custom fields via declaration merging) optional platform?: "mac" | "windows" | "linux"; ``` -Defined in: [hotkey-manager.ts:87](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L87) +Defined in: [hotkey-manager.ts:91](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L91) The target platform for resolving 'Mod' @@ -160,7 +160,7 @@ The target platform for resolving 'Mod' optional preventDefault?: boolean | "always"; ``` -Defined in: [hotkey-manager.ts:97](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L97) +Defined in: [hotkey-manager.ts:101](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L101) Prevent the default browser action when the hotkey matches. For a sequence, every step that advances it does. Defaults to true. @@ -182,7 +182,7 @@ treat `'always'` as `true`. optional requireReset?: boolean; ``` -Defined in: [hotkey-manager.ts:124](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L124) +Defined in: [hotkey-manager.ts:128](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L128) If true, only trigger once until all keys are released. Default: false @@ -194,7 +194,7 @@ If true, only trigger once until all keys are released. Default: false optional scope?: string; ``` -Defined in: [hotkey-manager.ts:116](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L116) +Defined in: [hotkey-manager.ts:120](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L120) Scope this hotkey belongs to. Defaults to `'global'`, which is always active. Other scopes are active while activated with @@ -216,7 +216,7 @@ activated scope handles it. optional stopPropagation?: boolean; ``` -Defined in: [hotkey-manager.ts:102](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L102) +Defined in: [hotkey-manager.ts:106](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L106) Stop event propagation when the hotkey matches. For a sequence, only the last step does, so earlier steps reach other listeners. Defaults to true @@ -233,7 +233,7 @@ last step does, so earlier steps reach other listeners. Defaults to true optional target?: Target | null; ``` -Defined in: [hotkey-manager.ts:104](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L104) +Defined in: [hotkey-manager.ts:108](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L108) The DOM element to attach the event listener to. Defaults to document. diff --git a/docs/reference/interfaces/HotkeyChordRecorderOptions.md b/docs/reference/interfaces/HotkeyChordRecorderOptions.md index 67d338c0..2896cdb9 100644 --- a/docs/reference/interfaces/HotkeyChordRecorderOptions.md +++ b/docs/reference/interfaces/HotkeyChordRecorderOptions.md @@ -3,7 +3,7 @@ id: HotkeyChordRecorderOptions title: HotkeyChordRecorderOptions --- -Defined in: [hotkey-recorder.ts:102](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L102) +Defined in: [hotkey-recorder.ts:101](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L101) Options for recording a single chord. This is the default (`maxSteps: 1`). @@ -19,7 +19,7 @@ Options for recording a single chord. This is the default (`maxSteps: 1`). optional detectConflicts?: boolean | HotkeyConflictOptions; ``` -Defined in: [hotkey-recorder.ts:40](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L40) +Defined in: [hotkey-recorder.ts:39](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L39) Opt in to live-registry conflicts, including sequence prefixes. Default: false. @@ -37,7 +37,7 @@ HotkeyRecorderBaseOptions.detectConflicts optional ignoreInputs?: boolean; ``` -Defined in: [hotkey-recorder.ts:98](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L98) +Defined in: [hotkey-recorder.ts:97](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L97) Whether to ignore keyboard events from input-like elements (text inputs, textarea, select, contenteditable) while recording. When true, typing in @@ -57,7 +57,7 @@ HotkeyRecorderBaseOptions.ignoreInputs optional maxSteps?: 1; ``` -Defined in: [hotkey-recorder.ts:104](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L104) +Defined in: [hotkey-recorder.ts:103](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L103) Maximum number of chords to record. Default: 1 @@ -69,7 +69,7 @@ Maximum number of chords to record. Default: 1 optional onCancel?: () => void; ``` -Defined in: [hotkey-recorder.ts:87](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L87) +Defined in: [hotkey-recorder.ts:86](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L86) Optional callback when recording is cancelled (Escape pressed) @@ -91,7 +91,7 @@ HotkeyRecorderBaseOptions.onCancel optional onClear?: () => void; ``` -Defined in: [hotkey-recorder.ts:92](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L92) +Defined in: [hotkey-recorder.ts:91](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L91) Optional callback when the recording is cleared: Backspace/Delete with no modifiers and no recorded steps @@ -114,7 +114,7 @@ HotkeyRecorderBaseOptions.onClear onRecord: (hotkey) => void; ``` -Defined in: [hotkey-recorder.ts:111](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L111) +Defined in: [hotkey-recorder.ts:110](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L110) Callback when a chord is successfully recorded @@ -136,7 +136,7 @@ Callback when a chord is successfully recorded optional onReject?: (rejection) => void; ``` -Defined in: [hotkey-recorder.ts:42](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L42) +Defined in: [hotkey-recorder.ts:41](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L41) Rejected candidates leave recording active. @@ -164,7 +164,7 @@ HotkeyRecorderBaseOptions.onReject optional platform?: "mac" | "windows" | "linux"; ``` -Defined in: [hotkey-recorder.ts:38](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L38) +Defined in: [hotkey-recorder.ts:37](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L37) Platform used for Mod and AltGraph handling. Defaults to platform detection. @@ -182,7 +182,7 @@ HotkeyRecorderBaseOptions.platform optional recordBy?: RecorderKeyMode; ``` -Defined in: [hotkey-recorder.ts:36](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L36) +Defined in: [hotkey-recorder.ts:35](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L35) Physical code recording is the default. Choose key to record logical characters. @@ -200,7 +200,7 @@ HotkeyRecorderBaseOptions.recordBy optional validate?: (hotkey, context) => string | boolean; ``` -Defined in: [hotkey-recorder.ts:106](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L106) +Defined in: [hotkey-recorder.ts:105](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L105) Return true to accept, or false/a message to reject while staying in recording mode. diff --git a/docs/reference/interfaces/HotkeyChordRecorderValidationContext.md b/docs/reference/interfaces/HotkeyChordRecorderValidationContext.md index 3c2f1687..815535f7 100644 --- a/docs/reference/interfaces/HotkeyChordRecorderValidationContext.md +++ b/docs/reference/interfaces/HotkeyChordRecorderValidationContext.md @@ -3,7 +3,7 @@ id: HotkeyChordRecorderValidationContext title: HotkeyChordRecorderValidationContext --- -Defined in: [hotkey-recorder.ts:46](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L46) +Defined in: [hotkey-recorder.ts:45](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L45) Validation context for a recorded chord. @@ -15,7 +15,7 @@ Validation context for a recorded chord. event: KeyboardEvent; ``` -Defined in: [hotkey-recorder.ts:49](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L49) +Defined in: [hotkey-recorder.ts:48](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L48) The event that recorded the chord. @@ -27,7 +27,7 @@ The event that recorded the chord. kind: "chord"; ``` -Defined in: [hotkey-recorder.ts:47](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L47) +Defined in: [hotkey-recorder.ts:46](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L46) *** @@ -37,6 +37,6 @@ Defined in: [hotkey-recorder.ts:47](https://github.com/TanStack/hotkeys/blob/mai parsedChord: ParsedHotkeyChord; ``` -Defined in: [hotkey-recorder.ts:51](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L51) +Defined in: [hotkey-recorder.ts:50](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L50) The chord with `Mod` resolved for the recorder's platform. diff --git a/docs/reference/interfaces/HotkeyChordRegistration.md b/docs/reference/interfaces/HotkeyChordRegistration.md index 220aa80d..7ac0bb26 100644 --- a/docs/reference/interfaces/HotkeyChordRegistration.md +++ b/docs/reference/interfaces/HotkeyChordRegistration.md @@ -3,7 +3,7 @@ id: HotkeyChordRegistration title: HotkeyChordRegistration --- -Defined in: [hotkey-manager.ts:161](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L161) +Defined in: [hotkey-manager.ts:165](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L165) A registered chord in the HotkeyManager. @@ -19,7 +19,7 @@ A registered chord in the HotkeyManager. optional activeMatch?: object; ``` -Defined in: [hotkey-manager.ts:166](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L166) +Defined in: [hotkey-manager.ts:170](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L170) The concrete key/code that activated a requireReset registration. @@ -43,7 +43,7 @@ key: string; callback: HotkeyCallback; ``` -Defined in: [hotkey-manager.ts:149](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L149) +Defined in: [hotkey-manager.ts:153](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L153) The callback to invoke @@ -61,7 +61,7 @@ RegistrationBase.callback hasFired: boolean; ``` -Defined in: [hotkey-manager.ts:157](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L157) +Defined in: [hotkey-manager.ts:161](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L161) Whether this registration has fired (and, for requireReset chords, needs a reset) @@ -79,7 +79,7 @@ RegistrationBase.hasFired hotkey: HotkeyChord; ``` -Defined in: [hotkey-manager.ts:163](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L163) +Defined in: [hotkey-manager.ts:167](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L167) *** @@ -89,7 +89,7 @@ Defined in: [hotkey-manager.ts:163](https://github.com/TanStack/hotkeys/blob/mai id: string; ``` -Defined in: [hotkey-manager.ts:147](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L147) +Defined in: [hotkey-manager.ts:151](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L151) Unique identifier for this registration @@ -107,7 +107,7 @@ RegistrationBase.id kind: "chord"; ``` -Defined in: [hotkey-manager.ts:162](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L162) +Defined in: [hotkey-manager.ts:166](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L166) *** @@ -117,7 +117,7 @@ Defined in: [hotkey-manager.ts:162](https://github.com/TanStack/hotkeys/blob/mai options: HotkeyChordOptions; ``` -Defined in: [hotkey-manager.ts:151](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L151) +Defined in: [hotkey-manager.ts:155](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L155) Resolved options for this registration @@ -135,7 +135,7 @@ RegistrationBase.options parsedChord: ParsedHotkeyChord; ``` -Defined in: [hotkey-manager.ts:164](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L164) +Defined in: [hotkey-manager.ts:168](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L168) *** @@ -145,7 +145,7 @@ Defined in: [hotkey-manager.ts:164](https://github.com/TanStack/hotkeys/blob/mai target: Target; ``` -Defined in: [hotkey-manager.ts:153](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L153) +Defined in: [hotkey-manager.ts:157](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L157) The resolved target element for this registration @@ -163,7 +163,7 @@ RegistrationBase.target triggerCount: number; ``` -Defined in: [hotkey-manager.ts:155](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L155) +Defined in: [hotkey-manager.ts:159](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L159) How many times this registration's callback has been triggered diff --git a/docs/reference/interfaces/HotkeyChordRegistrationView.md b/docs/reference/interfaces/HotkeyChordRegistrationView.md index 9890efe0..945b7725 100644 --- a/docs/reference/interfaces/HotkeyChordRegistrationView.md +++ b/docs/reference/interfaces/HotkeyChordRegistrationView.md @@ -3,7 +3,7 @@ id: HotkeyChordRegistrationView title: HotkeyChordRegistrationView --- -Defined in: [hotkey-manager.ts:203](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L203) +Defined in: [hotkey-manager.ts:207](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L207) Public view of a chord registration, without its callback. @@ -19,7 +19,7 @@ Public view of a chord registration, without its callback. hasFired: boolean; ``` -Defined in: [hotkey-manager.ts:199](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L199) +Defined in: [hotkey-manager.ts:203](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L203) #### Inherited from @@ -35,7 +35,7 @@ RegistrationViewBase.hasFired hotkey: HotkeyChord; ``` -Defined in: [hotkey-manager.ts:205](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L205) +Defined in: [hotkey-manager.ts:209](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L209) *** @@ -45,7 +45,7 @@ Defined in: [hotkey-manager.ts:205](https://github.com/TanStack/hotkeys/blob/mai id: string; ``` -Defined in: [hotkey-manager.ts:194](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L194) +Defined in: [hotkey-manager.ts:198](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L198) #### Inherited from @@ -61,7 +61,7 @@ RegistrationViewBase.id kind: "chord"; ``` -Defined in: [hotkey-manager.ts:204](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L204) +Defined in: [hotkey-manager.ts:208](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L208) *** @@ -71,7 +71,7 @@ Defined in: [hotkey-manager.ts:204](https://github.com/TanStack/hotkeys/blob/mai options: HotkeyChordOptions; ``` -Defined in: [hotkey-manager.ts:207](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L207) +Defined in: [hotkey-manager.ts:211](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L211) *** @@ -81,7 +81,7 @@ Defined in: [hotkey-manager.ts:207](https://github.com/TanStack/hotkeys/blob/mai parsedChord: ParsedHotkeyChord; ``` -Defined in: [hotkey-manager.ts:206](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L206) +Defined in: [hotkey-manager.ts:210](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L210) *** @@ -91,7 +91,7 @@ Defined in: [hotkey-manager.ts:206](https://github.com/TanStack/hotkeys/blob/mai status: HotkeyRegistrationStatus; ``` -Defined in: [hotkey-manager.ts:196](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L196) +Defined in: [hotkey-manager.ts:200](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L200) Whether the registration is enabled and in an active scope. @@ -109,7 +109,7 @@ RegistrationViewBase.status target: Target; ``` -Defined in: [hotkey-manager.ts:197](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L197) +Defined in: [hotkey-manager.ts:201](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L201) #### Inherited from @@ -125,7 +125,7 @@ RegistrationViewBase.target triggerCount: number; ``` -Defined in: [hotkey-manager.ts:198](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L198) +Defined in: [hotkey-manager.ts:202](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L202) #### Inherited from diff --git a/docs/reference/interfaces/HotkeyOptions.md b/docs/reference/interfaces/HotkeyOptions.md index 7364fb8b..8d0c3cee 100644 --- a/docs/reference/interfaces/HotkeyOptions.md +++ b/docs/reference/interfaces/HotkeyOptions.md @@ -3,7 +3,7 @@ id: HotkeyOptions title: HotkeyOptions --- -Defined in: [hotkey-manager.ts:56](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L56) +Defined in: [hotkey-manager.ts:60](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L60) Options shared by chords and sequences. @@ -20,7 +20,7 @@ Options shared by chords and sequences. optional appHotkeyId?: string; ``` -Defined in: [hotkey-manager.ts:118](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L118) +Defined in: [hotkey-manager.ts:122](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L122) Id of the app hotkey this registration implements. Adapters set this when registering an app hotkey from `defineAppHotkeys`. @@ -32,7 +32,7 @@ Id of the app hotkey this registration implements. Adapters set this when regist optional capture?: boolean; ``` -Defined in: [hotkey-manager.ts:64](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L64) +Defined in: [hotkey-manager.ts:68](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L68) Listen during capture, before descendant listeners. Defaults to `false` (bubble). With `stopPropagation: true`, a match on an ancestor prevents the event from @@ -48,7 +48,7 @@ Changing this option preserves held-key reset state and sequence progress. optional conflictBehavior?: ConflictBehavior; ``` -Defined in: [hotkey-manager.ts:66](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L66) +Defined in: [hotkey-manager.ts:70](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L70) Behavior when this hotkey conflicts with an existing registration on the same target. Defaults to 'warn' @@ -60,7 +60,7 @@ Behavior when this hotkey conflicts with an existing registration on the same ta optional enabled?: boolean; ``` -Defined in: [hotkey-manager.ts:72](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L72) +Defined in: [hotkey-manager.ts:76](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L76) Soft-disable: when `false`, the callback does not run but the registration stays in `HotkeyManager` (and in devtools). Toggling this should update the @@ -74,7 +74,7 @@ existing handle via `setOptions` rather than unregistering. Defaults to `true`. optional eventType?: "keydown" | "keyup"; ``` -Defined in: [hotkey-manager.ts:74](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L74) +Defined in: [hotkey-manager.ts:78](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L78) The event type to listen for. Defaults to 'keydown' @@ -86,7 +86,7 @@ The event type to listen for. Defaults to 'keydown' optional ignoreInputs?: boolean | "auto"; ``` -Defined in: [hotkey-manager.ts:85](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L85) +Defined in: [hotkey-manager.ts:89](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L89) Skip keys that a focused control inside the target uses itself: typing in text inputs, textarea, select, and contenteditable; Enter/Space on buttons @@ -105,7 +105,7 @@ even in these controls. optional meta?: HotkeyMeta; ``` -Defined in: [hotkey-manager.ts:106](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L106) +Defined in: [hotkey-manager.ts:110](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L110) Optional metadata (name, description, custom fields via declaration merging) @@ -117,7 +117,7 @@ Optional metadata (name, description, custom fields via declaration merging) optional platform?: "mac" | "windows" | "linux"; ``` -Defined in: [hotkey-manager.ts:87](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L87) +Defined in: [hotkey-manager.ts:91](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L91) The target platform for resolving 'Mod' @@ -129,7 +129,7 @@ The target platform for resolving 'Mod' optional preventDefault?: boolean | "always"; ``` -Defined in: [hotkey-manager.ts:97](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L97) +Defined in: [hotkey-manager.ts:101](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L101) Prevent the default browser action when the hotkey matches. For a sequence, every step that advances it does. Defaults to true. @@ -147,7 +147,7 @@ treat `'always'` as `true`. optional scope?: string; ``` -Defined in: [hotkey-manager.ts:116](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L116) +Defined in: [hotkey-manager.ts:120](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L120) Scope this hotkey belongs to. Defaults to `'global'`, which is always active. Other scopes are active while activated with @@ -165,7 +165,7 @@ activated scope handles it. optional stopPropagation?: boolean; ``` -Defined in: [hotkey-manager.ts:102](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L102) +Defined in: [hotkey-manager.ts:106](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L106) Stop event propagation when the hotkey matches. For a sequence, only the last step does, so earlier steps reach other listeners. Defaults to true @@ -178,6 +178,6 @@ last step does, so earlier steps reach other listeners. Defaults to true optional target?: Target | null; ``` -Defined in: [hotkey-manager.ts:104](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L104) +Defined in: [hotkey-manager.ts:108](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L108) The DOM element to attach the event listener to. Defaults to document. diff --git a/docs/reference/interfaces/HotkeyRecorderState.md b/docs/reference/interfaces/HotkeyRecorderState.md index 9fd61759..fb0953e1 100644 --- a/docs/reference/interfaces/HotkeyRecorderState.md +++ b/docs/reference/interfaces/HotkeyRecorderState.md @@ -3,7 +3,7 @@ id: HotkeyRecorderState title: HotkeyRecorderState --- -Defined in: [hotkey-recorder.ts:73](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L73) +Defined in: [hotkey-recorder.ts:72](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L72) State interface for the HotkeyRecorder. @@ -15,7 +15,7 @@ State interface for the HotkeyRecorder. isRecording: boolean; ``` -Defined in: [hotkey-recorder.ts:75](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L75) +Defined in: [hotkey-recorder.ts:74](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L74) Whether recording is currently active @@ -27,7 +27,7 @@ Whether recording is currently active recordedHotkey: Hotkey | null; ``` -Defined in: [hotkey-recorder.ts:79](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L79) +Defined in: [hotkey-recorder.ts:78](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L78) The last committed hotkey: a chord, or a sequence of two or more steps @@ -39,6 +39,6 @@ The last committed hotkey: a chord, or a sequence of two or more steps steps: HotkeySequence; ``` -Defined in: [hotkey-recorder.ts:77](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L77) +Defined in: [hotkey-recorder.ts:76](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L76) Chords recorded so far in a multi-step recording (empty for `maxSteps: 1`) diff --git a/docs/reference/interfaces/HotkeyRegistrationHandle.md b/docs/reference/interfaces/HotkeyRegistrationHandle.md index abec8f3e..4c9499fc 100644 --- a/docs/reference/interfaces/HotkeyRegistrationHandle.md +++ b/docs/reference/interfaces/HotkeyRegistrationHandle.md @@ -3,7 +3,7 @@ id: HotkeyRegistrationHandle title: HotkeyRegistrationHandle --- -Defined in: [hotkey-manager.ts:291](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L291) +Defined in: [hotkey-manager.ts:295](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L295) A handle returned from HotkeyManager.register() that allows updating the callback and options without re-registering the hotkey. @@ -39,7 +39,7 @@ handle.unregister() callback: HotkeyCallback; ``` -Defined in: [hotkey-manager.ts:298](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L298) +Defined in: [hotkey-manager.ts:302](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L302) The callback function. Can be set directly to update without re-registering. This avoids stale closures when the callback references React state. @@ -52,7 +52,7 @@ This avoids stale closures when the callback references React state. readonly id: string; ``` -Defined in: [hotkey-manager.ts:300](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L300) +Defined in: [hotkey-manager.ts:304](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L304) Unique identifier for this registration @@ -64,7 +64,7 @@ Unique identifier for this registration readonly isActive: boolean; ``` -Defined in: [hotkey-manager.ts:302](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L302) +Defined in: [hotkey-manager.ts:306](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L306) Check if this registration is still active (not unregistered) @@ -76,7 +76,7 @@ Check if this registration is still active (not unregistered) setOptions: (options) => void; ``` -Defined in: [hotkey-manager.ts:310](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L310) +Defined in: [hotkey-manager.ts:314](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L314) Update options (merged with existing options). Useful for updating `enabled`, `preventDefault`, etc. without re-registering. @@ -102,7 +102,7 @@ cannot process it again in another phase. unregister: () => void; ``` -Defined in: [hotkey-manager.ts:312](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L312) +Defined in: [hotkey-manager.ts:316](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L316) Unregister this hotkey diff --git a/docs/reference/interfaces/HotkeyScopesState.md b/docs/reference/interfaces/HotkeyScopesState.md index 89ca42c2..1c5a83fe 100644 --- a/docs/reference/interfaces/HotkeyScopesState.md +++ b/docs/reference/interfaces/HotkeyScopesState.md @@ -3,7 +3,7 @@ id: HotkeyScopesState title: HotkeyScopesState --- -Defined in: [hotkey-manager.ts:379](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L379) +Defined in: [hotkey-manager.ts:383](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L383) Active hotkey scopes, published on `HotkeyManager.scopes`. @@ -15,7 +15,7 @@ Active hotkey scopes, published on `HotkeyManager.scopes`. active: readonly string[]; ``` -Defined in: [hotkey-manager.ts:384](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L384) +Defined in: [hotkey-manager.ts:388](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L388) Activated scopes, lowest precedence first. `'global'` is always active and not listed. @@ -28,7 +28,7 @@ and not listed. allowed: readonly string[]; ``` -Defined in: [hotkey-manager.ts:391](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L391) +Defined in: [hotkey-manager.ts:395](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L395) Scopes the exclusive scope allows that are active, possibly including `'global'`. Empty when no scope is exclusive. @@ -41,7 +41,7 @@ Scopes the exclusive scope allows that are active, possibly including exclusive: string | null; ``` -Defined in: [hotkey-manager.ts:386](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L386) +Defined in: [hotkey-manager.ts:390](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L390) The exclusive scope that owns the keyboard, or `null` when none is active. @@ -53,7 +53,7 @@ The exclusive scope that owns the keyboard, or `null` when none is active. suspended: readonly string[]; ``` -Defined in: [hotkey-manager.ts:396](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L396) +Defined in: [hotkey-manager.ts:400](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L400) Scopes that are active but cannot fire because another scope is exclusive, possibly including `'global'`. diff --git a/docs/reference/interfaces/HotkeySequenceOptions.md b/docs/reference/interfaces/HotkeySequenceOptions.md index 0167cc2f..05e77929 100644 --- a/docs/reference/interfaces/HotkeySequenceOptions.md +++ b/docs/reference/interfaces/HotkeySequenceOptions.md @@ -3,7 +3,7 @@ id: HotkeySequenceOptions title: HotkeySequenceOptions --- -Defined in: [hotkey-manager.ts:128](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L128) +Defined in: [hotkey-manager.ts:132](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L132) Options for a sequence such as `['G', 'G']`. @@ -19,7 +19,7 @@ Options for a sequence such as `['G', 'G']`. optional appHotkeyId?: string; ``` -Defined in: [hotkey-manager.ts:118](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L118) +Defined in: [hotkey-manager.ts:122](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L122) Id of the app hotkey this registration implements. Adapters set this when registering an app hotkey from `defineAppHotkeys`. @@ -35,7 +35,7 @@ Id of the app hotkey this registration implements. Adapters set this when regist optional capture?: boolean; ``` -Defined in: [hotkey-manager.ts:64](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L64) +Defined in: [hotkey-manager.ts:68](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L68) Listen during capture, before descendant listeners. Defaults to `false` (bubble). With `stopPropagation: true`, a match on an ancestor prevents the event from @@ -55,7 +55,7 @@ Changing this option preserves held-key reset state and sequence progress. optional conflictBehavior?: ConflictBehavior; ``` -Defined in: [hotkey-manager.ts:66](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L66) +Defined in: [hotkey-manager.ts:70](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L70) Behavior when this hotkey conflicts with an existing registration on the same target. Defaults to 'warn' @@ -71,7 +71,7 @@ Behavior when this hotkey conflicts with an existing registration on the same ta optional enabled?: boolean; ``` -Defined in: [hotkey-manager.ts:72](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L72) +Defined in: [hotkey-manager.ts:76](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L76) Soft-disable: when `false`, the callback does not run but the registration stays in `HotkeyManager` (and in devtools). Toggling this should update the @@ -89,7 +89,7 @@ existing handle via `setOptions` rather than unregistering. Defaults to `true`. optional eventType?: "keydown" | "keyup"; ``` -Defined in: [hotkey-manager.ts:74](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L74) +Defined in: [hotkey-manager.ts:78](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L78) The event type to listen for. Defaults to 'keydown' @@ -105,7 +105,7 @@ The event type to listen for. Defaults to 'keydown' optional ignoreInputs?: boolean | "auto"; ``` -Defined in: [hotkey-manager.ts:85](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L85) +Defined in: [hotkey-manager.ts:89](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L89) Skip keys that a focused control inside the target uses itself: typing in text inputs, textarea, select, and contenteditable; Enter/Space on buttons @@ -128,7 +128,7 @@ even in these controls. optional meta?: HotkeyMeta; ``` -Defined in: [hotkey-manager.ts:106](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L106) +Defined in: [hotkey-manager.ts:110](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L110) Optional metadata (name, description, custom fields via declaration merging) @@ -144,7 +144,7 @@ Optional metadata (name, description, custom fields via declaration merging) optional platform?: "mac" | "windows" | "linux"; ``` -Defined in: [hotkey-manager.ts:87](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L87) +Defined in: [hotkey-manager.ts:91](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L91) The target platform for resolving 'Mod' @@ -160,7 +160,7 @@ The target platform for resolving 'Mod' optional preventDefault?: boolean | "always"; ``` -Defined in: [hotkey-manager.ts:97](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L97) +Defined in: [hotkey-manager.ts:101](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L101) Prevent the default browser action when the hotkey matches. For a sequence, every step that advances it does. Defaults to true. @@ -182,7 +182,7 @@ treat `'always'` as `true`. optional scope?: string; ``` -Defined in: [hotkey-manager.ts:116](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L116) +Defined in: [hotkey-manager.ts:120](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L120) Scope this hotkey belongs to. Defaults to `'global'`, which is always active. Other scopes are active while activated with @@ -204,7 +204,7 @@ activated scope handles it. optional stopPropagation?: boolean; ``` -Defined in: [hotkey-manager.ts:102](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L102) +Defined in: [hotkey-manager.ts:106](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L106) Stop event propagation when the hotkey matches. For a sequence, only the last step does, so earlier steps reach other listeners. Defaults to true @@ -221,7 +221,7 @@ last step does, so earlier steps reach other listeners. Defaults to true optional target?: Target | null; ``` -Defined in: [hotkey-manager.ts:104](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L104) +Defined in: [hotkey-manager.ts:108](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L108) The DOM element to attach the event listener to. Defaults to document. @@ -237,6 +237,6 @@ The DOM element to attach the event listener to. Defaults to document. optional timeout?: number; ``` -Defined in: [hotkey-manager.ts:130](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L130) +Defined in: [hotkey-manager.ts:134](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L134) Maximum time between steps in milliseconds. Default: 1000 diff --git a/docs/reference/interfaces/HotkeySequenceRecorderOptions.md b/docs/reference/interfaces/HotkeySequenceRecorderOptions.md index 3465859b..8e2ce535 100644 --- a/docs/reference/interfaces/HotkeySequenceRecorderOptions.md +++ b/docs/reference/interfaces/HotkeySequenceRecorderOptions.md @@ -3,7 +3,7 @@ id: HotkeySequenceRecorderOptions title: HotkeySequenceRecorderOptions --- -Defined in: [hotkey-recorder.ts:118](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L118) +Defined in: [hotkey-recorder.ts:117](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L117) Options for recording up to `maxSteps` chords. A one-step recording commits as a chord string; two or more steps commit as a sequence. @@ -20,7 +20,7 @@ as a chord string; two or more steps commit as a sequence. optional commitKeys?: HotkeyRecorderCommitKeys; ``` -Defined in: [hotkey-recorder.ts:129](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L129) +Defined in: [hotkey-recorder.ts:128](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L128) Whether plain Enter commits the recorded steps. Default: 'enter' @@ -32,7 +32,7 @@ Whether plain Enter commits the recorded steps. Default: 'enter' optional detectConflicts?: boolean | HotkeyConflictOptions; ``` -Defined in: [hotkey-recorder.ts:40](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L40) +Defined in: [hotkey-recorder.ts:39](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L39) Opt in to live-registry conflicts, including sequence prefixes. Default: false. @@ -50,7 +50,7 @@ HotkeyRecorderBaseOptions.detectConflicts optional idleTimeoutMs?: number; ``` -Defined in: [hotkey-recorder.ts:131](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L131) +Defined in: [hotkey-recorder.ts:130](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L130) Commit automatically after this many milliseconds without a new step. Disabled when unset or 0. @@ -62,7 +62,7 @@ Commit automatically after this many milliseconds without a new step. Disabled w optional ignoreInputs?: boolean; ``` -Defined in: [hotkey-recorder.ts:98](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L98) +Defined in: [hotkey-recorder.ts:97](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L97) Whether to ignore keyboard events from input-like elements (text inputs, textarea, select, contenteditable) while recording. When true, typing in @@ -82,7 +82,7 @@ HotkeyRecorderBaseOptions.ignoreInputs maxSteps: number; ``` -Defined in: [hotkey-recorder.ts:120](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L120) +Defined in: [hotkey-recorder.ts:119](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L119) Maximum number of chords to record. Reaching it commits automatically. Use `Infinity` for no limit. @@ -94,7 +94,7 @@ Maximum number of chords to record. Reaching it commits automatically. Use `Infi optional onCancel?: () => void; ``` -Defined in: [hotkey-recorder.ts:87](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L87) +Defined in: [hotkey-recorder.ts:86](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L86) Optional callback when recording is cancelled (Escape pressed) @@ -116,7 +116,7 @@ HotkeyRecorderBaseOptions.onCancel optional onClear?: () => void; ``` -Defined in: [hotkey-recorder.ts:92](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L92) +Defined in: [hotkey-recorder.ts:91](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L91) Optional callback when the recording is cleared: Backspace/Delete with no modifiers and no recorded steps @@ -139,7 +139,7 @@ HotkeyRecorderBaseOptions.onClear onRecord: (hotkey) => void; ``` -Defined in: [hotkey-recorder.ts:127](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L127) +Defined in: [hotkey-recorder.ts:126](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L126) Callback when a hotkey is successfully recorded @@ -161,7 +161,7 @@ Callback when a hotkey is successfully recorded optional onReject?: (rejection) => void; ``` -Defined in: [hotkey-recorder.ts:42](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L42) +Defined in: [hotkey-recorder.ts:41](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L41) Rejected candidates leave recording active. @@ -189,7 +189,7 @@ HotkeyRecorderBaseOptions.onReject optional platform?: "mac" | "windows" | "linux"; ``` -Defined in: [hotkey-recorder.ts:38](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L38) +Defined in: [hotkey-recorder.ts:37](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L37) Platform used for Mod and AltGraph handling. Defaults to platform detection. @@ -207,7 +207,7 @@ HotkeyRecorderBaseOptions.platform optional recordBy?: RecorderKeyMode; ``` -Defined in: [hotkey-recorder.ts:36](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L36) +Defined in: [hotkey-recorder.ts:35](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L35) Physical code recording is the default. Choose key to record logical characters. @@ -225,7 +225,7 @@ HotkeyRecorderBaseOptions.recordBy optional validate?: (hotkey, context) => string | boolean; ``` -Defined in: [hotkey-recorder.ts:122](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L122) +Defined in: [hotkey-recorder.ts:121](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L121) Return true to accept, or false/a message to reject while staying in recording mode. diff --git a/docs/reference/interfaces/HotkeySequenceRecorderValidationContext.md b/docs/reference/interfaces/HotkeySequenceRecorderValidationContext.md index e2f1b60d..e0efb5bf 100644 --- a/docs/reference/interfaces/HotkeySequenceRecorderValidationContext.md +++ b/docs/reference/interfaces/HotkeySequenceRecorderValidationContext.md @@ -3,7 +3,7 @@ id: HotkeySequenceRecorderValidationContext title: HotkeySequenceRecorderValidationContext --- -Defined in: [hotkey-recorder.ts:55](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L55) +Defined in: [hotkey-recorder.ts:54](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L54) Validation context for a recorded sequence. @@ -15,7 +15,7 @@ Validation context for a recorded sequence. events: readonly KeyboardEvent[]; ``` -Defined in: [hotkey-recorder.ts:58](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L58) +Defined in: [hotkey-recorder.ts:57](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L57) The event that recorded each step. @@ -27,7 +27,7 @@ The event that recorded each step. kind: "sequence"; ``` -Defined in: [hotkey-recorder.ts:56](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L56) +Defined in: [hotkey-recorder.ts:55](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L55) *** @@ -37,6 +37,6 @@ Defined in: [hotkey-recorder.ts:56](https://github.com/TanStack/hotkeys/blob/mai parsedSequence: ParsedHotkeyChord[]; ``` -Defined in: [hotkey-recorder.ts:60](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L60) +Defined in: [hotkey-recorder.ts:59](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L59) Each step with `Mod` resolved for the recorder's platform. diff --git a/docs/reference/interfaces/HotkeySequenceRegistration.md b/docs/reference/interfaces/HotkeySequenceRegistration.md index db0ec6c5..db0acb2e 100644 --- a/docs/reference/interfaces/HotkeySequenceRegistration.md +++ b/docs/reference/interfaces/HotkeySequenceRegistration.md @@ -3,7 +3,7 @@ id: HotkeySequenceRegistration title: HotkeySequenceRegistration --- -Defined in: [hotkey-manager.ts:170](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L170) +Defined in: [hotkey-manager.ts:174](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L174) A registered sequence in the HotkeyManager. @@ -19,7 +19,7 @@ A registered sequence in the HotkeyManager. callback: HotkeyCallback; ``` -Defined in: [hotkey-manager.ts:149](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L149) +Defined in: [hotkey-manager.ts:153](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L153) The callback to invoke @@ -37,7 +37,7 @@ RegistrationBase.callback currentIndex: number; ``` -Defined in: [hotkey-manager.ts:175](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L175) +Defined in: [hotkey-manager.ts:179](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L179) Steps matched in the current attempt @@ -49,7 +49,7 @@ Steps matched in the current attempt hasFired: boolean; ``` -Defined in: [hotkey-manager.ts:157](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L157) +Defined in: [hotkey-manager.ts:161](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L161) Whether this registration has fired (and, for requireReset chords, needs a reset) @@ -67,7 +67,7 @@ RegistrationBase.hasFired hotkey: HotkeySequence; ``` -Defined in: [hotkey-manager.ts:172](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L172) +Defined in: [hotkey-manager.ts:176](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L176) *** @@ -77,7 +77,7 @@ Defined in: [hotkey-manager.ts:172](https://github.com/TanStack/hotkeys/blob/mai id: string; ``` -Defined in: [hotkey-manager.ts:147](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L147) +Defined in: [hotkey-manager.ts:151](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L151) Unique identifier for this registration @@ -95,7 +95,7 @@ RegistrationBase.id kind: "sequence"; ``` -Defined in: [hotkey-manager.ts:171](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L171) +Defined in: [hotkey-manager.ts:175](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L175) *** @@ -105,7 +105,7 @@ Defined in: [hotkey-manager.ts:171](https://github.com/TanStack/hotkeys/blob/mai lastKeyTime: number; ``` -Defined in: [hotkey-manager.ts:177](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L177) +Defined in: [hotkey-manager.ts:181](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L181) `Date.now()` when the last step in the current attempt matched @@ -117,7 +117,7 @@ Defined in: [hotkey-manager.ts:177](https://github.com/TanStack/hotkeys/blob/mai options: HotkeySequenceOptions; ``` -Defined in: [hotkey-manager.ts:151](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L151) +Defined in: [hotkey-manager.ts:155](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L155) Resolved options for this registration @@ -135,7 +135,7 @@ RegistrationBase.options parsedSequence: ParsedHotkeyChord[]; ``` -Defined in: [hotkey-manager.ts:173](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L173) +Defined in: [hotkey-manager.ts:177](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L177) *** @@ -145,7 +145,7 @@ Defined in: [hotkey-manager.ts:173](https://github.com/TanStack/hotkeys/blob/mai target: Target; ``` -Defined in: [hotkey-manager.ts:153](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L153) +Defined in: [hotkey-manager.ts:157](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L157) The resolved target element for this registration @@ -163,7 +163,7 @@ RegistrationBase.target triggerCount: number; ``` -Defined in: [hotkey-manager.ts:155](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L155) +Defined in: [hotkey-manager.ts:159](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L159) How many times this registration's callback has been triggered diff --git a/docs/reference/interfaces/HotkeySequenceRegistrationView.md b/docs/reference/interfaces/HotkeySequenceRegistrationView.md index 77e2f009..96c7df99 100644 --- a/docs/reference/interfaces/HotkeySequenceRegistrationView.md +++ b/docs/reference/interfaces/HotkeySequenceRegistrationView.md @@ -3,7 +3,7 @@ id: HotkeySequenceRegistrationView title: HotkeySequenceRegistrationView --- -Defined in: [hotkey-manager.ts:211](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L211) +Defined in: [hotkey-manager.ts:215](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L215) Public view of a sequence registration, without its callback. @@ -19,7 +19,7 @@ Public view of a sequence registration, without its callback. hasFired: boolean; ``` -Defined in: [hotkey-manager.ts:199](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L199) +Defined in: [hotkey-manager.ts:203](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L203) #### Inherited from @@ -35,7 +35,7 @@ RegistrationViewBase.hasFired hotkey: HotkeySequence; ``` -Defined in: [hotkey-manager.ts:213](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L213) +Defined in: [hotkey-manager.ts:217](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L217) *** @@ -45,7 +45,7 @@ Defined in: [hotkey-manager.ts:213](https://github.com/TanStack/hotkeys/blob/mai id: string; ``` -Defined in: [hotkey-manager.ts:194](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L194) +Defined in: [hotkey-manager.ts:198](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L198) #### Inherited from @@ -61,7 +61,7 @@ RegistrationViewBase.id kind: "sequence"; ``` -Defined in: [hotkey-manager.ts:212](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L212) +Defined in: [hotkey-manager.ts:216](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L216) *** @@ -71,7 +71,7 @@ Defined in: [hotkey-manager.ts:212](https://github.com/TanStack/hotkeys/blob/mai matchedStepCount: number; ``` -Defined in: [hotkey-manager.ts:217](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L217) +Defined in: [hotkey-manager.ts:221](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L221) Steps matched in the current attempt (0 when idle or just completed). @@ -83,7 +83,7 @@ Steps matched in the current attempt (0 when idle or just completed). options: HotkeySequenceOptions; ``` -Defined in: [hotkey-manager.ts:215](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L215) +Defined in: [hotkey-manager.ts:219](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L219) *** @@ -93,7 +93,7 @@ Defined in: [hotkey-manager.ts:215](https://github.com/TanStack/hotkeys/blob/mai parsedSequence: ParsedHotkeyChord[]; ``` -Defined in: [hotkey-manager.ts:214](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L214) +Defined in: [hotkey-manager.ts:218](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L218) *** @@ -103,7 +103,7 @@ Defined in: [hotkey-manager.ts:214](https://github.com/TanStack/hotkeys/blob/mai partialMatchLastKeyTime: number; ``` -Defined in: [hotkey-manager.ts:219](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L219) +Defined in: [hotkey-manager.ts:223](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L223) `Date.now()` when the last step in the current attempt matched; 0 if none. @@ -115,7 +115,7 @@ Defined in: [hotkey-manager.ts:219](https://github.com/TanStack/hotkeys/blob/mai status: HotkeyRegistrationStatus; ``` -Defined in: [hotkey-manager.ts:196](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L196) +Defined in: [hotkey-manager.ts:200](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L200) Whether the registration is enabled and in an active scope. @@ -133,7 +133,7 @@ RegistrationViewBase.status target: Target; ``` -Defined in: [hotkey-manager.ts:197](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L197) +Defined in: [hotkey-manager.ts:201](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L201) #### Inherited from @@ -149,7 +149,7 @@ RegistrationViewBase.target triggerCount: number; ``` -Defined in: [hotkey-manager.ts:198](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L198) +Defined in: [hotkey-manager.ts:202](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L202) #### Inherited from diff --git a/docs/reference/interfaces/RecorderOptions.md b/docs/reference/interfaces/RecorderOptions.md index f07556dc..31ffd75d 100644 --- a/docs/reference/interfaces/RecorderOptions.md +++ b/docs/reference/interfaces/RecorderOptions.md @@ -3,7 +3,7 @@ id: RecorderOptions title: RecorderOptions --- -Defined in: [hotkey-recorder.ts:34](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L34) +Defined in: [hotkey-recorder.ts:33](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L33) ## Properties @@ -13,7 +13,7 @@ Defined in: [hotkey-recorder.ts:34](https://github.com/TanStack/hotkeys/blob/mai optional detectConflicts?: boolean | HotkeyConflictOptions; ``` -Defined in: [hotkey-recorder.ts:40](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L40) +Defined in: [hotkey-recorder.ts:39](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L39) Opt in to live-registry conflicts, including sequence prefixes. Default: false. @@ -25,7 +25,7 @@ Opt in to live-registry conflicts, including sequence prefixes. Default: false. optional onReject?: (rejection) => void; ``` -Defined in: [hotkey-recorder.ts:42](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L42) +Defined in: [hotkey-recorder.ts:41](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L41) Rejected candidates leave recording active. @@ -47,7 +47,7 @@ Rejected candidates leave recording active. optional platform?: "mac" | "windows" | "linux"; ``` -Defined in: [hotkey-recorder.ts:38](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L38) +Defined in: [hotkey-recorder.ts:37](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L37) Platform used for Mod and AltGraph handling. Defaults to platform detection. @@ -59,6 +59,6 @@ Platform used for Mod and AltGraph handling. Defaults to platform detection. optional recordBy?: RecorderKeyMode; ``` -Defined in: [hotkey-recorder.ts:36](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L36) +Defined in: [hotkey-recorder.ts:35](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L35) Physical code recording is the default. Choose key to record logical characters. diff --git a/docs/reference/interfaces/RecorderRejection.md b/docs/reference/interfaces/RecorderRejection.md index 760cf975..ec48cb06 100644 --- a/docs/reference/interfaces/RecorderRejection.md +++ b/docs/reference/interfaces/RecorderRejection.md @@ -3,7 +3,7 @@ id: RecorderRejection title: RecorderRejection --- -Defined in: [hotkey-recorder.ts:26](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L26) +Defined in: [hotkey-recorder.ts:25](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L25) ## Properties @@ -13,7 +13,7 @@ Defined in: [hotkey-recorder.ts:26](https://github.com/TanStack/hotkeys/blob/mai optional conflicts?: HotkeyConflict[]; ``` -Defined in: [hotkey-recorder.ts:31](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L31) +Defined in: [hotkey-recorder.ts:30](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L30) *** @@ -23,7 +23,7 @@ Defined in: [hotkey-recorder.ts:31](https://github.com/TanStack/hotkeys/blob/mai optional hotkey?: Hotkey; ``` -Defined in: [hotkey-recorder.ts:30](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L30) +Defined in: [hotkey-recorder.ts:29](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L29) The rejected chord or sequence, when one was recorded. @@ -35,7 +35,7 @@ The rejected chord or sequence, when one was recorded. message: string; ``` -Defined in: [hotkey-recorder.ts:28](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L28) +Defined in: [hotkey-recorder.ts:27](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L27) *** @@ -45,4 +45,4 @@ Defined in: [hotkey-recorder.ts:28](https://github.com/TanStack/hotkeys/blob/mai reason: "invalid" | "missing-code" | "alt-graph" | "conflict" | "validation"; ``` -Defined in: [hotkey-recorder.ts:27](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L27) +Defined in: [hotkey-recorder.ts:26](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L26) diff --git a/docs/reference/interfaces/ValidationResult.md b/docs/reference/interfaces/ValidationResult.md index 2120e89c..cc106c8a 100644 --- a/docs/reference/interfaces/ValidationResult.md +++ b/docs/reference/interfaces/ValidationResult.md @@ -3,7 +3,7 @@ id: ValidationResult title: ValidationResult --- -Defined in: [validate.ts:189](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L189) +Defined in: [validate.ts:180](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L180) Result of validating a hotkey string. @@ -15,7 +15,7 @@ Result of validating a hotkey string. errors: string[]; ``` -Defined in: [validate.ts:195](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L195) +Defined in: [validate.ts:186](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L186) Error messages about invalid syntax @@ -27,7 +27,7 @@ Error messages about invalid syntax valid: boolean; ``` -Defined in: [validate.ts:191](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L191) +Defined in: [validate.ts:182](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L182) Whether the hotkey is valid (can still have warnings) @@ -39,6 +39,6 @@ Whether the hotkey is valid (can still have warnings) warnings: string[]; ``` -Defined in: [validate.ts:193](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L193) +Defined in: [validate.ts:184](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/validate.ts#L184) Warning messages about potential issues diff --git a/docs/reference/type-aliases/AppHotkeyStatus.md b/docs/reference/type-aliases/AppHotkeyStatus.md index d38a65d7..19b8a8cd 100644 --- a/docs/reference/type-aliases/AppHotkeyStatus.md +++ b/docs/reference/type-aliases/AppHotkeyStatus.md @@ -7,7 +7,7 @@ title: AppHotkeyStatus type AppHotkeyStatus = "active" | "suspended" | "disabled" | "inactive" | "unbound"; ``` -Defined in: [app-hotkeys.ts:316](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L316) +Defined in: [app-hotkeys.ts:317](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/app-hotkeys.ts#L317) Status of an app hotkey in the running app. - `'active'`: at least one enabled registration diff --git a/docs/reference/type-aliases/DisplayHotkey.md b/docs/reference/type-aliases/DisplayHotkey.md index 0be651d1..8870c0d4 100644 --- a/docs/reference/type-aliases/DisplayHotkey.md +++ b/docs/reference/type-aliases/DisplayHotkey.md @@ -9,6 +9,6 @@ type DisplayHotkey = | ReadonlyArray; ``` -Defined in: [format.ts:73](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L73) +Defined in: [format.ts:72](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L72) A hotkey to display: a chord or a sequence of chords. diff --git a/docs/reference/type-aliases/DisplayHotkeyChord.md b/docs/reference/type-aliases/DisplayHotkeyChord.md index ec85cc64..5f5dd92d 100644 --- a/docs/reference/type-aliases/DisplayHotkeyChord.md +++ b/docs/reference/type-aliases/DisplayHotkeyChord.md @@ -6,10 +6,9 @@ title: DisplayHotkeyChord ```ts type DisplayHotkeyChord = | RegisterableHotkeyChord - | ParsedHotkeyChord - | string & object; + | ParsedHotkeyChord; ``` Defined in: [format.ts:69](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/format.ts#L69) -A single chord to display: a string, raw object, or parsed hotkey. +A single chord to display: a hotkey string, raw object, or parsed hotkey. diff --git a/docs/reference/type-aliases/HotkeyOptionsFor.md b/docs/reference/type-aliases/HotkeyOptionsFor.md index 243ab7d6..424aeab7 100644 --- a/docs/reference/type-aliases/HotkeyOptionsFor.md +++ b/docs/reference/type-aliases/HotkeyOptionsFor.md @@ -7,7 +7,7 @@ title: HotkeyOptionsFor type HotkeyOptionsFor = [T] extends [never] ? HotkeyChordOptions & HotkeySequenceOptions : T extends readonly [RegisterableHotkeyChord] ? HotkeyChordOptions : T extends RegisterableHotkeySequence ? HotkeySequenceOptions : HotkeyChordOptions; ``` -Defined in: [hotkey-manager.ts:137](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L137) +Defined in: [hotkey-manager.ts:141](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L141) The options type for a hotkey: chord options for chords (including one-step tuples), sequence options for sequences. diff --git a/docs/reference/type-aliases/HotkeyRecorderCommitKeys.md b/docs/reference/type-aliases/HotkeyRecorderCommitKeys.md index 752033a1..e76a419c 100644 --- a/docs/reference/type-aliases/HotkeyRecorderCommitKeys.md +++ b/docs/reference/type-aliases/HotkeyRecorderCommitKeys.md @@ -7,6 +7,6 @@ title: HotkeyRecorderCommitKeys type HotkeyRecorderCommitKeys = "enter" | "none"; ``` -Defined in: [hotkey-recorder.ts:83](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L83) +Defined in: [hotkey-recorder.ts:82](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L82) Which keys commit a multi-step recording before it reaches `maxSteps`. diff --git a/docs/reference/type-aliases/HotkeyRecorderOptions.md b/docs/reference/type-aliases/HotkeyRecorderOptions.md index 814e7dfa..2f884be0 100644 --- a/docs/reference/type-aliases/HotkeyRecorderOptions.md +++ b/docs/reference/type-aliases/HotkeyRecorderOptions.md @@ -9,7 +9,7 @@ type HotkeyRecorderOptions = | HotkeySequenceRecorderOptions; ``` -Defined in: [hotkey-recorder.ts:138](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L138) +Defined in: [hotkey-recorder.ts:137](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L137) Options for HotkeyRecorder. `maxSteps` (default 1) selects between recording a single chord and recording a sequence. diff --git a/docs/reference/type-aliases/HotkeyRecorderValidationContext.md b/docs/reference/type-aliases/HotkeyRecorderValidationContext.md index 583ca469..377840ae 100644 --- a/docs/reference/type-aliases/HotkeyRecorderValidationContext.md +++ b/docs/reference/type-aliases/HotkeyRecorderValidationContext.md @@ -9,7 +9,7 @@ type HotkeyRecorderValidationContext = | HotkeySequenceRecorderValidationContext; ``` -Defined in: [hotkey-recorder.ts:67](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L67) +Defined in: [hotkey-recorder.ts:66](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L66) Validation context for a recorded chord or sequence. Narrow with `kind` to read `parsedChord` or `parsedSequence`. diff --git a/docs/reference/type-aliases/HotkeyRegistration.md b/docs/reference/type-aliases/HotkeyRegistration.md index 81501464..c27cf4bb 100644 --- a/docs/reference/type-aliases/HotkeyRegistration.md +++ b/docs/reference/type-aliases/HotkeyRegistration.md @@ -9,6 +9,6 @@ type HotkeyRegistration = | HotkeySequenceRegistration; ``` -Defined in: [hotkey-manager.ts:181](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L181) +Defined in: [hotkey-manager.ts:185](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L185) A registered hotkey in the HotkeyManager. diff --git a/docs/reference/type-aliases/HotkeyRegistrationStatus.md b/docs/reference/type-aliases/HotkeyRegistrationStatus.md index 5a51dc12..deaf41cd 100644 --- a/docs/reference/type-aliases/HotkeyRegistrationStatus.md +++ b/docs/reference/type-aliases/HotkeyRegistrationStatus.md @@ -7,7 +7,7 @@ title: HotkeyRegistrationStatus type HotkeyRegistrationStatus = "active" | "suspended" | "disabled"; ``` -Defined in: [hotkey-manager.ts:191](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L191) +Defined in: [hotkey-manager.ts:195](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L195) Whether a registration is on. Focus isn't checked: a registration on an element also needs focus inside that element to fire. diff --git a/docs/reference/type-aliases/HotkeyRegistrationView.md b/docs/reference/type-aliases/HotkeyRegistrationView.md index ce8bbbe3..3a2b481b 100644 --- a/docs/reference/type-aliases/HotkeyRegistrationView.md +++ b/docs/reference/type-aliases/HotkeyRegistrationView.md @@ -9,7 +9,7 @@ type HotkeyRegistrationView = | HotkeySequenceRegistrationView; ``` -Defined in: [hotkey-manager.ts:226](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L226) +Defined in: [hotkey-manager.ts:230](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L230) Public view of a hotkey registration for display and introspection. Narrow with `kind` to read chord- or sequence-specific fields. diff --git a/docs/reference/type-aliases/RecorderKeyMode.md b/docs/reference/type-aliases/RecorderKeyMode.md index fdaec9fc..7e9c395e 100644 --- a/docs/reference/type-aliases/RecorderKeyMode.md +++ b/docs/reference/type-aliases/RecorderKeyMode.md @@ -7,6 +7,6 @@ title: RecorderKeyMode type RecorderKeyMode = "code" | "key"; ``` -Defined in: [hotkey-recorder.ts:24](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L24) +Defined in: [hotkey-recorder.ts:23](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-recorder.ts#L23) Event property used to record a binding. Physical codes are the default. diff --git a/docs/reference/type-aliases/Target.md b/docs/reference/type-aliases/Target.md index 2e2be5c8..c36a7f8b 100644 --- a/docs/reference/type-aliases/Target.md +++ b/docs/reference/type-aliases/Target.md @@ -7,6 +7,6 @@ title: Target type Target = HTMLElement | Document | Window; ``` -Defined in: [hotkey-manager.ts:51](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L51) +Defined in: [hotkey-manager.ts:55](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/hotkey-manager.ts#L55) An element, document, or window that hotkeys can listen on. diff --git a/docs/reference/variables/ALL_KEYS.md b/docs/reference/variables/ALL_KEYS.md index f3e58888..a233a64c 100644 --- a/docs/reference/variables/ALL_KEYS.md +++ b/docs/reference/variables/ALL_KEYS.md @@ -68,13 +68,13 @@ const ALL_KEYS: Set< | PunctuationKey>; ``` -Defined in: [constants.ts:305](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L305) +Defined in: [constants.ts:217](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L217) Set of all valid non-modifier keys. -This is the union of all key type sets (letters, numbers, function keys, navigation, -editing, and punctuation). Used primarily for validation to check if a key string -is recognized and will have type-safe autocomplete support. +This is the union of all key type sets (letters, numbers, function keys, +navigation, editing, punctuation, and other named keys): every key with +type-safe autocomplete support. ## See diff --git a/docs/reference/variables/EDITING_KEYS.md b/docs/reference/variables/EDITING_KEYS.md index 3a7dba69..1b32c902 100644 --- a/docs/reference/variables/EDITING_KEYS.md +++ b/docs/reference/variables/EDITING_KEYS.md @@ -7,7 +7,7 @@ title: EDITING_KEYS const EDITING_KEYS: Set; ``` -Defined in: [constants.ts:212](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L212) +Defined in: [constants.ts:153](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L153) Set of all valid editing and special keys. diff --git a/docs/reference/variables/FUNCTION_KEYS.md b/docs/reference/variables/FUNCTION_KEYS.md index c3fd2d02..69b44079 100644 --- a/docs/reference/variables/FUNCTION_KEYS.md +++ b/docs/reference/variables/FUNCTION_KEYS.md @@ -7,7 +7,7 @@ title: FUNCTION_KEYS const FUNCTION_KEYS: Set; ``` -Defined in: [constants.ts:160](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L160) +Defined in: [constants.ts:131](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L131) Set of all valid function keys (F1-F24). diff --git a/docs/reference/variables/LETTER_KEYS.md b/docs/reference/variables/LETTER_KEYS.md index 55671687..be756269 100644 --- a/docs/reference/variables/LETTER_KEYS.md +++ b/docs/reference/variables/LETTER_KEYS.md @@ -7,7 +7,7 @@ title: LETTER_KEYS const LETTER_KEYS: Set; ``` -Defined in: [constants.ts:105](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L105) +Defined in: [constants.ts:110](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L110) Set of all valid letter keys (A-Z). diff --git a/docs/reference/variables/MODIFIER_ALIASES.md b/docs/reference/variables/MODIFIER_ALIASES.md index 58f2054d..67f026aa 100644 --- a/docs/reference/variables/MODIFIER_ALIASES.md +++ b/docs/reference/variables/MODIFIER_ALIASES.md @@ -7,7 +7,7 @@ title: MODIFIER_ALIASES const MODIFIER_ALIASES: Record; ``` -Defined in: [constants.ts:61](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L61) +Defined in: [constants.ts:66](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L66) Maps modifier key aliases to their canonical form or platform-adaptive 'Mod'. diff --git a/docs/reference/variables/MODIFIER_KEYS.md b/docs/reference/variables/MODIFIER_KEYS.md index d508067a..d2eee197 100644 --- a/docs/reference/variables/MODIFIER_KEYS.md +++ b/docs/reference/variables/MODIFIER_KEYS.md @@ -7,7 +7,7 @@ title: MODIFIER_KEYS const MODIFIER_KEYS: Set; ``` -Defined in: [constants.ts:40](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L40) +Defined in: [constants.ts:45](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L45) Set of canonical modifier key names for fast lookup. diff --git a/docs/reference/variables/MODIFIER_ORDER.md b/docs/reference/variables/MODIFIER_ORDER.md index b00ad966..1abfc71a 100644 --- a/docs/reference/variables/MODIFIER_ORDER.md +++ b/docs/reference/variables/MODIFIER_ORDER.md @@ -7,7 +7,7 @@ title: MODIFIER_ORDER const MODIFIER_ORDER: CanonicalModifier[]; ``` -Defined in: [constants.ts:26](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L26) +Defined in: [constants.ts:31](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L31) Canonical order for modifiers in normalized hotkey strings. diff --git a/docs/reference/variables/NAVIGATION_KEYS.md b/docs/reference/variables/NAVIGATION_KEYS.md index 28c5f9e5..1ee4fd9c 100644 --- a/docs/reference/variables/NAVIGATION_KEYS.md +++ b/docs/reference/variables/NAVIGATION_KEYS.md @@ -7,7 +7,7 @@ title: NAVIGATION_KEYS const NAVIGATION_KEYS: Set; ``` -Defined in: [constants.ts:194](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L194) +Defined in: [constants.ts:142](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L142) Set of all valid navigation keys for cursor movement and document navigation. diff --git a/docs/reference/variables/NUMBER_KEYS.md b/docs/reference/variables/NUMBER_KEYS.md index ef3a1dff..da453592 100644 --- a/docs/reference/variables/NUMBER_KEYS.md +++ b/docs/reference/variables/NUMBER_KEYS.md @@ -7,7 +7,7 @@ title: NUMBER_KEYS const NUMBER_KEYS: Set; ``` -Defined in: [constants.ts:141](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L141) +Defined in: [constants.ts:121](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L121) Set of all valid number keys (0-9). diff --git a/docs/reference/variables/PUNCTUATION_CODE_MAP.md b/docs/reference/variables/PUNCTUATION_CODE_MAP.md index 2ac364c3..e532ec3c 100644 --- a/docs/reference/variables/PUNCTUATION_CODE_MAP.md +++ b/docs/reference/variables/PUNCTUATION_CODE_MAP.md @@ -7,7 +7,7 @@ title: PUNCTUATION_CODE_MAP const PUNCTUATION_CODE_MAP: Record; ``` -Defined in: [constants.ts:277](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L277) +Defined in: [constants.ts:182](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L182) Maps `KeyboardEvent.code` values for punctuation keys to their canonical characters. diff --git a/docs/reference/variables/PUNCTUATION_KEYS.md b/docs/reference/variables/PUNCTUATION_KEYS.md index d47cf1ca..a33f3b9d 100644 --- a/docs/reference/variables/PUNCTUATION_KEYS.md +++ b/docs/reference/variables/PUNCTUATION_KEYS.md @@ -7,7 +7,7 @@ title: PUNCTUATION_KEYS const PUNCTUATION_KEYS: Set; ``` -Defined in: [constants.ts:233](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L233) +Defined in: [constants.ts:169](https://github.com/TanStack/hotkeys/blob/main/packages/hotkeys/src/constants.ts#L169) Set of all valid punctuation keys commonly used in keyboard shortcuts. diff --git a/examples/alpine/createHeldKeys/index.html b/examples/alpine/createHeldKeys/index.html index eb618368..f005e012 100644 --- a/examples/alpine/createHeldKeys/index.html +++ b/examples/alpine/createHeldKeys/index.html @@ -30,7 +30,7 @@

Currently Held Keys