/*!
* ui-grid - v4.6.2 - 2018-07-09
* Copyright (c) 2018 ; License: MIT
*/
!function(){"use strict";var r=angular.module("ui.grid.validate",["ui.grid"]);r.service("uiGridValidateService",["$sce","$q","$http","i18nService","uiGridConstants",function(n,c,r,i,t){var d={validatorFactories:{},setExternalFactoryFunction:function(r){d.externalFactoryFunction=r},clearExternalFactory:function(){delete d.externalFactoryFunction},getValidatorFromExternalFactory:function(r,t){return d.externalFactoryFunction(r,t).validatorFactory(t)},getMessageFromExternalFactory:function(r,t){return d.externalFactoryFunction(r,t).messageFunction(t)},setValidator:function(r,t,e){d.validatorFactories[r]={validatorFactory:t,messageFunction:e}},getValidator:function(r,t){if(d.externalFactoryFunction){var e=d.getValidatorFromExternalFactory(r,t);if(e)return e}if(!d.validatorFactories[r])throw"Invalid validator name: "+r;return d.validatorFactories[r].validatorFactory(t)},getMessage:function(r,t){if(d.externalFactoryFunction){var e=d.getMessageFromExternalFactory(r,t);if(e)return e}return d.validatorFactories[r].messageFunction(t)},isInvalid:function(r,t){return r["$$invalid"+t.name]},setInvalid:function(r,t){r["$$invalid"+t.name]=!0},setValid:function(r,t){delete r["$$invalid"+t.name]},setError:function(r,t,e){r["$$errors"+t.name]||(r["$$errors"+t.name]={}),r["$$errors"+t.name][e]=!0},clearError:function(r,t,e){r["$$errors"+t.name]&&e in r["$$errors"+t.name]&&delete r["$$errors"+t.name][e]},getErrorMessages:function(r,t){var e=[];return r["$$errors"+t.name]&&0!==Object.keys(r["$$errors"+t.name]).length&&Object.keys(r["$$errors"+t.name]).sort().forEach(function(r){e.push(d.getMessage(r,t.validators[r]))}),e},getFormattedErrors:function(r,t){var e="",a=d.getErrorMessages(r,t);if(a.length)return a.forEach(function(r){e+=r+"
"}),n.trustAsHtml("
"+i.getSafeText("validate.error")+"
"+e)},getTitleFormattedErrors:function(r,t){var e="",a=d.getErrorMessages(r,t);if(a.length)return a.forEach(function(r){e+=r+"\n"}),n.trustAsHtml(i.getSafeText("validate.error")+"\n"+e)},runValidators:function(r,t,n,i,o){if(n!==i){if(void 0===t.name||!t.name)throw new Error("colDef.name is required to perform validation");d.setValid(r,t);var e=function(t,e,a){return function(r){r||(d.setInvalid(t,e),d.setError(t,e,a),o&&o.api.validate.raise.validationFailed(t,e,n,i))}},a=[];for(var l in t.validators){d.clearError(r,t,l);var s=d.getValidator(l,t.validators[l]),u=c.when(s(i,n,r,t)).then(e(r,t,l));a.push(u)}return c.all(a)}},createDefaultValidators:function(){d.setValidator("minLength",function(e){return function(r,t){return null==t||""===t||t.length>=e}},function(r){return i.getSafeText("validate.minLength").replace("THRESHOLD",r)}),d.setValidator("maxLength",function(e){return function(r,t){return null==t||""===t||t.length<=e}},function(r){return i.getSafeText("validate.maxLength").replace("THRESHOLD",r)}),d.setValidator("required",function(e){return function(r,t){return!e||!(null==t||""===t)}},function(){return i.getSafeText("validate.required")})},initializeGrid:function(r,n){n.validate={isInvalid:d.isInvalid,getErrorMessages:d.getErrorMessages,getFormattedErrors:d.getFormattedErrors,getTitleFormattedErrors:d.getTitleFormattedErrors,runValidators:d.runValidators};var t={events:{validate:{validationFailed:function(r,t,e,a){}}},methods:{validate:{isInvalid:function(r,t){return n.validate.isInvalid(r,t)},getErrorMessages:function(r,t){return n.validate.getErrorMessages(r,t)},getFormattedErrors:function(r,t){return n.validate.getFormattedErrors(r,t)},getTitleFormattedErrors:function(r,t){return n.validate.getTitleFormattedErrors(r,t)}}}};n.api.registerEventsFromObject(t.events),n.api.registerMethodsFromObject(t.methods),n.edit&&n.api.edit.on.afterCellEdit(r,function(r,t,e,a){n.validate.runValidators(r,t,e,a,n)}),d.createDefaultValidators()}};return d}]),r.directive("uiGridValidate",["gridUtil","uiGridValidateService",function(r,n){return{priority:0,replace:!0,require:"^uiGrid",scope:!1,compile:function(){return{pre:function(r,t,e,a){n.initializeGrid(r,a.grid)},post:function(r,t,e,a){}}}}}])}();