react2angularjs
Advanced tools
@@ -32,3 +32,3 @@ (function (global, factory) { | ||
| if (reactElements.length === 0) { | ||
| return null; | ||
| return undefined; | ||
| } | ||
@@ -39,6 +39,23 @@ | ||
| function findReactComponent(el) { | ||
| var key = Object.keys(el).find(function (key) { | ||
| return key.startsWith('__reactInternalInstance$'); | ||
| }); | ||
| if (el[key]) { | ||
| var fiberNode = el[key]; | ||
| return fiberNode && fiberNode["return"]; //fiberNode.return && fiberNode.return.stateNode; | ||
| } | ||
| return null; | ||
| } | ||
| function createElement(elements, element, index) { | ||
| if (element instanceof HTMLElement) { | ||
| var reactElement = createHTMLElement(element, index); | ||
| elements.push(reactElement); | ||
| var existing = findReactComponent(element); | ||
| if (!existing) { | ||
| var reactElement = createHTMLElement(element, index); | ||
| elements.push(reactElement); | ||
| } | ||
| } else if (element.nodeName === '#text') { | ||
@@ -48,3 +65,3 @@ var _reactElement = createTextElement(element); //replace new line characters with empty space | ||
| var textContent = _reactElement.replace(/↵/, ''); //Add only if element contains text content | ||
| var textContent = _reactElement.replace(/âµ/, ''); //Add only if element contains text content | ||
@@ -51,0 +68,0 @@ |
@@ -76,4 +76,9 @@ (function (global, factory) { | ||
| var props = this.getProps(); | ||
| var children = (0, _createReactElements["default"])(this.$children); | ||
| (0, _reactDom.render)( /*#__PURE__*/_react["default"].createElement(this.ReactComponent, props, children), this.$container); | ||
| if (!this.memoized) { | ||
| var children = (0, _createReactElements["default"])(this.$children); | ||
| this.memoized = children; | ||
| } | ||
| (0, _reactDom.render)( /*#__PURE__*/_react["default"].createElement(this.ReactComponent, props, this.memoized), this.$container); | ||
| } | ||
@@ -80,0 +85,0 @@ }]); |
+1
-1
| { | ||
| "name": "react2angularjs", | ||
| "version": "1.0.0-beta.3", | ||
| "version": "1.0.0-beta.4", | ||
| "description": "A fully functional way to integrate React components in Angular 1 apps!", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
@@ -12,3 +12,3 @@ import React from 'react'; | ||
| if (reactElements.length === 0) { | ||
| return null; | ||
| return undefined; | ||
| } | ||
@@ -19,13 +19,28 @@ | ||
| function findReactComponent(el) { | ||
| let key = Object.keys(el).find(key => | ||
| key.startsWith('__reactInternalInstance$') | ||
| ); | ||
| if (el[key]) { | ||
| let fiberNode = el[key]; | ||
| return fiberNode && fiberNode.return; //fiberNode.return && fiberNode.return.stateNode; | ||
| } | ||
| return null; | ||
| } | ||
| function createElement(elements, element, index) { | ||
| if (element instanceof HTMLElement) { | ||
| let reactElement = createHTMLElement(element, index); | ||
| elements.push(reactElement); | ||
| let existing = findReactComponent(element); | ||
| if (!existing) { | ||
| let reactElement = createHTMLElement(element, index); | ||
| elements.push(reactElement); | ||
| } | ||
| } else if (element.nodeName === '#text') { | ||
| let reactElement = createTextElement(element); | ||
| //replace new line characters with empty space | ||
| let textContent = reactElement.replace(/↵/, ''); | ||
| let textContent = reactElement.replace(/âµ/, ''); | ||
@@ -32,0 +47,0 @@ //Add only if element contains text content |
@@ -45,8 +45,10 @@ import React from 'react'; | ||
| let props = this.getProps(); | ||
| let children = createReactElements(this.$children); | ||
| if (!this.memoized) { | ||
| let children = createReactElements(this.$children); | ||
| this.memoized = children; | ||
| } | ||
| render( | ||
| <this.ReactComponent {...props}> | ||
| {children} | ||
| </this.ReactComponent>, | ||
| <this.ReactComponent {...props}>{this.memoized}</this.ReactComponent>, | ||
| this.$container | ||
@@ -53,0 +55,0 @@ ); |
13701
7.36%295
11.32%