{"version":3,"sources":["../ts/modules/form/download-os.ts"],"names":["Object","assign","kv","insertMessages","DownloadOSFormViewModel","constructor","this","download","knockout_1","observable","extend","required","name","email","emailConfirm","emailMatch","postalCode","country","position","reason","terms","busy","context","ajax_1","AjaxContext","validation","fixTranslation","submit","errors","viewmodel","viewmodels","validatedObservable","isValid","showAllMessages","splice","length","Array","from","Set","await","result","Promise","resolve","ajax","localization_1","currentLanguage","type","contentType","data","FormData","document","getElementById","processData","traditional","success","alert","message","Error","redirect","location","href","ex","$","each","i","form","fromViewModel","viewModel","push","applyBindings","on"],"mappings":"uPAQAA,OAAOC,OAAQC,GAAmB,cAAI,CAAEC,eAAgB,CAAA,CAAI,CAAE,QAIxDC,wBACLC,cAIUC,KAAAC,UAAW,EAAAC,WAAAC,YAAY,EAAE,EAAGC,OAAQ,CAAEC,SAAU,CAAA,CAAI,CAAE,EACtDL,KAAAM,MAAO,EAAAJ,WAAAC,YAAY,EAAE,EAAGC,OAAQ,CAAEC,SAAU,CAAA,CAAI,CAAE,EAClDL,KAAAO,OAAQ,EAAAL,WAAAC,YAAY,EAAE,EAAGC,OAAQ,CAAEC,SAAU,CAAA,EAAME,MAAO,CAAA,CAAI,CAAE,EAChEP,KAAAQ,cAAe,EAAAN,WAAAC,YAAW,EAAE,EAAEC,OAAO,CAAEC,SAAU,CAAA,EAAMI,WAAYT,KAAKO,KAAK,CAAE,EAC/EP,KAAAU,YAAa,EAAAR,WAAAC,YAAY,EAAE,EAAGC,OAAQ,CAAEC,SAAU,CAAA,CAAI,CAAE,EACxDL,KAAAW,SAAU,EAAAT,WAAAC,YAAY,EAAE,EAAGC,OAAQ,CAAEC,SAAU,CAAA,CAAI,CAAE,EACrDL,KAAAY,UAAW,EAAAV,WAAAC,YAAY,EAAE,EAAGC,OAAQ,CAAEC,SAAU,CAAA,CAAI,CAAE,EACtDL,KAAAa,QAAS,EAAAX,WAAAC,YAAY,EAAE,EAAGC,OAAQ,CAAEC,SAAU,CAAA,CAAI,CAAE,EACpDL,KAAAc,OAAQ,EAAAZ,WAAAC,YAAW,EAAE,EAAEC,OAAO,CAAEU,MAAO,CAAA,CAAI,CAAE,EAChDd,KAAAe,MAAO,EAAAb,WAAAC,YAAY,CAAA,CAAK,EACxBH,KAAAgB,QAAU,IAAIC,OAAAC,YAbpBhB,WAAAiB,WAAWC,eAAgBpB,IAAI,CAChC,CAcOqB,eACN,IACCrB,KAAKe,KAAM,CAAA,CAAI,EA4BjB,IAAMO,OAAS,GACf,IAAK,MAAMC,aAAaC,WAAa,CACpC,IAAML,YAAa,EAAAjB,WAAAuB,qBAAqBF,SAAS,EAC5CJ,WAAWO,QAAO,IACtBP,WAAWG,OAAOK,gBAAe,EACjCL,OAAOM,OAAQN,OAAOO,OAAQ,EAAG,GAAGV,WAAWG,OAAM,CAAE,E,CAGzD,GAAIA,OAAOO,OACV,MAAMC,MAAMC,KAAM,IAAIC,IAAaV,MAAM,CAAE,EApC1CW,MAAAA,EACA,IAAQjB,QAAYhB,KAAZgB,WACFkB,OAASD,MAAME,QAAQC,QAASpB,QAAQqB,SAA2BC,eAAAC,2DAA4D,CACpIC,KAAM,OACNC,YAAa,CAAA,EACbC,KAAM,IAAIC,SAAUC,SAASC,eAAgB,YAAY,CAAqB,EAC9EC,YAAa,CAAA,EACbC,YAAa,CAAA,C,CACb,CAAE,EACH,GAAI,CAACb,OAAOc,QAEX,MADAC,MAAMf,OAAOgB,OAAO,EACd,IAAIC,MAAO,mBAAmB,EAEjCjB,OAAOkB,WACVC,SAASC,KAAOpB,OAAOkB,S,CAEvB,MAAOG,IAER,MADAvD,KAAKe,KAAM,CAAA,CAAK,EACVwC,E,CAIR,C,CAGD,MAAM/B,WAAa,GAenBgC,EAAG,KACFA,EAAG,kBAAkB,EAAGC,KAAM,CAAEC,EAAGC,QACpBH,EAAGG,IAAI,EAArB,IACCC,KAAgB,IAAI9D,wBACpB+D,UAAY,CAACD,cAAAA,IAAa,EAC3BpC,WAAWsC,KAAKF,IAAa,GAC7B,EAAA1D,WAAA6D,gBAAe,EAAA7D,WAAAuB,qBAAqBoC,SAAS,CAAE,EAC/CL,EAAG,aAAa,EAAGQ,GAAI,SAAU,IAAM,CAAA,CAAK,CAC7C,CAAC,CACF,CAAC","file":"download-os.js","sourcesContent":["import 'knockout.extensions';\r\nimport * as kv from 'knockout.validation';\r\n\r\nimport * as $ from 'jquery';\r\nimport { applyBindings, validation, observable, validatedObservable, computed, pureComputed } from 'knockout';\r\nimport { AjaxContext } from 'ajax';\r\nimport { translate, currentLanguage } from 'localization';\r\n\r\nObject.assign( kv[ 'configuration' ], { insertMessages: true } );\r\n\r\nimport { ISubmitResponse } from './ISubmitResponse';\r\n\r\nclass DownloadOSFormViewModel {\r\n\tconstructor() {\r\n\t\tvalidation.fixTranslation( this );\r\n\t}\t\r\n    \r\n    public download = observable( '' ).extend( { required: true } );\r\n    public name = observable( '' ).extend( { required: true } );\r\n    public email = observable( '' ).extend( { required: true, email: true } );\r\n    public emailConfirm = observable('').extend({ required: true, emailMatch: this.email });\r\n    public postalCode = observable( '' ).extend( { required: true } );\r\n    public country = observable( '' ).extend( { required: true } );\r\n    public position = observable( '' ).extend( { required: true } );\r\n    public reason = observable( '' ).extend( { required: true } );\r\n    public terms = observable('').extend({ terms: true });\r\n\tpublic busy = observable( false );\r\n\tpublic context = new AjaxContext;\r\n\r\n\tpublic async submit() {\r\n\t\ttry {\r\n\t\t\tthis.busy( true );\r\n\t\t\tawait validate();\r\n\t\t\tconst { context } = this;\r\n\t\t\tconst result = await Promise.resolve( context.ajax<ISubmitResponse>( `/${currentLanguage}/services/form/protected-download-request`, {\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tcontentType: false,\r\n\t\t\t\tdata: new FormData( document.getElementById( 'aspnetForm' ) as HTMLFormElement ),\r\n\t\t\t\tprocessData: false,\r\n\t\t\t\ttraditional: false\r\n\t\t\t} ) );\r\n\t\t\tif( !result.success ) {\r\n\t\t\t\talert(result.message);\r\n\t\t\t\tthrow new Error( 'Submission failed' );\r\n\t\t\t}\r\n\t\t\tif( result.redirect ) {\r\n\t\t\t\tlocation.href = result.redirect;\r\n\t\t\t}\r\n\t\t} catch( ex ) {\r\n\t\t\tthis.busy( false );\r\n\t\t\tthrow ex;\r\n\t\t} finally {\r\n\t\t\t//this.busy( false );\r\n\t\t}\r\n\t}\r\n}\r\n\r\nconst viewmodels = [];\r\nasync function validate() {\r\n\tconst errors = [];\r\n\tfor( const viewmodel of viewmodels ) {\r\n\t\tconst validation = validatedObservable( viewmodel ) as KnockoutValidationGroup;\r\n\t\tif( !validation.isValid() ) {\r\n\t\t\tvalidation.errors.showAllMessages();\r\n\t\t\terrors.splice( errors.length, 0, ...validation.errors() );\r\n\t\t}\r\n\t}\r\n\tif( errors.length ) {\r\n\t\tthrow Array.from( new Set<string>( errors ) );\r\n\t}\r\n}\r\n\r\n$( () => {\r\n\t$( '.etfrenchvppform' ).each( ( i, form ) => {\r\n\t\tconst $form = $( form ),\t\t\t\r\n\t\t\tfromViewModel = new DownloadOSFormViewModel,\r\n\t\t\tviewModel = {fromViewModel};\r\n\t\tviewmodels.push(fromViewModel);\r\n\t\tapplyBindings( validatedObservable( viewModel ) );\r\n\t\t$( '#aspnetForm' ).on( 'submit', () => false );\r\n\t} );\r\n} );\r\n\r\n"]}