{ "version": 3, "sources": ["../../../../src/lib/ui/hooks/useEventsProvider.tsx"], "sourcesContent": ["import * as React from 'react'\n\n/** @public */\nexport type TLUiEventSource =\n\t| 'menu'\n\t| 'context-menu'\n\t| 'zoom-menu'\n\t| 'navigation-zone'\n\t| 'quick-actions'\n\t| 'actions-menu'\n\t| 'kbd'\n\t| 'debug-panel'\n\t| 'page-menu'\n\t| 'share-menu'\n\t| 'export-menu'\n\t| 'toolbar'\n\t| 'people-menu'\n\t| 'dialog'\n\t| 'help-menu'\n\t| 'helper-buttons'\n\t| 'unknown'\n\n/** @public */\nexport interface TLUiEventMap {\n\t// Actions\n\tundo: null\n\tredo: null\n\t'group-shapes': null\n\t'ungroup-shapes': null\n\t'convert-to-embed': null\n\t'convert-to-bookmark': null\n\t'open-embed-link': null\n\t'toggle-auto-size': null\n\t'copy-as': { format: 'svg' | 'png' | 'json' }\n\t'export-as': { format: 'svg' | 'png' | 'json' }\n\t'edit-link': null\n\t'insert-embed': null\n\t'insert-media': null\n\t'align-shapes': {\n\t\toperation: 'left' | 'center-horizontal' | 'right' | 'top' | 'center-vertical' | 'bottom'\n\t}\n\t'duplicate-shapes': null\n\t'pack-shapes': null\n\t'stack-shapes': { operation: 'horizontal' | 'vertical' }\n\t'flip-shapes': { operation: 'horizontal' | 'vertical' }\n\t'distribute-shapes': { operation: 'horizontal' | 'vertical' }\n\t'stretch-shapes': { operation: 'horizontal' | 'vertical' }\n\t'reorder-shapes': {\n\t\toperation: 'toBack' | 'toFront' | 'forward' | 'backward'\n\t}\n\t'delete-shapes': null\n\t'select-all-shapes': null\n\t'select-none-shapes': null\n\t'rotate-ccw': null\n\t'rotate-cw': null\n\t'zoom-in': null\n\t'zoom-out': null\n\t'zoom-to-fit': null\n\t'zoom-to-selection': null\n\t'reset-zoom': null\n\t'zoom-into-view': null\n\t'zoom-to-content': null\n\t'open-menu': { id: string }\n\t'close-menu': { id: string }\n\t'create-new-project': null\n\t'save-project-to-file': null\n\t'open-file': null\n\t'select-tool': { id: string }\n\tprint: null\n\tcopy: null\n\tpaste: null\n\tcut: null\n\t'toggle-transparent': null\n\t'toggle-snap-mode': null\n\t'toggle-tool-lock': null\n\t'toggle-grid-mode': null\n\t'toggle-dark-mode': null\n\t'toggle-focus-mode': null\n\t'toggle-debug-mode': null\n\t'toggle-lock': null\n\t'toggle-reduce-motion': null\n\t'exit-pen-mode': null\n\t'stop-following': null\n\t'open-cursor-chat': null\n\t'zoom-tool': null\n\t'unlock-all': null\n}\n\ntype Join = K extends null\n\t? { [R in keyof T]: T[R] }\n\t: { [R in keyof T]: T[R] } & { [R in keyof K]: K[R] }\n\n/** @public */\nexport type TLUiEventHandler = (\n\tname: T,\n\tdata: Join<{ source: TLUiEventSource }, TLUiEventMap[T]>\n) => void\n\n/** @internal */\nconst defaultEventHandler: TLUiEventHandler = () => void null\n\n/** @public */\nexport type TLUiEventContextType = TLUiEventHandler\n\n/** @internal */\nexport const EventsContext = React.createContext({} as TLUiEventContextType)\n\n/** @public */\nexport type EventsProviderProps = {\n\tonEvent?: TLUiEventHandler\n\tchildren: any\n}\n\n/** @public */\nexport function UiEventsProvider({ onEvent, children }: EventsProviderProps) {\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t)\n}\n\n/** @public */\nexport function useUiEvents() {\n\tconst eventHandler = React.useContext(EventsContext)\n\treturn eventHandler ?? defaultEventHandler\n}\n"], "mappings": "AAoHE;AApHF,YAAY,WAAW;AAmGvB,MAAM,sBAAwC,MAAM;AAM7C,MAAM,gBAAgB,MAAM,cAAoC,CAAC,CAAyB;AAS1F,SAAS,iBAAiB,EAAE,SAAS,SAAS,GAAwB;AAC5E,SACC,oBAAC,cAAc,UAAd,EAAuB,OAAO,WAAW,qBACxC,UACF;AAEF;AAGO,SAAS,cAAc;AAC7B,QAAM,eAAe,MAAM,WAAW,aAAa;AACnD,SAAO,gBAAgB;AACxB;", "names": [] }