@benev/slate
Version:
frontend web stuff
44 lines (31 loc) • 921 B
text/typescript
import {render} from "lit"
import {RenderResult} from "./types.js"
import {SlateView} from "./slate_view_element.js"
import {auto_exportparts} from "./auto_exportparts/auto.js"
export function make_view_root({
afterRender, onConnected, onDisconnected,
}: {
afterRender: () => void
onConnected: () => void
onDisconnected: () => void
}) {
const container = document.createElement(SlateView.tag) as SlateView
container.onConnected(onConnected)
container.onDisconnected(onDisconnected)
const shadow = container.attachShadow({mode: "open"})
let auto_exportparts_is_enabled = false
return {
container,
shadow,
set auto_exportparts(enabled: boolean) {
auto_exportparts_is_enabled = enabled
},
render_into_shadow(content: RenderResult) {
render(content, shadow)
if (auto_exportparts_is_enabled)
auto_exportparts(container, shadow)
afterRender()
return container
},
}
}