{"version":3,"sources":["../ts/modules/downloads-details.ts"],"names":["DeferredStatus","getDeferredStatus","d","state","Pending","Resolved","Rejected","$","$window","window","ajaxContext","ajax_1","AjaxContext","$detailsSublayout","itemId","data","eulaLoaded","Deferred","hasProtectedDownloads","length","let","eulaAccept","tokenExpires","recaptchaResponse","getDownloadAuthorizationToken","fileId","captcha","now","Date","ajax","WebService","getUrl","method","contentType","toJSON","id_1","toShorterId","utcDateTime","date","getUTCFullYear","string_1","padLeft","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","copyright","async","showDeviceDenyDialog","result","await","localization_1","translate","Dialogs","Init","dialogData","Open","message","text","icon","needEula","showEula","downloadLink","$link","secure","test","prop","action","label","dEula","analytics_1","trackEvent","promise","resolve","ex","reject","Promise","Dialog","on","setTimeout","token","undefined","expires","setUTCMilliseconds","time_1","wait","cookie","path","toShortId","document","e","preventDefault","stopImmediatePropagation","currentTarget","event_simulator_1","cloneMouseEvent","click","$e","target","dialog","$div","create","addClass","append","detach","appendTo","$widget","$captcha","recaptcha","styleEula","css","max-height","Math","max","innerHeight","overflow","position","my","at","of","decline","each","i","Close","accept","enable","value","toggleClass","buttons","acceptResult","declineResult","found","find","prepend","recaptcha_1","Recaptcha","get","response","addObserver","isFallback","params","deparam","fragment","show","bbq","pushState","IsOpen","triggerHandler","visitorSignedIn","hasClass","downloadItemId","download","fileid","querystring","filter"],"mappings":"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","file":"downloads-details.js","sourcesContent":["import { AjaxContext, WebService } from 'ajax';\r\nimport { translate } from 'localization';\r\nimport { toId, toShortId, toShorterId } from 'utilities/id';\r\nimport { padLeft } from 'utilities/string';\r\nimport { click, cloneMouseEvent } from 'event-simulator';\r\nimport { trackEvent } from 'analytics';\r\nimport { wait, waitForElement } from 'time';\r\nimport { Recaptcha } from 'recaptcha';\r\nimport * as $ from 'jquery';\r\n\r\nenum DeferredStatus {\r\n\tPending,\r\n\tResolved,\r\n\tRejected\r\n}\r\n\r\nfunction getDeferredStatus<T>( d: JQueryDeferred<T> ): DeferredStatus {\r\n\tswitch( d.state() ) {\r\n\tcase 'pending': return DeferredStatus.Pending;\r\n\tcase 'resolved': return DeferredStatus.Resolved;\r\n\tcase 'rejected': return DeferredStatus.Rejected;\r\n\t}\r\n}\r\n\r\n$( () => {\r\n\tconst $window = $( window ),\r\n\t\tajaxContext = new AjaxContext,\r\n\t\t$detailsSublayout = $( '.sublayout-etdownloadbundledetails' ),\r\n\t\titemId = $detailsSublayout.data( 'itemid' ),\r\n\t\ttokenFresh = 5 * 60 * 1000,\r\n\t\teulaLoaded = $.Deferred<IDialog>(),\r\n\t\thasProtectedDownloads = $( '.protected-download' ).length > 0;\r\n\tlet eulaAccept = $.Deferred(),\r\n\t\ttokenExpires = $.Deferred(),\r\n\t\trecaptchaResponse: string;\r\n\r\n\ttokenExpires.resolve();\r\n\r\n\tfunction formatDate( date: Date ) {\r\n\t\treturn date.getUTCFullYear()\r\n\t\t+ '-' + padLeft( date.getUTCMonth() + 1, 2, '0' )\r\n\t\t+ '-' + padLeft( date.getUTCDate(), 2, '0' )\r\n\t\t+ 'T' + padLeft( date.getUTCHours(), 2, '0' )\r\n\t\t+ ':' + padLeft( date.getUTCMinutes(), 2, '0' )\r\n\t\t+ ':' + padLeft( date.getUTCSeconds(), 2, '0' )\r\n\t\t+ '.' + padLeft( date.getUTCMilliseconds(), 3, '0' )\r\n\t\t+ 'Z';\r\n\t}\r\n\r\n\tfunction getDownloadAuthorizationToken( fileId: string, captcha: string) {\r\n\t\tconst now = new Date;\r\n\t\treturn ajaxContext.ajax( WebService.getUrl( '/Services/Downloads/Verify.svc/Issue' ), {\r\n\t\t\tmethod: 'POST',\r\n\t\t\tcontentType: 'application/json',\r\n\t\t\tdata: $.toJSON( {\r\n\t\t\t\tfileId: toShorterId( fileId ),\r\n\t\t\t\tutcDateTime: formatDate( now ),\r\n\t\t\t\tcopyright: `Copyright © ${now.getUTCFullYear()} Texas Instruments, Inc. All rights reserved.`,\r\n\t\t\t\tcaptcha\r\n\t\t\t} )\r\n\t\t} );\r\n\t}\r\n\r\n\tasync function showDeviceDenyDialog() {\r\n\t\tconst result = await translate( 'Downloads/Device Deny' );\r\n\t\tDialogs.Init( 'Notice', dialogData => {\r\n\t\t\tdialogData.Open( {\r\n\t\t\t\tmessage: result.text,\r\n\t\t\t\ticon: 'alert'\r\n\t\t\t} );\r\n\t\t} );\r\n\t}\r\n\r\n\t$( document ).on( 'contextmenu', '.device-deny-download', e => {\r\n\t\te.preventDefault();\r\n\t\t( async () => {\r\n\t\t\tawait showDeviceDenyDialog();\r\n\t\t} )();\r\n\t\treturn false;\r\n\t} );\r\n\t\r\n\t$detailsSublayout.on( 'click', '.device-deny-download', e => {\r\n\t\te.preventDefault();\r\n\t\te.stopImmediatePropagation();\r\n\t\t( async () => {\r\n\t\t\tawait showDeviceDenyDialog();\r\n\t\t} )();\r\n\t} );\r\n\r\n\tfunction loadEula(): Promise<IDialog> {\r\n\t\treturn Promise.resolve( eulaLoaded.promise() );\r\n\t}\r\n\r\n\tfunction needEula() {\r\n\t\treturn getDeferredStatus( eulaAccept ) !== DeferredStatus.Resolved || getDeferredStatus( tokenExpires ) === DeferredStatus.Resolved;\r\n\t}\r\n\r\n\tasync function showEula( downloadLink: Element|JQuery ) {\r\n\t\tconst $link = $( downloadLink ),\r\n\t\t\tsecure = /^https:/i.test( $link.prop( 'href' ) ),\r\n\t\t\tfileId = <string>$link.data( 'fileid' ),\r\n\t\t\taction = <string>$link.data( 'action' ),\r\n\t\t\tlabel = <string>$link.data( 'label' );\r\n\t\tif( needEula() ) {\r\n\t\t\tconst dEula = $.Deferred();\r\n\r\n\t\t\ttrackEvent( 'EULA Show', action, label );\r\n\t\t\t//This is Test\r\n\t\t\t//alert(\"YOU MAY NOT USE THE LICENSED MATERIALS ON ANY EMULATOR OF A TI CALCULATOR UNLESS THE EMULATOR IS OBTAINED FROM TI.\");\r\n\r\n\t\t\t( async () => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tawait eulaAccept.promise();\r\n\t\t\t\t\tdEula.resolve();\r\n\t\t\t\t} catch( ex ) {\r\n\t\t\t\t\tdEula.reject();\r\n\t\t\t\t} finally {\r\n\t\t\t\t\ttrackEvent( 'EULA Accept', action, label );\r\n\t\t\t\t}\r\n\t\t\t} )();\r\n\t\t\t( async () => {\r\n\t\t\t\tconst dialogData = await loadEula();\r\n\t\t\t\tconst dialog = dialogData.Dialog;\r\n\t\t\t\tdialog.on( 'dialogclose', () => {\r\n\t\t\t\t\tsetTimeout( () => dEula.reject(), 50 );\r\n\t\t\t\t} );\r\n\t\t\t\tdialogData.Open();\r\n\t\t\t} )();\r\n\r\n\t\t\tawait <PromiseLike<{}>>dEula.promise();\r\n\t\t\tconst captcha = recaptchaResponse;\r\n\t\t\trecaptchaResponse = undefined;\r\n\t\t\tconst token = await getDownloadAuthorizationToken( fileId, captcha );\r\n\t\t\tconst now = new Date,\r\n\t\t\t\texpires = now.setUTCMilliseconds( now.getUTCMilliseconds() + tokenFresh );\r\n\t\t\ttokenExpires.reject();\r\n\t\t\tconst d = tokenExpires = $.Deferred();\r\n\t\t\t( async () => {\r\n\t\t\t\tawait wait( tokenFresh );\r\n\t\t\t\td.resolve();\r\n\t\t\t} )();\r\n\r\n\t\t\t$.cookie( 'DownloadAuthorizationToken', token, { path: `/-/media/${toShortId(fileId)}`, expires, secure } );\r\n\t\t}\r\n\t}\r\n\r\n\t$( document ).on( 'contextmenu', '.protected-download', e => {\r\n\t\tif( !needEula() ) return;\r\n\t\te.preventDefault();\r\n\t\tconst currentTarget = <HTMLElement>e.currentTarget;\r\n\t\t( async () => {\r\n\t\t\tawait showEula( currentTarget );\r\n\t\t\tcloneMouseEvent( currentTarget, e );\r\n\t\t} )();\r\n\t\treturn false;\r\n\t} );\r\n\r\n\t$detailsSublayout.on( 'click', '.protected-download [data-fileid]', e => {\r\n\t\tif( !needEula() ) return;\r\n\r\n\t\te.preventDefault();\r\n\t\te.stopImmediatePropagation();\r\n\r\n\t\tconst $link = $( e.currentTarget );\r\n\t\t( async () => {\r\n\t\t\tawait showEula( $link );\r\n\t\t\tclick( $link );\r\n\t\t} )();\r\n\t} );\r\n\r\n\t$detailsSublayout.on( 'click', '.download-file', e => { \r\n\t\tconst $e = $( e.target );\r\n\t\ttrackEvent( 'Downloads', <string>$e.data( 'action' ), <string>$e.data( 'label' ) );\r\n\t} );\r\n\r\n\tDialogs.Init( 'Eula', dialogData => {\r\n\t\tconst dialog = dialogData.Dialog,\r\n\t\t\t$div = $.create( 'div' )\r\n\t\t\t.addClass( 'dialog-eula' )\r\n\t\t\t.append( $( '.eteula' ).detach() )\r\n\t\t\t.appendTo( dialog ),\r\n\t\t\t$widget = dialog.dialog( 'widget' ),\r\n\t\t\t$captcha = $.create( 'div' ).addClass( 'eula-captcha' );\r\n\t\tlet recaptcha: Recaptcha;\r\n\r\n\t\tfunction styleEula() {\r\n\t\t\t$( dialog ).addClass( 'dialog-eula-dialog' );\r\n\r\n\t\t\t$div.css( {\r\n\t\t\t\t'max-height': Math.max( 350, $( window ).innerHeight() - 250 ),\r\n\t\t\t\toverflow: 'auto'\r\n\t\t\t} );\r\n\r\n\t\t\tdialog.dialog( { position: { my: 'center', at: 'center', of: window } } );\r\n\t\t}\r\n\r\n\t\t$window.on( 'resize', () => { styleEula(); } );\r\n\t\tdialog.on( 'style', () => { styleEula(); } );\r\n\r\n\t\tconst decline = {\r\n\t\t\ttext: 'Decline',\r\n\t\t\tclick() {\r\n\t\t\t\teulaAccept.reject();\r\n\t\t\t\teulaAccept = $.Deferred();\r\n\t\t\t\t$( '.protected-download [data-fileid]' ).each( ( i, e ) => {\r\n\t\t\t\t\tconst $link = $( e ),\r\n\t\t\t\t\t\tsecure = /^https:/i.test( $link.prop( 'href' ) ),\r\n\t\t\t\t\t\tfileId = <string>$link.data( 'fileid' ),\r\n\t\t\t\t\t\texpires = new Date( 0 );\r\n\r\n\t\t\t\t\t$.cookie( 'DownloadAuthorizationToken', '', { path: `/-/media/${toShortId(fileId)}`, expires, secure } );\r\n\t\t\t\t} );\r\n\r\n\t\t\t\tdialogData.Close();\r\n\t\t\t}\r\n\t\t},\r\n\t\taccept = {\r\n\t\t\ttext: 'Accept',\r\n\t\t\tclick() {\r\n\t\t\t\teulaAccept.resolve();\r\n\t\t\t\t//eulaAccept = $.Deferred();\r\n\t\t\t\tdialogData.Close();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdialog.dialog( 'option', { buttons: [ accept, decline ] } );\r\n\r\n\t\t( async () => {\r\n\t\t\tconst results = await translate[ 'try' ]( [ 'Dialogs/Accept', 'Dialogs/Decline' ] );\r\n\t\t\tconst [ acceptResult, declineResult ] = results;\r\n\t\t\tif( acceptResult.found ) accept.text = acceptResult.text;\r\n\t\t\tif( declineResult.found ) decline.text = declineResult.text;\r\n\t\t\tdialog.dialog( 'option', { buttons: [ accept, decline ] } );\r\n\t\t} )();\r\n\r\n\t\tfunction enable( value: boolean ) {\r\n\t\t\t$( '.ui-button:eq(1)', $widget )\r\n\t\t\t.prop( 'disabled', !value )\r\n\t\t\t.toggleClass( 'ui-state-disabled', !value );\r\n\t\t}\r\n\r\n\t\tif( hasProtectedDownloads ) {\r\n\t\t\tdialog.on( 'setParams', () => {\r\n\t\t\t\tenable( false );\r\n\t\t\t\t$widget.find( '.ui-dialog-buttonset' ).prepend( $captcha );\r\n\t\t\t\tif( !recaptcha ) {\r\n\t\t\t\t\trecaptcha = new Recaptcha( $captcha.get( 0 ) as HTMLElement );\r\n\t\t\t\t\trecaptcha.response.addObserver( response => {\r\n\t\t\t\t\t\trecaptchaResponse = response;\r\n\t\t\t\t\t\tenable( !!response );\r\n\t\t\t\t\t} );\r\n\t\t\t\t\trecaptcha.isFallback.addObserver( isFallback => {\r\n\t\t\t\t\t\t$widget.toggleClass( 'recaptcha-fallback', !!isFallback );\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t\trecaptcha.create();\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\tdialog.on( 'dialogclose', () => {\r\n\t\t\tconst params = $.deparam.fragment();\r\n\t\t\tif( params.show === 'eula' ) {\r\n\t\t\t\tdelete params.show;\r\n\t\t\t\t$.bbq.pushState( params, 2 );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\t$window.on( 'hashchange.eula', () => {\r\n\t\t\tif( $.deparam.fragment()[ 'show' ] === 'eula' ) {\r\n\t\t\t\tif( !dialogData.IsOpen() ) dialogData.Open();\r\n\t\t\t} else {\r\n\t\t\t\tdialogData.Close();\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\t$window.triggerHandler( 'hashchange.eula' );\r\n\r\n\t\teulaLoaded.resolve( dialogData );\r\n\t} );\r\n\r\n\tDialogs.Init( 'SoftwareLicense', dialogData => {\r\n\t\tconst visitorSignedIn = $( 'html' ).hasClass( 'visitor-signed-in' ),\r\n\t\t\tdialog = dialogData.Dialog;\r\n\r\n\t\tdialog.on( 'dialogclose', () => {\r\n\t\t\tconst params = $.deparam.fragment();\r\n\t\t\tif( params.show === 'license' ) {\r\n\t\t\t\tdelete params.show;\r\n\t\t\t\t$.bbq.pushState( params, 2 );\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\t$window.on( 'hashchange.license', () => {\r\n\t\t\tif( visitorSignedIn && ( $.deparam.fragment()[ 'show' ] === 'license' ) ) {\r\n\t\t\t\tif( !dialogData.IsOpen() ) dialogData.Open( { downloadItemId: itemId } );\r\n\t\t\t} else {\r\n\t\t\t\tdialogData.Close();\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t\t$window.triggerHandler( 'hashchange.license' );\r\n\t} );\r\n\r\n\t$window.on( 'hashchange.download', () => {\r\n\t\tconst params = $.deparam.fragment();\r\n\t\tif( params.download === 'start' ) {\r\n\t\t\tconst fileid = $.deparam.querystring().download;\r\n\r\n\t\t\tdelete params.download;\r\n\t\t\t$.bbq.pushState( params, 2 );\r\n\r\n\t\t\tif( fileid ) {\r\n\t\t\t\tclick( $( 'a.download-file[data-fileid]', $detailsSublayout ).filter( ( i, e ) => fileid === $(e).data( 'fileid' ) ) );\r\n\t\t\t}\r\n\t\t}\r\n\t} );\r\n\t$window.triggerHandler( 'hashchange.download' );\r\n} );\r\n"]}