'use strict'; import React, {Component} from 'react'; import {translate} from 'react-i18next'; import PropTypes from "prop-types"; import styles from "./sandboxed-grapesjs.scss"; import {UntrustedContentHost} from './untrusted'; import {Icon} from "./bootstrap-components"; import {getTrustedUrl} from "./urls"; @translate(null, { withRef: true }) export class GrapesJSHost extends Component { constructor(props) { super(props); this.state = { fullscreen: false } } static propTypes = { entityTypeId: PropTypes.string, entity: PropTypes.object, initialModel: PropTypes.object, title: PropTypes.string, onFullscreenAsync: PropTypes.func } async toggleFullscreenAsync() { const fullscreen = !this.state.fullscreen; this.setState({ fullscreen }); await this.props.onFullscreenAsync(fullscreen); } async exportState() { return await this.contentNode.ask('exportState'); } render() { const t = this.props.t; const editorData = { entityTypeId: this.props.entityTypeId, entityId: this.props.entity.id, initialModel: this.props.initialModel }; const tokenData = { entityTypeId: this.props.entityTypeId, entityId: this.props.entity.id }; return (
{this.state.fullscreen && }
{this.props.title}
this.contentNode = node} className={styles.host} singleToken={true} contentProps={editorData} contentSrc="grapesjs/editor" tokenMethod="grapesjs" tokenParams={tokenData}/>
); } } GrapesJSHost.prototype.exportState = async function() { return await this.getWrappedInstance().exportState(); };