-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathindex.js
1 lines (1 loc) · 2.84 KB
/
index.js
1
"use strict";var _react=_interopRequireDefault(require("react"));var _client=_interopRequireDefault(require("react-dom/client"));var _lodash=require("lodash");function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}function angularize(Component,componentName,angularApp,bindings){bindings=bindings||{};if(typeof window==="undefined"||typeof angularApp==="undefined")return;angularApp.component(componentName,{bindings:bindings,controller:["$element",function($element){var _this=this;this.root=_client["default"].createRoot($element[0]);if(window.angular){this.$scope=window.angular.element($element).scope();var previous={};this.$onInit=function(){for(var _i=0,_Object$keys=Object.keys(bindings);_i<_Object$keys.length;_i++){var bindingKey=_Object$keys[_i];if(/^data[A-Z]/.test(bindingKey)){console.warn("'".concat(bindingKey,"' binding for ").concat(componentName," component will be undefined because AngularJS ignores attributes starting with data-"))}if(bindings[bindingKey]==="="){previous[bindingKey]=window.angular.copy(_this[bindingKey])}}};this.$doCheck=function(){for(var _i2=0,_Object$keys2=Object.keys(previous);_i2<_Object$keys2.length;_i2++){var previousKey=_Object$keys2[_i2];if(!equals(_this[previousKey],previous[previousKey])){_this.$onChanges();previous[previousKey]=window.angular.copy(_this[previousKey]);return}}}}this.$onChanges=function(){_this.root.render(_react["default"].createElement(Component,_this))};this.$onDestroy=function(){_this.root.unmount()}}]})}function angularizeDirective(Component,directiveName,angularApp,bindings){bindings=bindings||{};if(typeof window==="undefined"||typeof angularApp==="undefined")return;angularApp.directive(directiveName,function(){return{scope:bindings,replace:true,link:function link(scope,$element){scope.$scope=scope;var root=_client["default"].createRoot($element[0]);root.render(_react["default"].createElement(Component,scope));var keys=[];for(var _i3=0,_Object$keys3=Object.keys(bindings);_i3<_Object$keys3.length;_i3++){var bindingKey=_Object$keys3[_i3];if(/^data[A-Z]/.test(bindingKey)){console.warn("\"".concat(bindingKey,"\" binding for ").concat(directiveName," directive will be undefined because AngularJS ignores attributes starting with data-"))}if(bindings[bindingKey]!=="&"){keys.push(bindingKey)}}scope.$watchGroup(keys,function(root){root.render(_react["default"].createElement(Component,scope))});scope.$on("$destroy",function(){root.unmount()})}}})}function getService(serviceName){if(typeof window==="undefined"||typeof window.angular==="undefined")return{};return window.angular.element(document.body).injector().get(serviceName)}function equals(o1,o2){if((0,_lodash.isPlainObject)(o1)&&(0,_lodash.isPlainObject)(o2)){return(0,_lodash.isEqual)(o1,o2)}return window.angular.equals(o1,o2)}module.exports={getService:getService,angularize:angularize,angularizeDirective:angularizeDirective};