mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-09 09:52:34 +01:00
29 lines
No EOL
740 B
JavaScript
29 lines
No EOL
740 B
JavaScript
import React from 'react';
|
|
import connect from 'ui/connect';
|
|
import mapContext from 'ui/mapContext';
|
|
import {state} from 'lstream';
|
|
|
|
@mapContext(ctx => ({
|
|
getComponent: ctx.services.ui.getComponent
|
|
}))
|
|
@connect((streams, props) => {
|
|
let stream = streams.ui.sockets[props.entry];
|
|
if (!stream) {
|
|
stream= state();
|
|
streams.ui.sockets[props.entry] = stream;
|
|
}
|
|
return stream.map(componentId => ({componentId}));
|
|
})
|
|
export default class Socket extends React.Component {
|
|
render() {
|
|
let {getComponent, componentId, ...props} = this.props;
|
|
if (!componentId) {
|
|
return null;
|
|
}
|
|
let Component = getComponent(componentId);
|
|
if (!Component) {
|
|
return null;
|
|
}
|
|
return <Component {...props} />;
|
|
}
|
|
}; |