{"version":3,"sources":["editor.js","picker.js","viewer.js","jquery.toRequestArray.js","signalr.js","spin.js","jquery.spin.js","jquery.alerts.js","appa.js","SystemItemControl.js"],"names":["editor","config","params","args","Array","prototype","slice","call","arguments","merged","$","extend","apply","this","ext","oLoadParams","oExtraParams","concat","arr","toRequestArray","obj","feedback","show","bIsInline","oTarget","spin","length","width","lines","speed","radius","loader","dialog","autoOpen","closeOnEscape","draggable","resizable","modal","open","create","widget","remove","busy","element","init","t","templateInline","each","oLanguage","key","value","replace","bHideSave","append","el","click","e","preventDefault","fnSubmit","bHideEditStats","maxheight","collision","resize","event","ui","center","css","handle","fnClose","handleError","xhr","status","err","callback","title","Errors","r","JSON","parse","responseText","console","log","message","fnDisplayErrors","prefill","data","fillParams","jQuery","not","val","prop","fnFill","disable","attr","fnDisable","my","_trigger","eventName","_events","trigger","_on","fn","on","_toggle","hide","saveCallback","selector","base","sLoadUrl","sSaveUrl","sUpdateUrl","sRemoveUrl","actions","sTitle","zIndex","bAutoLoad","bDisabled","bSubmitOnEnter","fnGetParams","fnGetErrors","request","Save","Cancel","onLoad","onLoadError","onPreLoad","onPreUpdate","onUpdate","onUpdateError","onClose","onPreClose","onPreSave","errors","onSave","onSaveError","onPreRemove","onRemove","onRemoveError","fnInit","o","fnSetStatus","divStatus","html","is","slideDown","fnClearStatus","slideUp","cancel","fnCanSave","valid","validate","errorList","index","item","push","canSave","parent","jAlert","fnHideErrors","fnLoadForm","module","Error","validator","unobtrusive","submit","SetStatus","ClearStatus","toggle","inline","keypress","keyCode","ENTER","focus","fnRemove","removeParams","ajax","url","type","dataType","success","error","always","fnUpdate","updateParams","ListErrors","fnDisplayListErrors","fnDirtyReset","fnGetForm","loadParams","fileList","formdata","filedata","files","fnGetFiles","f","name","saveParams","fnSubmitWithFiles","fd","FormData","cache","contentType","processData","isArray","fnIsDirty","fnReset","fluent","load","confirm","jConfirm","ok","save","action","updateUrl","fill","isDirty","showErrors","hideErrors","reset","exec","collapsed","collapse","animationPromise","promise","done","off","events","sel","picker","proto","internal","searchResults","searchResultsConf","bNoSearch","btnCreate","btnCSV","btnDelete","toggleCreate","removeAttr","toggleCSV","toggleDelete","singleConf","multiConf","table","oTableTools","loading","fnCreate","bCreate","bDelete","options","bCreateOnEmpty","selectId","aData","selectName","getSearchParams","sSearchUrl","sDeleteUrl","sCSVUrl","onRowDraw","nRow","iDisplayIndex","iDisplayIndexFull","onReset","onCancel","onSelect","aSelection","onDeleteError","iPageLength","sScrollY","sScrollX","sScrollXInner","aaSorting","bMultiSelect","bAutoHeight","bFilter","bPreFetch","actionColumnWidth","fnOnClear","onSearchError","fnDelete","items","selection","fnGetSelectedData","feedbackStart","mergeParams","fail","search","feedbackEnd","processing","oSettings","bShow","select","alert","i","_picker_id","_picker_name","close","unselect","fnSelectNone","selectAll","fnSelectAll","bCancel","fnDraw","find","prev","multiselect","fnAdjustColumnSizing","actionContent","content","addActions","actionColumn","mDataProp","bSortable","sDefaultContent","sWidth","columns","sRowSelect","aButtons","sExtends","sButtonText","sButtonClass","nButton","oConfig","prepend","fnClick","oFlash","template","overflow","replaceWith","addClass","beforeClose","removeClass","showOnLoad","createButton","searchParams","CSV","csvButton","oApi","_fnAjaxParameters","fnSettings","searchparams","framebody","appendTo","document","body","contentDocument","hidden","dataTable","TableTools","fnGetInstance","text","bProcessing","sProcessing","sSearch","bServerSide","bPaginate","bSort","bDeferRender","bInfo","bDestroy","bAutoWidth","bScrollCollapse","iDisplayLength","sAjaxSource","fnRowCallback","dblclick","fnServerParams","aoData","fnDrawCallback","timeout","_iRecordsTotal","window","clearTimeout","setTimeout","_fnScrollDraw","fnServerData","sSource","fnCallback","sEcho","iTotalRecords","iTotalDisplayRecords","aaData","fnProcessingIndicator","aoColumns","sInfo","sInfoEmpty","sInfoFiltered","sDom","pick","bNoCache","viewer","fnGetViewer","resizeStop","m","modules","subModules","_off","size","fnResize","height","result","refresh","fnCanClose","target","isPlainObject","childKey","childValue","grandChildKey","grandChildValue","greatGrandChildIndex","greatGrandChildValue","root","factory","exports","define","amd","self","LogLevel","MessageType","HubConnectionState","HttpTransportType","TransferFormat","__webpack_require__","d","definition","Object","defineProperty","enumerable","get","__webpack_exports__","g","globalThis","Function","hasOwnProperty","Symbol","toStringTag","AbortError","DefaultHttpClient","HttpClient","HttpError","HttpResponse","HubConnection","HubConnectionBuilder","JsonHubProtocol","NullLogger","Subject","TimeoutError","VERSION","constructor","errorMessage","statusCode","trueProto","super","__proto__","UnsupportedTransportError","transport","errorType","DisabledTransportError","FailedToStartTransportError","FailedToNegotiateWithServerError","AggregateErrors","innerErrors","statusText","send","method","post","delete","getCookieString","_logLevel","_message","instance","Arg","isRequired","isNotEmpty","match","isIn","values","Platform","isBrowser","isWebWorker","isReactNative","isNode","getDataDetail","includeContent","let","detail","isArrayBuffer","byteLength","view","Uint8Array","str","forEach","pad","num","toString","substr","ArrayBuffer","async","sendMessage","logger","transportName","httpClient","headers","getUserAgentHeader","responseType","Trace","logMessageContent","response","await","withCredentials","SubjectSubscription","subject","observer","_subject","_observer","dispose","observers","indexOf","splice","cancelCallback","catch","ConsoleLogger","minimumLogLevel","_minLevel","out","logLevel","msg","Date","toISOString","Critical","Warning","warn","Information","info","userAgentHeaderName","version","os","runtime","runtimeVersion","userAgent","majorAndMinor","split","process","platform","versions","node","getErrorString","stack","FetchHttpClient","_logger","fetch","requireFunc","require","_jar","CookieJar","_fetchType","bind","AbortController","_abortControllerType","abortSignal","aborted","abortController","timeoutId","onabort","abort","payload","msTimeout","undefined","credentials","X-Requested-With","mode","redirect","signal","deserializeContent","cookies","getCookies","c","join","arrayBuffer","XhrHttpClient","Promise","reject","resolve","XMLHttpRequest","setRequestHeader","keys","header","onload","onerror","ontimeout","_httpClient","TextMessageFormat","write","output","RecordSeparator","input","messages","pop","RecordSeparatorCode","String","fromCharCode","HandshakeProtocol","writeHandshakeRequest","handshakeRequest","stringify","parseHandshakeResponse","messageData","remainingData","binaryData","separatorIndex","responseLength","buffer","textData","substring","next","complete","subscribe","connection","protocol","reconnectPolicy","_nextKeepAlive","_freezeEventListener","serverTimeoutInMilliseconds","keepAliveIntervalInMilliseconds","_protocol","_reconnectPolicy","_handshakeProtocol","onreceive","_processIncomingData","onclose","_connectionClosed","_callbacks","_methods","_closedCallbacks","_reconnectingCallbacks","_reconnectedCallbacks","_invocationId","_receivedHandshakeResponse","_connectionState","Disconnected","_connectionStarted","_cachedPingMessage","writeMessage","Ping","state","connectionId","baseUrl","Reconnecting","start","_startPromise","_startWithStateTransitions","Connecting","Debug","_startInternal","addEventListener","Connected","_stopDuringStartError","handshakePromise","_handshakeResolver","_handshakeRejecter","transferFormat","_sendMessage","_cleanupTimeout","_resetTimeoutPeriod","_resetKeepAliveInterval","features","inherentKeepAlive","_cleanupPingTimer","stop","startPromise","_stopPromise","_stopInternal","Disconnecting","_reconnectDelayHandle","_completeClose","stream","methodName","streams","streamIds","_replaceStreamingParams","invocationDescriptor","_createStreamInvocation","promiseQueue","cancelInvocation","_createCancelInvocation","invocationId","then","_sendWithProtocol","invocationEvent","Completion","_launchStreams","sendPromise","_createInvocation","invoke","newMethod","toLowerCase","handlers","removeIdx","onreconnecting","onreconnected","_processHandshakeResponse","parseMessages","Invocation","_invokeClientMethod","StreamItem","Close","allowReconnect","responseMessage","getTime","_timeoutHandle","serverTimeout","_pingServerHandle","nextPing","invocationMessage","methods","methodsCopy","expectsResponse","res","exception","completionMessage","prevRes","_createCompletionMessage","_cancelCallbacksWithError","_reconnect","removeEventListener","reconnectStartTime","now","previousReconnectAttempts","retryError","nextRetryDelay","_getNextRetryDelay","previousRetryCount","elapsedMilliseconds","retryReason","nextRetryDelayInMilliseconds","callbacks","nonblocking","streamId","_createStreamItemMessage","argument","_isObservable","arg","StreamInvocation","id","CancelInvocation","DEFAULT_RETRY_DELAYS_IN_MILLISECONDS","DefaultReconnectPolicy","retryDelays","_retryDelays","retryContext","HeaderNames","Authorization","Cookie","AccessTokenHttpClient","innerClient","accessTokenFactory","_innerClient","_accessTokenFactory","allowRetry","_accessToken","_setAuthorizationHeader","AbortController_AbortController","_isAborted","LongPollingTransport","_pollAbort","_options","_running","pollAborted","connect","_url","Binary","pollOptions","pollUrl","_closeError","_receiving","_poll","_raiseOnClose","deleteOptions","logMessage","ServerSentEventsTransport","accessToken","encodeURIComponent","opened","Text","eventSource","EventSource","onmessage","_close","onopen","_eventSource","WebSocketTransport","webSocketConstructor","_logMessageContent","_webSocketConstructor","_headers","token","webSocket","binaryType","_webSocket","ErrorEvent","readyState","OPEN","_isCloseEvent","wasClean","code","reason","HttpConnection","_stopPromiseResolver","_negotiateVersion","_resolveUrl","webSocketModule","eventSourceModule","WebSocket","_startInternalPromise","_sendQueue","TransportSendQueue","_stopError","_stopConnection","skipNegotiation","WebSockets","_constructTransport","_startTransport","negotiateResponse","redirects","_getNegotiationResponse","ProtocolVersion","_createTransport","negotiateUrl","_resolveNegotiateUrl","negotiateVersion","connectionToken","_createConnectUrl","requestedTransport","requestedTransferFormat","connectUrl","_isITransport","transportExceptions","negotiate","endpoint","availableTransports","transportOrError","_resolveTransportOrError","ex","ServerSentEvents","LongPolling","actualTransport","transferFormats","map","s","lastIndexOf","aTag","createElement","href","_transport","_buffer","_executing","_sendBufferedData","PromiseSource","_transportResult","_sendLoopPromise","_sendLoop","_bufferData","transportResult","_concatBuffers","arrayBuffers","totalLength","b","reduce","a","offset","set","_resolver","_rejecter","hubMessages","parsedMessage","_isInvocationMessage","_isStreamItemMessage","_isCompletionMessage","_assertNotEmptyString","LogLevelNameMapping","trace","debug","information","warning","critical","none","None","configureLogging","logging","mapping","withUrl","transportTypeOrOptions","httpConnectionOptions","withHubProtocol","withAutomaticReconnect","retryDelaysOrReconnectPolicy","build","writable","end","Spinner","useCssAnimations","prefixes","animations","createEl","tag","n","ins","appendChild","getElementsByTagName","sheet","styleSheet","vendor","pp","style","charAt","toUpperCase","merge","def","getColor","color","idx","defaults","rotate","corners","direction","trail","opacity","fps","className","top","left","position","opts","alpha","ostep","astep","insertBefore","firstChild","setAttribute","anim","j","Math","max","parentNode","removeChild","prefix","shadow","background","boxShadow","transformOrigin","transform","borderRadius","seg","hwaccel","animation","z","insertRule","cssRules","childNodes","probe","behavior","vml","adj","addRule","grp","coordsize","coordorigin","margin","dx","filter","rotation","arcsize","presets","tiny","small","large","$this","spinner","alerts","verticalOffset","horizontalOffset","repositionOnResize","overlayOpacity","overlayColor","okButton","cancelButton","dialogClass","waitingCalls","raiseNextDialog","callIsActive","shift","_show","dialogShallWait","prompt","_hide","_overlay","padding","minWidth","outerWidth","maxWidth","_reposition","_maintainPosition","after","cursor","outerHeight","unbind","jPrompt","appa","GetBoolSearchVal","GetInputVal","elName","GetTextAreaVal","GetSelectVal","GetCheckBoxVal","GetCheckBoxValByName","Strip","tmp","innerHTML","textContent","innerText","htmlEncode","createTextNode","MakeProgress","divdata","rounded","round","MakeCheck","wrap","$context","before","TextControl","configurable","$placeholder","class","attributes","insertAfter","BigTextControl","ComboControl","Key","Selected","Label","systemitem","option","placeholderElement","ctl","controls","RichTextInit","tinymce","MultiComboInit","noneSelectedText","selectedList","opt","optval","bigtext","richtext","getSet","combo","multicombo","check"],"mappings":"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","file":"site.js","sourcesContent":["\r\n\r\neditor.module = null;\r\n\r\nfunction editor(config) {\r\n\r\n var ext = {},\r\n element = null,\r\n oExtraParams = null,\r\n saveCallback= null,\r\n params = function () {\r\n var args = Array.prototype.slice.call(arguments, 0);\r\n var merged = $.extend.apply(this, [{}, ext.oLoadParams, oExtraParams].concat(args));\r\n return { arr: $.toRequestArray(merged), obj: merged };\r\n },\r\n fillParams = {},\r\n loading = function () {\r\n return $('
').dialog({\r\n autoOpen: false,\r\n closeOnEscape: false,\r\n width: 100,\r\n draggable: false,\r\n resizable: false,\r\n modal: true,\r\n \r\n open: function () {\r\n $(this).spin({ length: 0, width: 15, radius: 40 });\r\n },\r\n create: function () {\r\n var widget = $(this).dialog('widget');\r\n //remove default title bar\r\n $('.ui-dialog-titlebar', widget).remove();\r\n }\r\n });\r\n },\r\n loader=null,\r\n feedback = function (show) {\r\n if (ext.bIsInline) {\r\n if (show !== false)\r\n ext.oTarget.spin({ length: 0, width: 12, lines: 12, speed: 1.1, radius: 30 });\r\n else\r\n ext.oTarget.spin(false);\r\n\r\n return;\r\n }\r\n\r\n if (show !== false) {\r\n if (loader == null) { loader = loading(); }\r\n loader.dialog('open');\r\n }\r\n else {\r\n loader.dialog('close');\r\n }\r\n },\r\n busy = function (show) {\r\n if (show !== false)\r\n element.spin({ length: 0, width: 12, lines: 12, speed: 1.1, radius: 30 });\r\n else\r\n element.spin(false);\r\n },\r\n template = function () {\r\n var editstatsdiv = ext.bHideEditStats == true ? '' : '
';\r\n\r\n return '
' +\r\n '
' +\r\n ' ' +\r\n '

' +\r\n '
' +\r\n\r\n '
' +\r\n\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n editstatsdiv +\r\n '
    ' +\r\n ' ' +\r\n ' ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ';\r\n },\r\n templateInline = function () {\r\n return '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
    ' +\r\n '
      ' +\r\n '
      ' +\r\n '
      ' +\r\n\r\n '
      ' +\r\n '
      ' +\r\n ' [Save] ' +\r\n '
      ' +\r\n '
      ' +\r\n '
      ';\r\n },\r\n init = function () {\r\n if (ext.bIsInline) {\r\n initInline();\r\n return;\r\n }\r\n\r\n if (element) {\r\n element.remove();\r\n\r\n }\r\n\r\n\r\n var t = template();\r\n $.each( ext.oLanguage, function(key, value) {\r\n t = t.replace(\"[\" + key + \"]\", value);\r\n });\r\n\r\n \r\n element = $(t);\r\n ext.oTarget.append(element);\r\n\r\n if (ext.bHideSave) {\r\n $('.editor-footer', element).remove();\r\n }\r\n\r\n element.dialog({\r\n autoOpen: false,\r\n closeOnEscape: false,\r\n width: ext.width,\r\n maxheight: ext.maxheight,\r\n collision: ext.collision,\r\n modal: true,\r\n draggable: false,\r\n resize: function (event, ui) {\r\n center();\r\n },\r\n create: function () {\r\n var widget = $(this).dialog('widget');\r\n //remove default title bar\r\n $('.ui-dialog-titlebar', widget).remove();\r\n\r\n //widget.css('padding', 0);\r\n\r\n $('.ui-dialog-content', widget).css('padding-top', 0);\r\n\r\n //Bind custom close element in custom title\r\n el('.editor-close').click(function (e) {\r\n element.dialog('close');\r\n });\r\n\r\n el('.editor-header').css('cursor', 'pointer');\r\n\r\n el('.editor-footer').css('margin-top', '5px');\r\n\r\n el('.editor-container-inner').css('padding', '0 15px');\r\n\r\n widget.draggable({\r\n handle: '.editor-header'\r\n });\r\n }\r\n });\r\n\r\n //No scrollbars \r\n // el('.editor-body').css('overflow-y', 'visible');\r\n\r\n //Bind save button\r\n el('.editor-save').click(function (e) {\r\n e.preventDefault();\r\n ext.fnSubmit();\r\n });\r\n\r\n //bind close buttons\r\n el('.editor-close').click(function (e) {\r\n e.preventDefault();\r\n ext.fnClose();\r\n });\r\n\r\n el('.editor-header').css('cursor', 'pointer');\r\n },\r\n initInline = function () {\r\n if (element) {\r\n element.remove();\r\n }\r\n\r\n var t = templateInline();\r\n $.each(ext.oLanguage, function (key, value) {\r\n t = t.replace(\"[\" + key + \"]\", value);\r\n });\r\n\r\n element = $(t);\r\n\r\n if (ext.bHideSave) {\r\n $('.editor-footer',element).remove();\r\n }\r\n\r\n ext.oTarget.append(element);\r\n\r\n //Bind save button\r\n el('.editor-save').click(function (e) {\r\n e.preventDefault();\r\n ext.fnSubmit();\r\n });\r\n },\r\n el = function (selector) { return $(selector,element[0]) },\r\n fileParams = function () {\r\n var files = ext.fnGetFiles(element);\r\n var fileList = null;\r\n\r\n $.each(files, function (key, f) {\r\n if (f.val() != '' && f[0].files.length > 0) {\r\n if (fileList == null) {\r\n fileList = { obj: {}, arr: [] };\r\n }\r\n fileList.obj[key] = f[0].files[0].name; //for validation\r\n fileList.arr.push({ name: key, value: f[0].files[0] });\r\n }\r\n });\r\n\r\n return fileList;\r\n },\r\n handleError = function (xhr, status, err, callback,title) {\r\n var Errors = [err];\r\n\r\n try {\r\n r = JSON.parse(xhr.responseText); //this could through an exception\r\n if (r.Errors) {\r\n Errors = r.Errors;\r\n }\r\n }\r\n catch (e) {\r\n if (console)\r\n console.log(e.message);\r\n }\r\n finally {\r\n \r\n callback(Errors, xhr, xhr.status);\r\n\r\n ext.fnDisplayErrors(Errors, title);\r\n }\r\n },\r\n prefill = function (data) {\r\n if (data) {\r\n $.extend( fillParams,data);\r\n }\r\n\r\n if (element && element instanceof jQuery) {\r\n $.each(fillParams, function (key, value) {\r\n $('input[name=\"' + key + '\"],select[name=\"' + key + '\"],textarea[name=\"' + key + '\"]', element).not(':checkbox,:radio').val(value);\r\n $('input:radio[name=\"' + key + '\"][value=\"' + value + '\"]').prop(\"checked\", true);\r\n \r\n });\r\n ext.fnFill(fillParams); //custom fills\r\n fillParams = {};\r\n }\r\n },\r\n exec = function (action, args) {\r\n var o = args || {};\r\n o.element = element;\r\n ext.actions[action].call(null,o);\r\n },\r\n disable = function (args) {\r\n el('input:not(.read-only-ignore),textarea:not(.read-only-ignore),select:not(.read-only-ignore),button:not(.read-only-ignore),a.btn:not(.read-only-ignore)').attr('disabled', 'disabled');\r\n ext.fnDisable({ element: element });\r\n },\r\n center = function () {\r\n if (!ext.bIsInline) {\r\n element.dialog('option', 'position', { my: \"center\" });\r\n }\r\n\r\n },\r\n collision = function () {\r\n \r\n if (!ext.bIsInline && ext.collision) {\r\n element.dialog('option', 'position', { collision: ext.collision });\r\n }\r\n\r\n },\r\n maxheight = function () {\r\n if (!ext.bIsInline && ext.maxheight) {\r\n element.dialog('option', 'maxHeight', ext.maxheight);\r\n }\r\n },\r\n _events = {},\r\n _trigger = function (eventName, args) {\r\n $(_events).trigger(eventName, args);\r\n },\r\n _on = function (eventName, fn) {\r\n $(_events).on(eventName, fn);\r\n },\r\n _off = function (events, sel, fn) {\r\n $(_events).off(events, sel, fn);\r\n },\r\n _toggle = function (hide) {\r\n if (hide === false) {\r\n element.dialog('close');\r\n }\r\n else {\r\n element.dialog('open')\r\n }\r\n };\r\n\r\n\r\n\r\n //default config\r\n var base = {\r\n width: 560,\r\n maxheight: null,\r\n collision: null,\r\n sLoadUrl: null,\r\n sSaveUrl: null,\r\n sUpdateUrl: null,\r\n sRemoveUrl: null,\r\n actions:{},\r\n sTitle: '',\r\n zIndex:1060,\r\n bIsInline: false,\r\n bAutoLoad:true,\r\n bDisabled:false,\r\n bHideSave: false,\r\n bHideEditStats: true,\r\n bSubmitOnEnter: true,\r\n oTarget: $('body:first'),\r\n fnGetParams: function (element) { return {} }, //Must override\r\n fnGetErrors: function (request) { return [] },\r\n fnFill: function (params) { },\r\n oLanguage: {Save: 'Save', Cancel: 'Cancel'},\r\n oLoadParams: {},\r\n onLoad: function () { },\r\n onLoadError: function (err, xhr, status) { },\r\n onPreLoad: function () { },\r\n onPreUpdate: function () { },\r\n onUpdate: function () { },\r\n onUpdateError: function (err, xhr, status) { },\r\n onClose: function () { },\r\n onPreClose: function () { },\r\n onPreSave: function (errors) { },\r\n onSave: function (data) { },\r\n onSaveError: function (err, xhr, status) { },\r\n onPreRemove: function (errors) { },\r\n onRemove: function () { },\r\n onRemoveError: function (err, xhr, status) { },\r\n fnInit: function (o) { },\r\n fnDisable: function (o) { },\r\n fnSetStatus: function (message) {\r\n var divStatus = $(\".editor-status\", element);\r\n divStatus.html(message);\r\n\r\n if (!divStatus.is(\":visible\")) {\r\n divStatus.slideDown();\r\n }\r\n \r\n },\r\n fnClearStatus: function () {\r\n var divStatus = $(\".editor-status\", element);\r\n \r\n if (divStatus.is(\":visible\")) {\r\n divStatus.slideUp();\r\n }\r\n\r\n },\r\n fnClose: function (cancel) {\r\n element.dialog('close');\r\n ext.onPreClose();\r\n ext.onClose();\r\n element.dialog('destroy');\r\n element.remove();\r\n },\r\n fnCanSave: function (request) {\r\n\r\n var errors = ext.fnGetErrors(request);\r\n\r\n ext.onPreSave(errors);\r\n\r\n if (!el('.editor-form').valid()) {\r\n $.each(el('.editor-form').validate().errorList, function (index, item) {\r\n errors.push(item.message);\r\n });\r\n }\r\n\r\n if (errors.length > 0) {\r\n ext.fnDisplayErrors(errors);\r\n canSave = false;\r\n }\r\n return errors.length == 0;\r\n },\r\n fnDisplayErrors: function (errors,title) {\r\n var html = '';\r\n\r\n $.each(errors, function (index, item) {\r\n html = html + '
    • ' + item + '
    • ';\r\n });\r\n\r\n if (!(element instanceof jQuery) || !element.is(':visible')) {\r\n jAlert('', title);\r\n }\r\n else {\r\n\r\n el('.editor-errors').html(html);\r\n el('.editor-errors').parent().slideDown();\r\n }\r\n },\r\n fnHideErrors: function () { el('.editor-errors').parent().hide(); },\r\n fnLoadForm: function (html) {\r\n init();\r\n\r\n el('.editor-form').html(html).css('margin',0);\r\n\r\n //override base from form\r\n if (!editor.module) {\r\n ext.fnDisplayErrors([\"Failed to load module at:\" + ext.sLoadUrl], 'Application Error');\r\n throw new Error(\"Failed to load module at:\" + ext.sLoadUrl);\r\n };\r\n //second mixin\r\n ext = $.extend(true,{}, base, editor.module, config);\r\n\r\n //reset module\r\n editor.module = null;\r\n\r\n $.validator.unobtrusive.parse(el('.editor-form')[0]); //bind unobtrusive validation\r\n\r\n //set prefill values\r\n prefill();\r\n\r\n if (!ext.bIsInline) {\r\n element.dialog('open');\r\n element.dialog(\"option\", \"width\", ext.width);\r\n center();\r\n if(ext.maxheight) {\r\n maxheight(ext.maxheight);\r\n };\r\n if (ext.collision) {\r\n collision(ext.collision);\r\n };\r\n element.dialog('moveToTop');\r\n\r\n\r\n }\r\n\r\n //Set header content\r\n if (ext.sTitle && ext.sTitle != '') {\r\n el('.editor-title').html(ext.sTitle);\r\n }\r\n\r\n\r\n ext.fnInit({\r\n element: element,\r\n params: function () {\r\n return $.extend({},params().obj,ext.fnGetParams(element));\r\n },\r\n disable: disable,\r\n busy: busy,\r\n trigger: _trigger, //I think this is preferred over present actions override\r\n on: _on,\r\n center: center,\r\n bDisabled: ext.bDisabled,\r\n submit: ext.fnSubmit,\r\n SetStatus: ext.fnSetStatus,\r\n ClearStatus: ext.fnClearStatus,\r\n toggle: _toggle,\r\n inline: ext.bIsInline\r\n });\r\n\r\n if (ext.bDisabled) {\r\n disable();\r\n }\r\n\r\n /*\r\n The editor elements are only enclosed in a form element to support client side validation with jquery validate\r\n Browsers natively bind submit to the enter key when certain conditions are met such as when the form contains a submit button\r\n Suppress all form submits because all CRUD and file uploads are done asynchronously via ajax.\r\n */\r\n $('.editor-form', element).submit(function (e) {\r\n e.preventDefault();\r\n });\r\n\r\n\r\n if (ext.bSubmitOnEnter) {\r\n element.keypress(function (e) {\r\n if (e.keyCode == $.ui.keyCode.ENTER) {\r\n element.focus();\r\n ext.fnSubmit();\r\n }\r\n });\r\n }\r\n\r\n },\r\n fnRemove: function () {\r\n feedback();\r\n var removeParams = params();\r\n ext.onPreRemove(removeParams.obj);\r\n\r\n $.ajax({\r\n url: ext.sRemoveUrl,\r\n type: \"POST\",\r\n dataType: \"json\",\r\n data: removeParams.arr,\r\n success: function (data) {\r\n ext.onRemove(removeParams.obj, data);\r\n },\r\n error: function (xhr, status, err) {\r\n handleError(xhr, status, err, ext.onRemoveError,'Error Deleting Item');\r\n }\r\n }).always(function () {\r\n feedback(false);\r\n });\r\n\r\n },\r\n fnUpdate: function (url) {\r\n feedback();\r\n var updateParams = params();\r\n ext.onPreUpdate(updateParams.obj);\r\n\r\n $.ajax({\r\n url: url,\r\n type: \"POST\",\r\n dataType: \"json\",\r\n data: updateParams.arr,\r\n success: function (data) {\r\n if (data.ListErrors) {\r\n ext.fnDisplayListErrors(data.ListErrors);\r\n }\r\n\r\n if (data.Errors ) {\r\n ext.onUpdateError(data.Errors);\r\n ext.fnDisplayErrors(data.Errors, 'Unable to perform requested action');\r\n\r\n }\r\n\r\n if (!data.ListErrors && !data.Errors) {\r\n ext.fnDirtyReset(data);\r\n ext.onUpdate(data);\r\n }\r\n },\r\n error: function (xhr, status, err) {\r\n handleError(xhr, status, err, ext.onUpdateError, 'Error Performing Requested Action');\r\n }\r\n }).always(function () {\r\n feedback(false);\r\n });\r\n\r\n },\r\n fnGetForm: function () {\r\n feedback();\r\n var loadParams = params();\r\n ext.onPreLoad(loadParams.obj);\r\n\r\n $.ajax({\r\n url: ext.sLoadUrl,\r\n type: \"POST\",\r\n dataType: \"html\",\r\n data: loadParams.arr,\r\n success: function (data) {\r\n ext.fnLoadForm(data);\r\n ext.onLoad(loadParams.obj, data);\r\n feedback(false);\r\n },\r\n error: function (xhr, status, err) {\r\n feedback(false);\r\n handleError(xhr, status, err, ext.onLoadError, 'Error Loading Form');\r\n }\r\n });\r\n\r\n },\r\n fnSubmit: function () {\r\n ext.fnHideErrors();\r\n //get data from module\r\n var formdata = ext.fnGetParams(element);\r\n //Get files for upload\r\n var filedata = fileParams();\r\n //convert to array for submission\r\n var saveParams = params(formdata);\r\n\r\n //before save hook.Error/validation\r\n if (filedata) {\r\n if (ext.fnCanSave($.extend({}, filedata.obj, saveParams.obj))) {\r\n ext.fnSubmitWithFiles(saveParams.arr.concat(filedata.arr));\r\n }\r\n return;\r\n }\r\n else if (!ext.fnCanSave(saveParams.obj)) {\r\n return;\r\n }\r\n\r\n\r\n\r\n busy();\r\n $.ajax({\r\n url: ext.sSaveUrl,\r\n type: \"POST\",\r\n dataType: \"json\",\r\n data: saveParams.arr,\r\n success: function (data) {\r\n\r\n if (data.ListErrors) {\r\n ext.fnDisplayListErrors(data.ListErrors);\r\n }\r\n\r\n if (data.Errors ) {\r\n ext.onSaveError(data.Errors);\r\n ext.fnDisplayErrors(data.Errors);\r\n\r\n }\r\n\r\n if (!data.ListErrors && !data.Errors) {\r\n ext.fnDirtyReset(data);\r\n ext.onSave(data);\r\n if (saveCallback) {\r\n saveCallback(data);\r\n }\r\n if (!ext.bIsInline)\r\n ext.fnClose(data);\r\n }\r\n },\r\n error: function (xhr, status, err) {\r\n handleError(xhr, status, err, ext.onSaveError);\r\n\r\n }\r\n }).always(function () {\r\n busy(false);\r\n });\r\n\r\n },\r\n fnSubmitWithFiles: function (data) {\r\n\r\n busy();\r\n\r\n var fd = new FormData();\r\n\r\n $.each(data, function (index, item) {\r\n fd.append(item.name, item.value);\r\n });\r\n\r\n $.ajax({\r\n url: ext.sSaveUrl,\r\n type: \"POST\",\r\n data: fd,\r\n cache: false,\r\n contentType: false,\r\n processData: false,\r\n success: function (data) {\r\n if (data.Errors && $.isArray(data.Errors) && data.Errors.length > 0) {\r\n ext.onSaveError(data.Errors);\r\n ext.fnDisplayErrors(data.Errors);\r\n\r\n } else {\r\n ext.onSave(data);\r\n if (!ext.bIsInline)\r\n ext.fnClose(data);\r\n }\r\n },\r\n error: function (xhr, status, err) {\r\n handleError(xhr, status, err, ext.onSaveError);\r\n }\r\n }).always(function () {\r\n busy(false);\r\n });\r\n\r\n },\r\n fnDisplayListErrors: function (data) { },\r\n fnIsDirty: function (o) { return false; },\r\n fnDirtyReset: function (o) { },\r\n fnReset: function(o){},\r\n fnGetFiles: function (element) { return {}; } //must override if you intend to upload files\r\n };\r\n\r\n //Inital mixins\r\n ext = $.extend({}, base, config);\r\n\r\n if (ext.bIsInline && ext.bAutoLoad) {\r\n ext.fnGetForm();\r\n }\r\n //Return anonymous object with fluent public methods\r\n return fluent = {\r\n //call this to view/add/edit entities\r\n load: function (params) {\r\n oExtraParams = params || {};\r\n ext.fnGetForm();\r\n return fluent;\r\n },\r\n //call this to delete entities\r\n remove: function (params, confirm) {\r\n oExtraParams = params || {};\r\n\r\n if (confirm === false) {\r\n ext.fnRemove();\r\n }\r\n else {\r\n jConfirm(\"Are you sure you want to delete this item?\", \"Delete Confirmation\",\r\n function (ok) {\r\n if (ok)\r\n ext.fnRemove();\r\n });\r\n }\r\n\r\n return fluent;\r\n },\r\n save: function (o) {\r\n saveCallback = o && o.callback ? o.callback : null;\r\n oExtraParams = o && o.params? o.params : {};\r\n ext.fnSubmit();\r\n return fluent;\r\n },\r\n action: function (params, url) {\r\n oExtraParams = params || {};\r\n var updateUrl = url || ext.sUpdateUrl;\r\n ext.fnUpdate(updateUrl);\r\n return fluent;\r\n },\r\n fill: function (params) {\r\n prefill(params);\r\n return fluent;\r\n },\r\n isDirty: function () {\r\n return ext.fnIsDirty({ showErrors: ext.fnDisplayErrors, hideErrors: ext.fnHideErrors });\r\n \r\n },\r\n reset: function () {\r\n ext.fnHideErrors();\r\n ext.fnReset({element:element});\r\n return fluent;\r\n },\r\n call: function (action, arguments) {\r\n exec(action, arguments);\r\n return fluent;\r\n },\r\n collapsed: function (collapse, callback) {\r\n var animationPromise;\r\n if (collapse === false) {\r\n animationPromise = element.slideDown().promise();\r\n }\r\n else {\r\n animationPromise = element.slideUp().promise();\r\n }\r\n\r\n if (callback) {\r\n animationPromise.done(callback);\r\n }\r\n\r\n return fluent;\r\n },\r\n on: function (eventName, fn) {\r\n _on(eventName, fn);\r\n\r\n return fluent;\r\n },\r\n trigger: function(eventName,args){\r\n _trigger(eventName, args);\r\n },\r\n off : function (events, sel, fn) {\r\n _off(events, sel, fn);\r\n },\r\n disable: function () {\r\n disable();\r\n return fluent;\r\n },\r\n toggle: function (hide) {\r\n _toggle(hide);\r\n }\r\n\r\n }\r\n}\r\n\r\n","\r\npicker.module = null;\r\n\r\nfunction picker(config) {\r\n\r\n var proto = {};\r\n\r\n proto.internal = {\r\n searchResults: null,\r\n searchResultsConf: null,\r\n element: null,\r\n bNoSearch: true,\r\n btnCreate: null,\r\n btnCSV: null,\r\n btnDelete:null,\r\n toggleCreate: function (disable) {\r\n if (disable === false) {\r\n proto.internal.btnCreate.attr('disabled', 'disabled');\r\n }\r\n else {\r\n proto.internal.btnCreate.removeAttr('disabled');\r\n }\r\n },\r\n toggleCSV: function (disable) {\r\n if (proto.internal.btnCSV) {\r\n if (disable === false) {\r\n proto.internal.btnCSV.attr('disabled', 'disabled');\r\n }\r\n else {\r\n proto.internal.btnCSV.removeAttr('disabled');\r\n }\r\n }\r\n },\r\n toggleDelete: function (disable) {\r\n if (proto.internal.btnDelete) {\r\n if (disable === false) {\r\n proto.internal.btnDelete.attr('disabled', 'disabled');\r\n }\r\n else {\r\n proto.internal.btnDelete.removeAttr('disabled');\r\n }\r\n }\r\n },\r\n singleConf: {},\r\n multiConf: {},\r\n table: null,\r\n oTableTools: null,\r\n loader: null,\r\n oExtraParams: {},\r\n loading: function () {\r\n return $('
      ').dialog({\r\n autoOpen: false,\r\n closeOnEscape: false,\r\n width: 100,\r\n draggable: false,\r\n resizable: false,\r\n modal: true,\r\n zIndex: 3000,\r\n open: function () {\r\n $(this).spin({ length: 0, width: 15, radius: 40 });\r\n },\r\n create: function () {\r\n var widget = $(this).dialog('widget');\r\n //remove default title bar\r\n $('.ui-dialog-titlebar', widget).remove();\r\n\r\n\r\n }\r\n });\r\n },\r\n handleError: function (xhr, status, err, callback,title) {\r\n \r\n var Errors = $.isArray(err) ? err : [err];\r\n \r\n\r\n try {\r\n r = JSON.parse(xhr.responseText); //this could through an exception\r\n if (r.Errors) {\r\n Errors = r.Errors;\r\n }\r\n }\r\n catch (e) {\r\n if (console)\r\n console.log(e.message);\r\n }\r\n finally {\r\n callback(Errors, xhr, xhr.status);\r\n\r\n var html = '';\r\n\r\n $.each(Errors, function (index, item) {\r\n html = html + '
    • ' + item + '
    • ';\r\n });\r\n\r\n jAlert('', title);\r\n \r\n\r\n }\r\n },\r\n fillParams: {},\r\n prefill: function (data) {\r\n if (data) {\r\n proto.internal.fillParams = data;\r\n }\r\n\r\n if (proto.internal.element && proto.internal.element instanceof jQuery) {\r\n $.each(proto.internal.fillParams, function (key, value) {\r\n $('input[name=\"' + key + '\"],select[name=\"' + key + '\"],textarea[name=\"' + key + '\"]', proto.internal.element).val(value);\r\n });\r\n proto.ext.fnFill({fill:proto.internal.fillParams}); //custom fills\r\n proto.internal.fillParams = {};\r\n }\r\n }\r\n };\r\n\r\n\r\n proto.base = {\r\n fnCreate: function (args) { },\r\n fnFill:function(args){},\r\n reset: function () { },\r\n oTarget: $('body:first'),\r\n bIsInline: false,\r\n bCreate: false,\r\n bDelete:false,\r\n options:{},\r\n bCreateOnEmpty:false,\r\n sLoadUrl: '',\r\n sTitle: '',\r\n selectId: function (aData) { },\r\n selectName: function (aData) { },\r\n getSearchParams: function (element) { return {}; },\r\n sSearchUrl: null,\r\n sDeleteUrl:null,\r\n sCSVUrl: null,\r\n onRowDraw: function (nRow, aData, iDisplayIndex, iDisplayIndexFull) { },\r\n onReset: function () { },\r\n onCancel: function () { },\r\n onSelect: function (aSelection) { },\r\n onLoad: function () { },\r\n onPreLoad: function () { },\r\n onLoadError: function () { },\r\n onDeleteError: function () { },\r\n fnInit: function () { }, //caller should not override\r\n width: 1040,\r\n iPageLength: 5,\r\n sScrollY: '200px',\r\n sScrollX: null,\r\n sScrollXInner: null,\r\n aaSorting: [[1, 'asc']],\r\n bMultiSelect: false,\r\n bAutoHeight: false,\r\n bFilter: true,\r\n bPreFetch: false,\r\n actionColumnWidth: '1%',\r\n fnOnClear: function () { },\r\n params: {}\r\n\r\n };\r\n\r\n\r\n proto.base.onSearchError = function () { \r\n \r\n }\r\n\r\n \r\n proto.base.fnDelete = function(item){\r\n var items = {};\r\n\r\n if (!item) {\r\n var selection = proto.internal.oTableTools.fnGetSelectedData();\r\n if (selection.length == 0) {\r\n jAlert('Please select rows to delete', 'Delete Error');\r\n return;\r\n }\r\n\r\n\r\n $.each(selection, function (index, item) {\r\n items[\"items[\" + index + \"]\"] = proto.ext.selectId(item);\r\n });\r\n\r\n }\r\n else {\r\n items[\"items[0]\"] = proto.ext.selectId(item);\r\n }\r\n\r\n jConfirm(\"Are you sure you want to delete the selected item(s)?\", \"Delete Confirmation\",\r\n function (ok) {\r\n if (ok) {\r\n \r\n proto.internal.feedbackStart();\r\n var data = $.toRequestArray(proto.internal.mergeParams(), items);\r\n $.ajax({ url: proto.ext.sDeleteUrl, type: \"POST\", data: data })\r\n .fail(function (xhr, status, err) {\r\n proto.internal.handleError(xhr, status, err, proto.ext.onDeleteError, 'Error deleting selected item(s)');\r\n })\r\n .done(function (data) {\r\n //debugger;\r\n if (data.Errors) {\r\n proto.internal.handleError(this.xhr(), null, data.Errors, proto.ext.onDeleteError, 'Error deleting selected item(s)');\r\n }\r\n\r\n proto.ext.search();\r\n })\r\n .always(function () {\r\n proto.internal.feedbackEnd();\r\n });\r\n }\r\n });\r\n\r\n\r\n\r\n \r\n\r\n }\r\n\r\n proto.base.processing = function (e, oSettings, bShow) {\r\n if (bShow)\r\n proto.internal.element.spin({ length: 0, width: 12, lines: 12, speed: 1.1, radius: 30 });\r\n else\r\n proto.internal.element.spin(false);\r\n\r\n }\r\n\r\n proto.base.select = function (aData) {\r\n var aSelection = [];\r\n\r\n if (!aData) { //used for multi-select mode\r\n\r\n aData = proto.internal.oTableTools.fnGetSelectedData(); //returns array of object\r\n aSelection = aSelection.concat(aData);\r\n }\r\n else if ($.isArray(aData)) { //argument was array of object\r\n aSelection = aSelection.concat(aData);\r\n }\r\n else { //argument was single object\r\n aSelection.push(aData);\r\n }\r\n\r\n if (aSelection.length == 0) {\r\n alert(\"No Items selected\");\r\n return;\r\n }\r\n\r\n for (i in aSelection) {\r\n aSelection[i]._picker_id = proto.ext.selectId(aSelection[i]);\r\n aSelection[i]._picker_name = proto.ext.selectName(aSelection[i]);\r\n }\r\n\r\n proto.ext.onSelect(aSelection); //return array of object\r\n if (!proto.ext.bIsInline) {\r\n proto.ext.close(false);\r\n }\r\n\r\n }\r\n\r\n proto.base.unselect = function () {\r\n proto.internal.oTableTools.fnSelectNone();\r\n }\r\n\r\n proto.base.selectAll = function () {\r\n proto.internal.oTableTools.fnSelectAll();\r\n }\r\n\r\n proto.base.close = function (bCancel) {\r\n proto.internal.element.dialog('close');\r\n proto.internal.oExtraParams = {};\r\n\r\n if (bCancel) {\r\n proto.ext.onCancel();\r\n }\r\n };\r\n\r\n proto.base.search = function () {\r\n proto.internal.searchResults.fnDraw();\r\n }\r\n\r\n proto.base.reset = function () {\r\n\r\n $('.picker-form', proto.internal.element).find('input:text, input:password, input:file, input:hidden , textarea').val('');\r\n\r\n $('.picker-form', proto.internal.element).find('input:radio, input:checkbox').removeAttr('checked').removeAttr('selected');\r\n\r\n $('.picker-form select', proto.internal.element).each(function () {\r\n $(this).val($('option:first', this).val());\r\n });\r\n\r\n // Clear any checked multi-select dropdown items\r\n $('.picker-form .ui-multiselect', proto.internal.element).prev(\"select\").multiselect(\"uncheckAll\");\r\n\r\n //force empty results\r\n proto.internal.bNoSearch = true;\r\n //redraw\r\n proto.internal.searchResults.fnDraw();\r\n //Adjust column sizing\r\n proto.internal.searchResults.fnAdjustColumnSizing(false);\r\n //Clear selections\r\n proto.ext.unselect();\r\n //Call user reset callback\r\n proto.ext.onReset();\r\n //Call user clear search callback\r\n proto.ext.fnOnClear();\r\n }\r\n\r\n proto.base.actionContent = function () {\r\n var content = '';\r\n if (!proto.ext.bIsInline) {\r\n content+= '';\r\n }\r\n else {\r\n content+= ''\r\n }\r\n\r\n if (proto.ext.bDelete) {\r\n content += ' ';\r\n }\r\n\r\n return content;\r\n\r\n };\r\n\r\n proto.base.addActions = function () {\r\n var actionColumn = [{\r\n mDataProp: null,\r\n bSortable: false,\r\n sDefaultContent: proto.ext.actionContent(),\r\n sWidth: proto.ext.actionColumnWidth\r\n }];\r\n\r\n proto.ext.columns = actionColumn.concat(proto.ext.columns);\r\n }\r\n\r\n proto.base.singleConf = {\r\n sRowSelect: 'none',\r\n aButtons: [\r\n {\r\n sExtends: \"text\",\r\n sButtonText: \"Search\",\r\n sButtonClass: \"btn btn-primary btn-xs\",\r\n fnInit: function (nButton, oConfig) {\r\n $(nButton).prepend(' ');\r\n },\r\n fnClick: function (nButton, oConfig, oFlash) {\r\n proto.ext.search();\r\n }\r\n },\r\n\r\n {\r\n sExtends: \"text\",\r\n sButtonText: \"Clear\",\r\n sButtonClass: \"btn btn-primary btn-xs\",\r\n fnInit: function (nButton, oConfig) {\r\n $(nButton).prepend(' ');\r\n },\r\n fnClick: function (nButton, oConfig, oFlash) {\r\n proto.ext.reset();\r\n }\r\n }\r\n ]\r\n }\r\n\r\n proto.base.multiConf = {\r\n sRowSelect: 'multi',\r\n aButtons: [\r\n {\r\n sExtends: \"text\",\r\n sButtonText: \"Search\",\r\n sButtonClass: \"btn btn-primary btn-xs\",\r\n fnInit: function (nButton, oConfig) {\r\n $(nButton).prepend(' ');\r\n },\r\n fnClick: function (nButton, oConfig, oFlash) {\r\n proto.ext.search();\r\n }\r\n },\r\n {\r\n sExtends: \"text\",\r\n sButtonText: \"Choose\",\r\n sButtonClass: \"btn btn-primary btn-xs\",\r\n fnClick: function (nButton, oConfig, oFlash) {\r\n proto.ext.select();\r\n }\r\n },\r\n {\r\n sExtends: \"text\",\r\n sButtonText: \"Select All\",\r\n sButtonClass: \"btn btn-primary btn-xs\",\r\n fnClick: function (nButton, oConfig, oFlash) {\r\n proto.ext.selectAll();\r\n }\r\n\r\n },\r\n\r\n {\r\n sExtends: \"text\",\r\n sButtonText: \"Deselect All\",\r\n sButtonClass: \"btn btn-primary btn-xs\",\r\n fnClick: function (nButton, oConfig, oFlash) {\r\n proto.ext.unselect();\r\n }\r\n\r\n },\r\n\r\n {\r\n sExtends: \"text\",\r\n sButtonText: \"Clear\",\r\n sButtonClass: \"btn btn-primary btn-xs\",\r\n fnInit: function (nButton, oConfig) {\r\n $(nButton).prepend(' ');\r\n },\r\n fnClick: function (nButton, oConfig, oFlash) {\r\n proto.ext.reset();\r\n\r\n }\r\n }\r\n ]\r\n }\r\n\r\n proto.base.template = function () { //this is a function cause proto could patch the template if necessary. Just a thought\r\n var pickerHtml = \"\";\r\n var overflow = \"\";\r\n\r\n if (!proto.ext.bIsInline) {\r\n overflow = 'overflow:hidden;';\r\n }\r\n\r\n pickerHtml = '
      ' +\r\n '
      ' +\r\n '
      ' +\r\n '

      ' +\r\n '
      ' +\r\n '
      ' +\r\n '' +\r\n '
      ' +\r\n '
      ' +\r\n '
      ' +\r\n '
      '\r\n '
      ';\r\n\r\n return pickerHtml;\r\n };\r\n\r\n proto.internal.mergeParams = function () {\r\n return $.extend({}, proto.ext.params, proto.internal.oExtraParams);\r\n };\r\n //setup modal structure on demand\r\n proto.internal.create = function () {\r\n\r\n if (!proto.internal.element) {\r\n\r\n proto.internal.element = $(proto.ext.template());\r\n\r\n proto.ext.oTarget.append(proto.internal.element);\r\n }\r\n else {\r\n proto.internal.element.replaceWith(proto.ext.template());\r\n }\r\n\r\n proto.internal.table = $('.picker-table', proto.internal.element);\r\n\r\n proto.internal.element.css('padding-bottom', '10px');\r\n\r\n if (!proto.ext.bIsInline) {\r\n\r\n //create a jquery-ui dialog with the form and table container\r\n proto.internal.element.dialog({\r\n autoOpen: false,\r\n closeOnEscape: false,\r\n width: proto.ext.width,\r\n draggable:false,\r\n modal: true,\r\n zIndex: 2000,\r\n open: function () {\r\n proto.internal.searchResults.fnAdjustColumnSizing(false);\r\n\r\n $('.ui-widget-overlay').addClass('modal-overlay-dark');\r\n\r\n },\r\n beforeClose: function () {\r\n $('.ui-widget-overlay').removeClass('modal-overlay-dark');\r\n proto.ext.reset();\r\n },\r\n create: function () {\r\n var widget = $(this).dialog('widget');\r\n //remove default title bar\r\n $('.ui-dialog-titlebar', widget).remove();\r\n\r\n \r\n //Bind custom close element in custom title\r\n $('.picker-close', proto.internal.element).click(function (e) {\r\n proto.ext.close(true);\r\n });\r\n\r\n $('.picker-header', proto.internal.element).css('cursor', 'pointer');\r\n\r\n widget.draggable({\r\n handle: '.picker-header'\r\n });\r\n\r\n\r\n },\r\n resize: function () {\r\n $(this).dialog('option', 'position', { my: \"center\" });\r\n\r\n }\r\n });\r\n }\r\n else {\r\n $('.picker-close', proto.internal.element).hide();\r\n proto.internal.element.show();\r\n\r\n }\r\n\r\n //bind enter event on form\r\n proto.internal.element.keypress(function (e) {\r\n if (e.keyCode == $.ui.keyCode.ENTER) {\r\n proto.ext.search();\r\n }\r\n });\r\n\r\n if (proto.ext.bMultiSelect) {\r\n proto.internal.table.css('cursor', 'pointer');\r\n }\r\n\r\n\r\n }\r\n\r\n //Adds retrieved form data to modal window\r\n proto.internal.fnLoadForm = function (html, showOnLoad) {\r\n\r\n //setup structure\r\n proto.internal.create();\r\n\r\n //Add module html\r\n $('.picker-form', proto.internal.element).html(html);\r\n\r\n\r\n if (!picker.module) {\r\n throw new Error(\"Failed to load module at:\" + proto.ext.sLoadUrl);\r\n };\r\n\r\n proto.ext = $.extend({}, proto.base, picker.module, config);\r\n\r\n picker.module = null;\r\n\r\n proto.internal.prefill();\r\n\r\n if (proto.ext.bCreate) {\r\n var createButton = {\r\n sExtends: \"text\",\r\n sButtonText: \"Create New\",\r\n sButtonClass: \"btn btn-primary btn-xs\",\r\n fnInit: function (nButton, oConfig) {\r\n $(nButton).prepend(' ');\r\n if (proto.ext.bCreateOnEmpty) {\r\n proto.internal.btnCreate = $(nButton);\r\n }\r\n\r\n },\r\n fnClick: function (nButton, oConfig, oFlash) {\r\n\r\n proto.ext.fnCreate({\r\n loadParams: proto.internal.mergeParams(), \r\n searchParams: proto.ext.getSearchParams(proto.internal.element),\r\n element: proto.internal.element, \r\n fill: proto.internal.prefill,\r\n reset: proto.ext.reset,\r\n search: proto.ext.search,\r\n inline: proto.ext.bIsInline,\r\n options:proto.ext.options\r\n });\r\n }\r\n }\r\n proto.ext.multiConf.aButtons.push(createButton);\r\n proto.ext.singleConf.aButtons.push(createButton);\r\n\r\n }\r\n\r\n //if (proto.ext.bDelete) {\r\n // var deleteButton = {\r\n // sExtends: \"text\",\r\n // sButtonText: \"Delete\",\r\n // sButtonClass: \"btn-primary \",\r\n // fnInit: function (nButton, oConfig) {\r\n // $(nButton).prepend(' ');\r\n // proto.internal.btnDelete = $(nButton);\r\n // proto.internal.toggleDelete(false);\r\n // },\r\n // fnSelect: function (nButton, oConfig, nRow) {\r\n\r\n // var selection = proto.internal.oTableTools.fnGetSelectedData();\r\n // proto.internal.toggleDelete(selection.length > 0);\r\n // },\r\n\r\n // fnClick: function (nButton, oConfig, oFlash) {\r\n // proto.ext.fnDelete();\r\n // }\r\n // }\r\n // proto.ext.multiConf.aButtons.push(deleteButton);\r\n // proto.ext.singleConf.aButtons.push(deleteButton);\r\n\r\n //}\r\n\r\n if (proto.ext.options.CSV) {\r\n var csvButton = {\r\n sExtends: \"text\",\r\n sButtonText: \"Export To Excel\",\r\n sButtonClass: \"btn btn-primary btn-xs\",\r\n fnInit: function (nButton, oConfig) {\r\n $(nButton).prepend(' ');\r\n proto.internal.btnCSV = $(nButton);\r\n },\r\n fnClick: function (nButton, oConfig, oFlash) {\r\n var params = proto.internal.searchResults.oApi._fnAjaxParameters(proto.internal.searchResults.fnSettings());\r\n var searchparams = $.toRequestArray(proto.internal.mergeParams(), proto.ext.getSearchParams(proto.internal.element));\r\n\r\n var frame = $('')\r\n .appendTo(document.body)\r\n .css('display', 'none');\r\n\r\n var framebody = frame[0].contentDocument.body;\r\n $(framebody).html('
      ');\r\n \r\n //Add Datatable params\r\n $.each(params, function (index, item) {\r\n var hidden = $('')\r\n .attr('type', 'hidden')\r\n .attr('name', item.name)\r\n .attr('value', item.value);\r\n $('form',framebody).append(hidden);\r\n });\r\n\r\n //add picker search and additional params\r\n $.each(searchparams, function (index, item) {\r\n var hidden = $('')\r\n .attr('type', 'hidden')\r\n .attr('name', item.name)\r\n .attr('value', item.value);\r\n $('form', framebody).append(hidden);\r\n \r\n });\r\n\r\n $('form', framebody).submit();\r\n\r\n }\r\n }\r\n proto.ext.multiConf.aButtons.push(csvButton);\r\n proto.ext.singleConf.aButtons.push(csvButton);\r\n\r\n \r\n }\r\n\r\n //add edit or select in first column\r\n proto.ext.addActions();\r\n\r\n proto.ext.fnInit(proto.internal.element, proto.ext.close, proto.ext.bIsInline);\r\n\r\n proto.internal.searchResults = proto.internal.table\r\n .on('processing.dt', proto.ext.processing)\r\n .dataTable(proto.ext.searchResultsConf());\r\n\r\n proto.internal.oTableTools = TableTools.fnGetInstance(proto.internal.table[0])\r\n\r\n //proto.internal.searchResults.bind('processing', proto.ext.processing);\r\n\r\n //we need to do some setup work based on overriden configs\r\n $('.picker-title', proto.internal.element).text(proto.ext.sTitle);\r\n\r\n // $('select', proto.internal.element).height('28px');\r\n\r\n\r\n if (!proto.ext.bIsInline) {\r\n //set mixed in width\r\n proto.internal.element.dialog('option', 'width', proto.ext.width);\r\n }\r\n\r\n if (showOnLoad) {\r\n proto.internal.element.dialog('open');\r\n }\r\n\r\n if (proto.ext.bPreFetch) {\r\n proto.ext.search();\r\n }\r\n\r\n };\r\n\r\n proto.internal.fnGetForm = function (showOnLoad) {\r\n\r\n proto.internal.feedbackStart();\r\n\r\n\r\n //sInstanceId is a random key that allows binding of the loaded module.\r\n var loadParams = $.toRequestArray(proto.internal.mergeParams());\r\n\r\n proto.ext.onPreLoad(loadParams);\r\n\r\n $.ajax({ url: proto.ext.sLoadUrl, type: \"POST\", dataType: \"html\", data: loadParams })\r\n .fail(function (xhr, status, err) {\r\n proto.internal.handleError(xhr, status, err, proto.ext.onLoadError, 'Error Loading Search Form');\r\n })\r\n .done(function (data) {\r\n proto.internal.fnLoadForm(data, showOnLoad);\r\n proto.ext.onLoad(loadParams);\r\n })\r\n .always(function () {\r\n proto.internal.feedbackEnd();\r\n });\r\n\r\n };\r\n\r\n proto.internal.feedbackStart = function () {\r\n if (proto.ext.bIsInline) {\r\n proto.ext.oTarget.spin({ length: 0, width: 12, lines: 12, speed: 1.1, radius: 30 });\r\n }\r\n else {\r\n if (proto.internal.loader == null) {\r\n proto.internal.loader = proto.internal.loading();\r\n }\r\n proto.internal.loader.dialog('open');\r\n }\r\n };\r\n\r\n proto.internal.feedbackEnd = function () {\r\n if (proto.ext.bIsInline)\r\n proto.ext.oTarget.spin(false);\r\n else\r\n proto.internal.loader.dialog('close');\r\n };\r\n \r\n //Datatable initialization config\r\n proto.base.searchResultsConf = function () {\r\n return {\r\n bProcessing: false,\r\n oLanguage: { //Set the processing message to empty text, since we want just the img from the CSS\r\n sProcessing: '',\r\n sSearch: 'filter:'\r\n },\r\n bServerSide: true,\r\n bPaginate: true,\r\n bSort: true,\r\n bDeferRender: true,\r\n bFilter: proto.ext.bFilter,\r\n bInfo: true,\r\n bDestroy: true,\r\n bAutoWidth: false,\r\n bScrollCollapse: true,\r\n aaSorting: proto.ext.aaSorting,\r\n sScrollY: proto.ext.bAutoHeight ? '' : proto.ext.sScrollY,\r\n sScrollX: proto.ext.bAutoHeight ? '' : proto.ext.sScrollX ? proto.ext.sScrollX : '100%',\r\n sScrollXInner: proto.ext.bAutoHeight ? '' : proto.ext.sScrollXInner ? proto.ext.sScrollXInner : '100%',\r\n iDisplayLength: proto.ext.iPageLength,\r\n sAjaxSource: proto.ext.sSearchUrl,\r\n fnRowCallback: function (nRow, aData, iDisplayIndex, iDisplayIndexFull) {\r\n $(nRow).dblclick(function () {\r\n proto.ext.select(aData);\r\n });\r\n\r\n $('.picker-select', nRow).click(function () {\r\n proto.ext.select(aData);\r\n });\r\n\r\n $('.picker-delete', nRow).click(function () {\r\n proto.ext.fnDelete(aData);\r\n });\r\n\r\n //JF: changed so that \"this\" applies to the datatable object\r\n //proto.ext.onRowDraw(nRow, aData, iDisplayIndex, iDisplayIndexFull);\r\n proto.ext.onRowDraw.apply(this, [nRow, aData, iDisplayIndex, iDisplayIndexFull, proto.ext.bIsInline]);\r\n },\r\n fnServerParams: function (aoData) {\r\n\r\n var searchparams = $.toRequestArray(proto.internal.mergeParams(), proto.ext.getSearchParams(proto.internal.element));\r\n\r\n $.each(searchparams, function (index, item) {\r\n aoData.push({ name: item.name, value: item.value });\r\n });\r\n },\r\n fnDrawCallback: function (oSettings) {\r\n if (!proto.ext.bIsInline) {\r\n proto.internal.element.dialog('option', 'position', { my: \"center\" });\r\n\r\n }\r\n\r\n if (oSettings._iRecordsTotal == 0 && proto.ext.bCreate && proto.ext.bCreateOnEmpty) {\r\n proto.internal.toggleCreate(); //enable create\r\n } else if (oSettings._iRecordsTotal != 0 && proto.ext.bCreate && proto.ext.bCreateOnEmpty) {\r\n proto.internal.toggleCreate(false); //disable create\r\n }\r\n\r\n \r\n proto.internal.toggleCSV(oSettings._iRecordsTotal != 0);\r\n var timeout;\r\n $(window).resize(function () {\r\n\r\n clearTimeout(timeout);\r\n timeout = setTimeout(function () {\r\n oSettings.oApi._fnScrollDraw(oSettings);\r\n \r\n }, 200);\r\n });\r\n \r\n },\r\n fnServerData: function (sSource, aoData, fnCallback) {\r\n\r\n if (!proto.internal.bNoSearch) {\r\n $.ajax({\r\n dataType: 'json',\r\n type: \"POST\",\r\n url: sSource,\r\n data: aoData,\r\n success: fnCallback,\r\n error: function (xhr, status, err) {\r\n proto.internal.searchResults.fnProcessingIndicator(false);\r\n proto.internal.handleError(xhr, status, err, proto.ext.onSearchError, 'Error Executing Search');\r\n }\r\n\r\n });\r\n }\r\n else {\r\n fnCallback({ sEcho: aoData[0].value, iTotalRecords: 0, iTotalDisplayRecords: 0, aaData: [] });\r\n \r\n if (proto.ext.bCreate && proto.ext.bCreateOnEmpty) {\r\n proto.internal.toggleCreate(false);\r\n }\r\n\r\n proto.internal.bNoSearch = false;\r\n }\r\n\r\n },\r\n aoColumns: proto.ext.columns,\r\n oLanguage: {\r\n sProcessing: '',\r\n sSearch: 'Filter: ',\r\n sInfo: \"_TOTAL_ results\",\r\n sInfoEmpty: \"0 results\",\r\n sInfoFiltered: \"(filtered from _MAX_ total results)\"\r\n },\r\n sDom: \"<'row'<'col-md-6'T><'col-md-6'f>>t<'row'<'col-md-6'i><'col-md-6'\" + (proto.ext.bAutoHeight ? 'p' : 'S') + \">>\",\r\n oTableTools: proto.ext.bMultiSelect ? proto.ext.multiConf : proto.ext.singleConf\r\n };\r\n };\r\n\r\n proto.ext = $.extend({}, proto.base, config);\r\n\r\n\r\n if (proto.ext.bIsInline) {\r\n proto.internal.fnGetForm(false);\r\n }\r\n\r\n\r\n\r\n //Return anonymous object with public methods\r\n return fluent = {\r\n\r\n pick: function (params) { //added after the fact\r\n\r\n proto.internal.oExtraParams = params || {};\r\n\r\n\r\n if (!proto.ext.bIsInline && proto.internal.element != null && !proto.ext.bNoCache) {\r\n proto.internal.element.dialog('open');\r\n if (proto.ext.bPreFetch) {\r\n proto.ext.search();\r\n }\r\n\r\n\r\n }\r\n else {\r\n proto.internal.fnGetForm(!proto.bIsInline);\r\n }\r\n\r\n return fluent;\r\n },\r\n search: function () {\r\n proto.ext.search();\r\n return fluent;\r\n },\r\n reset: function () {\r\n proto.ext.reset();\r\n return fluent;\r\n },\r\n fill: function (data) {\r\n proto.internal.prefill(data);\r\n return fluent;\r\n }\r\n\r\n }\r\n}","\r\nviewer.module = null;\r\nviewer.subModules = [];\r\n\r\nfunction viewer(config) {\r\n\r\n var ext = {},\r\n modules =[],\r\n mergeParams = function () {\r\n return $.toRequestArray( $.extend({}, ext.params,oExtraParams) );\r\n },\r\n element= null,\r\n el = function (selector) { return element.find(selector) },\r\n busy =function (bShow) {\r\n if (bShow !== false) {\r\n if (!ext.bIsInline && !element.is(':visible')) {\r\n element.dialog('open');\r\n }\r\n element.spin({ length: 0, width: 12, lines: 12, speed: 1.1, radius: 30 });\r\n }\r\n else {\r\n element.spin(false);\r\n }\r\n\r\n },\r\n oExtraParams= {},\r\n handleError= function (xhr, status, err, callback,title) {\r\n var Errors = [err];\r\n\r\n try {\r\n r = JSON.parse(xhr.responseText); //this could through an exception\r\n if (r.Errors) {\r\n Errors = r.Errors;\r\n }\r\n }\r\n catch (e) {\r\n if (console)\r\n console.log(e.message);\r\n }\r\n finally {\r\n callback(Errors, xhr, xhr.status);\r\n\r\n var html = '';\r\n\r\n $.each(Errors, function (index, item) {\r\n html = html + '
    • ' + item + '
    • ';\r\n });\r\n\r\n jAlert('', title);\r\n if (!ext.bIsInline) {\r\n element.dialog('close');\r\n }\r\n\r\n }\r\n },\r\n template = function () {\r\n return '
      \"' +\r\n '
      ' +\r\n '
      ' +\r\n '

      ' +\r\n '
      ' +\r\n '
      ' +\r\n '' +\r\n '
      ' +\r\n '
      ' +\r\n '
      ' +\r\n '
      ' +\r\n '
      '\r\n },\r\n create = function () {\r\n\r\n if (element) {\r\n element.remove();\r\n }\r\n \r\n element = $(template());\r\n ext.oTarget.append(element);\r\n \r\n if (!ext.bIsInline) {\r\n\r\n //create a jquery-ui dialog with the form and table container\r\n element.dialog({\r\n autoOpen: false,\r\n closeOnEscape: false,\r\n width: ext.width,\r\n modal: true,\r\n zIndex: 2000,\r\n draggable:false,\r\n resizeStop: function (event, ui) { center(); },\r\n create: function () {\r\n var widget = $(this).dialog('widget');\r\n //remove default title bar\r\n $('.ui-dialog-titlebar', widget).remove();\r\n\r\n //Bind custom close element in custom title\r\n el('.viewer-close').click(function (e) {\r\n close();\r\n });\r\n \r\n el('.viewer-header').css('cursor', 'pointer');\r\n\r\n widget.draggable({\r\n handle: '.viewer-header'\r\n });\r\n \r\n }\r\n });\r\n }\r\n else {\r\n el('.viewer-close').hide();\r\n element.show();\r\n\r\n }\r\n },\r\n fnLoadViewer = function (html) {\r\n \r\n //Add module html\r\n el('.viewer-content').html(html);\r\n \r\n\r\n if (!viewer.module) {\r\n throw new Error(\"Failed to load module at:\" + ext.sLoadUrl);\r\n };\r\n\r\n ext = $.extend({}, base, viewer.module, config);\r\n modules = viewer.subModules;\r\n\r\n viewer.module = null;\r\n viewer.subModules = [];\r\n\r\n //we need to do some setup work based on overriden configs\r\n el('.viewer-title').html(ext.sTitle);\r\n\r\n if (!ext.bIsInline) {\r\n //set mixed in width\r\n element.dialog('option', 'width', ext.width);\r\n \r\n }\r\n ext.fnInit({ element: element, center: center, busy: busy, on: _on, trigger: _trigger, close: close, off: _off });\r\n \r\n for (m in modules) {\r\n modules[m].fnInit({ element: element, ext: ext, center: center, on: _on, trigger: _trigger, close: close });\r\n }\r\n\r\n },\r\n fnGetViewer = function () {\r\n create();\r\n busy();\r\n\r\n var loadParams = mergeParams();\r\n\r\n ext.onPreLoad(loadParams);\r\n\r\n $.ajax({ url: ext.sLoadUrl, type: \"POST\", dataType: \"html\", data: loadParams })\r\n .fail(function (xhr, status, err) {\r\n handleError(xhr, status, err, ext.onLoadError, 'Error Loading view at: ' + ext.sLoadUrl);\r\n })\r\n .done(function (data) {\r\n fnLoadViewer(data);\r\n ext.onLoad(loadParams);\r\n })\r\n .always(function () {\r\n busy(false);\r\n });\r\n\r\n },\r\n center = function () {\r\n if (!ext.bIsInline) {\r\n element.dialog('option', 'position', { my: \"center\" });\r\n var size = ext.fnResize({ width: element.dialog('option', 'width'), height: element.dialog('option', 'height') });\r\n\r\n if (size.width) {\r\n element.dialog('option', 'width', size.width);\r\n }\r\n\r\n if (size.height) {\r\n element.dialog('option', 'height', size.height);\r\n }\r\n }\r\n\r\n },\r\n close = function (result) {\r\n _trigger('Close');\r\n element.dialog('close');\r\n ext.onClose(result);\r\n },\r\n _events = {},\r\n _trigger = function(eventName,args){\r\n $(_events).trigger(eventName, args);\r\n },\r\n _on = function (eventName, fn) {\r\n $(_events).on(eventName, fn);\r\n },\r\n _off = function (events,sel ,fn) {\r\n $(_events).off(events, sel, fn);\r\n };\r\n \r\n\r\n\r\n var base = {\r\n refresh: function () { },\r\n oTarget: $('body:first'),\r\n bIsInline: false,\r\n sLoadUrl: '',\r\n sTitle: '',\r\n fnInit: function (o) { }, //caller should not override\r\n width: 600,\r\n params: {},\r\n onLoad: function () { },\r\n onLoadError: function (err, xhr, status) { },\r\n onClose: function () { },\r\n fnResize: function () { return {} },\r\n fnCanClose:function(){ return true;},\r\n onPreLoad: function (loadParams) { }\r\n };\r\n\r\n\r\n ext = $.extend({}, base, config);\r\n\r\n if (ext.bIsInline) {\r\n fnGetViewer();\r\n }\r\n\r\n\r\n\r\n //Return anonymous object with public methods\r\n return fluent = {\r\n\r\n load: function (o) { //added after the fact\r\n \r\n oExtraParams = o && o.params? o.params : {};\r\n\r\n if (o && o.target) {\r\n oTarget = $(o.target);\r\n }\r\n\r\n fnGetViewer();\r\n\r\n return fluent;\r\n },\r\n show:function(){\r\n if (!ext.bIsInline) {\r\n element.dialog('open');\r\n }\r\n\r\n return fluent;\r\n },\r\n hide:function(){\r\n if (!ext.bIsInline) {\r\n close();\r\n }\r\n\r\n return fluent;\r\n },\r\n refresh: function () {\r\n fnGetViewer();\r\n\r\n return fluent;\r\n },\r\n trigger: function (eventName, args) {\r\n _trigger(eventName, args);\r\n\r\n return fluent;\r\n }\r\n\r\n\r\n }\r\n}","; (function ($) {\r\n $.extend({ //need to make this a simple recurrsion function\r\n toRequestArray: function () {\r\n var aData = [];\r\n\r\n for (var index in arguments) {\r\n $.each(arguments[index], function (key, value) {\r\n if ($.isPlainObject(value)) { // {prop1:'prop1',prop2:'prop2'}\r\n $.each(value, function (childKey, childValue) {\r\n aData.push({ name: key + \".\" + childKey, value: childValue });\r\n });\r\n }\r\n else if ($.isArray(value)) { //[{prop1:'prop1',prop2:'prop2'},{prop1:'prop1',prop2:'prop2'}]\r\n $.each(value, function (index, childValue) {\r\n if ($.isPlainObject(childValue)) { //[{prop1:{ prop3: 'prop3'},prop2:{prop4:'prop4'},{prop1:'prop1',prop2:'prop2'}]\r\n $.each(childValue, function (grandChildKey, grandChildValue) {\r\n if ($.isArray(grandChildValue)) { //[{prop1:'prop1',prop2:'prop2'},{prop1:'prop1',prop2:[1,2]}]\r\n $.each(grandChildValue, function (greatGrandChildIndex, greatGrandChildValue) {\r\n aData.push({ name: key + \"[\" + index + \"].\" + grandChildKey + \"[\" + greatGrandChildIndex + \"]\", value: greatGrandChildValue });\r\n });\r\n }\r\n else {\r\n aData.push({ name: key + \"[\" + index + \"].\" + grandChildKey, value: grandChildValue });\r\n }\r\n });\r\n }\r\n else {\r\n aData.push({ name: key + \"[\" + index + \"]\", value: childValue });\r\n }\r\n\r\n });\r\n }\r\n else { //prop = \"prop\"\r\n aData.push({ name: key, value: value });\r\n }\r\n });\r\n }\r\n return aData;\r\n }\r\n })\r\n}(jQuery));","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"signalR\"] = factory();\n\telse\n\t\troot[\"signalR\"] = factory();\n})(self, () => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \t// The require scope\n/******/ \tvar __webpack_require__ = {};\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/global */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.g = (function() {\n/******/ \t\t\tif (typeof globalThis === 'object') return globalThis;\n/******/ \t\t\ttry {\n/******/ \t\t\t\treturn this || new Function('return this')();\n/******/ \t\t\t} catch (e) {\n/******/ \t\t\t\tif (typeof window === 'object') return window;\n/******/ \t\t\t}\n/******/ \t\t})();\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"AbortError\": () => (/* reexport */ AbortError),\n \"DefaultHttpClient\": () => (/* reexport */ DefaultHttpClient),\n \"HttpClient\": () => (/* reexport */ HttpClient),\n \"HttpError\": () => (/* reexport */ HttpError),\n \"HttpResponse\": () => (/* reexport */ HttpResponse),\n \"HttpTransportType\": () => (/* reexport */ HttpTransportType),\n \"HubConnection\": () => (/* reexport */ HubConnection),\n \"HubConnectionBuilder\": () => (/* reexport */ HubConnectionBuilder),\n \"HubConnectionState\": () => (/* reexport */ HubConnectionState),\n \"JsonHubProtocol\": () => (/* reexport */ JsonHubProtocol),\n \"LogLevel\": () => (/* reexport */ LogLevel),\n \"MessageType\": () => (/* reexport */ MessageType),\n \"NullLogger\": () => (/* reexport */ NullLogger),\n \"Subject\": () => (/* reexport */ Subject),\n \"TimeoutError\": () => (/* reexport */ TimeoutError),\n \"TransferFormat\": () => (/* reexport */ TransferFormat),\n \"VERSION\": () => (/* reexport */ VERSION)\n});\n\n;// CONCATENATED MODULE: ./src/Errors.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Error thrown when an HTTP request fails. */\r\nclass HttpError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n constructor(errorMessage, statusCode) {\r\n const trueProto = new.target.prototype;\r\n super(`${errorMessage}: Status code '${statusCode}'`);\r\n this.statusCode = statusCode;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when a timeout elapses. */\r\nclass TimeoutError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage = \"A timeout occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when an action is aborted. */\r\nclass AbortError extends Error {\r\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage = \"An abort occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport is unsupported by the browser. */\r\n/** @private */\r\nclass UnsupportedTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.UnsupportedTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'UnsupportedTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport is disabled by the browser. */\r\n/** @private */\r\nclass DisabledTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.DisabledTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'DisabledTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the selected transport cannot be started. */\r\n/** @private */\r\nclass FailedToStartTransportError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToStartTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message, transport) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'FailedToStartTransportError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when the negotiation with the server failed to complete. */\r\n/** @private */\r\nclass FailedToNegotiateWithServerError extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToNegotiateWithServerError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n */\r\n constructor(message) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.errorType = 'FailedToNegotiateWithServerError';\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n/** Error thrown when multiple errors have occurred. */\r\n/** @private */\r\nclass AggregateErrors extends Error {\r\n /** Constructs a new instance of {@link @microsoft/signalr.AggregateErrors}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {Error[]} innerErrors The collection of errors this error is aggregating.\r\n */\r\n constructor(message, innerErrors) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.innerErrors = innerErrors;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\n;// CONCATENATED MODULE: ./src/HttpClient.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Represents an HTTP response. */\r\nclass HttpResponse {\r\n constructor(statusCode, statusText, content) {\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n this.content = content;\r\n }\r\n}\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nclass HttpClient {\r\n get(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"GET\",\r\n url,\r\n });\r\n }\r\n post(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"POST\",\r\n url,\r\n });\r\n }\r\n delete(url, options) {\r\n return this.send({\r\n ...options,\r\n method: \"DELETE\",\r\n url,\r\n });\r\n }\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n getCookieString(url) {\r\n return \"\";\r\n }\r\n}\r\n\n;// CONCATENATED MODULE: ./src/ILogger.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n /** Log level for very low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\r\n /** Log level for low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n /** Log level for informational diagnostic messages. */\r\n LogLevel[LogLevel[\"Information\"] = 2] = \"Information\";\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n LogLevel[LogLevel[\"None\"] = 6] = \"None\";\r\n})(LogLevel || (LogLevel = {}));\r\n\n;// CONCATENATED MODULE: ./src/Loggers.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** A logger that does nothing when log messages are sent to it. */\r\nclass NullLogger {\r\n constructor() { }\r\n /** @inheritDoc */\r\n // eslint-disable-next-line\r\n log(_logLevel, _message) {\r\n }\r\n}\r\n/** The singleton instance of the {@link @microsoft/signalr.NullLogger}. */\r\nNullLogger.instance = new NullLogger();\r\n\n;// CONCATENATED MODULE: ./src/Utils.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n\r\n// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR client. */\r\nconst VERSION = \"7.0.12\";\r\n/** @private */\r\nclass Arg {\r\n static isRequired(val, name) {\r\n if (val === null || val === undefined) {\r\n throw new Error(`The '${name}' argument is required.`);\r\n }\r\n }\r\n static isNotEmpty(val, name) {\r\n if (!val || val.match(/^\\s*$/)) {\r\n throw new Error(`The '${name}' argument should not be empty.`);\r\n }\r\n }\r\n static isIn(val, values, name) {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(`Unknown ${name} value: ${val}.`);\r\n }\r\n }\r\n}\r\n/** @private */\r\nclass Platform {\r\n // react-native has a window but no document so we should check both\r\n static get isBrowser() {\r\n return typeof window === \"object\" && typeof window.document === \"object\";\r\n }\r\n // WebWorkers don't have a window object so the isBrowser check would fail\r\n static get isWebWorker() {\r\n return typeof self === \"object\" && \"importScripts\" in self;\r\n }\r\n // react-native has a window but no document\r\n static get isReactNative() {\r\n return typeof window === \"object\" && typeof window.document === \"undefined\";\r\n }\r\n // Node apps shouldn't have a window object, but WebWorkers don't either\r\n // so we need to check for both WebWorker and window\r\n static get isNode() {\r\n return !this.isBrowser && !this.isWebWorker && !this.isReactNative;\r\n }\r\n}\r\n/** @private */\r\nfunction getDataDetail(data, includeContent) {\r\n let detail = \"\";\r\n if (isArrayBuffer(data)) {\r\n detail = `Binary data of length ${data.byteLength}`;\r\n if (includeContent) {\r\n detail += `. Content: '${formatArrayBuffer(data)}'`;\r\n }\r\n }\r\n else if (typeof data === \"string\") {\r\n detail = `String data of length ${data.length}`;\r\n if (includeContent) {\r\n detail += `. Content: '${data}'`;\r\n }\r\n }\r\n return detail;\r\n}\r\n/** @private */\r\nfunction formatArrayBuffer(data) {\r\n const view = new Uint8Array(data);\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n let str = \"\";\r\n view.forEach((num) => {\r\n const pad = num < 16 ? \"0\" : \"\";\r\n str += `0x${pad}${num.toString(16)} `;\r\n });\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\n// Also in signalr-protocol-msgpack/Utils.ts\r\n/** @private */\r\nfunction isArrayBuffer(val) {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n/** @private */\r\nasync function sendMessage(logger, transportName, httpClient, url, content, options) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n logger.log(LogLevel.Trace, `(${transportName} transport) sending data. ${getDataDetail(content, options.logMessageContent)}.`);\r\n const responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\r\n const response = await httpClient.post(url, {\r\n content,\r\n headers: { ...headers, ...options.headers },\r\n responseType,\r\n timeout: options.timeout,\r\n withCredentials: options.withCredentials,\r\n });\r\n logger.log(LogLevel.Trace, `(${transportName} transport) request complete. Response status: ${response.statusCode}.`);\r\n}\r\n/** @private */\r\nfunction createLogger(logger) {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n if (logger.log !== undefined) {\r\n return logger;\r\n }\r\n return new ConsoleLogger(logger);\r\n}\r\n/** @private */\r\nclass SubjectSubscription {\r\n constructor(subject, observer) {\r\n this._subject = subject;\r\n this._observer = observer;\r\n }\r\n dispose() {\r\n const index = this._subject.observers.indexOf(this._observer);\r\n if (index > -1) {\r\n this._subject.observers.splice(index, 1);\r\n }\r\n if (this._subject.observers.length === 0 && this._subject.cancelCallback) {\r\n this._subject.cancelCallback().catch((_) => { });\r\n }\r\n }\r\n}\r\n/** @private */\r\nclass ConsoleLogger {\r\n constructor(minimumLogLevel) {\r\n this._minLevel = minimumLogLevel;\r\n this.out = console;\r\n }\r\n log(logLevel, message) {\r\n if (logLevel >= this._minLevel) {\r\n const msg = `[${new Date().toISOString()}] ${LogLevel[logLevel]}: ${message}`;\r\n switch (logLevel) {\r\n case LogLevel.Critical:\r\n case LogLevel.Error:\r\n this.out.error(msg);\r\n break;\r\n case LogLevel.Warning:\r\n this.out.warn(msg);\r\n break;\r\n case LogLevel.Information:\r\n this.out.info(msg);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n this.out.log(msg);\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/** @private */\r\nfunction getUserAgentHeader() {\r\n let userAgentHeaderName = \"X-SignalR-User-Agent\";\r\n if (Platform.isNode) {\r\n userAgentHeaderName = \"User-Agent\";\r\n }\r\n return [userAgentHeaderName, constructUserAgent(VERSION, getOsName(), getRuntime(), getRuntimeVersion())];\r\n}\r\n/** @private */\r\nfunction constructUserAgent(version, os, runtime, runtimeVersion) {\r\n // Microsoft SignalR/[Version] ([Detailed Version]; [Operating System]; [Runtime]; [Runtime Version])\r\n let userAgent = \"Microsoft SignalR/\";\r\n const majorAndMinor = version.split(\".\");\r\n userAgent += `${majorAndMinor[0]}.${majorAndMinor[1]}`;\r\n userAgent += ` (${version}; `;\r\n if (os && os !== \"\") {\r\n userAgent += `${os}; `;\r\n }\r\n else {\r\n userAgent += \"Unknown OS; \";\r\n }\r\n userAgent += `${runtime}`;\r\n if (runtimeVersion) {\r\n userAgent += `; ${runtimeVersion}`;\r\n }\r\n else {\r\n userAgent += \"; Unknown Runtime Version\";\r\n }\r\n userAgent += \")\";\r\n return userAgent;\r\n}\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getOsName() {\r\n if (Platform.isNode) {\r\n switch (process.platform) {\r\n case \"win32\":\r\n return \"Windows NT\";\r\n case \"darwin\":\r\n return \"macOS\";\r\n case \"linux\":\r\n return \"Linux\";\r\n default:\r\n return process.platform;\r\n }\r\n }\r\n else {\r\n return \"\";\r\n }\r\n}\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getRuntimeVersion() {\r\n if (Platform.isNode) {\r\n return process.versions.node;\r\n }\r\n return undefined;\r\n}\r\nfunction getRuntime() {\r\n if (Platform.isNode) {\r\n return \"NodeJS\";\r\n }\r\n else {\r\n return \"Browser\";\r\n }\r\n}\r\n/** @private */\r\nfunction getErrorString(e) {\r\n if (e.stack) {\r\n return e.stack;\r\n }\r\n else if (e.message) {\r\n return e.message;\r\n }\r\n return `${e}`;\r\n}\r\n/** @private */\r\nfunction getGlobalThis() {\r\n // globalThis is semi-new and not available in Node until v12\r\n if (typeof globalThis !== \"undefined\") {\r\n return globalThis;\r\n }\r\n if (typeof self !== \"undefined\") {\r\n return self;\r\n }\r\n if (typeof window !== \"undefined\") {\r\n return window;\r\n }\r\n if (typeof __webpack_require__.g !== \"undefined\") {\r\n return __webpack_require__.g;\r\n }\r\n throw new Error(\"could not find global\");\r\n}\r\n\n;// CONCATENATED MODULE: ./src/FetchHttpClient.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n\r\n\r\n\r\nclass FetchHttpClient extends HttpClient {\r\n constructor(logger) {\r\n super();\r\n this._logger = logger;\r\n if (typeof fetch === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = true ? require : 0;\r\n // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests\r\n this._jar = new (requireFunc(\"tough-cookie\")).CookieJar();\r\n this._fetchType = requireFunc(\"node-fetch\");\r\n // node-fetch doesn't have a nice API for getting and setting cookies\r\n // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one\r\n this._fetchType = requireFunc(\"fetch-cookie\")(this._fetchType, this._jar);\r\n }\r\n else {\r\n this._fetchType = fetch.bind(getGlobalThis());\r\n }\r\n if (typeof AbortController === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = true ? require : 0;\r\n // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide\r\n this._abortControllerType = requireFunc(\"abort-controller\");\r\n }\r\n else {\r\n this._abortControllerType = AbortController;\r\n }\r\n }\r\n /** @inheritDoc */\r\n async send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n throw new AbortError();\r\n }\r\n if (!request.method) {\r\n throw new Error(\"No method defined.\");\r\n }\r\n if (!request.url) {\r\n throw new Error(\"No url defined.\");\r\n }\r\n const abortController = new this._abortControllerType();\r\n let error;\r\n // Hook our abortSignal into the abort controller\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n abortController.abort();\r\n error = new AbortError();\r\n };\r\n }\r\n // If a timeout has been passed in, setup a timeout to call abort\r\n // Type needs to be any to fit window.setTimeout and NodeJS.setTimeout\r\n let timeoutId = null;\r\n if (request.timeout) {\r\n const msTimeout = request.timeout;\r\n timeoutId = setTimeout(() => {\r\n abortController.abort();\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n error = new TimeoutError();\r\n }, msTimeout);\r\n }\r\n if (request.content === \"\") {\r\n request.content = undefined;\r\n }\r\n if (request.content) {\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n request.headers = request.headers || {};\r\n if (isArrayBuffer(request.content)) {\r\n request.headers[\"Content-Type\"] = \"application/octet-stream\";\r\n }\r\n else {\r\n request.headers[\"Content-Type\"] = \"text/plain;charset=UTF-8\";\r\n }\r\n }\r\n let response;\r\n try {\r\n response = await this._fetchType(request.url, {\r\n body: request.content,\r\n cache: \"no-cache\",\r\n credentials: request.withCredentials === true ? \"include\" : \"same-origin\",\r\n headers: {\r\n \"X-Requested-With\": \"XMLHttpRequest\",\r\n ...request.headers,\r\n },\r\n method: request.method,\r\n mode: \"cors\",\r\n redirect: \"follow\",\r\n signal: abortController.signal,\r\n });\r\n }\r\n catch (e) {\r\n if (error) {\r\n throw error;\r\n }\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${e}.`);\r\n throw e;\r\n }\r\n finally {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n }\r\n if (!response.ok) {\r\n const errorMessage = await deserializeContent(response, \"text\");\r\n throw new HttpError(errorMessage || response.statusText, response.status);\r\n }\r\n const content = deserializeContent(response, request.responseType);\r\n const payload = await content;\r\n return new HttpResponse(response.status, response.statusText, payload);\r\n }\r\n getCookieString(url) {\r\n let cookies = \"\";\r\n if (Platform.isNode && this._jar) {\r\n // @ts-ignore: unused variable\r\n this._jar.getCookies(url, (e, c) => cookies = c.join(\"; \"));\r\n }\r\n return cookies;\r\n }\r\n}\r\nfunction deserializeContent(response, responseType) {\r\n let content;\r\n switch (responseType) {\r\n case \"arraybuffer\":\r\n content = response.arrayBuffer();\r\n break;\r\n case \"text\":\r\n content = response.text();\r\n break;\r\n case \"blob\":\r\n case \"document\":\r\n case \"json\":\r\n throw new Error(`${responseType} is not supported.`);\r\n default:\r\n content = response.text();\r\n break;\r\n }\r\n return content;\r\n}\r\n\n;// CONCATENATED MODULE: ./src/XhrHttpClient.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n\r\n\r\n\r\nclass XhrHttpClient extends HttpClient {\r\n constructor(logger) {\r\n super();\r\n this._logger = logger;\r\n }\r\n /** @inheritDoc */\r\n send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = request.withCredentials === undefined ? true : request.withCredentials;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n if (request.content === \"\") {\r\n request.content = undefined;\r\n }\r\n if (request.content) {\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n if (isArrayBuffer(request.content)) {\r\n xhr.setRequestHeader(\"Content-Type\", \"application/octet-stream\");\r\n }\r\n else {\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n }\r\n }\r\n const headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach((header) => {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n xhr.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n xhr.onload = () => {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n }\r\n else {\r\n reject(new HttpError(xhr.response || xhr.responseText || xhr.statusText, xhr.status));\r\n }\r\n };\r\n xhr.onerror = () => {\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${xhr.status}: ${xhr.statusText}.`);\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n xhr.ontimeout = () => {\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n reject(new TimeoutError());\r\n };\r\n xhr.send(request.content);\r\n });\r\n }\r\n}\r\n\n;// CONCATENATED MODULE: ./src/DefaultHttpClient.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n\r\n\r\n\r\n\r\n/** Default implementation of {@link @microsoft/signalr.HttpClient}. */\r\nclass DefaultHttpClient extends HttpClient {\r\n /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */\r\n constructor(logger) {\r\n super();\r\n if (typeof fetch !== \"undefined\" || Platform.isNode) {\r\n this._httpClient = new FetchHttpClient(logger);\r\n }\r\n else if (typeof XMLHttpRequest !== \"undefined\") {\r\n this._httpClient = new XhrHttpClient(logger);\r\n }\r\n else {\r\n throw new Error(\"No usable HttpClient found.\");\r\n }\r\n }\r\n /** @inheritDoc */\r\n send(request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return this._httpClient.send(request);\r\n }\r\n getCookieString(url) {\r\n return this._httpClient.getCookieString(url);\r\n }\r\n}\r\n\n;// CONCATENATED MODULE: ./src/TextMessageFormat.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// Not exported from index\r\n/** @private */\r\nclass TextMessageFormat {\r\n static write(output) {\r\n return `${output}${TextMessageFormat.RecordSeparator}`;\r\n }\r\n static parse(input) {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n const messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n }\r\n}\r\nTextMessageFormat.RecordSeparatorCode = 0x1e;\r\nTextMessageFormat.RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n\n;// CONCATENATED MODULE: ./src/HandshakeProtocol.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n\r\n/** @private */\r\nclass HandshakeProtocol {\r\n // Handshake request is always JSON\r\n writeHandshakeRequest(handshakeRequest) {\r\n return TextMessageFormat.write(JSON.stringify(handshakeRequest));\r\n }\r\n parseHandshakeResponse(data) {\r\n let messageData;\r\n let remainingData;\r\n if (isArrayBuffer(data)) {\r\n // Format is binary but still need to read JSON text from handshake response\r\n const binaryData = new Uint8Array(data);\r\n const separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = String.fromCharCode.apply(null, Array.prototype.slice.call(binaryData.slice(0, responseLength)));\r\n remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n }\r\n else {\r\n const textData = data;\r\n const separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n // At this point we should have just the single handshake message\r\n const messages = TextMessageFormat.parse(messageData);\r\n const response = JSON.parse(messages[0]);\r\n if (response.type) {\r\n throw new Error(\"Expected a handshake response from the server.\");\r\n }\r\n const responseMessage = response;\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n }\r\n}\r\n\n;// CONCATENATED MODULE: ./src/IHubProtocol.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n/** Defines the type of a Hub Message. */\r\nvar MessageType;\r\n(function (MessageType) {\r\n /** Indicates the message is an Invocation message and implements the {@link @microsoft/signalr.InvocationMessage} interface. */\r\n MessageType[MessageType[\"Invocation\"] = 1] = \"Invocation\";\r\n /** Indicates the message is a StreamItem message and implements the {@link @microsoft/signalr.StreamItemMessage} interface. */\r\n MessageType[MessageType[\"StreamItem\"] = 2] = \"StreamItem\";\r\n /** Indicates the message is a Completion message and implements the {@link @microsoft/signalr.CompletionMessage} interface. */\r\n MessageType[MessageType[\"Completion\"] = 3] = \"Completion\";\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @microsoft/signalr.StreamInvocationMessage} interface. */\r\n MessageType[MessageType[\"StreamInvocation\"] = 4] = \"StreamInvocation\";\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @microsoft/signalr.CancelInvocationMessage} interface. */\r\n MessageType[MessageType[\"CancelInvocation\"] = 5] = \"CancelInvocation\";\r\n /** Indicates the message is a Ping message and implements the {@link @microsoft/signalr.PingMessage} interface. */\r\n MessageType[MessageType[\"Ping\"] = 6] = \"Ping\";\r\n /** Indicates the message is a Close message and implements the {@link @microsoft/signalr.CloseMessage} interface. */\r\n MessageType[MessageType[\"Close\"] = 7] = \"Close\";\r\n})(MessageType || (MessageType = {}));\r\n\n;// CONCATENATED MODULE: ./src/Subject.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n/** Stream implementation to stream items to the server. */\r\nclass Subject {\r\n constructor() {\r\n this.observers = [];\r\n }\r\n next(item) {\r\n for (const observer of this.observers) {\r\n observer.next(item);\r\n }\r\n }\r\n error(err) {\r\n for (const observer of this.observers) {\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n }\r\n complete() {\r\n for (const observer of this.observers) {\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n }\r\n subscribe(observer) {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n }\r\n}\r\n\n;// CONCATENATED MODULE: ./src/HubConnection.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n\r\n\r\n\r\n\r\n\r\nconst DEFAULT_TIMEOUT_IN_MS = 30 * 1000;\r\nconst DEFAULT_PING_INTERVAL_IN_MS = 15 * 1000;\r\n/** Describes the current state of the {@link HubConnection} to the server. */\r\nvar HubConnectionState;\r\n(function (HubConnectionState) {\r\n /** The hub connection is disconnected. */\r\n HubConnectionState[\"Disconnected\"] = \"Disconnected\";\r\n /** The hub connection is connecting. */\r\n HubConnectionState[\"Connecting\"] = \"Connecting\";\r\n /** The hub connection is connected. */\r\n HubConnectionState[\"Connected\"] = \"Connected\";\r\n /** The hub connection is disconnecting. */\r\n HubConnectionState[\"Disconnecting\"] = \"Disconnecting\";\r\n /** The hub connection is reconnecting. */\r\n HubConnectionState[\"Reconnecting\"] = \"Reconnecting\";\r\n})(HubConnectionState || (HubConnectionState = {}));\r\n/** Represents a connection to a SignalR Hub. */\r\nclass HubConnection {\r\n constructor(connection, logger, protocol, reconnectPolicy) {\r\n this._nextKeepAlive = 0;\r\n this._freezeEventListener = () => {\r\n this._logger.log(LogLevel.Warning, \"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://docs.microsoft.com/aspnet/core/signalr/javascript-client#bsleep\");\r\n };\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;\r\n this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS;\r\n this._logger = logger;\r\n this._protocol = protocol;\r\n this.connection = connection;\r\n this._reconnectPolicy = reconnectPolicy;\r\n this._handshakeProtocol = new HandshakeProtocol();\r\n this.connection.onreceive = (data) => this._processIncomingData(data);\r\n this.connection.onclose = (error) => this._connectionClosed(error);\r\n this._callbacks = {};\r\n this._methods = {};\r\n this._closedCallbacks = [];\r\n this._reconnectingCallbacks = [];\r\n this._reconnectedCallbacks = [];\r\n this._invocationId = 0;\r\n this._receivedHandshakeResponse = false;\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n this._cachedPingMessage = this._protocol.writeMessage({ type: MessageType.Ping });\r\n }\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n static create(connection, logger, protocol, reconnectPolicy) {\r\n return new HubConnection(connection, logger, protocol, reconnectPolicy);\r\n }\r\n /** Indicates the state of the {@link HubConnection} to the server. */\r\n get state() {\r\n return this._connectionState;\r\n }\r\n /** Represents the connection id of the {@link HubConnection} on the server. The connection id will be null when the connection is either\r\n * in the disconnected state or if the negotiation step was skipped.\r\n */\r\n get connectionId() {\r\n return this.connection ? (this.connection.connectionId || null) : null;\r\n }\r\n /** Indicates the url of the {@link HubConnection} to the server. */\r\n get baseUrl() {\r\n return this.connection.baseUrl || \"\";\r\n }\r\n /**\r\n * Sets a new url for the HubConnection. Note that the url can only be changed when the connection is in either the Disconnected or\r\n * Reconnecting states.\r\n * @param {string} url The url to connect to.\r\n */\r\n set baseUrl(url) {\r\n if (this._connectionState !== HubConnectionState.Disconnected && this._connectionState !== HubConnectionState.Reconnecting) {\r\n throw new Error(\"The HubConnection must be in the Disconnected or Reconnecting state to change the url.\");\r\n }\r\n if (!url) {\r\n throw new Error(\"The HubConnection url must be a valid url.\");\r\n }\r\n this.connection.baseUrl = url;\r\n }\r\n /** Starts the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\r\n start() {\r\n this._startPromise = this._startWithStateTransitions();\r\n return this._startPromise;\r\n }\r\n async _startWithStateTransitions() {\r\n if (this._connectionState !== HubConnectionState.Disconnected) {\r\n return Promise.reject(new Error(\"Cannot start a HubConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n this._connectionState = HubConnectionState.Connecting;\r\n this._logger.log(LogLevel.Debug, \"Starting HubConnection.\");\r\n try {\r\n await this._startInternal();\r\n if (Platform.isBrowser) {\r\n // Log when the browser freezes the tab so users know why their connection unexpectedly stopped working\r\n window.document.addEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n this._connectionState = HubConnectionState.Connected;\r\n this._connectionStarted = true;\r\n this._logger.log(LogLevel.Debug, \"HubConnection connected successfully.\");\r\n }\r\n catch (e) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._logger.log(LogLevel.Debug, `HubConnection failed to start successfully because of error '${e}'.`);\r\n return Promise.reject(e);\r\n }\r\n }\r\n async _startInternal() {\r\n this._stopDuringStartError = undefined;\r\n this._receivedHandshakeResponse = false;\r\n // Set up the promise before any connection is (re)started otherwise it could race with received messages\r\n const handshakePromise = new Promise((resolve, reject) => {\r\n this._handshakeResolver = resolve;\r\n this._handshakeRejecter = reject;\r\n });\r\n await this.connection.start(this._protocol.transferFormat);\r\n try {\r\n const handshakeRequest = {\r\n protocol: this._protocol.name,\r\n version: this._protocol.version,\r\n };\r\n this._logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(handshakeRequest));\r\n this._logger.log(LogLevel.Information, `Using HubProtocol '${this._protocol.name}'.`);\r\n // defensively cleanup timeout in case we receive a message from the server before we finish start\r\n this._cleanupTimeout();\r\n this._resetTimeoutPeriod();\r\n this._resetKeepAliveInterval();\r\n await handshakePromise;\r\n // It's important to check the stopDuringStartError instead of just relying on the handshakePromise\r\n // being rejected on close, because this continuation can run after both the handshake completed successfully\r\n // and the connection was closed.\r\n if (this._stopDuringStartError) {\r\n // It's important to throw instead of returning a rejected promise, because we don't want to allow any state\r\n // transitions to occur between now and the calling code observing the exceptions. Returning a rejected promise\r\n // will cause the calling continuation to get scheduled to run later.\r\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\r\n throw this._stopDuringStartError;\r\n }\r\n if (!this.connection.features.inherentKeepAlive) {\r\n await this._sendMessage(this._cachedPingMessage);\r\n }\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Debug, `Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`);\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\r\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\r\n await this.connection.stop(e);\r\n throw e;\r\n }\r\n }\r\n /** Stops the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\r\n async stop() {\r\n // Capture the start promise before the connection might be restarted in an onclose callback.\r\n const startPromise = this._startPromise;\r\n this._stopPromise = this._stopInternal();\r\n await this._stopPromise;\r\n try {\r\n // Awaiting undefined continues immediately\r\n await startPromise;\r\n }\r\n catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n }\r\n _stopInternal(error) {\r\n if (this._connectionState === HubConnectionState.Disconnected) {\r\n this._logger.log(LogLevel.Debug, `Call to HubConnection.stop(${error}) ignored because it is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n this._connectionState = HubConnectionState.Disconnecting;\r\n this._logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\r\n if (this._reconnectDelayHandle) {\r\n // We're in a reconnect delay which means the underlying connection is currently already stopped.\r\n // Just clear the handle to stop the reconnect loop (which no one is waiting on thankfully) and\r\n // fire the onclose callbacks.\r\n this._logger.log(LogLevel.Debug, \"Connection stopped during reconnect delay. Done reconnecting.\");\r\n clearTimeout(this._reconnectDelayHandle);\r\n this._reconnectDelayHandle = undefined;\r\n this._completeClose();\r\n return Promise.resolve();\r\n }\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n this._stopDuringStartError = error || new AbortError(\"The connection was stopped before the hub handshake could complete.\");\r\n // HttpConnection.stop() should not complete until after either HttpConnection.start() fails\r\n // or the onclose callback is invoked. The onclose callback will transition the HubConnection\r\n // to the disconnected state if need be before HttpConnection.stop() completes.\r\n return this.connection.stop(error);\r\n }\r\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult} An object that yields results from the server as they are received.\r\n */\r\n stream(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createStreamInvocation(methodName, args, streamIds);\r\n // eslint-disable-next-line prefer-const\r\n let promiseQueue;\r\n const subject = new Subject();\r\n subject.cancelCallback = () => {\r\n const cancelInvocation = this._createCancelInvocation(invocationDescriptor.invocationId);\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n return promiseQueue.then(() => {\r\n return this._sendWithProtocol(cancelInvocation);\r\n });\r\n };\r\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent, error) => {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n }\r\n else {\r\n subject.complete();\r\n }\r\n }\r\n else {\r\n subject.next((invocationEvent.item));\r\n }\r\n }\r\n };\r\n promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n subject.error(e);\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n });\r\n this._launchStreams(streams, promiseQueue);\r\n return subject;\r\n }\r\n _sendMessage(message) {\r\n this._resetKeepAliveInterval();\r\n return this.connection.send(message);\r\n }\r\n /**\r\n * Sends a js object to the server.\r\n * @param message The js object to serialize and send.\r\n */\r\n _sendWithProtocol(message) {\r\n return this._sendMessage(this._protocol.writeMessage(message));\r\n }\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n send(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const sendPromise = this._sendWithProtocol(this._createInvocation(methodName, args, true, streamIds));\r\n this._launchStreams(streams, sendPromise);\r\n return sendPromise;\r\n }\r\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\r\n invoke(methodName, ...args) {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createInvocation(methodName, args, false, streamIds);\r\n const p = new Promise((resolve, reject) => {\r\n // invocationId will always have a value for a non-blocking invocation\r\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent, error) => {\r\n if (error) {\r\n reject(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n reject(new Error(invocationEvent.error));\r\n }\r\n else {\r\n resolve(invocationEvent.result);\r\n }\r\n }\r\n else {\r\n reject(new Error(`Unexpected message type: ${invocationEvent.type}`));\r\n }\r\n }\r\n };\r\n const promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n reject(e);\r\n // invocationId will always have a value for a non-blocking invocation\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n });\r\n this._launchStreams(streams, promiseQueue);\r\n });\r\n return p;\r\n }\r\n on(methodName, newMethod) {\r\n if (!methodName || !newMethod) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n if (!this._methods[methodName]) {\r\n this._methods[methodName] = [];\r\n }\r\n // Preventing adding the same handler multiple times.\r\n if (this._methods[methodName].indexOf(newMethod) !== -1) {\r\n return;\r\n }\r\n this._methods[methodName].push(newMethod);\r\n }\r\n off(methodName, method) {\r\n if (!methodName) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n const handlers = this._methods[methodName];\r\n if (!handlers) {\r\n return;\r\n }\r\n if (method) {\r\n const removeIdx = handlers.indexOf(method);\r\n if (removeIdx !== -1) {\r\n handlers.splice(removeIdx, 1);\r\n if (handlers.length === 0) {\r\n delete this._methods[methodName];\r\n }\r\n }\r\n }\r\n else {\r\n delete this._methods[methodName];\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\r\n onclose(callback) {\r\n if (callback) {\r\n this._closedCallbacks.push(callback);\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection starts reconnecting.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection starts reconnecting. Optionally receives a single argument containing the error that caused the connection to start reconnecting (if any).\r\n */\r\n onreconnecting(callback) {\r\n if (callback) {\r\n this._reconnectingCallbacks.push(callback);\r\n }\r\n }\r\n /** Registers a handler that will be invoked when the connection successfully reconnects.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection successfully reconnects.\r\n */\r\n onreconnected(callback) {\r\n if (callback) {\r\n this._reconnectedCallbacks.push(callback);\r\n }\r\n }\r\n _processIncomingData(data) {\r\n this._cleanupTimeout();\r\n if (!this._receivedHandshakeResponse) {\r\n data = this._processHandshakeResponse(data);\r\n this._receivedHandshakeResponse = true;\r\n }\r\n // Data may have all been read when processing handshake response\r\n if (data) {\r\n // Parse the messages\r\n const messages = this._protocol.parseMessages(data, this._logger);\r\n for (const message of messages) {\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._invokeClientMethod(message);\r\n break;\r\n case MessageType.StreamItem:\r\n case MessageType.Completion: {\r\n const callback = this._callbacks[message.invocationId];\r\n if (callback) {\r\n if (message.type === MessageType.Completion) {\r\n delete this._callbacks[message.invocationId];\r\n }\r\n try {\r\n callback(message);\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream callback threw error: ${getErrorString(e)}`);\r\n }\r\n }\r\n break;\r\n }\r\n case MessageType.Ping:\r\n // Don't care about pings\r\n break;\r\n case MessageType.Close: {\r\n this._logger.log(LogLevel.Information, \"Close message received from server.\");\r\n const error = message.error ? new Error(\"Server returned an error on close: \" + message.error) : undefined;\r\n if (message.allowReconnect === true) {\r\n // It feels wrong not to await connection.stop() here, but processIncomingData is called as part of an onreceive callback which is not async,\r\n // this is already the behavior for serverTimeout(), and HttpConnection.Stop() should catch and log all possible exceptions.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(error);\r\n }\r\n else {\r\n // We cannot await stopInternal() here, but subsequent calls to stop() will await this if stopInternal() is still ongoing.\r\n this._stopPromise = this._stopInternal(error);\r\n }\r\n break;\r\n }\r\n default:\r\n this._logger.log(LogLevel.Warning, `Invalid message type: ${message.type}.`);\r\n break;\r\n }\r\n }\r\n }\r\n this._resetTimeoutPeriod();\r\n }\r\n _processHandshakeResponse(data) {\r\n let responseMessage;\r\n let remainingData;\r\n try {\r\n [remainingData, responseMessage] = this._handshakeProtocol.parseHandshakeResponse(data);\r\n }\r\n catch (e) {\r\n const message = \"Error parsing handshake response: \" + e;\r\n this._logger.log(LogLevel.Error, message);\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n const message = \"Server returned handshake error: \" + responseMessage.error;\r\n this._logger.log(LogLevel.Error, message);\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n this._handshakeResolver();\r\n return remainingData;\r\n }\r\n _resetKeepAliveInterval() {\r\n if (this.connection.features.inherentKeepAlive) {\r\n return;\r\n }\r\n // Set the time we want the next keep alive to be sent\r\n // Timer will be setup on next message receive\r\n this._nextKeepAlive = new Date().getTime() + this.keepAliveIntervalInMilliseconds;\r\n this._cleanupPingTimer();\r\n }\r\n _resetTimeoutPeriod() {\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this._timeoutHandle = setTimeout(() => this.serverTimeout(), this.serverTimeoutInMilliseconds);\r\n // Set keepAlive timer if there isn't one\r\n if (this._pingServerHandle === undefined) {\r\n let nextPing = this._nextKeepAlive - new Date().getTime();\r\n if (nextPing < 0) {\r\n nextPing = 0;\r\n }\r\n // The timer needs to be set from a networking callback to avoid Chrome timer throttling from causing timers to run once a minute\r\n this._pingServerHandle = setTimeout(async () => {\r\n if (this._connectionState === HubConnectionState.Connected) {\r\n try {\r\n await this._sendMessage(this._cachedPingMessage);\r\n }\r\n catch {\r\n // We don't care about the error. It should be seen elsewhere in the client.\r\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\r\n this._cleanupPingTimer();\r\n }\r\n }\r\n }, nextPing);\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n serverTimeout() {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise. This could trigger reconnecting.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\r\n }\r\n async _invokeClientMethod(invocationMessage) {\r\n const methodName = invocationMessage.target.toLowerCase();\r\n const methods = this._methods[methodName];\r\n if (!methods) {\r\n this._logger.log(LogLevel.Warning, `No client method with the name '${methodName}' found.`);\r\n // No handlers provided by client but the server is expecting a response still, so we send an error\r\n if (invocationMessage.invocationId) {\r\n this._logger.log(LogLevel.Warning, `No result given for '${methodName}' method and invocation ID '${invocationMessage.invocationId}'.`);\r\n await this._sendWithProtocol(this._createCompletionMessage(invocationMessage.invocationId, \"Client didn't provide a result.\", null));\r\n }\r\n return;\r\n }\r\n // Avoid issues with handlers removing themselves thus modifying the list while iterating through it\r\n const methodsCopy = methods.slice();\r\n // Server expects a response\r\n const expectsResponse = invocationMessage.invocationId ? true : false;\r\n // We preserve the last result or exception but still call all handlers\r\n let res;\r\n let exception;\r\n let completionMessage;\r\n for (const m of methodsCopy) {\r\n try {\r\n const prevRes = res;\r\n res = await m.apply(this, invocationMessage.arguments);\r\n if (expectsResponse && res && prevRes) {\r\n this._logger.log(LogLevel.Error, `Multiple results provided for '${methodName}'. Sending error to server.`);\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, `Client provided multiple results.`, null);\r\n }\r\n // Ignore exception if we got a result after, the exception will be logged\r\n exception = undefined;\r\n }\r\n catch (e) {\r\n exception = e;\r\n this._logger.log(LogLevel.Error, `A callback for the method '${methodName}' threw error '${e}'.`);\r\n }\r\n }\r\n if (completionMessage) {\r\n await this._sendWithProtocol(completionMessage);\r\n }\r\n else if (expectsResponse) {\r\n // If there is an exception that means either no result was given or a handler after a result threw\r\n if (exception) {\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, `${exception}`, null);\r\n }\r\n else if (res !== undefined) {\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, null, res);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Warning, `No result given for '${methodName}' method and invocation ID '${invocationMessage.invocationId}'.`);\r\n // Client didn't provide a result or throw from a handler, server expects a response so we send an error\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId, \"Client didn't provide a result.\", null);\r\n }\r\n await this._sendWithProtocol(completionMessage);\r\n }\r\n else {\r\n if (res) {\r\n this._logger.log(LogLevel.Error, `Result given for '${methodName}' method but server is not expecting a result.`);\r\n }\r\n }\r\n }\r\n _connectionClosed(error) {\r\n this._logger.log(LogLevel.Debug, `HubConnection.connectionClosed(${error}) called while in state ${this._connectionState}.`);\r\n // Triggering this.handshakeRejecter is insufficient because it could already be resolved without the continuation having run yet.\r\n this._stopDuringStartError = this._stopDuringStartError || error || new AbortError(\"The underlying connection was closed before the hub handshake could complete.\");\r\n // If the handshake is in progress, start will be waiting for the handshake promise, so we complete it.\r\n // If it has already completed, this should just noop.\r\n if (this._handshakeResolver) {\r\n this._handshakeResolver();\r\n }\r\n this._cancelCallbacksWithError(error || new Error(\"Invocation canceled due to the underlying connection being closed.\"));\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._completeClose(error);\r\n }\r\n else if (this._connectionState === HubConnectionState.Connected && this._reconnectPolicy) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._reconnect(error);\r\n }\r\n else if (this._connectionState === HubConnectionState.Connected) {\r\n this._completeClose(error);\r\n }\r\n // If none of the above if conditions were true were called the HubConnection must be in either:\r\n // 1. The Connecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail it.\r\n // 2. The Reconnecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail the current reconnect attempt\r\n // and potentially continue the reconnect() loop.\r\n // 3. The Disconnected state in which case we're already done.\r\n }\r\n _completeClose(error) {\r\n if (this._connectionStarted) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n if (Platform.isBrowser) {\r\n window.document.removeEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n try {\r\n this._closedCallbacks.forEach((c) => c.apply(this, [error]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onclose callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n async _reconnect(error) {\r\n const reconnectStartTime = Date.now();\r\n let previousReconnectAttempts = 0;\r\n let retryError = error !== undefined ? error : new Error(\"Attempting to reconnect due to a unknown error.\");\r\n let nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, 0, retryError);\r\n if (nextRetryDelay === null) {\r\n this._logger.log(LogLevel.Debug, \"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.\");\r\n this._completeClose(error);\r\n return;\r\n }\r\n this._connectionState = HubConnectionState.Reconnecting;\r\n if (error) {\r\n this._logger.log(LogLevel.Information, `Connection reconnecting because of error '${error}'.`);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Information, \"Connection reconnecting.\");\r\n }\r\n if (this._reconnectingCallbacks.length !== 0) {\r\n try {\r\n this._reconnectingCallbacks.forEach((c) => c.apply(this, [error]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnecting callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n // Exit early if an onreconnecting callback called connection.stop().\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.\");\r\n return;\r\n }\r\n }\r\n while (nextRetryDelay !== null) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt number ${previousReconnectAttempts} will start in ${nextRetryDelay} ms.`);\r\n await new Promise((resolve) => {\r\n this._reconnectDelayHandle = setTimeout(resolve, nextRetryDelay);\r\n });\r\n this._reconnectDelayHandle = undefined;\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state during reconnect delay. Done reconnecting.\");\r\n return;\r\n }\r\n try {\r\n await this._startInternal();\r\n this._connectionState = HubConnectionState.Connected;\r\n this._logger.log(LogLevel.Information, \"HubConnection reconnected successfully.\");\r\n if (this._reconnectedCallbacks.length !== 0) {\r\n try {\r\n this._reconnectedCallbacks.forEach((c) => c.apply(this, [this.connection.connectionId]));\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`);\r\n }\r\n }\r\n return;\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt failed because of error '${e}'.`);\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, `Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`);\r\n // The TypeScript compiler thinks that connectionState must be Connected here. The TypeScript compiler is wrong.\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._completeClose();\r\n }\r\n return;\r\n }\r\n retryError = e instanceof Error ? e : new Error(e.toString());\r\n nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, Date.now() - reconnectStartTime, retryError);\r\n }\r\n }\r\n this._logger.log(LogLevel.Information, `Reconnect retries have been exhausted after ${Date.now() - reconnectStartTime} ms and ${previousReconnectAttempts} failed attempts. Connection disconnecting.`);\r\n this._completeClose();\r\n }\r\n _getNextRetryDelay(previousRetryCount, elapsedMilliseconds, retryReason) {\r\n try {\r\n return this._reconnectPolicy.nextRetryDelayInMilliseconds({\r\n elapsedMilliseconds,\r\n previousRetryCount,\r\n retryReason,\r\n });\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `IRetryPolicy.nextRetryDelayInMilliseconds(${previousRetryCount}, ${elapsedMilliseconds}) threw error '${e}'.`);\r\n return null;\r\n }\r\n }\r\n _cancelCallbacksWithError(error) {\r\n const callbacks = this._callbacks;\r\n this._callbacks = {};\r\n Object.keys(callbacks)\r\n .forEach((key) => {\r\n const callback = callbacks[key];\r\n try {\r\n callback(null, error);\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream 'error' callback called with '${error}' threw error: ${getErrorString(e)}`);\r\n }\r\n });\r\n }\r\n _cleanupPingTimer() {\r\n if (this._pingServerHandle) {\r\n clearTimeout(this._pingServerHandle);\r\n this._pingServerHandle = undefined;\r\n }\r\n }\r\n _cleanupTimeout() {\r\n if (this._timeoutHandle) {\r\n clearTimeout(this._timeoutHandle);\r\n }\r\n }\r\n _createInvocation(methodName, args, nonblocking, streamIds) {\r\n if (nonblocking) {\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n else {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n }\r\n _launchStreams(streams, promiseQueue) {\r\n if (streams.length === 0) {\r\n return;\r\n }\r\n // Synchronize stream data so they arrive in-order on the server\r\n if (!promiseQueue) {\r\n promiseQueue = Promise.resolve();\r\n }\r\n // We want to iterate over the keys, since the keys are the stream ids\r\n // eslint-disable-next-line guard-for-in\r\n for (const streamId in streams) {\r\n streams[streamId].subscribe({\r\n complete: () => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId)));\r\n },\r\n error: (err) => {\r\n let message;\r\n if (err instanceof Error) {\r\n message = err.message;\r\n }\r\n else if (err && err.toString) {\r\n message = err.toString();\r\n }\r\n else {\r\n message = \"Unknown error\";\r\n }\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId, message)));\r\n },\r\n next: (item) => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createStreamItemMessage(streamId, item)));\r\n },\r\n });\r\n }\r\n }\r\n _replaceStreamingParams(args) {\r\n const streams = [];\r\n const streamIds = [];\r\n for (let i = 0; i < args.length; i++) {\r\n const argument = args[i];\r\n if (this._isObservable(argument)) {\r\n const streamId = this._invocationId;\r\n this._invocationId++;\r\n // Store the stream for later use\r\n streams[streamId] = argument;\r\n streamIds.push(streamId.toString());\r\n // remove stream from args\r\n args.splice(i, 1);\r\n }\r\n }\r\n return [streams, streamIds];\r\n }\r\n _isObservable(arg) {\r\n // This allows other stream implementations to just work (like rxjs)\r\n return arg && arg.subscribe && typeof arg.subscribe === \"function\";\r\n }\r\n _createStreamInvocation(methodName, args, streamIds) {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n }\r\n _createCancelInvocation(id) {\r\n return {\r\n invocationId: id,\r\n type: MessageType.CancelInvocation,\r\n };\r\n }\r\n _createStreamItemMessage(id, item) {\r\n return {\r\n invocationId: id,\r\n item,\r\n type: MessageType.StreamItem,\r\n };\r\n }\r\n _createCompletionMessage(id, error, result) {\r\n if (error) {\r\n return {\r\n error,\r\n invocationId: id,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n return {\r\n invocationId: id,\r\n result,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n}\r\n\n;// CONCATENATED MODULE: ./src/DefaultReconnectPolicy.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// 0, 2, 10, 30 second delays before reconnect attempts.\r\nconst DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];\r\n/** @private */\r\nclass DefaultReconnectPolicy {\r\n constructor(retryDelays) {\r\n this._retryDelays = retryDelays !== undefined ? [...retryDelays, null] : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;\r\n }\r\n nextRetryDelayInMilliseconds(retryContext) {\r\n return this._retryDelays[retryContext.previousRetryCount];\r\n }\r\n}\r\n\n;// CONCATENATED MODULE: ./src/HeaderNames.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\nclass HeaderNames {\r\n}\r\nHeaderNames.Authorization = \"Authorization\";\r\nHeaderNames.Cookie = \"Cookie\";\r\n\n;// CONCATENATED MODULE: ./src/AccessTokenHttpClient.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n\r\n/** @private */\r\nclass AccessTokenHttpClient extends HttpClient {\r\n constructor(innerClient, accessTokenFactory) {\r\n super();\r\n this._innerClient = innerClient;\r\n this._accessTokenFactory = accessTokenFactory;\r\n }\r\n async send(request) {\r\n let allowRetry = true;\r\n if (this._accessTokenFactory && (!this._accessToken || (request.url && request.url.indexOf(\"/negotiate?\") > 0))) {\r\n // don't retry if the request is a negotiate or if we just got a potentially new token from the access token factory\r\n allowRetry = false;\r\n this._accessToken = await this._accessTokenFactory();\r\n }\r\n this._setAuthorizationHeader(request);\r\n const response = await this._innerClient.send(request);\r\n if (allowRetry && response.statusCode === 401 && this._accessTokenFactory) {\r\n this._accessToken = await this._accessTokenFactory();\r\n this._setAuthorizationHeader(request);\r\n return await this._innerClient.send(request);\r\n }\r\n return response;\r\n }\r\n _setAuthorizationHeader(request) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (this._accessToken) {\r\n request.headers[HeaderNames.Authorization] = `Bearer ${this._accessToken}`;\r\n }\r\n // don't remove the header if there isn't an access token factory, the user manually added the header in this case\r\n else if (this._accessTokenFactory) {\r\n if (request.headers[HeaderNames.Authorization]) {\r\n delete request.headers[HeaderNames.Authorization];\r\n }\r\n }\r\n }\r\n getCookieString(url) {\r\n return this._innerClient.getCookieString(url);\r\n }\r\n}\r\n\n;// CONCATENATED MODULE: ./src/ITransport.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nvar HttpTransportType;\r\n(function (HttpTransportType) {\r\n /** Specifies no transport preference. */\r\n HttpTransportType[HttpTransportType[\"None\"] = 0] = \"None\";\r\n /** Specifies the WebSockets transport. */\r\n HttpTransportType[HttpTransportType[\"WebSockets\"] = 1] = \"WebSockets\";\r\n /** Specifies the Server-Sent Events transport. */\r\n HttpTransportType[HttpTransportType[\"ServerSentEvents\"] = 2] = \"ServerSentEvents\";\r\n /** Specifies the Long Polling transport. */\r\n HttpTransportType[HttpTransportType[\"LongPolling\"] = 4] = \"LongPolling\";\r\n})(HttpTransportType || (HttpTransportType = {}));\r\n/** Specifies the transfer format for a connection. */\r\nvar TransferFormat;\r\n(function (TransferFormat) {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Text\"] = 1] = \"Text\";\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Binary\"] = 2] = \"Binary\";\r\n})(TransferFormat || (TransferFormat = {}));\r\n\n;// CONCATENATED MODULE: ./src/AbortController.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n// Not exported from index.\r\n/** @private */\r\nclass AbortController_AbortController {\r\n constructor() {\r\n this._isAborted = false;\r\n this.onabort = null;\r\n }\r\n abort() {\r\n if (!this._isAborted) {\r\n this._isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n }\r\n get signal() {\r\n return this;\r\n }\r\n get aborted() {\r\n return this._isAborted;\r\n }\r\n}\r\n\n;// CONCATENATED MODULE: ./src/LongPollingTransport.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n\r\n\r\n\r\n\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nclass LongPollingTransport {\r\n constructor(httpClient, logger, options) {\r\n this._httpClient = httpClient;\r\n this._logger = logger;\r\n this._pollAbort = new AbortController_AbortController();\r\n this._options = options;\r\n this._running = false;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n get pollAborted() {\r\n return this._pollAbort.aborted;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._url = url;\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n const [name, value] = getUserAgentHeader();\r\n const headers = { [name]: value, ...this._options.headers };\r\n const pollOptions = {\r\n abortSignal: this._pollAbort.signal,\r\n headers,\r\n timeout: 100000,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n // Make initial long polling request\r\n // Server uses first long polling request to finish initializing connection and it returns without data\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n }\r\n else {\r\n this._running = true;\r\n }\r\n this._receiving = this._poll(this._url, pollOptions);\r\n }\r\n async _poll(url, pollOptions) {\r\n try {\r\n while (this._running) {\r\n try {\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode === 204) {\r\n this._logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n this._running = false;\r\n }\r\n else if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n // Unexpected status code\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n }\r\n else {\r\n // Process the response\r\n if (response.content) {\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) data received. ${getDataDetail(response.content, this._options.logMessageContent)}.`);\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n }\r\n else {\r\n // This is another way timeout manifest.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n }\r\n catch (e) {\r\n if (!this._running) {\r\n // Log but disregard errors that occur after stopping\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) Poll errored after shutdown: ${e.message}`);\r\n }\r\n else {\r\n if (e instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n else {\r\n // Close the connection with the error as the result.\r\n this._closeError = e;\r\n this._running = false;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this._raiseOnClose();\r\n }\r\n }\r\n }\r\n async send(data) {\r\n if (!this._running) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"LongPolling\", this._httpClient, this._url, data, this._options);\r\n }\r\n async stop() {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this._running = false;\r\n this._pollAbort.abort();\r\n try {\r\n await this._receiving;\r\n // Send DELETE to clean up long polling on the server\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) sending DELETE request to ${this._url}.`);\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n const deleteOptions = {\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n await this._httpClient.delete(this._url, deleteOptions);\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request sent.\");\r\n }\r\n finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this._raiseOnClose();\r\n }\r\n }\r\n _raiseOnClose() {\r\n if (this.onclose) {\r\n let logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this._closeError) {\r\n logMessage += \" Error: \" + this._closeError;\r\n }\r\n this._logger.log(LogLevel.Trace, logMessage);\r\n this.onclose(this._closeError);\r\n }\r\n }\r\n}\r\n\n;// CONCATENATED MODULE: ./src/ServerSentEventsTransport.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n\r\n\r\n/** @private */\r\nclass ServerSentEventsTransport {\r\n constructor(httpClient, accessToken, logger, options) {\r\n this._httpClient = httpClient;\r\n this._accessToken = accessToken;\r\n this._logger = logger;\r\n this._options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n // set url before accessTokenFactory because this._url is only for send and we set the auth header instead of the query string for send\r\n this._url = url;\r\n if (this._accessToken) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(this._accessToken)}`;\r\n }\r\n return new Promise((resolve, reject) => {\r\n let opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n let eventSource;\r\n if (Platform.isBrowser || Platform.isWebWorker) {\r\n eventSource = new this._options.EventSource(url, { withCredentials: this._options.withCredentials });\r\n }\r\n else {\r\n // Non-browser passes cookies via the dictionary\r\n const cookies = this._httpClient.getCookieString(url);\r\n const headers = {};\r\n headers.Cookie = cookies;\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n eventSource = new this._options.EventSource(url, { withCredentials: this._options.withCredentials, headers: { ...headers, ...this._options.headers } });\r\n }\r\n try {\r\n eventSource.onmessage = (e) => {\r\n if (this.onreceive) {\r\n try {\r\n this._logger.log(LogLevel.Trace, `(SSE transport) data received. ${getDataDetail(e.data, this._options.logMessageContent)}.`);\r\n this.onreceive(e.data);\r\n }\r\n catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n // @ts-ignore: not using event on purpose\r\n eventSource.onerror = (e) => {\r\n // EventSource doesn't give any useful information about server side closes.\r\n if (opened) {\r\n this._close();\r\n }\r\n else {\r\n reject(new Error(\"EventSource failed to connect. The connection could not be found on the server,\"\r\n + \" either the connection ID is not present on the server, or a proxy is refusing/buffering the connection.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\"));\r\n }\r\n };\r\n eventSource.onopen = () => {\r\n this._logger.log(LogLevel.Information, `SSE connected to ${this._url}`);\r\n this._eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n });\r\n }\r\n async send(data) {\r\n if (!this._eventSource) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"SSE\", this._httpClient, this._url, data, this._options);\r\n }\r\n stop() {\r\n this._close();\r\n return Promise.resolve();\r\n }\r\n _close(e) {\r\n if (this._eventSource) {\r\n this._eventSource.close();\r\n this._eventSource = undefined;\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n }\r\n}\r\n\n;// CONCATENATED MODULE: ./src/WebSocketTransport.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n\r\n\r\n\r\n/** @private */\r\nclass WebSocketTransport {\r\n constructor(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor, headers) {\r\n this._logger = logger;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logMessageContent = logMessageContent;\r\n this._webSocketConstructor = webSocketConstructor;\r\n this._httpClient = httpClient;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n this._headers = headers;\r\n }\r\n async connect(url, transferFormat) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n let token;\r\n if (this._accessTokenFactory) {\r\n token = await this._accessTokenFactory();\r\n }\r\n return new Promise((resolve, reject) => {\r\n url = url.replace(/^http/, \"ws\");\r\n let webSocket;\r\n const cookies = this._httpClient.getCookieString(url);\r\n let opened = false;\r\n if (Platform.isNode || Platform.isReactNative) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n if (token) {\r\n headers[HeaderNames.Authorization] = `Bearer ${token}`;\r\n }\r\n if (cookies) {\r\n headers[HeaderNames.Cookie] = cookies;\r\n }\r\n // Only pass headers when in non-browser environments\r\n webSocket = new this._webSocketConstructor(url, undefined, {\r\n headers: { ...headers, ...this._headers },\r\n });\r\n }\r\n else {\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\r\n }\r\n }\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new this._webSocketConstructor(url);\r\n }\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n webSocket.onopen = (_event) => {\r\n this._logger.log(LogLevel.Information, `WebSocket connected to ${url}.`);\r\n this._webSocket = webSocket;\r\n opened = true;\r\n resolve();\r\n };\r\n webSocket.onerror = (event) => {\r\n let error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = \"There was an error with the transport\";\r\n }\r\n this._logger.log(LogLevel.Information, `(WebSockets transport) ${error}.`);\r\n };\r\n webSocket.onmessage = (message) => {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) data received. ${getDataDetail(message.data, this._logMessageContent)}.`);\r\n if (this.onreceive) {\r\n try {\r\n this.onreceive(message.data);\r\n }\r\n catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n webSocket.onclose = (event) => {\r\n // Don't call close handler if connection was never established\r\n // We'll reject the connect call instead\r\n if (opened) {\r\n this._close(event);\r\n }\r\n else {\r\n let error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n else {\r\n error = \"WebSocket failed to connect. The connection could not be found on the server,\"\r\n + \" either the endpoint may not be a SignalR endpoint,\"\r\n + \" the connection ID is not present on the server, or there is a proxy blocking WebSockets.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\";\r\n }\r\n reject(new Error(error));\r\n }\r\n };\r\n });\r\n }\r\n send(data) {\r\n if (this._webSocket && this._webSocket.readyState === this._webSocketConstructor.OPEN) {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) sending data. ${getDataDetail(data, this._logMessageContent)}.`);\r\n this._webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n }\r\n stop() {\r\n if (this._webSocket) {\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this._close(undefined);\r\n }\r\n return Promise.resolve();\r\n }\r\n _close(event) {\r\n // webSocket will be null if the transport did not start successfully\r\n if (this._webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this._webSocket.onclose = () => { };\r\n this._webSocket.onmessage = () => { };\r\n this._webSocket.onerror = () => { };\r\n this._webSocket.close();\r\n this._webSocket = undefined;\r\n }\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (this.onclose) {\r\n if (this._isCloseEvent(event) && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(`WebSocket closed with status code: ${event.code} (${event.reason || \"no reason given\"}).`));\r\n }\r\n else if (event instanceof Error) {\r\n this.onclose(event);\r\n }\r\n else {\r\n this.onclose();\r\n }\r\n }\r\n }\r\n _isCloseEvent(event) {\r\n return event && typeof event.wasClean === \"boolean\" && typeof event.code === \"number\";\r\n }\r\n}\r\n\n;// CONCATENATED MODULE: ./src/HttpConnection.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nconst MAX_REDIRECTS = 100;\r\n/** @private */\r\nclass HttpConnection {\r\n constructor(url, options = {}) {\r\n this._stopPromiseResolver = () => { };\r\n this.features = {};\r\n this._negotiateVersion = 1;\r\n Arg.isRequired(url, \"url\");\r\n this._logger = createLogger(options.logger);\r\n this.baseUrl = this._resolveUrl(url);\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent === undefined ? false : options.logMessageContent;\r\n if (typeof options.withCredentials === \"boolean\" || options.withCredentials === undefined) {\r\n options.withCredentials = options.withCredentials === undefined ? true : options.withCredentials;\r\n }\r\n else {\r\n throw new Error(\"withCredentials option was not a 'boolean' or 'undefined' value\");\r\n }\r\n options.timeout = options.timeout === undefined ? 100 * 1000 : options.timeout;\r\n let webSocketModule = null;\r\n let eventSourceModule = null;\r\n if (Platform.isNode && \"function\" !== \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = true ? require : 0;\r\n webSocketModule = requireFunc(\"ws\");\r\n eventSourceModule = requireFunc(\"eventsource\");\r\n }\r\n if (!Platform.isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n }\r\n else if (Platform.isNode && !options.WebSocket) {\r\n if (webSocketModule) {\r\n options.WebSocket = webSocketModule;\r\n }\r\n }\r\n if (!Platform.isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n }\r\n else if (Platform.isNode && !options.EventSource) {\r\n if (typeof eventSourceModule !== \"undefined\") {\r\n options.EventSource = eventSourceModule;\r\n }\r\n }\r\n this._httpClient = new AccessTokenHttpClient(options.httpClient || new DefaultHttpClient(this._logger), options.accessTokenFactory);\r\n this._connectionState = \"Disconnected\" /* Disconnected */;\r\n this._connectionStarted = false;\r\n this._options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n async start(transferFormat) {\r\n transferFormat = transferFormat || TransferFormat.Binary;\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Debug, `Starting connection with transfer format '${TransferFormat[transferFormat]}'.`);\r\n if (this._connectionState !== \"Disconnected\" /* Disconnected */) {\r\n return Promise.reject(new Error(\"Cannot start an HttpConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n this._connectionState = \"Connecting\" /* Connecting */;\r\n this._startInternalPromise = this._startInternal(transferFormat);\r\n await this._startInternalPromise;\r\n // The TypeScript compiler thinks that connectionState must be Connecting here. The TypeScript compiler is wrong.\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"Failed to start the HttpConnection before stop() was called.\";\r\n this._logger.log(LogLevel.Error, message);\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n await this._stopPromise;\r\n return Promise.reject(new AbortError(message));\r\n }\r\n else if (this._connectionState !== \"Connected\" /* Connected */) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!\";\r\n this._logger.log(LogLevel.Error, message);\r\n return Promise.reject(new AbortError(message));\r\n }\r\n this._connectionStarted = true;\r\n }\r\n send(data) {\r\n if (this._connectionState !== \"Connected\" /* Connected */) {\r\n return Promise.reject(new Error(\"Cannot send data if the connection is not in the 'Connected' State.\"));\r\n }\r\n if (!this._sendQueue) {\r\n this._sendQueue = new TransportSendQueue(this.transport);\r\n }\r\n // Transport will not be null if state is connected\r\n return this._sendQueue.send(data);\r\n }\r\n async stop(error) {\r\n if (this._connectionState === \"Disconnected\" /* Disconnected */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n this._connectionState = \"Disconnecting\" /* Disconnecting */;\r\n this._stopPromise = new Promise((resolve) => {\r\n // Don't complete stop() until stopConnection() completes.\r\n this._stopPromiseResolver = resolve;\r\n });\r\n // stopInternal should never throw so just observe it.\r\n await this._stopInternal(error);\r\n await this._stopPromise;\r\n }\r\n async _stopInternal(error) {\r\n // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this._stopError = error;\r\n try {\r\n await this._startInternalPromise;\r\n }\r\n catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n // The transport's onclose will trigger stopConnection which will run our onclose event.\r\n // The transport should always be set if currently connected. If it wasn't set, it's likely because\r\n // stop was called during start() and start() failed.\r\n if (this.transport) {\r\n try {\r\n await this.transport.stop();\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.transport.stop() threw error '${e}'.`);\r\n this._stopConnection();\r\n }\r\n this.transport = undefined;\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, \"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.\");\r\n }\r\n }\r\n async _startInternal(transferFormat) {\r\n // Store the original base url and the access token factory since they may change\r\n // as part of negotiating\r\n let url = this.baseUrl;\r\n this._accessTokenFactory = this._options.accessTokenFactory;\r\n this._httpClient._accessTokenFactory = this._accessTokenFactory;\r\n try {\r\n if (this._options.skipNegotiation) {\r\n if (this._options.transport === HttpTransportType.WebSockets) {\r\n // No need to add a connection ID in this case\r\n this.transport = this._constructTransport(HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n await this._startTransport(url, transferFormat);\r\n }\r\n else {\r\n throw new Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n }\r\n }\r\n else {\r\n let negotiateResponse = null;\r\n let redirects = 0;\r\n do {\r\n negotiateResponse = await this._getNegotiationResponse(url);\r\n // the user tries to stop the connection when it is being started\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */ || this._connectionState === \"Disconnected\" /* Disconnected */) {\r\n throw new AbortError(\"The connection was stopped during negotiation.\");\r\n }\r\n if (negotiateResponse.error) {\r\n throw new Error(negotiateResponse.error);\r\n }\r\n if (negotiateResponse.ProtocolVersion) {\r\n throw new Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n if (negotiateResponse.accessToken) {\r\n // Replace the current access token factory with one that uses\r\n // the returned access token\r\n const accessToken = negotiateResponse.accessToken;\r\n this._accessTokenFactory = () => accessToken;\r\n // set the factory to undefined so the AccessTokenHttpClient won't retry with the same token, since we know it won't change until a connection restart\r\n this._httpClient._accessToken = accessToken;\r\n this._httpClient._accessTokenFactory = undefined;\r\n }\r\n redirects++;\r\n } while (negotiateResponse.url && redirects < MAX_REDIRECTS);\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw new Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n await this._createTransport(url, this._options.transport, negotiateResponse, transferFormat);\r\n }\r\n if (this.transport instanceof LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n if (this._connectionState === \"Connecting\" /* Connecting */) {\r\n // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.\r\n // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.\r\n this._logger.log(LogLevel.Debug, \"The HttpConnection connected successfully.\");\r\n this._connectionState = \"Connected\" /* Connected */;\r\n }\r\n // stop() is waiting on us via this.startInternalPromise so keep this.transport around so it can clean up.\r\n // This is the only case startInternal can exit in neither the connected nor disconnected state because stopConnection()\r\n // will transition to the disconnected state. start() will wait for the transition using the stopPromise.\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, \"Failed to start the connection: \" + e);\r\n this._connectionState = \"Disconnected\" /* Disconnected */;\r\n this.transport = undefined;\r\n // if start fails, any active calls to stop assume that start will complete the stop promise\r\n this._stopPromiseResolver();\r\n return Promise.reject(e);\r\n }\r\n }\r\n async _getNegotiationResponse(url) {\r\n const headers = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n const negotiateUrl = this._resolveNegotiateUrl(url);\r\n this._logger.log(LogLevel.Debug, `Sending negotiation request: ${negotiateUrl}.`);\r\n try {\r\n const response = await this._httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n });\r\n if (response.statusCode !== 200) {\r\n return Promise.reject(new Error(`Unexpected status code returned from negotiate '${response.statusCode}'`));\r\n }\r\n const negotiateResponse = JSON.parse(response.content);\r\n if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {\r\n // Negotiate version 0 doesn't use connectionToken\r\n // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version\r\n negotiateResponse.connectionToken = negotiateResponse.connectionId;\r\n }\r\n return negotiateResponse;\r\n }\r\n catch (e) {\r\n let errorMessage = \"Failed to complete negotiation with the server: \" + e;\r\n if (e instanceof HttpError) {\r\n if (e.statusCode === 404) {\r\n errorMessage = errorMessage + \" Either this is not a SignalR endpoint or there is a proxy blocking the connection.\";\r\n }\r\n }\r\n this._logger.log(LogLevel.Error, errorMessage);\r\n return Promise.reject(new FailedToNegotiateWithServerError(errorMessage));\r\n }\r\n }\r\n _createConnectUrl(url, connectionToken) {\r\n if (!connectionToken) {\r\n return url;\r\n }\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + `id=${connectionToken}`;\r\n }\r\n async _createTransport(url, requestedTransport, negotiateResponse, requestedTransferFormat) {\r\n let connectUrl = this._createConnectUrl(url, negotiateResponse.connectionToken);\r\n if (this._isITransport(requestedTransport)) {\r\n this._logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiateResponse.connectionId;\r\n return;\r\n }\r\n const transportExceptions = [];\r\n const transports = negotiateResponse.availableTransports || [];\r\n let negotiate = negotiateResponse;\r\n for (const endpoint of transports) {\r\n const transportOrError = this._resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat);\r\n if (transportOrError instanceof Error) {\r\n // Store the error and continue, we don't want to cause a re-negotiate in these cases\r\n transportExceptions.push(`${endpoint.transport} failed:`);\r\n transportExceptions.push(transportOrError);\r\n }\r\n else if (this._isITransport(transportOrError)) {\r\n this.transport = transportOrError;\r\n if (!negotiate) {\r\n try {\r\n negotiate = await this._getNegotiationResponse(url);\r\n }\r\n catch (ex) {\r\n return Promise.reject(ex);\r\n }\r\n connectUrl = this._createConnectUrl(url, negotiate.connectionToken);\r\n }\r\n try {\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiate.connectionId;\r\n return;\r\n }\r\n catch (ex) {\r\n this._logger.log(LogLevel.Error, `Failed to start the transport '${endpoint.transport}': ${ex}`);\r\n negotiate = undefined;\r\n transportExceptions.push(new FailedToStartTransportError(`${endpoint.transport} failed: ${ex}`, HttpTransportType[endpoint.transport]));\r\n if (this._connectionState !== \"Connecting\" /* Connecting */) {\r\n const message = \"Failed to select transport before stop() was called.\";\r\n this._logger.log(LogLevel.Debug, message);\r\n return Promise.reject(new AbortError(message));\r\n }\r\n }\r\n }\r\n }\r\n if (transportExceptions.length > 0) {\r\n return Promise.reject(new AggregateErrors(`Unable to connect to the server with any of the available transports. ${transportExceptions.join(\" \")}`, transportExceptions));\r\n }\r\n return Promise.reject(new Error(\"None of the transports supported by the client are supported by the server.\"));\r\n }\r\n _constructTransport(transport) {\r\n switch (transport) {\r\n case HttpTransportType.WebSockets:\r\n if (!this._options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options.logMessageContent, this._options.WebSocket, this._options.headers || {});\r\n case HttpTransportType.ServerSentEvents:\r\n if (!this._options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport(this._httpClient, this._httpClient._accessToken, this._logger, this._options);\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this._httpClient, this._logger, this._options);\r\n default:\r\n throw new Error(`Unknown transport: ${transport}.`);\r\n }\r\n }\r\n _startTransport(url, transferFormat) {\r\n this.transport.onreceive = this.onreceive;\r\n this.transport.onclose = (e) => this._stopConnection(e);\r\n return this.transport.connect(url, transferFormat);\r\n }\r\n _resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat) {\r\n const transport = HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n return new Error(`Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n }\r\n else {\r\n if (transportMatches(requestedTransport, transport)) {\r\n const transferFormats = endpoint.transferFormats.map((s) => TransferFormat[s]);\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && !this._options.WebSocket) ||\r\n (transport === HttpTransportType.ServerSentEvents && !this._options.EventSource)) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it is not supported in your environment.'`);\r\n return new UnsupportedTransportError(`'${HttpTransportType[transport]}' is not supported in your environment.`, transport);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Selecting transport '${HttpTransportType[transport]}'.`);\r\n try {\r\n return this._constructTransport(transport);\r\n }\r\n catch (ex) {\r\n return ex;\r\n }\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it does not support the requested transfer format '${TransferFormat[requestedTransferFormat]}'.`);\r\n return new Error(`'${HttpTransportType[transport]}' does not support ${TransferFormat[requestedTransferFormat]}.`);\r\n }\r\n }\r\n else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it was disabled by the client.`);\r\n return new DisabledTransportError(`'${HttpTransportType[transport]}' is disabled by the client.`, transport);\r\n }\r\n }\r\n }\r\n _isITransport(transport) {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n }\r\n _stopConnection(error) {\r\n this._logger.log(LogLevel.Debug, `HttpConnection.stopConnection(${error}) called while in state ${this._connectionState}.`);\r\n this.transport = undefined;\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this._stopError || error;\r\n this._stopError = undefined;\r\n if (this._connectionState === \"Disconnected\" /* Disconnected */) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is already in the disconnected state.`);\r\n return;\r\n }\r\n if (this._connectionState === \"Connecting\" /* Connecting */) {\r\n this._logger.log(LogLevel.Warning, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is still in the connecting state.`);\r\n throw new Error(`HttpConnection.stopConnection(${error}) was called while the connection is still in the connecting state.`);\r\n }\r\n if (this._connectionState === \"Disconnecting\" /* Disconnecting */) {\r\n // A call to stop() induced this call to stopConnection and needs to be completed.\r\n // Any stop() awaiters will be scheduled to continue after the onclose callback fires.\r\n this._stopPromiseResolver();\r\n }\r\n if (error) {\r\n this._logger.log(LogLevel.Error, `Connection disconnected with error '${error}'.`);\r\n }\r\n else {\r\n this._logger.log(LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n if (this._sendQueue) {\r\n this._sendQueue.stop().catch((e) => {\r\n this._logger.log(LogLevel.Error, `TransportSendQueue.stop() threw error '${e}'.`);\r\n });\r\n this._sendQueue = undefined;\r\n }\r\n this.connectionId = undefined;\r\n this._connectionState = \"Disconnected\" /* Disconnected */;\r\n if (this._connectionStarted) {\r\n this._connectionStarted = false;\r\n try {\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n }\r\n catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.onclose(${error}) threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n _resolveUrl(url) {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n if (!Platform.isBrowser) {\r\n throw new Error(`Cannot resolve '${url}'.`);\r\n }\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n const aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n this._logger.log(LogLevel.Information, `Normalizing '${url}' to '${aTag.href}'.`);\r\n return aTag.href;\r\n }\r\n _resolveNegotiateUrl(url) {\r\n const index = url.indexOf(\"?\");\r\n let negotiateUrl = url.substring(0, index === -1 ? url.length : index);\r\n if (negotiateUrl[negotiateUrl.length - 1] !== \"/\") {\r\n negotiateUrl += \"/\";\r\n }\r\n negotiateUrl += \"negotiate\";\r\n negotiateUrl += index === -1 ? \"\" : url.substring(index);\r\n if (negotiateUrl.indexOf(\"negotiateVersion\") === -1) {\r\n negotiateUrl += index === -1 ? \"?\" : \"&\";\r\n negotiateUrl += \"negotiateVersion=\" + this._negotiateVersion;\r\n }\r\n return negotiateUrl;\r\n }\r\n}\r\nfunction transportMatches(requestedTransport, actualTransport) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n/** @private */\r\nclass TransportSendQueue {\r\n constructor(_transport) {\r\n this._transport = _transport;\r\n this._buffer = [];\r\n this._executing = true;\r\n this._sendBufferedData = new PromiseSource();\r\n this._transportResult = new PromiseSource();\r\n this._sendLoopPromise = this._sendLoop();\r\n }\r\n send(data) {\r\n this._bufferData(data);\r\n if (!this._transportResult) {\r\n this._transportResult = new PromiseSource();\r\n }\r\n return this._transportResult.promise;\r\n }\r\n stop() {\r\n this._executing = false;\r\n this._sendBufferedData.resolve();\r\n return this._sendLoopPromise;\r\n }\r\n _bufferData(data) {\r\n if (this._buffer.length && typeof (this._buffer[0]) !== typeof (data)) {\r\n throw new Error(`Expected data to be of type ${typeof (this._buffer)} but was of type ${typeof (data)}`);\r\n }\r\n this._buffer.push(data);\r\n this._sendBufferedData.resolve();\r\n }\r\n async _sendLoop() {\r\n while (true) {\r\n await this._sendBufferedData.promise;\r\n if (!this._executing) {\r\n if (this._transportResult) {\r\n this._transportResult.reject(\"Connection stopped.\");\r\n }\r\n break;\r\n }\r\n this._sendBufferedData = new PromiseSource();\r\n const transportResult = this._transportResult;\r\n this._transportResult = undefined;\r\n const data = typeof (this._buffer[0]) === \"string\" ?\r\n this._buffer.join(\"\") :\r\n TransportSendQueue._concatBuffers(this._buffer);\r\n this._buffer.length = 0;\r\n try {\r\n await this._transport.send(data);\r\n transportResult.resolve();\r\n }\r\n catch (error) {\r\n transportResult.reject(error);\r\n }\r\n }\r\n }\r\n static _concatBuffers(arrayBuffers) {\r\n const totalLength = arrayBuffers.map((b) => b.byteLength).reduce((a, b) => a + b);\r\n const result = new Uint8Array(totalLength);\r\n let offset = 0;\r\n for (const item of arrayBuffers) {\r\n result.set(new Uint8Array(item), offset);\r\n offset += item.byteLength;\r\n }\r\n return result.buffer;\r\n }\r\n}\r\nclass PromiseSource {\r\n constructor() {\r\n this.promise = new Promise((resolve, reject) => [this._resolver, this._rejecter] = [resolve, reject]);\r\n }\r\n resolve() {\r\n this._resolver();\r\n }\r\n reject(reason) {\r\n this._rejecter(reason);\r\n }\r\n}\r\n\n;// CONCATENATED MODULE: ./src/JsonHubProtocol.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n\r\n\r\n\r\n\r\nconst JSON_HUB_PROTOCOL_NAME = \"json\";\r\n/** Implements the JSON Hub Protocol. */\r\nclass JsonHubProtocol {\r\n constructor() {\r\n /** @inheritDoc */\r\n this.name = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n this.version = 1;\r\n /** @inheritDoc */\r\n this.transferFormat = TransferFormat.Text;\r\n }\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n parseMessages(input, logger) {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n if (!input) {\r\n return [];\r\n }\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n // Parse the messages\r\n const messages = TextMessageFormat.parse(input);\r\n const hubMessages = [];\r\n for (const message of messages) {\r\n const parsedMessage = JSON.parse(message);\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case MessageType.Invocation:\r\n this._isInvocationMessage(parsedMessage);\r\n break;\r\n case MessageType.StreamItem:\r\n this._isStreamItemMessage(parsedMessage);\r\n break;\r\n case MessageType.Completion:\r\n this._isCompletionMessage(parsedMessage);\r\n break;\r\n case MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n return hubMessages;\r\n }\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n writeMessage(message) {\r\n return TextMessageFormat.write(JSON.stringify(message));\r\n }\r\n _isInvocationMessage(message) {\r\n this._assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n if (message.invocationId !== undefined) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n }\r\n _isStreamItemMessage(message) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n }\r\n _isCompletionMessage(message) {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n if (!message.result && message.error) {\r\n this._assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n }\r\n _assertNotEmptyString(value, errorMessage) {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n }\r\n}\r\n\n;// CONCATENATED MODULE: ./src/HubConnectionBuilder.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nconst LogLevelNameMapping = {\r\n trace: LogLevel.Trace,\r\n debug: LogLevel.Debug,\r\n info: LogLevel.Information,\r\n information: LogLevel.Information,\r\n warn: LogLevel.Warning,\r\n warning: LogLevel.Warning,\r\n error: LogLevel.Error,\r\n critical: LogLevel.Critical,\r\n none: LogLevel.None,\r\n};\r\nfunction parseLogLevel(name) {\r\n // Case-insensitive matching via lower-casing\r\n // Yes, I know case-folding is a complicated problem in Unicode, but we only support\r\n // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.\r\n const mapping = LogLevelNameMapping[name.toLowerCase()];\r\n if (typeof mapping !== \"undefined\") {\r\n return mapping;\r\n }\r\n else {\r\n throw new Error(`Unknown log level: ${name}`);\r\n }\r\n}\r\n/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */\r\nclass HubConnectionBuilder {\r\n configureLogging(logging) {\r\n Arg.isRequired(logging, \"logging\");\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n }\r\n else if (typeof logging === \"string\") {\r\n const logLevel = parseLogLevel(logging);\r\n this.logger = new ConsoleLogger(logLevel);\r\n }\r\n else {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n return this;\r\n }\r\n withUrl(url, transportTypeOrOptions) {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isNotEmpty(url, \"url\");\r\n this.url = url;\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = { ...this.httpConnectionOptions, ...transportTypeOrOptions };\r\n }\r\n else {\r\n this.httpConnectionOptions = {\r\n ...this.httpConnectionOptions,\r\n transport: transportTypeOrOptions,\r\n };\r\n }\r\n return this;\r\n }\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.\r\n */\r\n withHubProtocol(protocol) {\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.protocol = protocol;\r\n return this;\r\n }\r\n withAutomaticReconnect(retryDelaysOrReconnectPolicy) {\r\n if (this.reconnectPolicy) {\r\n throw new Error(\"A reconnectPolicy has already been set.\");\r\n }\r\n if (!retryDelaysOrReconnectPolicy) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy();\r\n }\r\n else if (Array.isArray(retryDelaysOrReconnectPolicy)) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy(retryDelaysOrReconnectPolicy);\r\n }\r\n else {\r\n this.reconnectPolicy = retryDelaysOrReconnectPolicy;\r\n }\r\n return this;\r\n }\r\n /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.\r\n */\r\n build() {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n const httpConnectionOptions = this.httpConnectionOptions || {};\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n const connection = new HttpConnection(this.url, httpConnectionOptions);\r\n return HubConnection.create(connection, this.logger || NullLogger.instance, this.protocol || new JsonHubProtocol(), this.reconnectPolicy);\r\n }\r\n}\r\nfunction isLogger(logger) {\r\n return logger.log !== undefined;\r\n}\r\n\n;// CONCATENATED MODULE: ./src/index.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\n;// CONCATENATED MODULE: ./src/browser-index.ts\n// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n// This is where we add any polyfills we'll need for the browser. It is the entry module for browser-specific builds.\r\n// Copy from Array.prototype into Uint8Array to polyfill on IE. It's OK because the implementations of indexOf and slice use properties\r\n// that exist on Uint8Array with the same name, and JavaScript is magic.\r\n// We make them 'writable' because the Buffer polyfill messes with it as well.\r\nif (!Uint8Array.prototype.indexOf) {\r\n Object.defineProperty(Uint8Array.prototype, \"indexOf\", {\r\n value: Array.prototype.indexOf,\r\n writable: true,\r\n });\r\n}\r\nif (!Uint8Array.prototype.slice) {\r\n Object.defineProperty(Uint8Array.prototype, \"slice\", {\r\n // wrap the slice in Uint8Array so it looks like a Uint8Array.slice call\r\n // eslint-disable-next-line object-shorthand\r\n value: function (start, end) { return new Uint8Array(Array.prototype.slice.call(this, start, end)); },\r\n writable: true,\r\n });\r\n}\r\nif (!Uint8Array.prototype.forEach) {\r\n Object.defineProperty(Uint8Array.prototype, \"forEach\", {\r\n value: Array.prototype.forEach,\r\n writable: true,\r\n });\r\n}\r\n\r\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=signalr.js.map","/**\r\n * Copyright (c) 2011-2014 Felix Gnass\r\n * Licensed under the MIT license\r\n */\r\n(function (root, factory) {\r\n\r\n /* CommonJS */\r\n if (typeof exports == 'object') module.exports = factory()\r\n\r\n /* AMD module */\r\n else if (typeof define == 'function' && define.amd) define(factory)\r\n\r\n /* Browser global */\r\n else root.Spinner = factory()\r\n}\r\n(this, function () {\r\n \"use strict\";\r\n\r\n var prefixes = ['webkit', 'Moz', 'ms', 'O'] /* Vendor prefixes */\r\n , animations = {} /* Animation rules keyed by their name */\r\n , useCssAnimations /* Whether to use CSS animations or setTimeout */\r\n\r\n /**\r\n * Utility function to create elements. If no tag name is given,\r\n * a DIV is created. Optionally properties can be passed.\r\n */\r\n function createEl(tag, prop) {\r\n var el = document.createElement(tag || 'div')\r\n , n\r\n\r\n for (n in prop) el[n] = prop[n]\r\n return el\r\n }\r\n\r\n /**\r\n * Appends children and returns the parent.\r\n */\r\n function ins(parent /* child1, child2, ...*/) {\r\n for (var i = 1, n = arguments.length; i < n; i++)\r\n parent.appendChild(arguments[i])\r\n\r\n return parent\r\n }\r\n\r\n /**\r\n * Insert a new stylesheet to hold the @keyframe or VML rules.\r\n */\r\n var sheet = (function () {\r\n var el = createEl('style', { type: 'text/css' })\r\n ins(document.getElementsByTagName('head')[0], el)\r\n return el.sheet || el.styleSheet\r\n }())\r\n\r\n /**\r\n * Creates an opacity keyframe animation rule and returns its name.\r\n * Since most mobile Webkits have timing issues with animation-delay,\r\n * we create separate rules for each line/segment.\r\n */\r\n function addAnimation(alpha, trail, i, lines) {\r\n var name = ['opacity', trail, ~~(alpha * 100), i, lines].join('-')\r\n , start = 0.01 + i / lines * 100\r\n , z = Math.max(1 - (1 - alpha) / trail * (100 - start), alpha)\r\n , prefix = useCssAnimations.substring(0, useCssAnimations.indexOf('Animation')).toLowerCase()\r\n , pre = prefix && '-' + prefix + '-' || ''\r\n\r\n if (!animations[name]) {\r\n sheet.insertRule(\r\n '@' + pre + 'keyframes ' + name + '{' +\r\n '0%{opacity:' + z + '}' +\r\n start + '%{opacity:' + alpha + '}' +\r\n (start + 0.01) + '%{opacity:1}' +\r\n (start + trail) % 100 + '%{opacity:' + alpha + '}' +\r\n '100%{opacity:' + z + '}' +\r\n '}', sheet.cssRules.length)\r\n\r\n animations[name] = 1\r\n }\r\n\r\n return name\r\n }\r\n\r\n /**\r\n * Tries various vendor prefixes and returns the first supported property.\r\n */\r\n function vendor(el, prop) {\r\n var s = el.style\r\n , pp\r\n , i\r\n\r\n prop = prop.charAt(0).toUpperCase() + prop.slice(1)\r\n for (i = 0; i < prefixes.length; i++) {\r\n pp = prefixes[i] + prop\r\n if (s[pp] !== undefined) return pp\r\n }\r\n if (s[prop] !== undefined) return prop\r\n }\r\n\r\n /**\r\n * Sets multiple style properties at once.\r\n */\r\n function css(el, prop) {\r\n for (var n in prop)\r\n el.style[vendor(el, n) || n] = prop[n]\r\n\r\n return el\r\n }\r\n\r\n /**\r\n * Fills in default values.\r\n */\r\n function merge(obj) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var def = arguments[i]\r\n for (var n in def)\r\n if (obj[n] === undefined) obj[n] = def[n]\r\n }\r\n return obj\r\n }\r\n\r\n /**\r\n * Returns the absolute page-offset of the given element.\r\n */\r\n function pos(el) {\r\n var o = { x: el.offsetLeft, y: el.offsetTop }\r\n while ((el = el.offsetParent))\r\n o.x += el.offsetLeft, o.y += el.offsetTop\r\n\r\n return o\r\n }\r\n\r\n /**\r\n * Returns the line color from the given string or array.\r\n */\r\n function getColor(color, idx) {\r\n return typeof color == 'string' ? color : color[idx % color.length]\r\n }\r\n\r\n // Built-in defaults\r\n\r\n var defaults = {\r\n lines: 12, // The number of lines to draw\r\n length: 7, // The length of each line\r\n width: 5, // The line thickness\r\n radius: 10, // The radius of the inner circle\r\n rotate: 0, // Rotation offset\r\n corners: 1, // Roundness (0..1)\r\n color: '#000', // #rgb or #rrggbb\r\n direction: 1, // 1: clockwise, -1: counterclockwise\r\n speed: 1, // Rounds per second\r\n trail: 100, // Afterglow percentage\r\n opacity: 1 / 4, // Opacity of the lines\r\n fps: 20, // Frames per second when using setTimeout()\r\n zIndex: 2e9, // Use a high z-index by default\r\n className: 'spinner', // CSS class to assign to the element\r\n top: '50%', // center vertically\r\n left: '50%', // center horizontally\r\n position: 'absolute' // element position\r\n }\r\n\r\n /** The constructor */\r\n function Spinner(o) {\r\n this.opts = merge(o || {}, Spinner.defaults, defaults)\r\n }\r\n\r\n // Global defaults that override the built-ins:\r\n Spinner.defaults = {}\r\n\r\n merge(Spinner.prototype, {\r\n\r\n /**\r\n * Adds the spinner to the given target element. If this instance is already\r\n * spinning, it is automatically removed from its previous target b calling\r\n * stop() internally.\r\n */\r\n spin: function (target) {\r\n this.stop()\r\n\r\n var self = this\r\n , o = self.opts\r\n , el = self.el = css(createEl(0, { className: o.className }), { position: o.position, width: 0, zIndex: o.zIndex })\r\n , mid = o.radius + o.length + o.width\r\n\r\n css(el, {\r\n left: o.left,\r\n top: o.top\r\n })\r\n\r\n if (target) {\r\n target.insertBefore(el, target.firstChild || null)\r\n }\r\n\r\n el.setAttribute('role', 'progressbar')\r\n self.lines(el, self.opts)\r\n\r\n if (!useCssAnimations) {\r\n // No CSS animation support, use setTimeout() instead\r\n var i = 0\r\n , start = (o.lines - 1) * (1 - o.direction) / 2\r\n , alpha\r\n , fps = o.fps\r\n , f = fps / o.speed\r\n , ostep = (1 - o.opacity) / (f * o.trail / 100)\r\n , astep = f / o.lines\r\n\r\n ; (function anim() {\r\n i++;\r\n for (var j = 0; j < o.lines; j++) {\r\n alpha = Math.max(1 - (i + (o.lines - j) * astep) % f * ostep, o.opacity)\r\n\r\n self.opacity(el, j * o.direction + start, alpha, o)\r\n }\r\n self.timeout = self.el && setTimeout(anim, ~~(1000 / fps))\r\n })()\r\n }\r\n return self\r\n },\r\n\r\n /**\r\n * Stops and removes the Spinner.\r\n */\r\n stop: function () {\r\n var el = this.el\r\n if (el) {\r\n clearTimeout(this.timeout)\r\n if (el.parentNode) el.parentNode.removeChild(el)\r\n this.el = undefined\r\n }\r\n return this\r\n },\r\n\r\n /**\r\n * Internal method that draws the individual lines. Will be overwritten\r\n * in VML fallback mode below.\r\n */\r\n lines: function (el, o) {\r\n var i = 0\r\n , start = (o.lines - 1) * (1 - o.direction) / 2\r\n , seg\r\n\r\n function fill(color, shadow) {\r\n return css(createEl(), {\r\n position: 'absolute',\r\n width: (o.length + o.width) + 'px',\r\n height: o.width + 'px',\r\n background: color,\r\n boxShadow: shadow,\r\n transformOrigin: 'left',\r\n transform: 'rotate(' + ~~(360 / o.lines * i + o.rotate) + 'deg) translate(' + o.radius + 'px' + ',0)',\r\n borderRadius: (o.corners * o.width >> 1) + 'px'\r\n })\r\n }\r\n\r\n for (; i < o.lines; i++) {\r\n seg = css(createEl(), {\r\n position: 'absolute',\r\n top: 1 + ~(o.width / 2) + 'px',\r\n transform: o.hwaccel ? 'translate3d(0,0,0)' : '',\r\n opacity: o.opacity,\r\n animation: useCssAnimations && addAnimation(o.opacity, o.trail, start + i * o.direction, o.lines) + ' ' + 1 / o.speed + 's linear infinite'\r\n })\r\n\r\n if (o.shadow) ins(seg, css(fill('#000', '0 0 4px ' + '#000'), { top: 2 + 'px' }))\r\n ins(el, ins(seg, fill(getColor(o.color, i), '0 0 1px rgba(0,0,0,.1)')))\r\n }\r\n return el\r\n },\r\n\r\n /**\r\n * Internal method that adjusts the opacity of a single line.\r\n * Will be overwritten in VML fallback mode below.\r\n */\r\n opacity: function (el, i, val) {\r\n if (i < el.childNodes.length) el.childNodes[i].style.opacity = val\r\n }\r\n\r\n })\r\n\r\n\r\n function initVML() {\r\n\r\n /* Utility function to create a VML tag */\r\n function vml(tag, attr) {\r\n return createEl('<' + tag + ' xmlns=\"urn:schemas-microsoft.com:vml\" class=\"spin-vml\">', attr)\r\n }\r\n\r\n // No CSS transforms but VML support, add a CSS rule for VML elements:\r\n sheet.addRule('.spin-vml', 'behavior:url(#default#VML)')\r\n\r\n Spinner.prototype.lines = function (el, o) {\r\n var r = o.length + o.width\r\n , s = 2 * r\r\n\r\n function grp() {\r\n return css(\r\n vml('group', {\r\n coordsize: s + ' ' + s,\r\n coordorigin: -r + ' ' + -r\r\n }),\r\n { width: s, height: s }\r\n )\r\n }\r\n\r\n var margin = -(o.width + o.length) * 2 + 'px'\r\n , g = css(grp(), { position: 'absolute', top: margin, left: margin })\r\n , i\r\n\r\n function seg(i, dx, filter) {\r\n ins(g,\r\n ins(css(grp(), { rotation: 360 / o.lines * i + 'deg', left: ~~dx }),\r\n ins(css(vml('roundrect', { arcsize: o.corners }), {\r\n width: r,\r\n height: o.width,\r\n left: o.radius,\r\n top: -o.width >> 1,\r\n filter: filter\r\n }),\r\n vml('fill', { color: getColor(o.color, i), opacity: o.opacity }),\r\n vml('stroke', { opacity: 0 }) // transparent stroke to fix color bleeding upon opacity change\r\n )\r\n )\r\n )\r\n }\r\n\r\n if (o.shadow)\r\n for (i = 1; i <= o.lines; i++)\r\n seg(i, -2, 'progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)')\r\n\r\n for (i = 1; i <= o.lines; i++) seg(i)\r\n return ins(el, g)\r\n }\r\n\r\n Spinner.prototype.opacity = function (el, i, val, o) {\r\n var c = el.firstChild\r\n o = o.shadow && o.lines || 0\r\n if (c && i + o < c.childNodes.length) {\r\n c = c.childNodes[i + o]; c = c && c.firstChild; c = c && c.firstChild\r\n if (c) c.opacity = val\r\n }\r\n }\r\n }\r\n\r\n var probe = css(createEl('group'), { behavior: 'url(#default#VML)' })\r\n\r\n if (!vendor(probe, 'transform') && probe.adj) initVML()\r\n else useCssAnimations = vendor(probe, 'animation')\r\n\r\n return Spinner\r\n\r\n}));",";(function ($) {\r\n $.fn.spin = function (opts, color) {\r\n var presets = {\r\n \"tiny\": { lines: 8, length: 2, width: 2, radius: 3 },\r\n \"small\": { lines: 8, length: 4, width: 3, radius: 5 },\r\n \"large\": { lines: 10, length: 8, width: 4, radius: 8 }\r\n };\r\n if (Spinner) {\r\n return this.each(function () {\r\n var $this = $(this),\r\n\t\t\t\t\tdata = $this.data();\r\n\r\n if (data.spinner) {\r\n data.spinner.stop();\r\n delete data.spinner;\r\n }\r\n if (opts !== false) {\r\n if (typeof opts === \"string\") {\r\n if (opts in presets) {\r\n opts = presets[opts];\r\n } else {\r\n opts = {};\r\n }\r\n if (color) {\r\n opts.color = color;\r\n }\r\n }\r\n data.spinner = new Spinner($.extend({ color: $this.css('color') }, opts)).spin(this);\r\n }\r\n });\r\n } else {\r\n throw \"Spinner class not available.\";\r\n }\r\n };\r\n})(jQuery);","// jQuery Alert Dialogs Plugin\r\n//\r\n// Version 1.1\r\n//\r\n// Cory S.N. LaViska\r\n// A Beautiful Site (http://abeautifulsite.net/)\r\n// 14 May 2009\r\n//\r\n// Mike Walters - mikewaltersphp@gmail.com\r\n// 27 December 2011\r\n//\r\n// Visit http://abeautifulsite.net/notebook/87 for more information\r\n//\r\n// Usage:\r\n//\t\tjAlert( message, [title, callback] )\r\n//\t\tjConfirm( message, [title, callback] )\r\n//\t\tjPrompt( message, [value, title, callback] )\r\n// \r\n// History:\r\n//\r\n//\t\t1.00 - Released (29 December 2008)\r\n//\r\n//\t\t1.01 - Fixed bug where unbinding would destroy all resize events\r\n//\r\n//\t\tDECEMBER 2011 - added ability to popup multiple alerts (mike walters)\r\n//\r\n// License:\r\n// \r\n// This plugin is dual-licensed under the GNU General Public License and the MIT License and\r\n// is copyright 2008 A Beautiful Site, LLC. \r\n//\r\n\r\n\r\n\r\n(function($) {\r\n\t\r\n\t$.alerts = {\r\n\t\t\r\n\t\t// These properties can be read/written by accessing $.alerts.propertyName from your scripts at any time\r\n\t\t\r\n\t\tverticalOffset: -75, // vertical offset of the dialog from center screen, in pixels\r\n\t\thorizontalOffset: 0, // horizontal offset of the dialog from center screen, in pixels/\r\n\t\trepositionOnResize: true, // re-centers the dialog on window resize\r\n\t\toverlayOpacity: .01, // transparency level of overlay\r\n\t\toverlayColor: '#FFF', // base color of overlay\r\n\t\tdraggable: true, // make the dialogs draggable (requires UI Draggables plugin)\r\n\t\tokButton: ' OK ', // text for the OK button\r\n\t\tcancelButton: ' Cancel ', // text for the Cancel button\r\n\t\tdialogClass: null, // if specified, this class will be applied to all dialogs\r\n\t\t\r\n\t\twaitingCalls: new Array(),\r\n\r\n\t\traiseNextDialog: function() {\r\n\t\t\t$.alerts.callIsActive = false;\r\n\t\t\tif ($.alerts.waitingCalls.length>0) {\r\n\t\t\t\tvar params = $.alerts.waitingCalls.shift();\r\n\t\t\t\t$.alerts._show(params[0], params[1], params[2], params[3], params[4]);\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\tdialogShallWait: function (title, msg, value, type, callback) {\r\n\t\t\tif ($.alerts.callIsActive) {\r\n\r\n\t\t\t\t$.alerts.waitingCalls.push([title, msg, value, type, callback]);\r\n\t\t\t\treturn true; // can't show now\r\n\t\t\t} else {\r\n\t\t\t\t$.alerts.callIsActive = true;\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t\r\n\t\t// Public methods\r\n\t\t\r\n\t\talert: function(message, title, callback) {\r\n\t\t\tif( title == null ) title = 'Alert';\r\n\t\t\t$.alerts._show(title, message, null, 'alert', function(result) {\r\n\t\t\t\tif( callback ) callback(result);\r\n\t\t\t});\r\n\t\t},\r\n\t\t\r\n\t\tconfirm: function(message, title, callback) {\r\n\t\t\tif( title == null ) title = 'Confirm';\r\n\t\t\t$.alerts._show(title, message, null, 'confirm', function(result) {\r\n\t\t\t\tif( callback ) callback(result);\r\n\t\t\t});\r\n\t\t},\r\n\t\t\t\r\n\t\tprompt: function(message, value, title, callback) {\r\n\t\t\tif( title == null ) title = 'Prompt';\r\n\t\t\t$.alerts._show(title, message, value, 'prompt', function(result) {\r\n\t\t\t\tif( callback ) callback(result);\r\n\t\t\t});\r\n\t\t},\r\n\t\t\r\n\t\t// Private methods\r\n\t\t\r\n\t\t_show: function(title, msg, value, type, callback) {\r\n\t\r\n\t\t\r\n\t\tif ( $.alerts.dialogShallWait(title, msg, value, type, callback) ) return;\r\n\t\t\t\r\n\t\t\t$.alerts._hide();\r\n\t\t\t$.alerts._overlay('show');\r\n\t\t\t\r\n\t\t\t$(\"BODY\").append(\r\n\t\t\t '
      ' +\r\n\t\t\t '

      ' +\r\n\t\t\t '
      ' +\r\n\t\t\t '
      ' +\r\n\t\t\t\t'
      ' +\r\n\t\t\t '
      ');\r\n\t\t\t\r\n\t\t\tif( $.alerts.dialogClass ) $(\"#popup_container\").addClass($.alerts.dialogClass);\r\n\t\t\t\r\n\t\t\t// IE6 Fix\r\n\t\t\t//var pos = ($.browser.msie && parseInt($.browser.version) <= 6) ? 'absolute' : 'fixed';\r\n\t\t\tvar pos = 'fixed';\r\n\t\t\t\r\n\t\t\t$(\"#popup_container\").css({\r\n\t\t\t\tposition: pos,\r\n\t\t\t\tzIndex: 99999,\r\n\t\t\t\tpadding: 0,\r\n\t\t\t\tmargin: 0\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t$(\"#popup_title\").text(title);\r\n\t\t\t$(\"#popup_content\").addClass(type);\r\n\t\t\t$(\"#popup_message\").text(msg);\r\n\t\t\t$(\"#popup_message\").html( $(\"#popup_message\").text().replace(/\\n/g, '
      ') );\r\n\t\t\t\r\n\t\t\t$(\"#popup_container\").css({\r\n\t\t\t\tminWidth: $(\"#popup_container\").outerWidth(),\r\n\t\t\t\tmaxWidth: $(\"#popup_container\").outerWidth()\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\t$.alerts._reposition();\r\n\t\t\t$.alerts._maintainPosition(true);\r\n\t\t\t\r\n\t\t\tswitch( type ) {\r\n\t\t\t\tcase 'alert':\r\n\t\t\t\t\t$(\"#popup_message\").after('
      ');\r\n\t\t\t\t\t\r\n\t\t\t\t\t$(\"#popup_ok\").click( function() {\r\n\t\t\t\t\t\t$.alerts._hide();\r\n\t\t\t\t\t\tcallback(true);\r\n\t\t\t\t\t\t$.alerts.raiseNextDialog();\r\n\t\t\t\t\t});\r\n\t\t\t\t\t$(\"#popup_ok\").focus().keypress( function(e) {\r\n\t\t\t\t\t\tif( e.keyCode == 13 || e.keyCode == 27 ) $(\"#popup_ok\").trigger('click');\r\n\t\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\t\tcase 'confirm':\r\n\t\t\t\t\t$(\"#popup_message\").after('
      ');\r\n\t\t\t\t\t$(\"#popup_ok\").click( function() {\r\n\t\t\t\t\t\t$.alerts._hide();\r\n\t\t\t\t\t\tif( callback ) callback(true);\r\n\t\t\t\t\t\t$.alerts.raiseNextDialog();\r\n\t\t\t\t\t});\r\n\t\t\t\t\t$(\"#popup_cancel\").click( function() {\r\n\t\t\t\t\t\t$.alerts._hide();\r\n\t\t\t\t\t\tif( callback ) callback(false);\r\n\t\t\t\t\t\t$.alerts.raiseNextDialog();\r\n\t\t\t\t\t});\r\n\t\t\t\t\t$(\"#popup_ok\").focus();\r\n\t\t\t\t\t$(\"#popup_ok, #popup_cancel\").keypress( function(e) {\r\n\t\t\t\t\t\tif( e.keyCode == 13 ) $(\"#popup_ok\").trigger('click');\r\n\t\t\t\t\t\tif( e.keyCode == 27 ) $(\"#popup_cancel\").trigger('click');\r\n\t\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\t\tcase 'prompt':\r\n\t\t\t\t\t$(\"#popup_message\").append('
      ').after('
      ');\r\n\t\t\t\t\t$(\"#popup_prompt\").width( $(\"#popup_message\").width() );\r\n\t\t\t\t\t$(\"#popup_ok\").click( function() {\r\n\t\t\t\t\t\tvar val = $(\"#popup_prompt\").val();\r\n\t\t\t\t\t\t$.alerts._hide();\r\n\t\t\t\t\t\tif( callback ) callback( val );\r\n\t\t\t\t\t\t$.alerts.raiseNextDialog();\r\n\t\t\t\t\t});\r\n\t\t\t\t\t$(\"#popup_cancel\").click( function() {\r\n\t\t\t\t\t\t$.alerts._hide();\r\n\t\t\t\t\t\tif( callback ) callback( null );\r\n\t\t\t\t\t\t$.alerts.raiseNextDialog();\r\n\t\t\t\t\t});\r\n\t\t\t\t\t$(\"#popup_prompt, #popup_ok, #popup_cancel\").keypress( function(e) {\r\n\t\t\t\t\t\tif( e.keyCode == 13 ) $(\"#popup_ok\").trigger('click');\r\n\t\t\t\t\t\tif( e.keyCode == 27 ) $(\"#popup_cancel\").trigger('click');\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif( value ) $(\"#popup_prompt\").val(value);\r\n\t\t\t\t\t$(\"#popup_prompt\").focus().select();\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t// Make draggable\r\n\t\t\tif( $.alerts.draggable ) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\t$(\"#popup_container\").draggable({ handle: $(\"#popup_title\") });\r\n\t\t\t\t\t$(\"#popup_title\").css({ cursor: 'move' });\r\n\t\t\t\t} catch(e) { /* requires jQuery UI draggables */ }\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t_hide: function() {\r\n\t\t\t$(\"#popup_container\").remove();\r\n\t\t\t$.alerts._overlay('hide');\r\n\t\t\t$.alerts._maintainPosition(false);\r\n\t\t},\r\n\t\t\r\n\t\t_overlay: function(status) {\r\n\t\t\tswitch( status ) {\r\n\t\t\t\tcase 'show':\r\n\t\t\t\t\t$.alerts._overlay('hide');\r\n\t\t\t\t\t$(\"BODY\").append('
      ');\r\n\t\t\t\t\t$(\"#popup_overlay\").css({\r\n\t\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t\t\tzIndex: 99998,\r\n\t\t\t\t\t\ttop: '0px',\r\n\t\t\t\t\t\tleft: '0px',\r\n\t\t\t\t\t\twidth: '100%',\r\n\t\t\t\t\t\theight: $(document).height(),\r\n\t\t\t\t\t\tbackground: $.alerts.overlayColor,\r\n\t\t\t\t\t\topacity: $.alerts.overlayOpacity\r\n\t\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\t\tcase 'hide':\r\n\t\t\t\t\t$(\"#popup_overlay\").remove();\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t},\r\n\t\t\r\n\t\t_reposition: function() {\r\n\t\t\tvar top = (($(window).height() / 2) - ($(\"#popup_container\").outerHeight() / 2)) + $.alerts.verticalOffset;\r\n\t\t\tvar left = (($(window).width() / 2) - ($(\"#popup_container\").outerWidth() / 2)) + $.alerts.horizontalOffset;\r\n\t\t\tif( top < 0 ) top = 0;\r\n\t\t\tif( left < 0 ) left = 0;\r\n\t\t\t\r\n\t\t\t// IE6 fix\r\n\t\t\t//if( $.browser.msie && parseInt($.browser.version) <= 6 ) top = top + $(window).scrollTop();\r\n\t\t\t\r\n\t\t\t$(\"#popup_container\").css({\r\n\t\t\t\ttop: top + 'px',\r\n\t\t\t\tleft: left + 'px'\r\n\t\t\t});\r\n\t\t\t$(\"#popup_overlay\").height( $(document).height() );\r\n\t\t},\r\n\t\t\r\n\t\t_maintainPosition: function(status) {\r\n\t\t\tif( $.alerts.repositionOnResize ) {\r\n\t\t\t\tswitch(status) {\r\n\t\t\t\t\tcase true:\r\n\t\t\t\t\t\t$(window).bind('resize', $.alerts._reposition);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase false:\r\n\t\t\t\t\t\t$(window).unbind('resize', $.alerts._reposition);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t}\r\n\t\r\n\t// Shortuct functions\r\n\tjAlert = function(message, title, callback) {\r\n\t\t$.alerts.alert(message, title, callback);\r\n\t}\r\n\t\r\n\tjConfirm = function(message, title, callback) {\r\n\t\t$.alerts.confirm(message, title, callback);\r\n\t};\r\n\t\t\r\n\tjPrompt = function(message, value, title, callback) {\r\n\t\t$.alerts.prompt(message, value, title, callback);\r\n\t};\r\n\t\r\n})(jQuery);","\r\nvar appa = {\r\n GetBoolSearchVal: function (selector) {\r\n return ((selector.val() == \"-1\" || selector.val() == \"\") ? null :\r\n (selector.val() === \"1\"));\r\n },\r\n\r\n GetInputVal: function (elName, element) {\r\n return $('input[name=\"' + elName + '\"]', element).val();\r\n },\r\n\r\n GetTextAreaVal: function (elName, element) {\r\n return $('textarea[name=\"' + elName + '\"]', element).val();\r\n },\r\n\r\n GetSelectVal: function (elName, element) {\r\n return $('select[name=\"' + elName + '\"]', element).val();\r\n },\r\n\r\n GetCheckBoxVal: function (elName, element) {\r\n return $('input[id=\"' + elName + '\"]', element).is(\":checked\");\r\n },\r\n\r\n GetCheckBoxValByName: function (elName, element) {\r\n return $('input[name=\"' + elName + '\"]:checked', element).val();\r\n },\r\n\r\n Strip: function (html) {\r\n var tmp = document.createElement(\"DIV\");\r\n tmp.innerHTML = html;\r\n return tmp.textContent || tmp.innerText || \"\";\r\n },\r\n\r\n htmlEncode: function (html) {\r\n return document.createElement('a').appendChild(\r\n document.createTextNode(html)).parentNode.innerHTML;\r\n },\r\n\r\n MakeProgress: function(data) {\r\n var divdata = \"\";\r\n\r\n if (data) {\r\n var rounded = Math.round(data);\r\n\r\n divdata =\r\n '
      ' + \r\n '
      ' +\r\n ' ' + rounded + '%' +\r\n '
      ' +\r\n '
      ';\r\n\r\n }\r\n return divdata;\r\n },\r\n\r\n MakeCheck: function(data) {\r\n return '';\r\n }\r\n};","(function SystemItemControl() {\r\n\r\n function wrap($context, before, fn) {\r\n return function () {\r\n before.apply($context, arguments);\r\n return fn.apply($context, arguments);\r\n };\r\n };\r\n\r\n\r\n function InitControl(placeholderElement, config) {\r\n var ctl = new $.fn.systemitem.controls[config.type](config);\r\n ctl.init($(placeholderElement));\r\n return ctl;\r\n };\r\n\r\n //plain text control\r\n function TextControl(config) {\r\n var self = this;\r\n\r\n self.config = config;\r\n\r\n Object.defineProperty(self, 'element', {\r\n value: $(''),\r\n writable: false,\r\n enumerable: true,\r\n configurable: true\r\n });\r\n\r\n Object.defineProperty(self, \"value\", {\r\n get: function () { return self.element.val(); },\r\n set: function (val) { self.element.val(val); },\r\n configurable: true\r\n });\r\n\r\n self.init = function ($placeholder) {\r\n\r\n $placeholder.css('display', 'none');//hide placeholder\r\n\r\n if (self.config.class) {\r\n self.element.addClass(self.config.class);\r\n }\r\n\r\n //this will probably be the most common case\r\n if (self.config.value) {\r\n self.element.val(self.config.value);\r\n }\r\n\r\n if (self.config.attributes) {\r\n self.element.attr(self.config.attributes);\r\n }\r\n\r\n self.element.insertAfter($placeholder);\r\n\r\n };\r\n\r\n }\r\n\r\n function BigTextControl(config) {\r\n var self = this;\r\n TextControl.call(self, config);\r\n\r\n Object.defineProperty(self, 'element', {\r\n value: $('