import { h } from 'vue'
import CanvasEmpty from './CanvasEmpty.vue'
import renderer from '../render'
function defaultRenderer(schema, refreshKey, entry, active, isPage = true) {
const rootChildrenSchema = {
id: 0,
componentName: 'div',
componentType: 'PageSection',
props: { ...schema.props, 'data-id': 'root-container', 'data-page-active': active },
children: schema.children
}
if (!entry) {
return schema.children?.length || !active
? h(renderer, { schema: rootChildrenSchema, parent: schema })
: [h(CanvasEmpty)]
}
const PageStartSchema = {
componentName: 'div',
componentType: 'PageStart',
props: { 'data-id': 'root-container' }
}
return isPage
? h(renderer, { schema: PageStartSchema, parent: schema })
: schema.children?.length
? h(renderer, { schema: rootChildrenSchema, parent: schema })
: [h(CanvasEmpty)]
}
export function useCustomRenderer() {
let canvasRenderer = null
const getRenderer = () => canvasRenderer || defaultRenderer
const setRenderer = (fn) => {
canvasRenderer = fn
}
return {
getRenderer,
setRenderer
}
}