import { Colors } from "@dash/components/src"; import { FontAwesomeIcon} from "@fortawesome/react-fontawesome"; import { Template } from "../Template"; import { makeObservable, observable, reaction, runInAction } from "mobx"; import React from "react"; import { ObservableReactComponent } from "../../../../ObservableReactComponent"; import { DocCreatorMenu } from "../DocCreatorMenu"; import { IconProp } from "@fortawesome/fontawesome-svg-core"; import { DocumentView } from "../../../DocumentView"; import { emptyFunction } from "../../../../../../Utils"; import { returnEmptyFilter, returnFalse } from "../../../../../../ClientUtils"; import { Transform } from "../../../../../util/Transform"; import { DefaultStyleProvider } from "../../../../StyleProvider"; import { Doc, returnEmptyDoclist } from "../../../../../../fields/Doc"; import { IDisposer } from "mobx-utils"; import { ImageField } from "../../../../../../fields/URLField"; import { ImageCast } from "../../../../../../fields/Types"; import { observer } from "mobx-react"; export interface TemplatePreviewBoxProps { template: Template; menu: DocCreatorMenu; leftButtonOpts?: [icon: IconProp, func: (...args: any) => void] rightButtonOpts?: [icon: IconProp, func: (...args: any) => void] } @observer export class TemplatePreviewBox extends ObservableReactComponent { @observable private previewWindow: HTMLDivElement | null = null; setContainerRef: React.LegacyRef = (node) => { this.previewWindow = node; } constructor(props: TemplatePreviewBoxProps) { super(props); makeObservable(this); } get doc() { return this._props.template.getRenderedDoc() as Doc; } render() { const template = this._props.template; return (
this._props.menu.setUpButtonClick(e, () => this._props.menu.updateSelectedTemplate(template))} > { this._props.leftButtonOpts ? : null } { this._props.rightButtonOpts ? : null } this.previewWindow?.clientWidth ?? this._props.menu._menuDimensions.height * .3} PanelHeight={() => this.previewWindow?.clientHeight ?? this._props.menu._menuDimensions.height * .3} ScreenToLocalTransform={() => new Transform(-this._props.menu._pageX - 5, -this._props.menu._pageY - 35, 1)} renderDepth={1} whenChildContentsActiveChanged={emptyFunction} focus={emptyFunction} styleProvider={DefaultStyleProvider} addDocTab={this._props.menu._props.addDocTab} pinToPres={() => undefined} childFilters={returnEmptyFilter} childFiltersByRanges={returnEmptyFilter} searchFilterDocs={returnEmptyDoclist} fitContentsToBox={returnFalse} fitWidth={returnFalse} hideDecorations={true} />
) } }