/* @jsx createElement */
import { createElement } from './index';
import * as XSLFO from './index';
import * as uuid from 'uuid';
export class Report extends XSLFO.Component<{}> {
render() {
let pageSequences = [];
let newChildren = XSLFO.Children.map(this.props.children, (child) => {
if (child) {
if (child.type !== PageSequence) {
throw new Error("Unknown child type. needs PageSequence");
}
let sequenceId = uuid.v4();
let { children, pageSize, ...props } = child.props;
let s = {
sequenceId,
element: XSLFO.cloneElement(child, { sequenceId }),
pageSize,
props,
body: undefined,
header: undefined,
footer: undefined
};
XSLFO.Children.map(children, (flow) => {
if (flow) {
switch (flow.type) {
case PageHeader:
s.header = ;
break;
case PageFooter:
s.footer = ;
break;
case PageContent:
s.body = ;
break;
default:
throw new Error("Unknown child type. needs PageFooter, PageHeader or PageContent");
}
}
});
pageSequences.push(s);
}
});
return
{pageSequences.map(s => {
return
{[s.body, s.header, s.footer]}
;
})}
{pageSequences.map(s => s.element)}
;
}
}
export class PageSequence extends XSLFO.Component<{ sequenceId: string }> {
render() {
return
{this.props.children}
;
}
}
export class PageContent extends XSLFO.Component {
render() {
return
{this.props.children}
;
}
}
export class PageHeader extends XSLFO.Component {
render() {
return
{this.props.children}
;
}
}
export class PageFooter extends XSLFO.Component {
render() {
return
{this.props.children}
;
}
}
export const PAGE_SIZES = {
LETTER_PORTRAIT: {
'page-height': "11in",
'page-width': "8.5in"
},
LETTER_LANDSCAPE: {
'page-height': "8.5in",
'page-width': "11in"
}
};