{
  "version": 3,
  "sources": ["../../src/hooks/use-shortcut.ts"],
  "sourcesContent": ["import { useContext, useEffect, useRef } from '@wordpress/element';\nimport useShortcutEventMatch from './use-shortcut-event-match';\nimport { context } from '../context';\n\ninterface UseShortcutOptions {\n\tisDisabled?: boolean;\n}\n\n/**\n * Attach a keyboard shortcut handler.\n *\n * @param name               Shortcut name.\n * @param callback           Shortcut callback.\n * @param options            Shortcut options.\n * @param options.isDisabled Whether to disable the shortcut.\n */\nexport default function useShortcut(\n\tname: string,\n\tcallback: ( event: KeyboardEvent ) => void,\n\t{ isDisabled = false }: UseShortcutOptions = {}\n) {\n\tconst shortcuts = useContext( context );\n\tconst isMatch = useShortcutEventMatch();\n\tconst callbackRef = useRef< ( event: KeyboardEvent ) => void >();\n\n\tuseEffect( () => {\n\t\tcallbackRef.current = callback;\n\t}, [ callback ] );\n\n\tuseEffect( () => {\n\t\tif ( isDisabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfunction _callback( event: KeyboardEvent ) {\n\t\t\tif ( isMatch( name, event ) && callbackRef.current ) {\n\t\t\t\tcallbackRef.current( event );\n\t\t\t}\n\t\t}\n\n\t\tshortcuts.add( _callback );\n\t\treturn () => {\n\t\t\tshortcuts.delete( _callback );\n\t\t};\n\t}, [ name, isDisabled, shortcuts, isMatch ] );\n}\n"],
  "mappings": ";AAAA,SAAS,YAAY,WAAW,cAAc;AAC9C,OAAO,2BAA2B;AAClC,SAAS,eAAe;AAcT,SAAR,YACN,MACA,UACA,EAAE,aAAa,MAAM,IAAwB,CAAC,GAC7C;AACD,QAAM,YAAY,WAAY,OAAQ;AACtC,QAAM,UAAU,sBAAsB;AACtC,QAAM,cAAc,OAA2C;AAE/D,YAAW,MAAM;AAChB,gBAAY,UAAU;AAAA,EACvB,GAAG,CAAE,QAAS,CAAE;AAEhB,YAAW,MAAM;AAChB,QAAK,YAAa;AACjB;AAAA,IACD;AAEA,aAAS,UAAW,OAAuB;AAC1C,UAAK,QAAS,MAAM,KAAM,KAAK,YAAY,SAAU;AACpD,oBAAY,QAAS,KAAM;AAAA,MAC5B;AAAA,IACD;AAEA,cAAU,IAAK,SAAU;AACzB,WAAO,MAAM;AACZ,gBAAU,OAAQ,SAAU;AAAA,IAC7B;AAAA,EACD,GAAG,CAAE,MAAM,YAAY,WAAW,OAAQ,CAAE;AAC7C;",
  "names": []
}
