forked from davej/angular-classy
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathangular-classy.min.js
More file actions
1 lines (1 loc) · 6.11 KB
/
angular-classy.min.js
File metadata and controls
1 lines (1 loc) · 6.11 KB
1
!function(){var n={},t={},o=function(o,a){var r=function(o){if(t[o])for(var i=angular.module(o),s=0;s<i.requires.length;s++){var c=i.requires[s],l=n[c];l&&(e[c]=l,l.name||(l.name=c.replace("classy.","")),a.__classyDefaults||(a.__classyDefaults={}),a.__classyDefaults[l.name]=angular.copy(l.options||{})),r(c)}},e={};return t[o]=!0,r(o),e},a=function(n,t,o){for(var a=t[2].classy.activePlugins,r=t[0].__options||t[0].prototype.__options,e=Object.keys(a),i=0;i<e.length;i++){var s=a[e[i]];s.options=r[s.name]||{},s.classyOptions=r,o&&angular.isFunction(o.before)&&o.before(s);var c;s&&n&&angular.isFunction(s[n])&&(c=s[n].apply(s,t)),o&&angular.isFunction(o.after)&&o.after(s,c)}},r=function(n){var t,o,a,e,i;for(e=0,i=arguments.length;i>e;e++)if(o=arguments[e],o!==n)for(t in o)a=o[t],n[t]&&n[t].constructor&&n[t].constructor===Object?r(n[t],a):n[t]=angular.copy(a);return n},e=angular.module;angular.module=function(t,a,r){var s=e(t,a,r);if(a){"classy.core"===t&&(n[t]={});var c=o(t,s);c["classy.core"]&&(s.classy={plugin:{controller:function(o){n[t]=o}},options:{controller:{}},activePlugins:c,controller:function(n){function t(){i.init(this,arguments,s)}return i.preInit(t,n,s),t},controllers:function(n){for(var t=0;t<n.length;t++)this.controller(n[t]);return s}},s.cC=s.classy.controller,s.cCs=s.classy.controllers)}return s};var i={localInject:["$q"],preInit:function(n,t,o){this.buildConstructor(n,t),this.buildOptions(n,t,o),a("preInitBefore",[n,t,o]),a("preInit",[n,t,o]),a("preInitAfter",[n,t,o])},buildConstructor:function(n,t){for(var o=Object.keys(t),a=0;a<o.length;a++){var r=o[a];t.hasOwnProperty(r)&&(n.prototype[r]=t[r])}},buildOptions:function(n,t,o){for(var a,e,i=r({},o.__classyDefaults,o.classy.options.controller,t.__options),s={},c=Object.keys(i),l=0;l<c.length;l++)e=c[l],a=i[c[l]],angular.isObject(a)||(s[e]=a);if(Object.keys(s).length)for(var u=0;u<c.length;u++)e=c[u],a=i[c[u]],angular.isObject(a)&&angular.extend(a,s);n.prototype.__options=i},init:function(n,t,o){for(var r=0,e={},i=0;i<n.constructor.__classDepNames.length;i++){var s=n.constructor.__classDepNames[i];e[s]=t[r],r++}a(null,[n,e,o],{before:function(n){if(angular.isArray(n.localInject))for(var o=0;o<n.localInject.length;o++){var a=n.localInject[o];n[a]=t[r],r++}}}),a("initBefore",[n,e,o]);var c=[];a("init",[n,e,o],{after:function(n,t){t&&t.then&&c.push(t)}});var l=function(){angular.isFunction(n.init)&&n.init(),a("initAfter",[n,e,o]),this.postInit(n,e,o)},u=angular.bind(this,l);c.length?t[r].all(c).then(u):u()},postInit:function(n,t,o){a("postInitBefore",[n,t,o]),a("postInit",[n,t,o]),a("postInitAfter",[n,t,o])}};angular.module("classy.core",[]),angular.module("classy.bindData",["classy.core"]).classy.plugin.controller({localInject:["$parse"],options:{enabled:!0,addToScope:!0,addToClass:!0,privatePrefix:"_",keyName:"data"},hasPrivatePrefix:function(n){var t=this.options.privatePrefix;return t?n.slice(0,t.length)===t:!1},init:function(n,t){var o=n.constructor.prototype[this.options.keyName];if(this.options.enabled&&o){var a=angular.copy(o);if(angular.isFunction(a))a=a.call(n);else if(angular.isObject(a))for(var r in a){var e=a[r];if(angular.isString(e)){var i=this.$parse(e);a[r]=i(n)}else a[r]=e}for(var s in a){var c=a[s];this.options.addToClass&&(n[s]=c),this.options.addToScope&&!this.hasPrivatePrefix(s)&&t.$scope&&(t.$scope[s]=c)}}}}),angular.module("classy.bindDependencies",["classy.core"]).classy.plugin.controller({options:{enabled:!0,scopeShortcut:"$"},preInit:function(n,t,o){var a=t.inject||[];angular.isArray(a)&&this.inject(n,a,o)},inject:function(n,t,o){var a=[];for(var r in o.classy.activePlugins){var e=o.classy.activePlugins[r];angular.isArray(e.localInject)&&(a=a.concat(e.localInject))}a=a.concat(i.localInject),n.__classDepNames=angular.copy(t),n.$inject=t.concat(a)},initBefore:function(n,t){if(this.options.enabled)for(var o=n.constructor.$inject,a=0;a<o.length;++a){var r=o[a];n[r]=t[r],"$scope"===r&&this.options.scopeShortcut&&(n[this.options.scopeShortcut]=n[r])}}}),angular.module("classy.bindMethods",["classy.core"]).classy.plugin.controller({localInject:["$parse"],options:{enabled:!0,addToScope:!0,addToClass:!0,privatePrefix:"_",ignore:["constructor","init"],keyName:"methods"},hasPrivatePrefix:function(n){var t;return t=this.options.privatePrefix,t?n.slice(0,t.length)===t:!1},init:function(n,t){var o=[].indexOf||function(n){for(var t=0,o=this.length;o>t;t++)if(t in this&&this[t]===n)return t;return-1};if(this.options.enabled){var a=n.constructor.prototype[this.options.keyName];for(var r in a){var e,i=a[r];if(!angular.isFunction(i)||o.call(this.options.ignore,r)>=0){if(angular.isString(i)){var s=this.$parse(i);e=function(){return s(n)}}}else e=angular.bind(n,i);angular.isFunction(e)&&(this.options.addToClass&&(n[r]=e),this.options.addToScope&&!this.hasPrivatePrefix(r)&&t.$scope&&(t.$scope[r]=e))}}}}),angular.module("classy.register",["classy.core"]).classy.plugin.controller({options:{enabled:!0,key:"name"},preInit:function(n,t,o){this.options.enabled&&angular.isString(t[this.options.key])&&o.controller(t[this.options.key],n)}}),angular.module("classy.watch",["classy.core"]).classy.plugin.controller({options:{enabled:!0,_watchKeywords:{normal:[],objectEquality:["{object}","{deep}"],collection:["{collection}","{shallow}"]}},isActive:function(n,t){if(this.options.enabled&&angular.isObject(n.watch)){if(!t.$scope)throw new Error("You need to inject `$scope` to use the watch object");return!0}},watchFns:{normal:function(n,t,o,a){return a.$scope.$watch(t,angular.bind(n,o))},objectEquality:function(n,t,o,a){return a.$scope.$watch(t,angular.bind(n,o),!0)},collection:function(n,t,o,a){return a.$scope.$watchCollection(t,angular.bind(n,o))}},postInit:function(n,t){if(this.isActive(n,t)){var o=this.options._watchKeywords;for(var a in n.watch){var r=n.watch[a];if(angular.isString(r)&&(r=n[r]),angular.isString(a)&&angular.isFunction(r)){var e=!1;for(var i in this.watchFns){var s=this.watchFns[i];if(e)break;for(var c=o[i],l=0;l<c.length;l++){var u=c[l];if(-1!==a.indexOf(u)){s(n,a.replace(u,""),r,t),e=!0;break}}}e||this.watchFns.normal(n,a,r,t)}}}}}),angular.module("classy",["classy.bindData","classy.bindDependencies","classy.bindMethods","classy.core","classy.register","classy.watch"])}();