/ src / useDocument.ts
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  }