/** * ngHandsontable 0.7.0-beta1 * * Copyright 2012-2015 Marcin Warpechowski * Copyright 2015 Handsoncode sp. z o.o. * Licensed under the MIT license. * https://github.com/handsontable/ngHandsontable * Date: Thu Aug 27 2015 15:02:29 GMT+0200 (CEST) */ document.all&&!document.addEventListener&&(document.createElement("hot-table"),document.createElement("hot-column"),document.createElement("hot-autocomplete")),angular.module("ngHandsontable.services",[]),angular.module("ngHandsontable.directives",[]),angular.module("ngHandsontable",["ngHandsontable.services","ngHandsontable.directives"]),function(){function a(){return{parseAutoComplete:function(a,b,c){a.source=function(d,e){var f=this.instance.getSelected()[0],g=[],h=b[f];if(h){var i=a.optionList;if(i.object){if(angular.isArray(i.object))g=i.object;else{for(var j=i.object.split("."),k=h;j.length>0;){var l=j.shift();k=k[l]}if(c)for(var m=0,n=k.length;n>m;m++)g.push(k[m][i.property]);else g=k}e(g)}}}}}}a.$inject=[],angular.module("ngHandsontable.services").factory("autoCompleteFactory",a)}(),function(){function a(){var a={};return{getInstance:function(b){return a[b]},registerInstance:function(b,c){a[b]=c},removeInstance:function(b){a[b]=void 0}}}a.$inject=[],angular.module("ngHandsontable.services").factory("hotRegisterer",a)}(),function(){function a(a){return a.replace(/[A-Z]/g,function(a){return"-"+a.charAt(0).toLowerCase()})}function b(a){return a.substr(0,1).toUpperCase()+a.substr(1,a.length-1)}function c(c){return{containerClassName:"handsontable-container",initializeHandsontable:function(a,b){var d,e=document.createElement("div");return e.className=this.containerClassName,a[0].appendChild(e),d=new Handsontable(e,b),b.hotId&&c.registerInstance(b.hotId,d),d},updateHandsontableSettings:function(a,b){a&&a.updateSettings(b)},renderHandsontable:function(a){a&&a.render()},mergeSettingsFromScope:function(a,b){var c,d,e,f=angular.extend({},b);for(a=a||{},angular.extend(f,b.settings),c=this.getAvailableSettings(),d=0,e=c.length;e>d;d++)"undefined"!=typeof f[c[d]]&&(a[c[d]]=f[c[d]]);return a},mergeHooksFromScope:function(a,c){var d,e,f,g,h=angular.extend({},c);for(a=a||{},angular.extend(h,c.settings),d=this.getAvailableHooks(),e=0,f=d.length;f>e;e++)g="on"+b(d[e]),"undefined"!=typeof h[g]&&(a[d[e]]=h[g]);return a},trimScopeDefinitionAccordingToAttrs:function(a,b){for(var c in a)a.hasOwnProperty(c)&&void 0===b[c]&&void 0===b[a[c].substr(1,a[c].length)]&&delete a[c];return a},getTableScopeDefinition:function(){var a={};return this.applyAvailableSettingsScopeDef(a),this.applyAvailableHooksScopeDef(a),a.datarows="=",a.dataschema="=",a.observeDomVisibility="=",a.settings="=",a},getColumnScopeDefinition:function(){var a={};return this.applyAvailableSettingsScopeDef(a),a.data="@",a},applyAvailableSettingsScopeDef:function(a){var b,c,d;for(b=this.getAvailableSettings(),c=0,d=b.length;d>c;c++)a[b[c]]="=";return a},applyAvailableHooksScopeDef:function(a){var c,d,e;for(c=this.getAvailableHooks(),d=0,e=c.length;e>d;d++)a[c[d]]="=on"+b(c[d]);return a},getAvailableSettings:function(b){var c=Object.keys(Handsontable.DefaultSettings.prototype);return-1===c.indexOf("contextMenuCopyPaste")&&c.push("contextMenuCopyPaste"),b&&(c=c.map(a)),c},getAvailableHooks:function(b){var c=Handsontable.hooks.getRegistered();return b&&(c=c.map(function(b){return"on-"+a(b)})),c}}}c.$inject=["hotRegisterer"],angular.module("ngHandsontable.services").factory("settingFactory",c)}(),function(){function a(){return{restrict:"EA",scope:!0,require:"^hotColumn",link:function(a,b,c,d){var e=c.datarows;d.setColumnOptionList(e)}}}a.$inject=[],angular.module("ngHandsontable.directives").directive("hotAutocomplete",a)}(),function(){function a(a){return{restrict:"EA",require:"^hotTable",scope:{},controller:["$scope",function(a){this.setColumnOptionList=function(b){a.column||(a.column={});var c={},d=b.match(/^\s*(.+)\s+in\s+(.*)\s*$/);d?(c.property=d[1],c.object=d[2]):c.object=b.split(","),a.column.optionList=c}}],compile:function(b,c){var d=this;return this.scope=a.trimScopeDefinitionAccordingToAttrs(a.getColumnScopeDefinition(),c),angular.forEach(Object.keys(this.scope),function(a){d.$$isolateBindings[a]={attrName:a,collection:!1,mode:"data"===a?"@":"=",optional:!1}}),function(b,c,d,e){var f={};angular.forEach(Object.keys(d),function(a){"$"!==a.charAt(0)&&""===d[a]&&(f[a]=!0)}),a.mergeSettingsFromScope(f,b),b.column||(b.column={}),angular.extend(b.column,f),e.setColumnSetting(b.column),b.$on("$destroy",function(){e.removeColumnSetting(b.column)})}}}}a.$inject=["settingFactory"],angular.module("ngHandsontable.directives").directive("hotColumn",a)}(),function(){function a(a,b,c){return{restrict:"EA",scope:{},priority:-400,controller:["$scope",function(b){this.setColumnSetting=function(c){b.htSettings||(b.htSettings={}),b.htSettings.columns||(b.htSettings.columns=[]),b.htSettings.columns.push(c),a.updateHandsontableSettings(b.hotInstance,b.htSettings)},this.removeColumnSetting=function(c){b.htSettings.columns.indexOf(c)>-1&&(b.htSettings.columns.splice(b.htSettings.columns.indexOf(c),1),a.updateHandsontableSettings(b.hotInstance,b.htSettings))}}],compile:function(d,e){var f,g=this;return this.scope=a.trimScopeDefinitionAccordingToAttrs(a.getTableScopeDefinition(),e),f=Object.keys(this.scope),angular.forEach(f,function(a){var b=g.scope[a].charAt(0);g.$$isolateBindings[a]={attrName:g.scope[a].length>1?g.scope[a].substr(1,g.scope[a].length):a,collection:!1,mode:b,optional:!1}}),function(d,e,g){if(d.htSettings||(d.htSettings={}),a.mergeSettingsFromScope(d.htSettings,d),a.mergeHooksFromScope(d.htSettings,d),d.htSettings.data=d.datarows,d.htSettings.dataSchema=d.dataschema,d.htSettings.hotId=g.hotId,d.htSettings.observeDOMVisibility=d.observeDomVisibility,d.htSettings.columns)for(var h=0,i=d.htSettings.columns.length;i>h;h++)if("autocomplete"===d.htSettings.columns[h].type){if("string"==typeof d.htSettings.columns[h].optionList){var j={},k=d.htSettings.columns[h].optionList.match(/^\s*(.+)\s+in\s+(.*)\s*$/);k?(j.property=k[1],j.object=k[2]):j.object=j,d.htSettings.columns[h].optionList=j}b.parseAutoComplete(d.htSettings.columns[h],d.datarows,!0)}d.hotInstance=a.initializeHandsontable(e,d.htSettings);var l=d.htSettings.afterChange;d.htSettings.afterChange=function(){l&&l.apply(this,arguments),c.$$phase||d.$apply()},angular.forEach(f,function(b){d.$watch(b,function(c){void 0!==c&&("datarows"===b?a.renderHandsontable(d.hotInstance):(d.htSettings[b]=c,a.updateHandsontableSettings(d.hotInstance,d.htSettings)))},["datarows","columns","colWidths","rowHeaders"].indexOf(b)>=0)}),d.$watchCollection("datarows",function(b,c){c&&c.length===d.htSettings.minSpareRows&&b.length!==d.htSettings.minSpareRows&&(d.htSettings.data=d.datarows,a.updateHandsontableSettings(d.hotInstance,d.htSettings))})}}}}a.$inject=["settingFactory","autoCompleteFactory","$rootScope"],angular.module("ngHandsontable.directives").directive("hotTable",a)}();