ilink-world/docs/.docz/.cache/page-renderer.js

47 lines
1.1 KiB
JavaScript

import React, { createElement } from "react"
import PropTypes from "prop-types"
import { publicLoader } from "./loader"
import { apiRunner } from "./api-runner-browser"
// Renders page
class PageRenderer extends React.Component {
render() {
const props = {
...this.props,
pathContext: this.props.pageContext,
}
const [replacementElement] = apiRunner(`replaceComponentRenderer`, {
props: this.props,
loader: publicLoader,
})
const pageElement =
replacementElement ||
createElement(this.props.pageResources.component, {
...props,
key: this.props.path || this.props.pageResources.page.path,
})
const wrappedPage = apiRunner(
`wrapPageElement`,
{ element: pageElement, props },
pageElement,
({ result }) => {
return { element: result, props }
}
).pop()
return wrappedPage
}
}
PageRenderer.propTypes = {
location: PropTypes.object.isRequired,
pageResources: PropTypes.object.isRequired,
data: PropTypes.object,
pageContext: PropTypes.object.isRequired,
}
export default PageRenderer