forked from GabiAxel/ng-polymer-elements
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathng-polymer-elements.min.js
1 lines (1 loc) · 2.49 KB
/
ng-polymer-elements.min.js
1
!function(angular){"use strict";var inputMappings={ngModel:{primitive:"inputValue"},ngDisabled:{primitive:"disabled"}},selectorMappings={ngModel:{primitive:"selected"}},checkMappings={ngModel:{primitive:"checked"},ngDisabled:{primitive:"disabled"}},openableMappings={ngOpened:{primitive:"opened"}},allMappings={coreInput:inputMappings,paperInput:inputMappings,paperRadioGroup:selectorMappings,paperTabs:selectorMappings,coreDropdown:selectorMappings,paperCheckbox:checkMappings,paperToggleButton:checkMappings,coreOverlay:openableMappings,paperDialog:openableMappings,paperToast:openableMappings,paperSlider:{ngModel:{primitive:"value"},ngDisabled:{primitive:"disabled"}},coreList:{ngModel:{array:"data"},ngTap:{event:"core-activate"}}},extendedMappings=window.NG_POLYMER_ELEMENTS_EXTENDED_MAPPINGS;extendedMappings&&angular.extend(allMappings,extendedMappings);var module=angular.module("ng-polymer-elements",[]);Object.keys(allMappings).forEach(function(tag){var mappings=allMappings[tag];module.directive(tag,["$parse","$window",function($parse){var scopeDefinition={},keys=Object.keys(mappings);return keys.forEach(function(attr){var conf=mappings[attr];if(conf.primitive||conf.object||conf.array)scopeDefinition[attr]="=";else if(!conf.event)throw"Invalid mapping for "+attr+" - must contain primitive | object | array | event"}),{restrict:"E",scope:scopeDefinition,link:function(scope,element,attrs){var el=element[0];keys.forEach(function(attr){if(attrs[attr]){var conf=mappings[attr];if(conf.event){var fn=$parse(attrs[attr]);el.addEventListener(conf.event,function(e){scope.$apply(function(){fn(scope.$parent,{$event:e})})})}else{var propertyName=conf.primitive||conf.object||conf.array;conf.object?el[propertyName]={}:conf.array&&(el[propertyName]=[]);var handler=function(value){conf.primitive?el[propertyName]=value:angular.copy(value,el[propertyName])};scope.$watch(attr,handler,!0),handler(scope[attr]);var observer=new PathObserver(el,propertyName);observer.open(function(value){scope.$apply(function(){conf.primitive?scope[attr]=value:angular.copy(value,scope[attr])})})}}})}}}])}),document.querySelectorAll("[ng-app]").array().forEach(function(element){function bootstrap(){angular.bootstrap(wrap(element),[app])}var app=element.getAttribute("ng-app");if(element.removeAttribute("ng-app"),angular.isDefined(document.body.attributes.unresolved)){var readyListener=function(){bootstrap(),window.removeEventListener("polymer-ready",readyListener)};window.addEventListener("polymer-ready",readyListener)}else bootstrap()})}(angular);