|  |  |  | /* global Backbone: false */ | 
					
						
							|  |  |  | /* global i18n: false */ | 
					
						
							|  |  |  | /* global React: false */ | 
					
						
							|  |  |  | /* global ReactDOM: false */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // eslint-disable-next-line func-names
 | 
					
						
							|  |  |  | (function() { | 
					
						
							|  |  |  |   'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   window.Whisper = window.Whisper || {}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   window.Whisper.ReactWrapperView = Backbone.View.extend({ | 
					
						
							|  |  |  |     className: 'react-wrapper', | 
					
						
							|  |  |  |     initialize(options) { | 
					
						
							|  |  |  |       const { Component, props, onClose } = options; | 
					
						
							|  |  |  |       this.render(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       this.tagName = options.tagName; | 
					
						
							|  |  |  |       this.className = options.className; | 
					
						
							|  |  |  |       this.Component = Component; | 
					
						
							|  |  |  |       this.onClose = onClose; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       this.update(props); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     update(props) { | 
					
						
							|  |  |  |       const updatedProps = this.augmentProps(props); | 
					
						
							|  |  |  |       const reactElement = React.createElement(this.Component, updatedProps); | 
					
						
							|  |  |  |       ReactDOM.render(reactElement, this.el); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     augmentProps(props) { | 
					
						
							|  |  |  |       return Object.assign({}, props, { | 
					
						
							|  |  |  |         close: () => { | 
					
						
							|  |  |  |           if (this.onClose) { | 
					
						
							|  |  |  |             this.onClose(); | 
					
						
							|  |  |  |             return; | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |           this.remove(); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         i18n, | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     remove() { | 
					
						
							|  |  |  |       ReactDOM.unmountComponentAtNode(this.el); | 
					
						
							|  |  |  |       Backbone.View.prototype.remove.call(this); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | })(); |