{"version":3,"sources":["../ts/modules/knockout.validation.ts"],"names":["unwrap","foo","Object","assign","kv","registerExtenders","messagesOnModified","errorsAsTitle","errorsAsTitleOnModified","messageTemplate","insertMessages","parseInputAttributes","writeInputAttributes","decorateInputElement","decorateElementOnModified","errorClass","errorElementClass","errorMessageClass","allowHtmlMessages","grouping","deep","observable","live","validate","rules","required","validator","val","message","equal","value","relatedValue","messages","keys","ready","async","i","results","await","localization_1","translate","map","dict","entries","found","text","localize","fixTranslation","viewModel","prop","values","obj","let","isModified","valueHasMutated","notifySubscribers","call"],"mappings":"2HA2BA,SAASA,OAAQC,KAChB,MAAuB,YAAnB,OAASA,IAA8BA,IAAG,EACvCA,GACR,CA1BAC,OAAOC,OAAQC,GAAmB,cAAI,CACrCC,kBAAmB,CAAA,EACnBC,mBAAoB,CAAA,EACpBC,cAAe,CAAA,EACfC,wBAAyB,CAAA,EACzBC,gBAAiB,KACjBC,eAAgB,CAAA,EAChBC,qBAAsB,CAAA,EACtBC,qBAAsB,CAAA,EACtBC,qBAAsB,CAAA,EACtBC,0BAA2B,CAAA,EAC3BC,WAAY,mBACZC,kBAAmB,qBACnBC,kBAAmB,qBACnBC,kBAAmB,CAAA,EACnBC,SAAU,CACTC,KAAM,CAAA,EACNC,WAAY,CAAA,EACZC,KAAM,CAAA,C,EAEPC,SAAU,E,CACV,EAODnB,GAAGoB,MAAgB,QAAKtB,OAAOC,OAAQ,GACtCC,GAAGoB,MAAMC,SAAU,CACnBC,UAAWC,IAAKF,UACf,MAAKzB,CAAAA,OAAQyB,QAAQ,GACT,UAARE,KACG,CAAC,CAACA,GACV,C,CACA,EAEDvB,GAAGoB,MAAoB,YAAKtB,OAAOC,OAAQ,GAC1CC,GAAGoB,MAAgB,QACnB,CAAEI,QAAS,wCAAwC,CAAE,EAGtDxB,GAAGoB,MAAc,MAAKtB,OAAOC,OAAQ,GACpCC,GAAGoB,MAAgB,QACnB,CAAEI,QAAS,yCAAyC,CAAE,EAGvDxB,GAAGoB,MAAwB,gBAAKtB,OAAOC,OAAQ,GAC9CC,GAAGoB,MAAgB,QACnB,CAAEI,QAAS,4CAA4C,CAAE,EAG1DxB,GAAGoB,MAAmB,WAAKtB,OAAOC,OAAQ,GACzCC,GAAGoB,MAAMK,MACT,CAAED,QAAS,8CAA8C,CAAE,EAG5DxB,GAAGoB,MAAqB,aAAKtB,OAAOC,OAAQ,GAC3CC,GAAGoB,MAAMC,SACT,CACCC,UAAWI,MAAeC,cACzB,MAAO,CAAC,CAAC/B,OAAQ+B,YAAY,CAC9B,C,CACA,EAGF3B,GAAGoB,MAAgB,QAAKtB,OAAOC,OAAQ,GACtCC,GAAGoB,MAAqB,aACxB,CAAEI,QAAS,qCAAqC,CAAE,EAGnDxB,GAAGoB,MAAmB,WAAKtB,OAAOC,OAAQ,GACzCC,GAAGoB,MAAqB,aACxB,CAAEI,QAAS,wCAAwC,CAAE,EAGtDxB,GAAGC,kBAAiB,EAEpB,IAAI2B,SAAW9B,OAAO+B,KAAM7B,GAAGoB,KAAK,EAGpC,MAAMU,MAAUC,iBACf,IAEaC,EAAGR,QAFVS,QAAUC,MAAMC,eAAAC,UAAgB,IAAIR,SAASS,IAAKb,SAHxC,kBAGmEA,OAAO,CAAE,EAC3Fc,KAAO,GACR,IAAW,CAAEN,EAAGR,WAAa1B,OAAOyC,QAASX,QAAQ,EAAK,CACzD,GAAM,CAAEY,MAAOC,IAAI,EAAKR,QAASD,GACjCM,KAAMd,SAAYgB,MAAQC,KAAOzC,GAAGoB,MAAOI,SAAUA,O,CAEtDxB,GAAG0C,SAAUJ,IAAI,CAClB,EAAG,EA+BH,OA5BMtC,GAAI2C,eAAiBZ,MAAQa,YAClCV,MAAMJ,MAKN,IAAK,MAAMe,QAAQ/C,OAAOgD,OAAQF,SAAS,EAC1C,GAJsB,YAAf,OADgBG,IAKJF,OAJiB,UAAWE,IAInB,CAC3BC,IAAIC,WAAa,CAAA,EACc,YAA3B,OAAOJ,KAAKI,aACfA,WAAaJ,KAAKI,WAAU,GAGO,YAAhC,OAAOJ,KAAKK,iBACfL,KAAKK,gBAAe,EAGiB,YAAlC,OAAOL,KAAKM,mBACfN,KAAKM,kBAAmBN,KAAKO,KAAMR,SAAS,CAAE,EAGhB,YAA3B,OAAOC,KAAKI,YACfJ,KAAKI,WAAYA,UAAU,C,CApB9B,IAAwBF,GAwBzB,EAES/C","file":"knockout.validation.js","sourcesContent":["import { translate } from 'localization';\r\nimport * as kv from 'knockout.validation';\r\nimport Deferred from 'jquery-deferred';\r\n\r\nObject.assign( kv[ 'configuration' ], {\r\n\tregisterExtenders: true,\r\n\tmessagesOnModified: true,\r\n\terrorsAsTitle: true,\r\n\terrorsAsTitleOnModified: true,\r\n\tmessageTemplate: null,\r\n\tinsertMessages: false,\r\n\tparseInputAttributes: false,\r\n\twriteInputAttributes: false,\r\n\tdecorateInputElement: true,\r\n\tdecorateElementOnModified: true,\r\n\terrorClass: 'validation-error',\r\n\terrorElementClass: 'validation-element',\r\n\terrorMessageClass: 'validation-message',\r\n\tallowHtmlMessages: false,\r\n\tgrouping: {\r\n\t\tdeep: true,\r\n\t\tobservable: true,\r\n\t\tlive: false\r\n\t},\r\n\tvalidate: {}\r\n} );\r\n\r\nfunction unwrap( foo ) {\r\n\tif( ( typeof foo ) === 'function' ) return foo();\r\n\treturn foo;\r\n}\r\n\r\nkv.rules[ 'checked' ] = Object.assign( {},\r\n\tkv.rules.required, {\r\n\tvalidator( val, required ) {\r\n\t\tif( !unwrap( required ) ) return true;\r\n\t\tif( val === 'false' ) return false;\r\n\t\treturn !!val;\r\n\t}\r\n} );\r\n\r\nkv.rules[ 'dataPrivacy' ] = Object.assign( {},\r\n\tkv.rules[ 'checked' ],\r\n\t{ message: 'Please review the data privacy policy.' }\r\n);\r\n\r\nkv.rules[ 'terms' ] = Object.assign( {},\r\n\tkv.rules[ 'checked' ],\r\n\t{ message: 'Please accept the terms and conditions.' }\r\n);\r\n\r\nkv.rules[ 'certifyEducator' ] = Object.assign( {},\r\n\tkv.rules[ 'checked' ],\r\n\t{ message: 'You must certify that you are an educator.' }\r\n);\r\n\r\nkv.rules[ 'emailMatch' ] = Object.assign( {},\r\n\tkv.rules.equal,\r\n\t{ message: 'Please verify your email address is correct.' }\r\n);\r\n\r\nkv.rules[ 'alsoRequired' ] = Object.assign( {},\r\n\tkv.rules.required,\r\n\t{\r\n\t\tvalidator( value: string, relatedValue ) {\r\n\t\t\treturn !!unwrap( relatedValue );\r\n\t\t}\r\n\t}\r\n);\r\n\r\nkv.rules[ 'rneCode' ] = Object.assign( {},\r\n\tkv.rules[ 'alsoRequired' ],\r\n\t{ message: 'Veuillez entrer un code RNE valide.' }\r\n);\r\n\r\nkv.rules[ 'schoolCode' ] = Object.assign( {},\r\n\tkv.rules[ 'alsoRequired' ],\r\n\t{ message: 'Veuillez entrer un code School valide.' }\r\n);\r\n\r\nkv.registerExtenders();\r\n\r\nvar messages = Object.keys( kv.rules ),\r\n\tmessagePrefix = 'forms/knockout/';\r\n\r\nconst ready = ( async function() {\r\n\tconst results = await translate[ 'try' ]( messages.map( message => messagePrefix + message ) ),\r\n\t\tdict = {} as KnockoutValidationLocalizationDictionary;\r\n\tfor( const [ i, message ] of Object.entries( messages ) ) {\r\n\t\tconst { found, text } = results[ i ];\r\n\t\tdict[ message ] = found ? text : kv.rules[ message ].message;\r\n\t}\r\n\tkv.localize( dict );\r\n}() );\r\n\r\n// HACK: workaround for https://github.com/Knockout-Contrib/Knockout-Validation/issues/158\r\n(<any>kv).fixTranslation = async ( viewModel: Object ) => {\r\n\tawait ready;\r\n\tfunction isValidatable( obj: any ): obj is KnockoutObservable<any> {\r\n\t\treturn typeof obj === 'function' && 'rules' in obj;\r\n\t}\r\n\r\n\tfor( const prop of Object.values( viewModel ) ) {\r\n\t\tif( isValidatable( prop ) ) {\r\n\t\t\tlet isModified = false;\r\n\t\t\tif( typeof prop.isModified === 'function' ) {\r\n\t\t\t\tisModified = prop.isModified();\r\n\t\t\t}\r\n\r\n\t\t\tif( typeof prop.valueHasMutated === 'function' ) {\r\n\t\t\t\tprop.valueHasMutated();\r\n\t\t\t}\r\n\r\n\t\t\tif( typeof prop.notifySubscribers === 'function' ) {\r\n\t\t\t\tprop.notifySubscribers( prop.call( viewModel ) );\r\n\t\t\t}\r\n\r\n\t\t\tif( typeof prop.isModified === 'function' ) {\r\n\t\t\t\tprop.isModified( isModified );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport = kv;\r\n"]}