logseq-context.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import React from 'react'
  2. export interface SearchResult {
  3. pages?: string[]
  4. blocks?: { content: string; page: number; uuid: string }[]
  5. files?: string[]
  6. }
  7. export interface LogseqContextValue {
  8. renderers: {
  9. Page: React.FC<{
  10. pageName: string
  11. }>
  12. Block: React.FC<{
  13. blockId: string
  14. }>
  15. Breadcrumb: React.FC<{
  16. blockId: string
  17. }>
  18. PageNameLink: React.FC<{
  19. pageName: string
  20. }>
  21. }
  22. handlers: {
  23. search: (
  24. query: string,
  25. filters: { 'pages?': boolean; 'blocks?': boolean; 'files?': boolean }
  26. ) => Promise<SearchResult>
  27. addNewBlock: (content: string) => string // returns the new block uuid
  28. queryBlockByUUID: (uuid: string) => any
  29. isWhiteboardPage: (pageName: string) => boolean
  30. saveAsset: (file: File) => Promise<string>
  31. makeAssetUrl: (relativeUrl: string) => string
  32. sidebarAddBlock: (uuid: string, type: 'block' | 'page') => void
  33. redirectToPage: (uuidOrPageName: string) => void
  34. }
  35. }
  36. export const LogseqContext = React.createContext<LogseqContextValue>({} as LogseqContextValue)