UNPKG

use-keybinds

Version:

Lightweight keybind library for React

1 lines 2.62 kB
{"version":3,"sources":["../src/KeybindsProvider.tsx","../src/utils.ts"],"sourcesContent":["import React, { createContext, useMemo } from \"react\";\nimport { createKeybindCombinationString } from \"./utils\";\nimport type { ReactNode } from \"react\";\nimport type { Keybind, Keybinds } from \"./types\";\n\nexport const KeybindsContext = createContext<{\n keybinds: Keybinds<string>;\n combinationsToKeybindKey: Record<string, string>;\n}>({\n keybinds: {},\n combinationsToKeybindKey: {},\n});\n\ninterface KeybindsProviderProps<Slug extends string> {\n children: ReactNode;\n keybinds: Keybinds<Slug>;\n}\n\nconst KeybindsProvider = <Slug extends string>(props: KeybindsProviderProps<Slug>) => {\n const { children, keybinds = {} } = props;\n\n const combinationsToKeybindKey = useMemo<Record<string, Slug>>(() => {\n return Object.entries(keybinds).reduce((result, entry) => {\n const key = entry[0] as string;\n const keybind: Keybind = entry[1] as Keybind;\n const combinationString = createKeybindCombinationString(\n keybind.keybind,\n keybind.isSequential\n );\n return { ...result, [combinationString]: key };\n }, {});\n }, [keybinds]);\n\n return (\n <KeybindsContext.Provider value={{ keybinds, combinationsToKeybindKey }}>\n {children}\n </KeybindsContext.Provider>\n );\n};\n\nexport default KeybindsProvider;\n","import type { KeybindCombination } from \"./types\";\n\nexport const createKeybindCombinationString = (combination: KeybindCombination, isSequential?: boolean) => {\n return (isSequential ? \"isSequential-\" : \"\") + combination.join(\"\");\n};\n"],"mappings":";AAAA,OAAOA,GAAS,iBAAAC,EAAe,WAAAC,MAAe,QCEvC,IAAMC,EAAiC,CAACC,EAAiCC,KACtEA,EAAe,gBAAkB,IAAMD,EAAY,KAAK,EAAE,EDE7D,IAAME,EAAkBC,EAG5B,CACD,SAAU,CAAC,EACX,yBAA0B,CAAC,CAC7B,CAAC,EAOKC,EAAyCC,GAAuC,CACpF,GAAM,CAAE,SAAAC,EAAU,SAAAC,EAAW,CAAC,CAAE,EAAIF,EAE9BG,EAA2BC,EAA8B,IACtD,OAAO,QAAQF,CAAQ,EAAE,OAAO,CAACG,EAAQC,IAAU,CACxD,IAAMC,EAAMD,EAAM,CAAC,EACbE,EAAmBF,EAAM,CAAC,EAC1BG,EAAoBC,EACxBF,EAAQ,QACRA,EAAQ,YACV,EACA,MAAO,CAAE,GAAGH,EAAQ,CAACI,CAAiB,EAAGF,CAAI,CAC/C,EAAG,CAAC,CAAC,EACJ,CAACL,CAAQ,CAAC,EAEb,OACES,EAAA,cAACd,EAAgB,SAAhB,CAAyB,MAAO,CAAE,SAAAK,EAAU,yBAAAC,CAAyB,GACnEF,CACH,CAEJ,EAEOW,EAAQb","names":["React","createContext","useMemo","createKeybindCombinationString","combination","isSequential","KeybindsContext","createContext","KeybindsProvider","props","children","keybinds","combinationsToKeybindKey","useMemo","result","entry","key","keybind","combinationString","createKeybindCombinationString","React","KeybindsProvider_default"]}