useDocument.ts
1 import { 2 type AutomergeUrl, 3 type Doc, 4 type DocHandle, 5 } from "@automerge/automerge-repo" 6 import createDocumentProjection from "./createDocumentProjection.js" 7 import type {MaybeAccessor} from "@solid-primitives/utils" 8 import useDocHandle from "./useDocHandle.js" 9 import type {UseDocHandleOptions} from "./types.js" 10 import type {Accessor, Resource} from "solid-js" 11 12 /** 13 * get a fine-grained live view of a document, and its handle, from a URL. 14 * @param url a function that returns a url 15 */ 16 export default function useDoc<T>( 17 url: MaybeAccessor<AutomergeUrl | undefined>, 18 options?: UseDocHandleOptions 19 ): [Accessor<Doc<T> | undefined>, Resource<DocHandle<T> | undefined>] { 20 const handle = useDocHandle<T>(url, options) 21 return [createDocumentProjection<T>(handle), handle] as const 22 }