import React, {Component} from 'react'
|
import { is, fromJS } from 'immutable'
|
|
import { menuOptions } from './option'
|
import SourceWrap from './dragsource'
|
import './index.scss'
|
|
class ModelSource extends Component {
|
state = {
|
menuOptions: null,
|
}
|
|
UNSAFE_componentWillMount () {
|
const { components, viewType } = this.props
|
let options = []
|
|
if (components) {
|
options = fromJS(components).toJS()
|
} else {
|
options = fromJS(menuOptions).toJS()
|
let adapters = sessionStorage.getItem('adapter') || ''
|
if (adapters.indexOf('wxmini') === -1) {
|
options = options.filter(item => item.adapter !== 'mini')
|
}
|
}
|
|
if (viewType === 'popview') {
|
options = options.filter(item => !['topbar', 'navbar', 'login', 'officialAccount'].includes(item.component))
|
}
|
|
this.setState({
|
menuOptions: options
|
})
|
}
|
|
shouldComponentUpdate (nextProps, nextState) {
|
return !is(fromJS(this.state), fromJS(nextState))
|
}
|
|
render() {
|
const { menuOptions } = this.state
|
|
return (
|
<div className="mob-card-source-box">
|
{menuOptions.map((item, index) => (<SourceWrap key={index} item={item}/>))}
|
</div>
|
)
|
}
|
}
|
|
export default ModelSource
|