@tanstack/hotkeys-devtools 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/HotkeysContextProvider.js +11 -1
- package/dist/HotkeysContextProvider.js.map +1 -1
- package/dist/components/ActionButtons.js +7 -2
- package/dist/components/ActionButtons.js.map +1 -1
- package/dist/components/DetailsPanel.js +458 -215
- package/dist/components/DetailsPanel.js.map +1 -1
- package/dist/components/HotkeyList.js +294 -139
- package/dist/components/HotkeyList.js.map +1 -1
- package/dist/components/Shell.js +3 -1
- package/dist/components/Shell.js.map +1 -1
- package/package.json +2 -2
- package/src/HotkeysContextProvider.tsx +31 -3
- package/src/components/ActionButtons.tsx +18 -5
- package/src/components/DetailsPanel.tsx +500 -204
- package/src/components/HotkeyList.tsx +195 -2
- package/src/components/Shell.tsx +4 -1
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import { createContext, createEffect, createSignal, onCleanup, useContext } from "solid-js";
|
|
2
2
|
import { createComponent } from "solid-js/web";
|
|
3
|
-
import { HotkeyManager, KeyStateTracker } from "@tanstack/hotkeys";
|
|
3
|
+
import { HotkeyManager, KeyStateTracker, SequenceManager } from "@tanstack/hotkeys";
|
|
4
4
|
|
|
5
5
|
//#region src/HotkeysContextProvider.tsx
|
|
6
6
|
const HotkeysDevtoolsContext = createContext({
|
|
7
7
|
registrations: () => [],
|
|
8
|
+
sequenceRegistrations: () => [],
|
|
8
9
|
heldKeys: () => [],
|
|
9
10
|
heldCodes: () => ({})
|
|
10
11
|
});
|
|
11
12
|
function HotkeysContextProvider(props) {
|
|
12
13
|
const manager = HotkeyManager.getInstance();
|
|
14
|
+
const sequenceManager = SequenceManager.getInstance();
|
|
13
15
|
const tracker = KeyStateTracker.getInstance();
|
|
14
16
|
const [registrations, setRegistrations] = createSignal(Array.from(manager.registrations.state.values()));
|
|
17
|
+
const [sequenceRegistrations, setSequenceRegistrations] = createSignal(Array.from(sequenceManager.registrations.state.values()));
|
|
15
18
|
const [heldKeys, setHeldKeys] = createSignal(tracker.store.state.heldKeys);
|
|
16
19
|
const [heldCodes, setHeldCodes] = createSignal(tracker.store.state.heldCodes);
|
|
17
20
|
createEffect(() => {
|
|
@@ -20,6 +23,12 @@ function HotkeysContextProvider(props) {
|
|
|
20
23
|
}).unsubscribe;
|
|
21
24
|
onCleanup(() => unsubscribe());
|
|
22
25
|
});
|
|
26
|
+
createEffect(() => {
|
|
27
|
+
const unsubscribe = sequenceManager.registrations.subscribe(() => {
|
|
28
|
+
setSequenceRegistrations(Array.from(sequenceManager.registrations.state.values()));
|
|
29
|
+
}).unsubscribe;
|
|
30
|
+
onCleanup(() => unsubscribe());
|
|
31
|
+
});
|
|
23
32
|
createEffect(() => {
|
|
24
33
|
const unsubscribe = tracker.store.subscribe(() => {
|
|
25
34
|
setHeldKeys(tracker.store.state.heldKeys);
|
|
@@ -30,6 +39,7 @@ function HotkeysContextProvider(props) {
|
|
|
30
39
|
return createComponent(HotkeysDevtoolsContext.Provider, {
|
|
31
40
|
value: {
|
|
32
41
|
registrations,
|
|
42
|
+
sequenceRegistrations,
|
|
33
43
|
heldKeys,
|
|
34
44
|
heldCodes
|
|
35
45
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HotkeysContextProvider.js","names":["createContext","createEffect","createSignal","onCleanup","useContext","HotkeyManager","KeyStateTracker","Accessor","HotkeyRegistration","HotkeysDevtoolsContextType","registrations","Array","heldKeys","heldCodes","Record","HotkeysDevtoolsContext","HotkeysContextProvider","props","children","manager","getInstance","tracker","setRegistrations","from","state","values","setHeldKeys","store","setHeldCodes","unsubscribe","subscribe","_$createComponent","Provider","value","useHotkeysDevtoolsState"],"sources":["../src/HotkeysContextProvider.tsx"],"sourcesContent":["import {\n createContext,\n createEffect,\n createSignal,\n onCleanup,\n useContext,\n} from 'solid-js'\nimport {
|
|
1
|
+
{"version":3,"file":"HotkeysContextProvider.js","names":["createContext","createEffect","createSignal","onCleanup","useContext","HotkeyManager","KeyStateTracker","SequenceManager","Accessor","HotkeyRegistration","SequenceRegistrationView","HotkeysDevtoolsContextType","registrations","Array","sequenceRegistrations","heldKeys","heldCodes","Record","HotkeysDevtoolsContext","HotkeysContextProvider","props","children","manager","getInstance","sequenceManager","tracker","setRegistrations","from","state","values","setSequenceRegistrations","setHeldKeys","store","setHeldCodes","unsubscribe","subscribe","_$createComponent","Provider","value","useHotkeysDevtoolsState"],"sources":["../src/HotkeysContextProvider.tsx"],"sourcesContent":["import {\n createContext,\n createEffect,\n createSignal,\n onCleanup,\n useContext,\n} from 'solid-js'\nimport {\n HotkeyManager,\n KeyStateTracker,\n SequenceManager,\n} from '@tanstack/hotkeys'\nimport type { Accessor } from 'solid-js'\nimport type {\n HotkeyRegistration,\n SequenceRegistrationView,\n} from '@tanstack/hotkeys'\n\ninterface HotkeysDevtoolsContextType {\n registrations: Accessor<Array<HotkeyRegistration>>\n sequenceRegistrations: Accessor<Array<SequenceRegistrationView>>\n heldKeys: Accessor<Array<string>>\n heldCodes: Accessor<Record<string, string>>\n}\n\nconst HotkeysDevtoolsContext = createContext<HotkeysDevtoolsContextType>({\n registrations: () => [],\n sequenceRegistrations: () => [],\n heldKeys: () => [],\n heldCodes: () => ({}),\n})\n\nexport function HotkeysContextProvider(props: { children: any }) {\n const manager = HotkeyManager.getInstance()\n const sequenceManager = SequenceManager.getInstance()\n const tracker = KeyStateTracker.getInstance()\n\n // Create local signals that will be updated by subscriptions\n const [registrations, setRegistrations] = createSignal<\n Array<HotkeyRegistration>\n >(Array.from(manager.registrations.state.values()))\n const [sequenceRegistrations, setSequenceRegistrations] = createSignal<\n Array<SequenceRegistrationView>\n >(Array.from(sequenceManager.registrations.state.values()))\n const [heldKeys, setHeldKeys] = createSignal<Array<string>>(\n tracker.store.state.heldKeys,\n )\n const [heldCodes, setHeldCodes] = createSignal<Record<string, string>>(\n tracker.store.state.heldCodes,\n )\n\n // Subscribe to HotkeyManager registrations store\n createEffect(() => {\n const unsubscribe = manager.registrations.subscribe(() => {\n setRegistrations(Array.from(manager.registrations.state.values()))\n }).unsubscribe\n onCleanup(() => unsubscribe())\n })\n\n // Subscribe to SequenceManager registrations store\n createEffect(() => {\n const unsubscribe = sequenceManager.registrations.subscribe(() => {\n setSequenceRegistrations(\n Array.from(sequenceManager.registrations.state.values()),\n )\n }).unsubscribe\n onCleanup(() => unsubscribe())\n })\n\n // Subscribe to KeyStateTracker store\n createEffect(() => {\n const unsubscribe = tracker.store.subscribe(() => {\n setHeldKeys(tracker.store.state.heldKeys)\n setHeldCodes(tracker.store.state.heldCodes)\n }).unsubscribe\n onCleanup(() => unsubscribe())\n })\n\n return (\n <HotkeysDevtoolsContext.Provider\n value={{\n registrations,\n sequenceRegistrations,\n heldKeys,\n heldCodes,\n }}\n >\n {props.children}\n </HotkeysDevtoolsContext.Provider>\n )\n}\n\nexport function useHotkeysDevtoolsState() {\n return useContext(HotkeysDevtoolsContext)\n}\n"],"mappings":";;;;;AAyBA,MAAMkB,yBAAyBlB,cAA0C;CACvEY,qBAAqB,EAAE;CACvBE,6BAA6B,EAAE;CAC/BC,gBAAgB,EAAE;CAClBC,kBAAkB,EAAE;CACrB,CAAC;AAEF,SAAgBG,uBAAuBC,OAA0B;CAC/D,MAAME,UAAUjB,cAAckB,aAAa;CAC3C,MAAMC,kBAAkBjB,gBAAgBgB,aAAa;CACrD,MAAME,UAAUnB,gBAAgBiB,aAAa;CAG7C,MAAM,CAACX,eAAec,oBAAoBxB,aAExCW,MAAMc,KAAKL,QAAQV,cAAcgB,MAAMC,QAAQ,CAAC,CAAC;CACnD,MAAM,CAACf,uBAAuBgB,4BAA4B5B,aAExDW,MAAMc,KAAKH,gBAAgBZ,cAAcgB,MAAMC,QAAQ,CAAC,CAAC;CAC3D,MAAM,CAACd,UAAUgB,eAAe7B,aAC9BuB,QAAQO,MAAMJ,MAAMb,SACrB;CACD,MAAM,CAACC,WAAWiB,gBAAgB/B,aAChCuB,QAAQO,MAAMJ,MAAMZ,UACrB;AAGDf,oBAAmB;EACjB,MAAMiC,cAAcZ,QAAQV,cAAcuB,gBAAgB;AACxDT,oBAAiBb,MAAMc,KAAKL,QAAQV,cAAcgB,MAAMC,QAAQ,CAAC,CAAC;IAClE,CAACK;AACH/B,kBAAgB+B,aAAa,CAAC;GAC9B;AAGFjC,oBAAmB;EACjB,MAAMiC,cAAcV,gBAAgBZ,cAAcuB,gBAAgB;AAChEL,4BACEjB,MAAMc,KAAKH,gBAAgBZ,cAAcgB,MAAMC,QAAQ,CACzD,CAAC;IACD,CAACK;AACH/B,kBAAgB+B,aAAa,CAAC;GAC9B;AAGFjC,oBAAmB;EACjB,MAAMiC,cAAcT,QAAQO,MAAMG,gBAAgB;AAChDJ,eAAYN,QAAQO,MAAMJ,MAAMb,SAAS;AACzCkB,gBAAaR,QAAQO,MAAMJ,MAAMZ,UAAU;IAC3C,CAACkB;AACH/B,kBAAgB+B,aAAa,CAAC;GAC9B;AAEF,QAAAE,gBACGlB,uBAAuBmB,UAAQ;EAC9BC,OAAO;GACL1B;GACAE;GACAC;GACAC;GACD;EAAA,IAAAK,WAAA;AAAA,UAEAD,MAAMC;;EAAQ,CAAA;;AAKrB,SAAgBkB,0BAA0B;AACxC,QAAOnC,WAAWc,uBAAuB"}
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { useStyles } from "../styles/use-styles.js";
|
|
2
2
|
import { className, delegateEvents, effect, template } from "solid-js/web";
|
|
3
|
-
import { HotkeyManager } from "@tanstack/hotkeys";
|
|
3
|
+
import { HotkeyManager, SequenceManager } from "@tanstack/hotkeys";
|
|
4
4
|
|
|
5
5
|
//#region src/components/ActionButtons.tsx
|
|
6
6
|
var _tmpl$ = /* @__PURE__ */ template(`<div><button><span></span>Trigger`);
|
|
7
|
+
function isSequenceRegistration(reg) {
|
|
8
|
+
return "sequence" in reg && Array.isArray(reg.sequence);
|
|
9
|
+
}
|
|
7
10
|
function ActionButtons(props) {
|
|
8
11
|
const styles = useStyles();
|
|
9
12
|
const handleTrigger = () => {
|
|
10
|
-
|
|
13
|
+
const reg = props.registration;
|
|
14
|
+
if (isSequenceRegistration(reg)) SequenceManager.getInstance().triggerSequence(reg.id);
|
|
15
|
+
else HotkeyManager.getInstance().triggerRegistration(reg.id);
|
|
11
16
|
};
|
|
12
17
|
return (() => {
|
|
13
18
|
var _el$ = _tmpl$(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionButtons.js","names":["HotkeyManager","useStyles","HotkeyRegistration","ActionButtonsProps","registration","ActionButtons","props","styles","handleTrigger","
|
|
1
|
+
{"version":3,"file":"ActionButtons.js","names":["HotkeyManager","SequenceManager","useStyles","HotkeyRegistration","SequenceRegistrationView","ActionButtonsProps","registration","isSequenceRegistration","reg","Array","isArray","sequence","ActionButtons","props","styles","handleTrigger","getInstance","triggerSequence","id","triggerRegistration","_el$","_tmpl$","_el$2","firstChild","_el$3","$$mousedown","_$effect","_p$","_v$","actionsRow","_v$2","actionButton","_v$3","actionDotGreen","e","_$className","t","a","undefined","_$delegateEvents"],"sources":["../../src/components/ActionButtons.tsx"],"sourcesContent":["import { HotkeyManager, SequenceManager } from '@tanstack/hotkeys'\nimport { useStyles } from '../styles/use-styles'\nimport type {\n HotkeyRegistration,\n SequenceRegistrationView,\n} from '@tanstack/hotkeys'\n\ntype ActionButtonsProps = {\n registration: HotkeyRegistration | SequenceRegistrationView\n}\n\nfunction isSequenceRegistration(\n reg: HotkeyRegistration | SequenceRegistrationView,\n): reg is SequenceRegistrationView {\n return 'sequence' in reg && Array.isArray(reg.sequence)\n}\n\nexport function ActionButtons(props: ActionButtonsProps) {\n const styles = useStyles()\n\n const handleTrigger = () => {\n const reg = props.registration\n if (isSequenceRegistration(reg)) {\n SequenceManager.getInstance().triggerSequence(reg.id)\n } else {\n HotkeyManager.getInstance().triggerRegistration(reg.id)\n }\n }\n\n return (\n <div class={styles().actionsRow}>\n <button class={styles().actionButton} onMouseDown={handleTrigger}>\n <span class={styles().actionDotGreen} />\n Trigger\n </button>\n </div>\n )\n}\n"],"mappings":";;;;;;AAWA,SAASO,uBACPC,KACiC;AACjC,QAAO,cAAcA,OAAOC,MAAMC,QAAQF,IAAIG,SAAS;;AAGzD,SAAgBC,cAAcC,OAA2B;CACvD,MAAMC,SAASZ,WAAW;CAE1B,MAAMa,sBAAsB;EAC1B,MAAMP,MAAMK,MAAMP;AAClB,MAAIC,uBAAuBC,IAAI,CAC7BP,iBAAgBe,aAAa,CAACC,gBAAgBT,IAAIU,GAAG;MAErDlB,eAAcgB,aAAa,CAACG,oBAAoBX,IAAIU,GAAG;;AAI3D,eAAA;EAAA,IAAAE,OAAAC,QAAA,EAAAC,QAAAF,KAAAG,YAAAC,QAAAF,MAAAC;AAAAD,QAAAG,cAEuDV;AAAaW,UAAAC,QAAA;GAAA,IAAAC,MADtDd,QAAQ,CAACe,YAAUC,OACdhB,QAAQ,CAACiB,cAAYC,OACrBlB,QAAQ,CAACmB;AAAcL,WAAAD,IAAAO,KAAAC,UAAAf,MAAAO,IAAAO,IAAAN,IAAA;AAAAE,YAAAH,IAAAS,KAAAD,UAAAb,OAAAK,IAAAS,IAAAN,KAAA;AAAAE,YAAAL,IAAAU,KAAAF,UAAAX,OAAAG,IAAAU,IAAAL,KAAA;AAAA,UAAAL;KAAA;GAAAO,GAAAI;GAAAF,GAAAE;GAAAD,GAAAC;GAAA,CAAA;AAAA,SAAAlB;KAAA;;AAK3CmB,eAAA,CAAA,YAAA,CAAA"}
|