import {createMemo, type Accessor} from "solid-js" import {DocHandle, type Doc} from "@automerge/automerge-repo" import makeDocumentProjection from "./makeDocumentProjection.js" import {access} from "@solid-primitives/utils" /** * get a fine-grained live view of a document from a handle. works with * {@link useDocHandle}. * @param handle an accessor (signal/resource) of a * [DocHandle](https://automerge.org/automerge-repo/classes/_automerge_automerge_repo.DocHandle.html) */ export default function createDocumentProjection( handle: Accessor | undefined> ) { const projection = createMemo | undefined>( () => access(handle) && makeDocumentProjection(access(handle)!) ) return projection }