{
  "version": 3,
  "sources": ["../../src/components/shortcut-provider.tsx"],
  "sourcesContent": ["import { useState } from '@wordpress/element';\nimport { context } from '../context';\n\nconst { Provider } = context;\n\ntype ShortcutCallback = ( event: KeyboardEvent ) => void;\n\ninterface ShortcutProviderProps extends React.HTMLAttributes< HTMLDivElement > {\n\tonKeyDown?: ( event: React.KeyboardEvent< HTMLDivElement > ) => void;\n}\n\n/**\n * Handles callbacks added to context by `useShortcut`.\n * Adding a provider allows to register contextual shortcuts\n * that are only active when a certain part of the UI is focused.\n *\n * @param props Props to pass to `div`.\n *\n * @return Component.\n */\nexport function ShortcutProvider( props: ShortcutProviderProps ) {\n\tconst [ keyboardShortcuts ] = useState(\n\t\t() => new Set< ShortcutCallback >()\n\t);\n\n\tfunction onKeyDown( event: React.KeyboardEvent< HTMLDivElement > ) {\n\t\tif ( props.onKeyDown ) {\n\t\t\tprops.onKeyDown( event );\n\t\t}\n\n\t\t// Convert React event to native KeyboardEvent for compatibility\n\t\tconst nativeEvent = event.nativeEvent;\n\t\tfor ( const keyboardShortcut of keyboardShortcuts ) {\n\t\t\tkeyboardShortcut( nativeEvent );\n\t\t}\n\t}\n\n\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\treturn (\n\t\t<Provider value={ keyboardShortcuts }>\n\t\t\t<div { ...props } onKeyDown={ onKeyDown } />\n\t\t</Provider>\n\t);\n\t/* eslint-enable jsx-a11y/no-static-element-interactions */\n}\n"],
  "mappings": ";AAAA,SAAS,gBAAgB;AACzB,SAAS,eAAe;AAuCrB;AArCH,IAAM,EAAE,SAAS,IAAI;AAiBd,SAAS,iBAAkB,OAA+B;AAChE,QAAM,CAAE,iBAAkB,IAAI;AAAA,IAC7B,MAAM,oBAAI,IAAwB;AAAA,EACnC;AAEA,WAAS,UAAW,OAA+C;AAClE,QAAK,MAAM,WAAY;AACtB,YAAM,UAAW,KAAM;AAAA,IACxB;AAGA,UAAM,cAAc,MAAM;AAC1B,eAAY,oBAAoB,mBAAoB;AACnD,uBAAkB,WAAY;AAAA,IAC/B;AAAA,EACD;AAGA,SACC,oBAAC,YAAS,OAAQ,mBACjB,8BAAC,SAAM,GAAG,OAAQ,WAAwB,GAC3C;AAGF;",
  "names": []
}
