Files
cdnjs/ajax/libs/angular-bindonce/0.2.2/angular-bindonce.min.js
T

1 line
3.6 KiB
JavaScript

"use strict";angular.module("pasvaz.bindonce",[]).directive("bindonce",function(){var a=function(a){if(a&&0!==a.length){var b=angular.lowercase(""+a);a=!("f"==b||"0"==b||"false"==b||"no"==b||"n"==b||"[]"==b)}else a=ls;return a},b=parseInt((/msie (\d+)/.exec(angular.lowercase(navigator.userAgent))||[])[1],10);isNaN(b)&&(b=parseInt((/trident\/.*; rv:(\d+)/.exec(angular.lowercase(navigator.userAgent))||[])[1],10));var c={restrict:"AM",controller:["","","","",function(c,d,e,f){var g=function(b,c,d){var e="show"==c?"":"none",f="hide"==c?"":"none";b.css("display",a(d)?e:f)},h=function(a,b){if(angular.isObject(b)&&!angular.isArray(b)){var c=[];angular.forEach(b,function(a,b){a&&c.push(b)}),b=c}b&&a.addClass(angular.isArray(b)?b.join(" "):b)},i={watcherRemover:void 0,binders:[],group:e.boName,element:d,ran:!1,addBinder:function(a){this.binders.push(a),this.ran&&this.runBinders()},setupWatcher:function(a){var b=this;this.watcherRemover=c.(a,function(a){void 0!=a&&(b.removeWatcher(),b.runBinders())},!0)},removeWatcher:function(){void 0!=this.watcherRemover&&(this.watcherRemover(),this.watcherRemover=void 0)},runBinders:function(){var c,d;for(c=0,d=this.binders.length;d>c;c++){var e=this.binders[c];if(!this.group||this.group==e.group){var i=e.scope.(e.interpolate?f(e.value):e.value);switch(e.attr){case"if":a(i)&&e.transclude(e.scope.(),function(a){var b=e.element.parent(),c=e.element&&e.element[e.element.length-1],d=b&&b[0]||c&&c.parentNode,f=c&&c.nextSibling||null;angular.forEach(a,function(a){d.insertBefore(a,f)})});break;case"hide":case"show":g(e.element,e.attr,i);break;case"class":h(e.element,i);break;case"text":e.element.text(i);break;case"html":e.element.html(i);break;case"style":e.element.css(i);break;case"src":e.element.attr(e.attr,i),b&&e.element.prop("src",i);case"attr":angular.forEach(e.attrs,function(a,b){var c,d;b.match(/^boAttr./)&&e.attrs[b]&&(c=b.replace(/^boAttr/,"").replace(/([a-z])([A-Z])/g,"-").toLowerCase(),d=e.scope.(e.attrs[b]),e.element.attr(c,d))});break;case"href":case"alt":case"title":case"id":case"value":e.element.attr(e.attr,i)}}}this.ran=!0,this.binders=[]}};return i}],link:function(a,b,c,d){var e=c.bindonce?a.(c.bindonce):!0;void 0!=e?d.runBinders():(d.setupWatcher(c.bindonce),b.bind("",d.removeWatcher))}};return c}),angular.forEach([{directiveName:"boShow",attribute:"show"},{directiveName:"boIf",attribute:"if",transclude:"element",terminal:!0,priority:1e3},{directiveName:"boHide",attribute:"hide"},{directiveName:"boClass",attribute:"class"},{directiveName:"boText",attribute:"text"},{directiveName:"boHtml",attribute:"html"},{directiveName:"boSrcI",attribute:"src",interpolate:!0},{directiveName:"boSrc",attribute:"src"},{directiveName:"boHrefI",attribute:"href",interpolate:!0},{directiveName:"boHref",attribute:"href"},{directiveName:"boAlt",attribute:"alt"},{directiveName:"boTitle",attribute:"title"},{directiveName:"boId",attribute:"id"},{directiveName:"boStyle",attribute:"style"},{directiveName:"boValue",attribute:"value"},{directiveName:"boAttr",attribute:"attr"}],function(a){var b=200;return angular.module("pasvaz.bindonce").directive(a.directiveName,function(){var c={priority:a.priority||b,transclude:a.transclude||!1,terminal:a.terminal||!1,require:"^bindonce",compile:function(b,c,d){return function(b,c,e,f){var g=e.boParent;if(g&&f.group!=g){var h=f.element.parent();f=void 0;for(var i;9!=h[0].nodeType&&h.length;){if((i=h.data(""))&&i.group==g){f=i;break}h=h.parent()}if(!f)throw Error("No bindonce controller: "+g)}f.addBinder({element:c,attr:a.attribute,attrs:e,value:e[a.directiveName],interpolate:a.interpolate,group:g,transclude:d,scope:b})}}};return c})});