import { Colors } from "@dash/components/src"; import { FontAwesomeIcon, FontAwesomeIconProps } from "@fortawesome/react-fontawesome"; import { Template } from "../Template"; import { 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"; export interface TemplatePreviewBoxProps { template: Template; menu: DocCreatorMenu; leftButtonOpts?: [icon: IconProp, func: (...args: any) => void] rightButtonOpts?: [icon: IconProp, func: (...args: any) => void] } export class TemplatePreviewBox extends ObservableReactComponent { private previewWindow: HTMLDivElement | null = null; // private icon: ImageField | undefined = undefined; setContainerRef: React.LegacyRef = (node) => { this.previewWindow = node; this.forceUpdate(); } // componentDidMount(): void { // console.log('mounted') // setTimeout(() => { // const docView = DocumentView.getDocumentView(this.doc); // if (docView) { // console.log('docview found') // docView.ComponentView?.updateIcon?.(); // setTimeout(() => { // console.log('componentview found: ', docView.ComponentView) // this.icon = ImageCast(docView.Document.icon); // console.log('icon is:', this.icon, ' from: ', docView.Document.icon); // this.forceUpdate(); // }, 5000); // } // }, 1000); // } get doc() { return this.props.template.getRenderedDoc() as Doc; } render() { const template = this.props.template; return (
this.props.menu.setUpButtonClick(e, () => runInAction(() => {console.log('setting'); this.props.menu._selectedTemplate = template}))} > { this.props.leftButtonOpts ? : null } { this.props.rightButtonOpts ? : null } {/* { this.icon ? */} 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} />
) } }