@liveblocks/react-ui
Version:
A set of React pre-built components for the Liveblocks products. Liveblocks is the all-in-one toolkit to build collaborative products like Figma, Notion, and more.
1 lines • 1.7 kB
Source Map (JSON)
{"version":3,"file":"is-key.cjs","sources":["../../src/utils/is-key.ts"],"sourcesContent":["import type { KeyboardEvent as ReactKeyboardEvent } from \"react\";\n\nimport { isApple } from \"./is-apple\";\n\nconst MODIFIERS = {\n alt: () => \"altKey\" as const,\n ctrl: () => \"ctrlKey\" as const,\n meta: () => \"metaKey\" as const,\n mod: () => (isApple() ? (\"metaKey\" as const) : (\"ctrlKey\" as const)),\n shift: () => \"shiftKey\" as const,\n} as const;\n\nexport function isKey(\n event: KeyboardEvent | ReactKeyboardEvent,\n key: string,\n modifiers: Partial<Record<keyof typeof MODIFIERS, boolean>> = {}\n) {\n if (event.key !== key) {\n return false;\n }\n\n const explicitModifiers = Object.entries(modifiers).filter(\n ([, value]) => typeof value === \"boolean\"\n ) as [keyof typeof MODIFIERS, boolean][];\n\n return explicitModifiers.every(([modifier, value]) => {\n const property = MODIFIERS[modifier]();\n\n return event[property] === value;\n });\n}\n"],"names":["isApple"],"mappings":";;;;AAIA,MAAM,SAAY,GAAA;AAAA,EAChB,KAAK,MAAM,QAAA;AAAA,EACX,MAAM,MAAM,SAAA;AAAA,EACZ,MAAM,MAAM,SAAA;AAAA,EACZ,GAAK,EAAA,MAAOA,eAAQ,EAAA,GAAK,SAAuB,GAAA,SAAA;AAAA,EAChD,OAAO,MAAM,UAAA;AACf,CAAA,CAAA;AAEO,SAAS,KACd,CAAA,KAAA,EACA,GACA,EAAA,SAAA,GAA8D,EAC9D,EAAA;AACA,EAAI,IAAA,KAAA,CAAM,QAAQ,GAAK,EAAA;AACrB,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAEA,EAAA,MAAM,iBAAoB,GAAA,MAAA,CAAO,OAAQ,CAAA,SAAS,CAAE,CAAA,MAAA;AAAA,IAClD,CAAC,GAAG,KAAK,CAAA,KAAM,OAAO,KAAU,KAAA,SAAA;AAAA,GAClC,CAAA;AAEA,EAAA,OAAO,kBAAkB,KAAM,CAAA,CAAC,CAAC,QAAA,EAAU,KAAK,CAAM,KAAA;AACpD,IAAM,MAAA,QAAA,GAAW,UAAU,QAAU,CAAA,EAAA,CAAA;AAErC,IAAA,OAAO,MAAM,QAAc,CAAA,KAAA,KAAA,CAAA;AAAA,GAC5B,CAAA,CAAA;AACH;;;;"}