Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

Editor.tsx 1.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { Tldraw, TldrawApp, useFileSystem } from '@tldraw/tldraw'
  2. import * as gtag from '-utils/gtag'
  3. import React from 'react'
  4. import { useAccountHandlers } from '-hooks/useAccountHandlers'
  5. declare const window: Window & { app: TldrawApp }
  6. interface EditorProps {
  7. id?: string
  8. isUser?: boolean
  9. isSponsor?: boolean
  10. }
  11. export default function Editor({ id = 'home', isUser = false, isSponsor = false }: EditorProps) {
  12. const handleMount = React.useCallback((app: TldrawApp) => {
  13. window.app = app
  14. }, [])
  15. // Send events to gtag as actions.
  16. const handlePersist = React.useCallback((_app: TldrawApp, reason?: string) => {
  17. gtag.event({
  18. action: reason,
  19. category: 'editor',
  20. label: reason || 'persist',
  21. value: 0,
  22. })
  23. }, [])
  24. const fileSystemEvents = useFileSystem()
  25. const { onSignIn, onSignOut } = useAccountHandlers()
  26. return (
  27. <div className="tldraw">
  28. <Tldraw
  29. id={id}
  30. autofocus
  31. onMount={handleMount}
  32. onPersist={handlePersist}
  33. showSponsorLink={!isSponsor}
  34. onSignIn={isSponsor ? undefined : onSignIn}
  35. onSignOut={isUser ? onSignOut : undefined}
  36. {...fileSystemEvents}
  37. />
  38. </div>
  39. )
  40. }