-
Notifications
You must be signed in to change notification settings - Fork 95
/
extensionPoint.js
32 lines (29 loc) · 1.15 KB
/
extensionPoint.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import React from 'react';
import LiskHubExtensions from '../../utils/liskHubExtensions';
export default class ExtensionPoint extends React.Component {
componentDidCatch(error) {
// eslint-disable-next-line no-console
console.error(new Error(`Error in extension point '${this.props.identifier}' ${error}`));
}
render() {
const modules = this.props.modules[this.props.identifier] || [];
// TODO implement a way to highlight all extension points on a page
// for easier discover by extension developers
// e.g. localStorage.setItem('highlightExtensionPoints', true)
// and this component will get a red border and title with its 'identifier'
return <React.Fragment>
{ modules.map(({ moduleId }, i) => {
const Component = LiskHubExtensions._modules[moduleId];
if (Component) {
return <Component
t={this.props.t}
identifier={this.props.identifier}
key={i} />;
}
// eslint-disable-next-line no-console
console.error(new Error(`Invalid component in extension point ${this.props.identifier}`));
return null;
})}
</React.Fragment>;
}
}