From f6626b05f1275cc2f8ca77f773d4f6a6af1b0a89 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期一, 21 十一月 2022 16:11:55 +0800 Subject: [PATCH] 2022-11-21 --- src/menu/components/code/sandbox/codecontent/index.jsx | 76 +++++++++++++++++--------------------- 1 files changed, 34 insertions(+), 42 deletions(-) diff --git a/src/menu/components/code/sandbox/codecontent/index.jsx b/src/menu/components/code/sandbox/codecontent/index.jsx index 306fd59..42ff7c2 100644 --- a/src/menu/components/code/sandbox/codecontent/index.jsx +++ b/src/menu/components/code/sandbox/codecontent/index.jsx @@ -4,85 +4,77 @@ import './index.scss' -class BraftContent extends Component { +class CodeContent extends Component { static propTpyes = { - name: PropTypes.string, - html: PropTypes.any, - css: PropTypes.any, - js: PropTypes.any, + config: PropTypes.object, } - state = { - csselement: null - } + state = {} UNSAFE_componentWillMount () { - const { css } = this.props + const { config } = this.props - if (css) { - // let style = css.replace(/^[^}{]*{|}[^}{]*{/ig, (word) => { - // return word.replace(/}\n*/ig, `}\n#${mark}`).replace(/,/ig, `,#${mark} `) - // }) - // style = `\n/* 鑷畾涔� */\n#${mark} ${style}\n` - + if (config.css) { + let node = document.getElementById(config.uuid + 'style') + node && node.remove() + let ele = document.createElement('style') - ele.innerHTML = css + ele.id = config.uuid + 'style' + ele.innerHTML = config.css document.getElementsByTagName('head')[0].appendChild(ele) - // document.getElementsByTagName('head')[0].prepend(ele) - - this.setState({csselement: ele}) } } componentDidMount () { - const { js, name } = this.props - if (js) { + const { config } = this.props + if (config.js && config.wrap.compileMode !== 'custom') { try { // eslint-disable-next-line no-eval - eval(js) + eval(config.js) } catch (e) { - message.warning(name + 'JS 鎵ц澶辫触锛�') + message.warning(config.name + 'JS 鎵ц澶辫触锛�') + console.warn(config.name + e) } } } UNSAFE_componentWillReceiveProps(nextProps) { - if (this.props.css !== nextProps.css) { - const { csselement } = this.state - - if (csselement && csselement.remove) { - csselement.remove() - } - if (nextProps.css) { - let ele = document.createElement('style') - ele.innerHTML = nextProps.css - document.getElementsByTagName('head')[0].appendChild(ele) + const { config } = this.props - this.setState({csselement: ele}) + if (config.css !== nextProps.config.css) { + let node = document.getElementById(config.uuid + 'style') + node && node.remove() + + if (nextProps.config.css) { + let ele = document.createElement('style') + ele.id = config.uuid + 'style' + ele.innerHTML = nextProps.config.css + document.getElementsByTagName('head')[0].appendChild(ele) } } - if (this.props.html !== nextProps.html || this.props.js !== nextProps.js) { - if (nextProps.js) { + if (config.html !== nextProps.config.html || config.js !== nextProps.config.js) { + if (nextProps.config.js && nextProps.config.wrap.compileMode !== 'custom') { try { // eslint-disable-next-line no-eval - eval(nextProps.js) + eval(nextProps.config.js) } catch (e) { - message.warning(nextProps.name + 'JS 鎵ц澶辫触锛�') + message.warning(config.name + 'JS 鎵ц澶辫触锛�') + console.warn(config.name + e) } } } } render() { - const { html } = this.props + const { config } = this.props - if (!html) return <Empty style={{padding: '10px 0px'}} description={null}/> + if (!config.html) return <Empty style={{padding: '10px 0px'}} description={null}/> return ( - <div dangerouslySetInnerHTML={{ __html: html }}></div> + <div dangerouslySetInnerHTML={{ __html: config.html }}></div> ) } } -export default BraftContent \ No newline at end of file +export default CodeContent \ No newline at end of file -- Gitblit v1.8.0