UNPKG

dmn-js-boxed-expression

Version:

A boxed expression view for dmn-js

52 lines (51 loc) 1.32 kB
import { createComponentVNode, normalizeProps } from "inferno"; import { Component } from 'inferno'; /** * * * @param {*} WrappedComponent * @param {() => []} selectDependencies * @returns */ export function withChangeSupport(WrappedComponent, selectDependencies) { return function (props) { return normalizeProps(createComponentVNode(2, Wrapper, { ...props, "_component": WrappedComponent, "_selectDependencies": selectDependencies })); }; } class Wrapper extends Component { constructor(props, context) { super(props, context); this._eventBus = context.injector.get('eventBus'); } componentDidMount() { this._subscribe(); } componentWillUnmount() { this._unsubscribe(); } _subscribe() { this._eventBus.on('elements.changed', this.onChange); } _unsubscribe() { this._eventBus.off('elements.changed', this.onChange); } onChange = ({ elements }) => { const dependencies = this.props._selectDependencies(this.props); if (dependencies.some(dep => elements.includes(dep))) { this.forceUpdate(); } }; render() { const WrappedComponent = this.props._component; return normalizeProps(createComponentVNode(2, WrappedComponent, { ...this.props })); } } //# sourceMappingURL=withChangeSupport.js.map