{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/ErrorListing.vue?3489","webpack:///./src/components/PromptDialog.vue?8636","webpack:///./src/components/BasicApp.vue?5751","webpack:///./src/components/HelpDialog.vue?c23d","webpack:///./src/components/SigninDialog.vue?f98c","webpack:///./src/components/FileDialog.vue?db27","webpack:///./src/components/SearchBar.vue?8992","webpack:///./src/components/Spinner.vue?072b","webpack:///./src/components/StyleComponent.vue?e8bd","webpack:///./src/components/AboutComponent.vue?802e","webpack:///./src/parser.js","webpack:///./src/App.vue?c26b","webpack:///./src/components/RevisionView.vue?2b5f","webpack:///./src/components/Footer.vue?7d6d","webpack:///./src/components/HintView.vue?cac6","webpack:///./src/components/AceEditor.vue?655c","webpack:///./src/components/Splitter.vue?2a45","webpack:///./src/components/AccountDialog.vue?da8f","webpack:///./src/components/FileTabsComponent.vue?1421","webpack:///./src/components/HelpDialog.vue?fd1e","webpack:///./src/App.vue?0d36","webpack:///./src/components/BasicApp.vue?ecbd","webpack:///./src/webshared/log.ts","webpack:///./src/webshared/Tracker.ts","webpack:///./src/webshared/EventEmitter.ts","webpack:///./src/webshared/Url.ts","webpack:///./src/webshared/OperationalTransform.ts","webpack:///./src/webshared/suffix.ts","webpack:///./src/webshared/Merge.ts","webpack:///./src/webshared/TextOperationalTransform.ts","webpack:///./src/OpenFiles.ts","webpack:///./src/ParsedDiagram.ts","webpack:///./src/webshared/GoogleAuth.ts","webpack:///./src/webshared/SignalPromise.ts","webpack:///./src/Wsd.ts","webpack:///./src/components/DebugPanel.vue?6104","webpack:///./src/webshared/Html.ts","webpack:///./src/webshared/DebugPanel.ts","webpack:///./src/webshared/Destructor.ts","webpack:///./src/components/DebugPanel.vue?dbc9","webpack:///./src/components/DebugPanel.vue?7ec6","webpack:///./src/components/DebugPanel.vue","webpack:///./src/components/Splitter.vue?78ff","webpack:///./src/components/Splitter.vue?3991","webpack:///./src/components/Splitter.vue?ad49","webpack:///./src/components/Splitter.vue","webpack:///./src/components/PromptDialog.vue?4412","webpack:///./src/components/PromptDialog.vue?6d40","webpack:///./src/components/PromptDialog.vue?ac19","webpack:///./src/components/PromptDialog.vue","webpack:///./src/webshared/Debounce.ts","webpack:///./src/WsdProducts.ts","webpack:///./src/components/BasicApp.vue?20a8","webpack:///./src/components/BasicApp.vue?ccc6","webpack:///./src/components/BasicApp.vue","webpack:///./src/components/WsdMain.vue?4d8e","webpack:///./src/Settings.ts","webpack:///./src/components/AceEditor.vue?2a8b","webpack:///./src/AceEditMode.ts","webpack:///./src/components/AceEditor.vue?5ceb","webpack:///./src/components/AceEditor.vue?ae33","webpack:///./src/components/AceEditor.vue","webpack:///./src/components/ImageVue.vue?54f3","webpack:///./src/ImageView.ts","webpack:///./src/components/ImageVue.vue?9689","webpack:///./src/components/ImageVue.vue?00a2","webpack:///./src/components/ImageVue.vue","webpack:///./src/components/Footer.vue?ccf4","webpack:///./src/components/Footer.vue?47c3","webpack:///./src/components/Footer.vue?87a5","webpack:///./src/components/Footer.vue","webpack:///./src/components/ErrorListing.vue?f78e","webpack:///./src/components/ErrorListing.vue?4880","webpack:///./src/components/ErrorListing.vue?4672","webpack:///./src/components/ErrorListing.vue","webpack:///./src/components/SigninDialog.vue?3645","webpack:///./src/components/Spinner.vue?d0fc","webpack:///./src/components/Spinner.vue?d4e6","webpack:///./src/components/Spinner.vue?e2d9","webpack:///./src/components/Spinner.vue","webpack:///./src/components/SigninDialog.vue?421f","webpack:///./src/components/SigninDialog.vue?53d5","webpack:///./src/components/SigninDialog.vue","webpack:///./src/components/AccountDialog.vue?ae7e","webpack:///./src/components/AccountDialog.vue?e01e","webpack:///./src/components/AccountDialog.vue?4e93","webpack:///./src/components/AccountDialog.vue","webpack:///./src/components/MultipleSigninDialog.vue?f545","webpack:///./src/components/MultipleSigninDialog.vue?237f","webpack:///./src/components/MultipleSigninDialog.vue?9038","webpack:///./src/components/MultipleSigninDialog.vue","webpack:///./src/components/FileTabsComponent.vue?32a3","webpack:///./src/components/FileTabsComponent.vue?1453","webpack:///./src/components/FileTabsComponent.vue?c608","webpack:///./src/components/FileTabsComponent.vue","webpack:///./src/components/FileDialog.vue?b08f","webpack:///./src/webshared/FriendlyDate.ts","webpack:///./src/components/ShareFolderDialog.vue?3c19","webpack:///./src/components/ShareFolderDialog.vue?8daa","webpack:///./src/components/ShareFolderDialog.vue?0fc4","webpack:///./src/components/ShareFolderDialog.vue","webpack:///./src/components/FileDialog.vue?7e4d","webpack:///./src/components/FileDialog.vue?8018","webpack:///./src/components/FileDialog.vue","webpack:///./src/components/HintView.vue?d53f","webpack:///./src/hints.ts","webpack:///./src/components/HintView.vue?6320","webpack:///./src/components/ShareDialog.vue?b6a6","webpack:///./src/components/HintView.vue?9dcc","webpack:///./src/components/HintView.vue","webpack:///./src/components/ShareDialog.vue?4440","webpack:///./src/components/ShareDialog.vue?6fe8","webpack:///./src/components/ShareDialog.vue","webpack:///./src/components/HelpDialog.vue?f753","webpack:///./src/components/HelpDialog.vue?e2bb","webpack:///./src/components/HelpDialog.vue?a475","webpack:///./src/components/HelpDialog.vue","webpack:///./src/components/StyleComponent.vue?16a0","webpack:///./src/components/StyleComponent.vue?97cc","webpack:///./src/components/StyleComponent.vue?2de1","webpack:///./src/components/StyleComponent.vue","webpack:///./src/components/RevisionView.vue?f768","webpack:///./src/components/RevisionView.vue?76d1","webpack:///./src/components/RevisionView.vue?d9e9","webpack:///./src/components/RevisionView.vue","webpack:///./src/components/SearchBar.vue?974a","webpack:///./src/components/SearchBar.vue?359d","webpack:///./src/components/SearchBar.vue?82ff","webpack:///./src/components/SearchBar.vue","webpack:///./src/components/WsdMain.vue?5a55","webpack:///./src/components/WsdMain.vue?4671","webpack:///./src/components/WsdMain.vue","webpack:///./src/components/AboutComponent.vue?8cbf","webpack:///./src/components/AboutComponent.vue?480e","webpack:///./src/components/AboutComponent.vue?2a14","webpack:///./src/components/AboutComponent.vue","webpack:///./src/App.vue?ec60","webpack:///./src/App.vue?6d49","webpack:///./src/App.vue","webpack:///./src/main.ts","webpack:///./src/components/MultipleSigninDialog.vue?e270","webpack:///./src/components/ShareDialog.vue?133c","webpack:///./semantic/dist/semantic.min.js","webpack:///./src/components/ImageVue.vue?4af4","webpack:///./src/components/WsdMain.vue?e77a","webpack:///./src/components/DebugPanel.vue?480a","webpack:///./src/components/ShareFolderDialog.vue?1d93"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","peg$subclass","child","parent","ctor","this","constructor","peg$SyntaxError","message","expected","found","location","Error","captureStackTrace","peg$parse","input","options","peg$result","peg$FAILED","peg$startRuleFunctions","start","peg$parsestart","peg$startRuleFunction","peg$c0","peg$c1","peg$literalExpectation","peg$c2","peg$anyExpectation","peg$c3","peg$c4","peg$c5","peg$c6","peg$c7","peg$c8","a","b","Ast","peg$c9","peg$c10","peg$c11","peg$c12","peg$c13","e","peg$c14","peg$c15","peg$c16","peg$c17","ret","peg$c20","peg$classExpectation","peg$c21","peg$c22","f","g","h","peg$c23","peg$c24","peg$c25","peg$c26","peg$c27","peg$c28","peg$c29","peg$c30","peg$c31","peg$c32","peg$c33","peg$c34","peg$c35","peg$c36","peg$c37","peg$c38","peg$c39","peg$c40","peg$c41","peg$c42","peg$c43","peg$c44","peg$c45","peg$c46","join","peg$c47","peg$c48","peg$c49","peg$c50","peg$c51","peg$c52","peg$c53","peg$c54","peg$c55","peg$c56","peg$c57","peg$c58","text","peg$c59","peg$c60","peg$c61","peg$c62","peg$c63","peg$c64","peg$c65","peg$c66","peg$c67","peg$c68","peg$c69","peg$c70","peg$c71","peg$c72","peg$c73","peg$c74","peg$c75","peg$c76","peg$c77","peg$c78","peg$c79","peg$c80","peg$c81","peg$c82","peg$c83","peg$c84","peg$c85","peg$c86","peg$c87","peg$c88","peg$c89","peg$c90","peg$c91","peg$c92","peg$c93","peg$c94","peg$c95","peg$c96","peg$c97","peg$c98","peg$c99","peg$c100","peg$c101","peg$c102","peg$c103","peg$c104","peg$c105","peg$c106","peg$c107","peg$c108","peg$c109","peg$c110","peg$c111","peg$c112","peg$c113","peg$c114","peg$c115","peg$c116","peg$c117","peg$c118","peg$c119","peg$c120","peg$c121","peg$c122","peg$c123","peg$c124","peg$c125","peg$currPos","peg$savedPos","peg$posDetailsCache","line","column","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","startRule","peg$computeLocation","ignoreCase","type","parts","inverted","peg$endExpectation","peg$computePosDetails","pos","details","charCodeAt","startPos","endPos","startPosDetails","endPosDetails","offset","end","peg$fail","peg$buildStructuredError","buildMessage","s0","peg$parsestatements","s1","peg$parsestatement","peg$parsecomment","peg$parseannotation","s2","s3","peg$parsews","peg$parsebare_statement","peg$parseeof","peg$parsetitle_statement","peg$parseparticipant_statement","peg$parsesignal_statement","peg$parseone_participant_action","peg$parseautonumber_statement","peg$parseinclude_statement","peg$parseoption_statement","peg$parsesimple_note_statement","peg$parsemultiline_note_statement","peg$parseref_statement","peg$parseparallel_statement","peg$parsegroup_statement","peg$parseerror","charAt","substr","toLowerCase","peg$parseto_eol","peg$parsealias_decl","peg$parseparticipant_decl","s4","s5","peg$parsequoted_name","peg$parseas_delimited","peg$parseas","s6","s7","s8","s9","peg$parseparticipant","peg$parsearrow","peg$parsearrow_delimited","test","peg$parsesp","peg$parsefooter_option","peg$parsegroup_option","peg$parsenote_placement","peg$parseparticipant_list","peg$parsetext","peg$parseend_note","peg$parseend_ref","peg$parseend_ref_inner","peg$parseref_to_part","peg$parsegroup_type","peg$parseelse_clause","peg$parseend_group","AstNode","locus","label","thing","DESCRIBE_EXPECTATION_FNS","literal","expectation","literalEscape","escapedParts","Array","classEscape","any","other","description","hex","ch","toString","toUpperCase","replace","describeExpectation","describeExpected","descriptions","sort","describeFound","SyntaxError","parse","render","_vm","_h","$createElement","_c","_self","attrs","app","_e","ref","staticRenderFns","staticClass","staticStyle","_v","style","visibility","Wsd","busy","_s","user","email","userid","directives","rawName","expression","domProps","on","$event","target","composing","username","password","password2","signin","signInModel","addUser","signOut","forgotPassword","error","accountModel","subscribed","expiryDate","hasGoogle","specialUser","cancelled","updateEmail","updatePassword","removeGoogleSignin","buy","updateCard","cancelPayments","showReceipts","updateProductKey","fileModel","init","$set","_l","folder","projectid","class","selected","currentFolder","setFolder","deleteFile","rename","createFolder","deleteFolder","renameFolder","moveToFolder","createInFolder","inviteToProject","duplicate","openFromComputer","setSortOrder","file","fileid","currentFile","setFile","open","mtime","openFiles","isActiveFile","setActiveFile","close","activeFile","saveFile","renameParticipant","onTextChanged","exportDiagram","Logger","disabled","listeners","consoleEnabled","enabled","self","fn","_","logfunc","arguments","listenerFn","addListener","console","log","args","format","segments","split","undefined","Function","JSON","stringify","joined","listener","url","domain","hostname","setting","eventName","referrer","document","encodeURIComponent","event","items","script","indexOf","protocol","createElement","setAttribute","body","appendChild","Tracker","EventEmitter","nolog","events","eventQueue","emitting","var_args","setTimeout","dispatch","fnlist","names","wrapper","unbind","arr","_i","_ref","emitter","concat","Url","unescape","string","decodeURIComponent","splitQueryString","separator","field","fields","index","_len","encode","mapping","first","unshift","replaceHashValue","encoded","query","hash","deleteHashValue","setBooleanHashValue","href","getFloatHashValue","def","parseFloat","OpList","cid","parentCid","ts","ops","local","id","op","clone","inverse","EncodedChanges","changes","baseCid","lastCid","CidType","autoexec","cidType","undoStack","next","all","ackedTo","unsorted","ignoring","lockTo","debugInfo","debugOldTop","_nextCid","_cidPrefix","locked","canUndo","reapply","commit","canRedo","rev","wantedIndex","indexOfCID","currentIndex","executeList","Numbered","change","numSent","parseInt","firstCid","opList","skipUndo","Random","Op","execute","revno","findOperationIndex","revision","nextCid","now","transformOpList","list1","lists2","list2","transformList","oplist","cid1","cid2","transformOp","cursorOps","newLists","decode","list","cursor","getLastCid","Date","getTime","lockedToIndex","revertedTo","shiftedOld","areOpsEquivalent","pop","tree","alocal","isLocalCid","blocal","children","firstChangeId","ordered","getNodesAsList","output","branch","peek","Math","floor","random","prefix","c1","c2","ops1","ops2","str1","str2","str","remote","leq2","a1","a2","b1","b2","leq3","a3","b3","radixPass","K","sum","suffixArray","SA","size","n0","n1","n2","n02","s12","SA12","k","SA0","c0","GetI","getBuckets","bkt","os","induceSAl","oa","induceSAs","SA_IS","prev","diff","SA1","s1off","isLms","FindSuffixArray","useDC3","sorted","item2Num","numeric","DiffLog","getOpcodes","blocks","minSame","block","del","ins","skip","answer","at","MergeMatches","matches","OverlappingMatch","m1","m2","MYERS_DIFF_LIMIT","MyersLCS","t1","t2","Snake","x","y","N","M","MAX","off","V","snakes","snake","outer","D","reverse","PythonLCS","b2j","createIndex","findLongestMatch","alo","ahi","blo","bhi","newj2len","z","j2len","nothing","besti","bestj","bestsize","getMatchingBlocks","q","match","la","lb","queue","matchingBlocks","non_adjacent","A","B","kasai","sa","lcp","rank","length1","length2","seq","String","fromCharCode","minimumSize","bIndex","aIndex","min","lo","hi","newL","mid","P","L","matches2","CalculateLCS","abs","CalculateLCSUsingSuffixArray","S","T","mum","diffs","mums","p1","p2","DiffEncode","lcs","SelectionRange","lines","row","Overlap","TextOperation","position","super","BASE","selection","save","undo","redo","addRemoteChanges","cursorOp","base","getHead","commands","MINIMUM_DIFFERENCE","pos1","pos2","command","addLocalOps","out","State","cmd","info","state","timestamp","value_esc","code","cmds","prevCid","readCommand","date","round","op1","op2","x1","x2","y1","y2","debug","newPosition","newLength","max","which","getRevision","getNextRevisionNumber","doc","remoteLength","remoteLists","localLists","getAckedTo","MAGIC_TAG","sharedText","selectionRange","hasChangesToSend","sending","dirty","obj","frozen","ofile","Open","fileViewer","ofiles","files","timeout","updateNeeded","delay","numOutstanding","started","messages","processServerMessage","fetchChanges","restoreFromStorage","emit","viewer","listFiles","getFileInfo","then","response","backupToStorage","contents","project","newid","projectName","owner","addRevision","clearUndoStack","removeFromStorage","request","clearTimeout","count","clientid","markChangesSent","currentlyDisplayed","getFileText","getFileSelection","addRemoteTextChanges","setFileText","hasOutstandingChanges","newfile","oldfile","CopyFileInfo","current","sendChanges","getRevisionList","updateFile","getChangesToSend","empty","getBaseCid","appendFile","getData","Promise","reject","createFile","makeVTHeader","range","localStorage","setItem","toJSON","removeItem","number","isNaN","fromJSON","getItem","toRemove","ispart","ast","map","each","node","values","inside","loc","oldName","newName","stack","GoogleSigninLoaded","GoogleAuth","clientID","loadScript","gapi","loadAuth","auth2","resolve","signIn","googleUser","getBasicProfile","getEmail","token","getAuthResponse","id_token","onerror","load","client_id","scope","getAuthInstance","SignalPromise","promise","MAX_UNSUBSCRIBED_WIDTH","src","dest","SAVE_TIMEOUT","TEST","config","WSDCONFIG","googleError","haveBaton","root","host","_styles","cancelDiagram","access","cancelDate","expiry","hasPassword","newAccount","oauth","paymentDate","subscriptionid","subscribedSince","receivedTo","DEFAULT_TITLE","google","googleLoaded","suffix","params","cancel","headers","prefixUrl","ispolling","aborted","req","XMLHttpRequest","withCredentials","setRequestHeader","onreadystatechange","readyState","responseText","status","statusText","contentType","getResponseHeader","getAllResponseHeaders","qs","abort","send","apiVersion","img","backoff","ack","startPolling","authResult","add","LICENSE_VALID","method","methods","reload","re","exec","nosignin","BANNED_STYLES","filter","item","oldPassword","newPassword","oldpassword","newpassword","function","folderid","baseTime","basetime","ids","remove","newname","baseURL","link","filename","memberid","users","invite","ldapUri","ldapSearchUser","ldapSearchPassword","ldapSearchBase","ldapSearchFilter","googleAuth","addOauthMethod","alert","title","wndIn","wnd","diagram","write","focus","print","signInMethod","gold","hmac","BitWriter","partial","partialSize","table","bits","encodeBase64","writer","addBits","finish","encodeUtf8","Len","lengthRequired","point","nextcode","resArr","Uint8Array","resPos","encodeNumber","num","encodeLz77","MinStringLength","lastPos","subs","matchLength","foundMatch","bestMatch","distance","searchStart","isValidMatch","realMatchLength","product","paymentIntent","FNV","tagno","imul","aHi","aLo","bHi","bLo","stripeToken","customer","pathname","isWebEdition","element","display","click","removeChild","paper","landscape","ownFilename","scale","ietf","openUrl","decodeBase64","atob","decodeNumber","decodeLz77","nextChar","decodeUtf8","byte1","byte2","byte3","byte4","codepoint","decodeLz","lz","CancelError","KEY","addEventListener","StripeCheckout","handler","configure","locale","allowRememberMe","Stripe","stripe","requireAddress","prompt","amount","getUser","panelLabel","buttonLabel","billingAddress","zipCode","setBusy","stripeResponse","confirmCardPayment","clientSecret","closed","Payment","inviteEmail","requestedProduct","alreadySignedIn","setFileViewer","notifyFileCreate","hideSplash","splash","getElementById","shouldRedirectToApp","allowGoogleSignIn","loadGoogleSignin","googleClientId","onFirstSignedIn","resetPassword","getUserInfo","onInfoChecked","getConfig","license","isLicenseValid","extractTitle","from","acceptInvite","openFile","getBaton","folderName","action","joinProject","setError","getValue","multiline","setProductKey","saveNew","notifyFileCreated","unsaved","signout","logout","toRowColumn","parsed","underCursor","getParticipantUnderPoint","participants","getParticipants","participant","fromPart","toPart","renameFile","notifyRename","isCancelError","onSelected","reader","FileReader","onload","readAsText","WsdSignInModel","authenticate","samlAuth","createPasswordResetToken","WsdAccountModel","changeUser","toLocaleDateString","removeOauthMethod","confirm","updateStripeCreditCard","AllFiles","SharedFiles","SortOrder","success","getOpenFiles","folders","allFiles","sortOrder","reverseSort","_searchText","setFileModel","filterFiles","showFolderId","listFolders","projects","Name","Folder","order","notifyDeleted","createProject","deleteProject","onFolderRemoved","renameProject","idstring","removeProjectFile","addProjectFile","filep","findByFileid","readFile","removeProjectMember","directive","el","signInGoogle","querySelector","textContent","addGoogleMethod","IsWebEdition","msg","lineNo","columnNo","parseSize","ElClass","parentNode","insertBefore","nextSibling","getComputedStyle","includeMargins","box","getBoundingClientRect","top","pageYOffset","left","pageXOffset","width","height","getMargins","bottom","right","parentOffset","getOffsetParent","getOffset","HTMLElement","getStyle","$html","parentElement","marginLeft","marginTop","marginRight","marginBottom","leftPad","rightPad","topPad","bottomPad","boxSizing","borderLeftWidth","paddingLeft","borderTopWidth","paddingTop","borderRightWidth","paddingRight","borderBottomWidth","paddingBottom","className","classList","useCapture","removeEventListener","selector","expr","trim","attr","hasAttribute","tagName","forEach","querySelectorAll","firstChild","innerText","outerHTML","arg","arg2","elements","elementsFromString","setAttributes","_scrollbarWidth","getElement","getViewportRect","docElement","documentElement","hasVerticalScroll","scrollHeight","clientHeight","hasHorizontalScroll","scrollWidth","clientWidth","sbwidth","getScrollbarWidth","sbheight","scrollTop","scrollLeft","rect","innerWidth","innerHeight","vv","visualViewport","isIPad","navigator","userAgent","pageLeft","pageTop","widthNoScroll","offsetWidth","overflow","inner","widthWithScroll","getHighestZIndex","elems","getElementsByTagName","highest","zindex","contains","getScreenDimensions","flipped","screen","orientation","startsWith","html","div","innerHTML","SVGElement","elem","elementsToString","isTargetTextEntry","ev","KeyboardEvent","isContentEditable","isImageTainted","HTMLCanvasElement","canvas","ctx","getContext","drawImage","getImageData","escapeHtml","isSafari","search","StyleInjector","insertedStyles","styles","head","createTextNode","STYLE","MAX_LINE_LENGTH","destructor","white","nextColour","keyColours","shown","coloursBlack","coloursWhite","colours","inject","timer","appendTo","setFilter","addClass","asHTMLElement","setStyle","setText","atBottom","listenFn","addLine","removeListener","destroy","_addLines","part","RegExp","nodeType","colour","getColourOf","color","destructors","handle","panel","$el","show","components","component","mousemove","_t","flexBasis","gap","mousedown","mainStyle","flexFlow","dragger","zIndex","backgroundColor","flexGrow","minHeight","minWidth","second","down","desired","minSize","onTypeChanged","mouseup","resizeFn","onWindowResize","moveSplitter","offsetHeight","$emit","getDesired","thickness","dispatchEvent","Event","newValue","oldValue","pageX","pageY","setDesired","default","_k","keyCode","onEnterPressed","refInFor","isArray","$$a","$$el","$$c","checked","$$v","$$i","_q","$$selectedVal","val","_value","multiple","onOK","hide","generation","bodyClicked","gen","nextTick","$","$refs","dialog","modal","closable","allowMultiple","onHidden","autofocus","dropdown","showOnFocus","okFn","$nextTick","HTMLInputElement","myindex","getAttribute","Debounce","timeoutMs","products","Products","SPECIAL_DEAL","debounceSave","prompter","editor","selectionStart","selectionEnd","closeFile","download","what","DebugPanel","Splitter","PromptDialog","onKeyDown","onKeyUp","newFile","browseFiles","duplicateFile","toggleRevisions","check","showRevisions","showShareDialog","copyImage","showSearch","zoom","fullscreen","toggleShowTemplates","showTemplates","showErrors","_m","showSale","showDeal","emailOffer","hasGoogleSignin","allowSignIn","showSigninDialog","signInClicked","showAccountDialog","hideSigninError","haveFiles","onShowHelp","errorPosition","onErrorSplitterMoved","slot","layout","hposition","vposition","onSplitterMoved","argsArray","errors","currentRevision","onChangeCursor","model","callback","onUserZoomed","getFilename","onGotoLine","onGotDiagram","onFileTabClicked","onFileTabClose","revisions","onShowRevision","errorsHidden","closeSignIn","signInMessage","browseFolderId","closeFiles","hintTemplate","showHelpDialog","onTemplateClicked","settings","debounce","defValue","set","props","merge","newProps","setSilently","u","source","flags","ace","define","ace_require","oop","TextMode","Mode","ExampleHighlightRules","HighlightRules","tmp","TextHighlightRules","$rules","regex","caseInsensitive","ParticipantExtractors","groups","extractor","group","nextID","ignoreChange","textSet","edit","setValue","setAutoScrollEditorIntoView","removeCommand","getSession","lead","getSelectionLead","resize","langTools","require","$blockScrolling","Infinity","setShowPrintMargin","setMode","setNewLineMode","setCompleters","setOptions","enableBasicAutocompletion","enableSnippets","enableLiveAutocompletion","liveAutocompletionThreshold","liveAutocompletionDelay","theme","fontSize","keywords","addCompleter","getCompletions","session","lprefix","getLine","includeRe","score","meta","keyword","readOnly","setReadOnly","gotoLine","getSelectionRange","setSelectionRange","getAllLines","startString","substring","endString","startSplit","endSplit","startRow","endRow","startColumn","endColumn","aceErrors","lineno","setAnnotations","ctrlKey","metaKey","shiftKey","stopPropagation","preventDefault","needle","find","findNext","findPrevious","wi","replaceAll","shrunk","allowShrinkWarning","hideShrinkWarning","copy","boxes","sequence","zoomFactor","waywardClicks","MaxWaywardClicks","arrowsShown","dragStart","scrollStart","boxesEnabled","mouseEntered","unscaledBoxes","zoomType","textAlign","screenWidth","availWidth","inches","dpi","requestedScale","spinner","borderWidth","borderRadius","borderColor","borderStyle","pointerEvents","onMouseMove","clipheading","heading","onscroll","onwheel","setBoxesEnabled","opacity","transition","yes","hideBox","_rescale","grayed","allowScaling","setGrayed","onLoaded","offsetTop","offsetLeft","margin","fadeOut","fadeIn","scroll","naturalWidth","createHeader","clear","divOffset","maxHeight","header","backgroundImage","backgroundRepeat","backgroundPosition","backgroundSize","drawBox","dx","dy","imgOffset","deltaY","CustomEvent","bubbles","oldWidth","oldHeight","newWidth","newHeight","naturalHeight","imageX","imageY","border","copyCanvasToClipboard","makeBlob","toBlob","blob","clipboard","ClipboardItem","TYPING_TIMEOUT","textDebounce","settingsDebounce","onResize","view","imageView","TEXT_UNSET","wsdstyle","resetUserZoom","actualWidth","showLine","copyToClipboard","onLineClicked","sso","createAccount","mounted","closeable","Spinner","saml","expired","hasReceipts","onClick","projetid","onFolderDrop","onDragOver","onDragLeave","bolded","onDragStart","getFilePreviewUrl","friendlyTime","moveFile","showShareFolderDialog","Ago","FriendlyTime","delta","interval","short","MINUTE","HOUR","DAY","MONTH","YEAR","IN","AGO","YEARS","MONTHS","DAYS","HOURS","MINUTES","SECONDS","months","years","shareUrl","select","member","selectedid","members","listProjectMembers","getFolderInviteLink","dataTransfer","setData","dropEffect","removeAttribute","ShareFolderDialog","hint","premium","onSignal","HINTS_TEXT","readHelp","hints","havePremium","reading","template","example","where","HELP","LinkType","active","activeMode","linkType","Options","Image","formats","paperSizes","linkTypes","UpdatingImage","Page","File","resolveIncludes","getWsdLink","getLink","tab","onLinkChanged","toggleClass","onFollowLink","use","onupdated","makeEditor","immediate","area","lineCount","getStyles","day","days","toDays","lastTs","toDateString","toLocaleTimeString","searchText","replaceText","showFileDialog","clipboardAllowed","underline","textDecoration","altKey","oldURL","newURL","onHashChange","onBeforeUnload","isOpen","onFileClosed","imageVue","canEdit","sel","scrollToPrices","path","pieces","setPageTitle","getRevisions","old","newUrl","IsRunningInCrawler","newZoom","arg1","isSubscribedMonthly","iv","AceEditor","ImageVue","Footer","ErrorListing","SigninDialog","AccountDialog","FileTabs","FileDialog","HintView","ShareDialog","HelpDialog","StyleComponent","RevisionView","SearchBar","MultipleSigninDialog","CrawlerRE","goto","scrollIntoView","showMain","showAbout","enableConsole","shouldStartInApp","BasicApp","WsdMain","AboutComponent","productionTip","$mount","wsdok","lastError","colno","v","site","isPlainObject","extend","namespace","initialize","instantiate","verbose","normalize","fix","requestAnimationFrame","disable","groupEnd","groupCollapsed","markTimeline","consoleClear","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","moduleExists","enable","cache","warn","removeData","internal","performance","Element","Arguments","invoke","isFunction","siteNamespace","namespaceStub","sections","section","utilities","createPseudo","jQuery","F","O","form","C","w","R","E","bindEvents","defaults","removeEvents","refresh","submit","reset","attachEvents","validate","blur","keyboardShortcuts","keydown","prop","changeEvent","closest","defaultValue","is","uiCheckbox","uiDropdown","hasClass","removeClass","determine","isValid","bracketedRule","regExp","bracket","shorthandFields","keys","shorthandRules","blank","valid","checkbox","one","keyup","validation","revalidate","ancillaryValue","ruleName","inputEvent","oninput","onpropertychange","fieldsFromShorthand","rules","identifier","unspecifiedRule","eq","unspecifiedField","oldSyntax","metadata","escape","radio","has","rule","inline","templates","duration","isEmptyObject","onSuccess","stopImmediatePropagation","onFailure","depends","optional","onValid","onInvalid","noRule","silent","htmlID","decimal","integer","isExactly","not","notExactly","contain","containExactly","doesntContain","doesntContainExactly","minLength","exactLength","maxLength","different","creditCard","minCount","exactCount","maxCount","pressed","containsExactly","visa","pattern","amex","mastercard","discover","unionPay","jcb","maestro","dinersClub","laser","visaElectron","inArray","accordion","content","observeChanges","MutationObserver","observe","childList","subtree","trigger","toggle","animating","collapsible","onOpening","onChanging","exclusive","closeOthers","stop","animateChildren","animation","useFailSafe","animate","resetOpacity","slideDown","easing","onOpen","onChange","onClosing","slideUp","onClose","parents","closeNested","css","removeAttr","easeOutQuad","tabbable","setup","reference","initialLoad","indeterminate","uncheck","hidden","notFound","should","allowCheck","ignoreCallbacks","onChecked","allowUncheck","unchecked","onUnchecked","allowIndeterminate","onIndeterminate","determinate","allowDeterminate","onDeterminate","onEnable","onEnabled","onDisable","onDisabled","radios","otherRadios","forceCallbacks","beforeChecked","beforeUnchecked","beforeIndeterminate","beforeDeterminate","fireOnInit","can","uncheckable","uncheckOthers","createEvent","initEvent","prevAll","detach","insertAfter","dimmer","preinitialize","dimmerName","dimmable","variation","page","pageDimmer","addContent","dimmed","onShow","onHide","useCSS","useFlex","legacy","displayType","onStart","onComplete","fadeTo","Y","Z","J","H","U","W","Q","X","context","sizer","icon","menu","I","alreadySetup","refreshData","restore","disconnect","menuObserver","selectObserver","mutation","userChoice","userValues","addition","variables","addResult","hideAdditions","userLabels","minCharacters","firstUnfiltered","selectedItem","unselectable","nextAvailable","nextAll","api","urlData","returnedObject","searchSelection","allowTab","selectValues","missingMultiple","prependTo","refreshSelectors","refreshItems","clearData","defaultText","placeholderText","queryRemote","maxSelections","allResultsFiltered","allFiltered","intent","menuSearch","focusSearch","visible","animatingOutward","hideOthers","hideMenu","hideSubMenus","touchEvents","keyboardEvents","inputEvents","mouseEvents","single","mouseenter","mouseleave","touch","filterActive","activeItem","onNoResults","allowAdditions","noResults","userSuggestion","focusedOnSearch","useLabels","apiSettings","useAPI","filterRemoteData","filterItems","noAPI","errorDuration","throttle","onError","serverError","remoteValues","choiceText","fullTextSearch","exactSearch","fuzzySearch","choiceValue","filteredItem","filtered","forceSelection","searchTerm","activeElement","activeLabel","nextUntil","prevUntil","onLabelSelect","activeLabels","bubbledLabelClick","bubbledIconClick","eventOnElement","eventInModule","addedNodes","removedNodes","siblings","itemTimer","allowCategorySelection","userAddition","scrollPosition","selectAction","inObject","focused","caretPosition","leftArrow","siblingLabel","last","rightArrow","deleteKey","backspace","addBack","delimiter","enter","upArrow","selectOnKeydown","downArrow","pageUp","scrollPage","pageDown","selectedLetter","activate","hideAndClear","combo","placeholder","searchWidth","ceil","selectionCount","upward","grep","uniqueArray","createRange","moveStart","selectInput","read","remoteData","preserveHTML","menuIcon","sortSelect","itemWithAdditions","labels","saveRemoteData","Storage","sessionStorage","noStorage","clearValue","outerHeight","glyphWidth","loading","partialSearch","firstLetter","direction","openDownward","leftward","openRightward","allowReselection","extendSelect","optionValue","clearable","exactly","onLabelCreate","onAdd","arrayValue","onRemove","userValue","onLabelRemove","valueIgnoringCase","valueMatchingCase","animatingInward","selectMutation","verticallyScrollableContext","horizontallyScrollableContext","above","below","outerWidth","noTransition","quote","keepOnScreen","embed","sources","autoplay","createAndShow","createPlaceholder","generate","createEmbed","onCreate","changeEmbed","showPlaceholder","onReset","onDisplay","onPlaceholderDisplay","parameters","iframe","noURL","onEmbed","video","hd","brandedUI","youtube","autohide","hq","jsapi","modestbranding","vimeo","byline","portrait","onPause","onPlay","onStop","refreshModals","centered","dimmerSettings","detachable","undetached","scrolling","cacheSizes","modalOffset","screenHeight","approve","deny","scrollLock","preventScroll","passive","onApprove","onDeny","clickaway","hideAll","keyboard","dimmerStyles","showModal","hideModal","showDimmer","others","onVisible","hideDimmer","blurring","bodyStyle","pageHeight","contextHeight","topOffset","ie","fit","padding","ActiveXObject","modernBrowser","nag","dismiss","displayTime","storageMethod","storage","persist","storageOptions","expires","cookie","noCookieStorage","removeCookie","fixed","speed","popup","scrollContext","boundary","createID","exists","preserve","documentChanged","offsetParent","movePopup","reposition","removePopup","hideTimer","showTimer","touchstart","hideGracefully","activator","hoverable","conditions","popupVisible","supports","svg","SVGGraphicsElement","popupOffset","calculations","setFluidWidth","fluid","container","getPropertyValue","rtl","startEvent","scrollEvent","endEvent","distanceFromBoundary","positions","nextPosition","prefer","center","distanceAway","centerArrow","arrowPixelsFromEdge","maxSearchDepth","lastResort","invalidPosition","offstage","cannotPlace","attempts","onUnplaceable","fluidWidth","hideOnScroll","closeOnScroll","touchClose","basic","jitter","addTouchEvents","progress","bar","transitionEvent","clearInterval","nextValue","update","complete","percent","progressPoll","total","transitionEnd","failSafeTimer","triggerHandler","failSafeDelay","increment","randomValue","normalizedValue","decrement","displayPercent","updateInterval","numericValue","OTransition","MozTransition","WebkitTransition","precision","toNextValue","warning","barWidth","tooHigh","tooLow","limitValues","labelInterval","setInterval","framerate","barLabel","autoSuccess","ratio","showActivity","onLabelUpdate","onActive","onWarning","nonNumeric","variable","rating","interactive","initialRating","maxRating","clearRating","onRate","slent","noMaximum","searchButton","results","category","searchFields","refreshResults","automatic","handleKeyboard","searchDelay","searchOnFocus","minimumCharacters","showResults","hideResults","hideDelay","resultsClicked","inMessage","onSelect","buttonPressed","buttonFocus","displayMessage","onAbort","searchFullText","oldSearchSyntax","firstResult","addResults","onSearchQuery","maxResults","categoryResults","generateResults","beginsWith","onResultsAdd","selectFirstResult","onResultsOpen","onResultsClose","noTemplate","showNoResults","onResults","displayField","logging","noEndpoint","categories","categoryName","image","price","actionText","actionURL","standard","shape","sides","side","defaultSide","repaint","beforeChange","currentStageSize","stageSize","nextSide","flip","up","allowRepeats","transform","stage","over","behind","back","origin","depth","sidebar","pusher","delaySetup","ios","containScroll","inlineCSS","refreshSidebars","omitted","wrapAll","movedSidebar","pushable","overlay","othersActive","pushPage","pullPage","othersAnimating","othersVisible","scrollToTop","dimPage","returnScroll","mobile","scrollBack","scrollTo","pushed","mobileTransition","defaultTransition","computer","mobileChrome","vertical","sticky","determineContainer","determineContext","checkErrors","scrollchange","changed","invalidContext","elementSize","stick","onScroll","onReposition","supported","lastScroll","elementScroll","standardScroll","fits","sameHeight","containerSize","scrollChange","currentElementScroll","setProperty","initialPosition","bound","pushing","bottomOffset","bindBottom","fixTop","setInitialPosition","fixBottom","bindTop","onTop","onUnstick","onBottom","unfix","setSize","onStick","resetCSS","callbacks","determineTabs","auto","history","initializeHistory","isWindow","ui","childrenOnly","tabs","onTabLoad","onTabInit","onLoad","legacyLoad","onFirstLoad","legacyInit","address","historyType","changeTab","pathNames","initialPath","determineTitle","tabElement","onRequest","pushState","ignoreFirstLoad","pathToArray","defaultPathArray","arrayToPath","filterArray","navigation","fetch","missingTab","evaluateScripts","cacheType","append","dataType","encodeParameters","alwaysRefresh","loadOnce","deactivate","navElement","defaultPath","maxDepth","recursion","noContent","loaded","animationEndEvent","forceRepaint","animationDirection","outward","support","occurring","queuing","noAnimation","animationCallbacks","completeCallback","failSafe","looping","inward","force","userStyle","inlineDisplay","animationClass","transitionExists","currentAnimation","queueCallback","currentDirection","animationStartEvent","OAnimation","MozAnimation","WebkitAnimation","stopAll","repeated","stateContext","json","cachedResponse","interruptRequests","defaultData","serializeForm","formData","beforeSend","templatedURL","mocked","beforeXHR","failure","resolveWith","throttleFirstRequest","missingURL","removeError","hideError","expectingJSON","mockResponse","mockResponseAsync","responseAsync","abortedRequest","validResponse","successTest","was","succesful","required","requiredParameter","urlEncodedValue","serializeObject","serialize","missingSerialize","mockedXHR","xhr","always","done","loadingDuration","onResponse","rejectWith","fail","responseFromXHR","errorFromRequest","statusMessage","Deferred","ajax","legacyParameters","noReturnedValue","missingAction","exitConditions","JSONParse","parseError","trackChanges","initialCheck","checkVisibility","resetFixed","contextChanged","refreshOnLoad","refreshOnResize","precache","enableCallbacks","disableCallbacks","occurred","once","onOnScreen","onAllLoaded","onTopPassed","onTopPassedReverse","onFixed","onScreen","elementCalculations","offScreen","checkOnRefresh","onRefresh","passed","passingReverse","topVisibleReverse","bottomVisibleReverse","topPassedReverse","bottomPassedReverse","passing","topVisible","bottomVisible","topPassed","bottomPassed","onUpdate","onPassed","pixelsPassed","onOffScreen","onPassing","onTopVisible","onBottomVisible","onBottomPassed","onPassingReverse","onTopVisibleReverse","onBottomVisibleReverse","onBottomPassedReverse","screenCalculations","continuous","onUnfixed","elementPosition","screenSize","includeMargin","percentagePassed"],"mappings":"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","file":"js/app.js?v=0.9499342295678783","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorListing.vue?vue&type=style&index=0&id=7a0b7d18&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorListing.vue?vue&type=style&index=0&id=7a0b7d18&scoped=true&lang=less&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PromptDialog.vue?vue&type=style&index=0&id=da401f12&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PromptDialog.vue?vue&type=style&index=0&id=da401f12&scoped=true&lang=less&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BasicApp.vue?vue&type=style&index=0&id=5f7c38b8&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BasicApp.vue?vue&type=style&index=0&id=5f7c38b8&scoped=true&lang=less&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpDialog.vue?vue&type=style&index=1&lang=css&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/index.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpDialog.vue?vue&type=style&index=1&lang=css&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SigninDialog.vue?vue&type=style&index=0&id=0241b3c0&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SigninDialog.vue?vue&type=style&index=0&id=0241b3c0&scoped=true&lang=less&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileDialog.vue?vue&type=style&index=0&id=b5eb8850&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileDialog.vue?vue&type=style&index=0&id=b5eb8850&scoped=true&lang=less&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchBar.vue?vue&type=style&index=0&id=045050a0&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchBar.vue?vue&type=style&index=0&id=045050a0&scoped=true&lang=less&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Spinner.vue?vue&type=style&index=0&id=16b98bfe&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Spinner.vue?vue&type=style&index=0&id=16b98bfe&scoped=true&lang=less&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StyleComponent.vue?vue&type=style&index=0&id=1c5f377f&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StyleComponent.vue?vue&type=style&index=0&id=1c5f377f&scoped=true&lang=less&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AboutComponent.vue?vue&type=style&index=0&id=3cc6101e&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AboutComponent.vue?vue&type=style&index=0&id=3cc6101e&scoped=true&lang=less&\"","module.exports = /*\r\n * Generated by PEG.js 0.10.0.\r\n *\r\n * http://pegjs.org/\r\n */\r\n(function() {\r\n \"use strict\";\r\n\r\n function peg$subclass(child, parent) {\r\n function ctor() { this.constructor = child; }\r\n ctor.prototype = parent.prototype;\r\n child.prototype = new ctor();\r\n }\r\n\r\n function peg$SyntaxError(message, expected, found, location) {\r\n this.message = message;\r\n this.expected = expected;\r\n this.found = found;\r\n this.location = location;\r\n this.name = \"SyntaxError\";\r\n\r\n if (typeof Error.captureStackTrace === \"function\") {\r\n Error.captureStackTrace(this, peg$SyntaxError);\r\n }\r\n }\r\n\r\n peg$subclass(peg$SyntaxError, Error);\r\n\r\n peg$SyntaxError.buildMessage = function(expected, found) {\r\n var DESCRIBE_EXPECTATION_FNS = {\r\n literal: function(expectation) {\r\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\r\n },\r\n\r\n \"class\": function(expectation) {\r\n var escapedParts = \"\",\r\n i;\r\n\r\n for (i = 0; i < expectation.parts.length; i++) {\r\n escapedParts += expectation.parts[i] instanceof Array\r\n ? classEscape(expectation.parts[i][0]) + \"-\" + classEscape(expectation.parts[i][1])\r\n : classEscape(expectation.parts[i]);\r\n }\r\n\r\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\r\n },\r\n\r\n any: function(expectation) {\r\n return \"any character\";\r\n },\r\n\r\n end: function(expectation) {\r\n return \"end of input\";\r\n },\r\n\r\n other: function(expectation) {\r\n return expectation.description;\r\n }\r\n };\r\n\r\n function hex(ch) {\r\n return ch.charCodeAt(0).toString(16).toUpperCase();\r\n }\r\n\r\n function literalEscape(s) {\r\n return s\r\n .replace(/\\\\/g, '\\\\\\\\')\r\n .replace(/\"/g, '\\\\\"')\r\n .replace(/\\0/g, '\\\\0')\r\n .replace(/\\t/g, '\\\\t')\r\n .replace(/\\n/g, '\\\\n')\r\n .replace(/\\r/g, '\\\\r')\r\n .replace(/[\\x00-\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\r\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x' + hex(ch); });\r\n }\r\n\r\n function classEscape(s) {\r\n return s\r\n .replace(/\\\\/g, '\\\\\\\\')\r\n .replace(/\\]/g, '\\\\]')\r\n .replace(/\\^/g, '\\\\^')\r\n .replace(/-/g, '\\\\-')\r\n .replace(/\\0/g, '\\\\0')\r\n .replace(/\\t/g, '\\\\t')\r\n .replace(/\\n/g, '\\\\n')\r\n .replace(/\\r/g, '\\\\r')\r\n .replace(/[\\x00-\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\r\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x' + hex(ch); });\r\n }\r\n\r\n function describeExpectation(expectation) {\r\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\r\n }\r\n\r\n function describeExpected(expected) {\r\n var descriptions = new Array(expected.length),\r\n i, j;\r\n\r\n for (i = 0; i < expected.length; i++) {\r\n descriptions[i] = describeExpectation(expected[i]);\r\n }\r\n\r\n descriptions.sort();\r\n\r\n if (descriptions.length > 0) {\r\n for (i = 1, j = 1; i < descriptions.length; i++) {\r\n if (descriptions[i - 1] !== descriptions[i]) {\r\n descriptions[j] = descriptions[i];\r\n j++;\r\n }\r\n }\r\n descriptions.length = j;\r\n }\r\n\r\n switch (descriptions.length) {\r\n case 1:\r\n return descriptions[0];\r\n\r\n case 2:\r\n return descriptions[0] + \" or \" + descriptions[1];\r\n\r\n default:\r\n return descriptions.slice(0, -1).join(\", \")\r\n + \", or \"\r\n + descriptions[descriptions.length - 1];\r\n }\r\n }\r\n\r\n function describeFound(found) {\r\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\r\n }\r\n\r\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\r\n };\r\n\r\n function peg$parse(input, options) {\r\n options = options !== void 0 ? options : {};\r\n\r\n var peg$FAILED = {},\r\n\r\n peg$startRuleFunctions = { start: peg$parsestart },\r\n peg$startRuleFunction = peg$parsestart,\r\n\r\n peg$c0 = \"\\n\",\r\n peg$c1 = peg$literalExpectation(\"\\n\", false),\r\n peg$c2 = peg$anyExpectation(),\r\n peg$c3 = function() {\r\n return \"\"; \r\n },\r\n peg$c4 = \"title\",\r\n peg$c5 = peg$literalExpectation(\"title\", true),\r\n peg$c6 = \" \",\r\n peg$c7 = peg$literalExpectation(\" \", false),\r\n peg$c8 = function(a, b, c) {\r\n \treturn [a, b, Ast(\"title\", c, location())];\r\n },\r\n peg$c9 = \"participant\",\r\n peg$c10 = peg$literalExpectation(\"participant\", true),\r\n peg$c11 = \"entity\",\r\n peg$c12 = peg$literalExpectation(\"entity\", true),\r\n peg$c13 = function(a, b, c, d, e) {\r\n return [a, b, Ast(\"participant\", c), d, Ast(\"alias\", e)]; \r\n },\r\n peg$c14 = function(a, b, c) {\r\n return [a, b, Ast(\"participant\", c, location())];\r\n },\r\n peg$c15 = \"as\",\r\n peg$c16 = peg$literalExpectation(\"as\", false),\r\n peg$c17 = function(a) {\r\n var ret = \"\";\r\n for(var i = 0; i < a.length; i++) {\r\n \t ret += a[i][2];\r\n }\r\n return ret;\r\n },\r\n peg$c18 = /^[^\\n,]/,\r\n peg$c19 = peg$classExpectation([\"\\n\", \",\"], true, false),\r\n peg$c20 = \":\",\r\n peg$c21 = peg$literalExpectation(\":\", false),\r\n peg$c22 = function(a, b, c, d, e, f, g, h, i) {\r\n return [\r\n a, b,\r\n Ast(\"arrow\", c, location()), d, \r\n e, f, g, h,\r\n Ast(\"text\", i, location())];\r\n },\r\n peg$c23 = \"<<\",\r\n peg$c24 = peg$literalExpectation(\"<<\", false),\r\n peg$c25 = \"<\",\r\n peg$c26 = peg$literalExpectation(\"<\", false),\r\n peg$c27 = \"-->>\",\r\n peg$c28 = peg$literalExpectation(\"-->>\", false),\r\n peg$c29 = \"-->\",\r\n peg$c30 = peg$literalExpectation(\"-->\", false),\r\n peg$c31 = \"->>\",\r\n peg$c32 = peg$literalExpectation(\"->>\", false),\r\n peg$c33 = \"->\",\r\n peg$c34 = peg$literalExpectation(\"->\", false),\r\n peg$c35 = \"+\",\r\n peg$c36 = peg$literalExpectation(\"+\", false),\r\n peg$c37 = \"-\",\r\n peg$c38 = peg$literalExpectation(\"-\", false),\r\n peg$c39 = \"*\",\r\n peg$c40 = peg$literalExpectation(\"*\", false),\r\n peg$c41 = function(a) {\r\n return Ast(\"participant\", a, location());\r\n },\r\n peg$c42 = \"\\\"\",\r\n peg$c43 = peg$literalExpectation(\"\\\"\", false),\r\n peg$c44 = /^[^\"]/,\r\n peg$c45 = peg$classExpectation([\"\\\"\"], true, false),\r\n peg$c46 = function(a) {\r\n return a[0] + a[1].join(\"\") + a[2];\r\n },\r\n peg$c47 = /^[^:,\\n]/,\r\n peg$c48 = peg$classExpectation([\":\", \",\", \"\\n\"], true, false),\r\n peg$c49 = function(a) {\r\n var ret = \"\";\r\n for(var i = 0; i < a.length; i++) {\r\n \t ret += a[i][1];\r\n }\r\n return ret;\r\n },\r\n peg$c50 = \"activate\",\r\n peg$c51 = peg$literalExpectation(\"activate\", false),\r\n peg$c52 = \"deactivate\",\r\n peg$c53 = peg$literalExpectation(\"deactivate\", false),\r\n peg$c54 = \"destroy\",\r\n peg$c55 = peg$literalExpectation(\"destroy\", false),\r\n peg$c56 = /^[^\\n]/,\r\n peg$c57 = peg$classExpectation([\"\\n\"], true, false),\r\n peg$c58 = function(text) {\r\n return text.join(\"\");\r\n },\r\n peg$c59 = /^[ ]/,\r\n peg$c60 = peg$classExpectation([\" \"], false, false),\r\n peg$c61 = function(a) {\r\n return a.join(\"\");\r\n },\r\n peg$c62 = \"#\",\r\n peg$c63 = peg$literalExpectation(\"#\", false),\r\n peg$c64 = function(a, b) {\r\n return [a, Ast(\"comment\", b, location)]; \r\n },\r\n peg$c65 = function(a) {\r\n return a.join(\"\");\r\n },\r\n peg$c66 = function(a, b, c) {\r\n return [a, Ast(\"annotation\", b, location()), c]; \r\n },\r\n peg$c67 = \"autonumber\",\r\n peg$c68 = peg$literalExpectation(\"autonumber\", true),\r\n peg$c69 = \"off\",\r\n peg$c70 = peg$literalExpectation(\"off\", true),\r\n peg$c71 = /^[0-9]/,\r\n peg$c72 = peg$classExpectation([[\"0\", \"9\"]], false, false),\r\n peg$c73 = \"include\",\r\n peg$c74 = peg$literalExpectation(\"include\", true),\r\n peg$c75 = \"option\",\r\n peg$c76 = peg$literalExpectation(\"option\", true),\r\n peg$c77 = \"footer\",\r\n peg$c78 = peg$literalExpectation(\"footer\", false),\r\n peg$c79 = \"=\",\r\n peg$c80 = peg$literalExpectation(\"=\", false),\r\n peg$c81 = \"narrow_groups\",\r\n peg$c82 = peg$literalExpectation(\"narrow_groups\", false),\r\n peg$c83 = /^[01]/,\r\n peg$c84 = peg$classExpectation([\"0\", \"1\"], false, false),\r\n peg$c85 = \"note\",\r\n peg$c86 = peg$literalExpectation(\"note\", true),\r\n peg$c87 = \"state\",\r\n peg$c88 = peg$literalExpectation(\"state\", true),\r\n peg$c89 = \"over\",\r\n peg$c90 = peg$literalExpectation(\"over\", false),\r\n peg$c91 = \"left of\",\r\n peg$c92 = peg$literalExpectation(\"left of\", false),\r\n peg$c93 = \"right of\",\r\n peg$c94 = peg$literalExpectation(\"right of\", false),\r\n peg$c95 = \",\",\r\n peg$c96 = peg$literalExpectation(\",\", false),\r\n peg$c97 = \"end note\",\r\n peg$c98 = peg$literalExpectation(\"end note\", true),\r\n peg$c99 = \"end state\",\r\n peg$c100 = peg$literalExpectation(\"end state\", true),\r\n peg$c101 = \"end\",\r\n peg$c102 = peg$literalExpectation(\"end\", true),\r\n peg$c103 = \"ref over\",\r\n peg$c104 = peg$literalExpectation(\"ref over\", true),\r\n peg$c105 = \"end ref\",\r\n peg$c106 = peg$literalExpectation(\"end ref\", true),\r\n peg$c107 = \"parallel\",\r\n peg$c108 = peg$literalExpectation(\"parallel\", true),\r\n peg$c109 = \"serial\",\r\n peg$c110 = peg$literalExpectation(\"serial\", true),\r\n peg$c111 = \"{\",\r\n peg$c112 = peg$literalExpectation(\"{\", false),\r\n peg$c113 = \"}\",\r\n peg$c114 = peg$literalExpectation(\"}\", false),\r\n peg$c115 = \"alt\",\r\n peg$c116 = peg$literalExpectation(\"alt\", true),\r\n peg$c117 = \"else\",\r\n peg$c118 = peg$literalExpectation(\"else\", true),\r\n peg$c119 = \"opt\",\r\n peg$c120 = peg$literalExpectation(\"opt\", true),\r\n peg$c121 = \"loop\",\r\n peg$c122 = peg$literalExpectation(\"loop\", true),\r\n peg$c123 = \"par\",\r\n peg$c124 = peg$literalExpectation(\"par\", true),\r\n peg$c125 = peg$literalExpectation(\"end\", false),\r\n\r\n peg$currPos = 0,\r\n peg$savedPos = 0,\r\n peg$posDetailsCache = [{ line: 1, column: 1 }],\r\n peg$maxFailPos = 0,\r\n peg$maxFailExpected = [],\r\n peg$silentFails = 0,\r\n\r\n peg$result;\r\n\r\n if (\"startRule\" in options) {\r\n if (!(options.startRule in peg$startRuleFunctions)) {\r\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\r\n }\r\n\r\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\r\n }\r\n\r\n function text() {\r\n return input.substring(peg$savedPos, peg$currPos);\r\n }\r\n\r\n function location() {\r\n return peg$computeLocation(peg$savedPos, peg$currPos);\r\n }\r\n\r\n function expected(description, location) {\r\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\r\n\r\n throw peg$buildStructuredError(\r\n [peg$otherExpectation(description)],\r\n input.substring(peg$savedPos, peg$currPos),\r\n location\r\n );\r\n }\r\n\r\n function error(message, location) {\r\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\r\n\r\n throw peg$buildSimpleError(message, location);\r\n }\r\n\r\n function peg$literalExpectation(text, ignoreCase) {\r\n return { type: \"literal\", text: text, ignoreCase: ignoreCase };\r\n }\r\n\r\n function peg$classExpectation(parts, inverted, ignoreCase) {\r\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\r\n }\r\n\r\n function peg$anyExpectation() {\r\n return { type: \"any\" };\r\n }\r\n\r\n function peg$endExpectation() {\r\n return { type: \"end\" };\r\n }\r\n\r\n function peg$otherExpectation(description) {\r\n return { type: \"other\", description: description };\r\n }\r\n\r\n function peg$computePosDetails(pos) {\r\n var details = peg$posDetailsCache[pos], p;\r\n\r\n if (details) {\r\n return details;\r\n } else {\r\n p = pos - 1;\r\n while (!peg$posDetailsCache[p]) {\r\n p--;\r\n }\r\n\r\n details = peg$posDetailsCache[p];\r\n details = {\r\n line: details.line,\r\n column: details.column\r\n };\r\n\r\n while (p < pos) {\r\n if (input.charCodeAt(p) === 10) {\r\n details.line++;\r\n details.column = 1;\r\n } else {\r\n details.column++;\r\n }\r\n\r\n p++;\r\n }\r\n\r\n peg$posDetailsCache[pos] = details;\r\n return details;\r\n }\r\n }\r\n\r\n function peg$computeLocation(startPos, endPos) {\r\n var startPosDetails = peg$computePosDetails(startPos),\r\n endPosDetails = peg$computePosDetails(endPos);\r\n\r\n return {\r\n start: {\r\n offset: startPos,\r\n line: startPosDetails.line,\r\n column: startPosDetails.column\r\n },\r\n end: {\r\n offset: endPos,\r\n line: endPosDetails.line,\r\n column: endPosDetails.column\r\n }\r\n };\r\n }\r\n\r\n function peg$fail(expected) {\r\n if (peg$currPos < peg$maxFailPos) { return; }\r\n\r\n if (peg$currPos > peg$maxFailPos) {\r\n peg$maxFailPos = peg$currPos;\r\n peg$maxFailExpected = [];\r\n }\r\n\r\n peg$maxFailExpected.push(expected);\r\n }\r\n\r\n function peg$buildSimpleError(message, location) {\r\n return new peg$SyntaxError(message, null, null, location);\r\n }\r\n\r\n function peg$buildStructuredError(expected, found, location) {\r\n return new peg$SyntaxError(\r\n peg$SyntaxError.buildMessage(expected, found),\r\n expected,\r\n found,\r\n location\r\n );\r\n }\r\n\r\n function peg$parsestart() {\r\n var s0;\r\n\r\n s0 = peg$parsestatements();\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsestatements() {\r\n var s0, s1;\r\n\r\n s0 = [];\r\n s1 = peg$parsestatement();\r\n if (s1 === peg$FAILED) {\r\n s1 = peg$parsecomment();\r\n if (s1 === peg$FAILED) {\r\n s1 = peg$parseannotation();\r\n if (s1 === peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 10) {\r\n s1 = peg$c0;\r\n peg$currPos++;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\r\n }\r\n }\r\n }\r\n }\r\n while (s1 !== peg$FAILED) {\r\n s0.push(s1);\r\n s1 = peg$parsestatement();\r\n if (s1 === peg$FAILED) {\r\n s1 = peg$parsecomment();\r\n if (s1 === peg$FAILED) {\r\n s1 = peg$parseannotation();\r\n if (s1 === peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 10) {\r\n s1 = peg$c0;\r\n peg$currPos++;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsestatement() {\r\n var s0, s1, s2, s3;\r\n\r\n s0 = peg$currPos;\r\n s1 = peg$parsews();\r\n if (s1 !== peg$FAILED) {\r\n s2 = peg$parsebare_statement();\r\n if (s2 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 10) {\r\n s3 = peg$c0;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\r\n }\r\n if (s3 === peg$FAILED) {\r\n s3 = peg$parseeof();\r\n }\r\n if (s3 !== peg$FAILED) {\r\n s1 = [s1, s2, s3];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsebare_statement() {\r\n var s0;\r\n\r\n s0 = peg$parsetitle_statement();\r\n if (s0 === peg$FAILED) {\r\n s0 = peg$parseparticipant_statement();\r\n if (s0 === peg$FAILED) {\r\n s0 = peg$parsesignal_statement();\r\n if (s0 === peg$FAILED) {\r\n s0 = peg$parseone_participant_action();\r\n if (s0 === peg$FAILED) {\r\n s0 = peg$parseautonumber_statement();\r\n if (s0 === peg$FAILED) {\r\n s0 = peg$parseinclude_statement();\r\n if (s0 === peg$FAILED) {\r\n s0 = peg$parseoption_statement();\r\n if (s0 === peg$FAILED) {\r\n s0 = peg$parsesimple_note_statement();\r\n if (s0 === peg$FAILED) {\r\n s0 = peg$parsemultiline_note_statement();\r\n if (s0 === peg$FAILED) {\r\n s0 = peg$parseref_statement();\r\n if (s0 === peg$FAILED) {\r\n s0 = peg$parseparallel_statement();\r\n if (s0 === peg$FAILED) {\r\n s0 = peg$parsegroup_statement();\r\n if (s0 === peg$FAILED) {\r\n s0 = peg$parsecomment();\r\n if (s0 === peg$FAILED) {\r\n s0 = peg$parseerror();\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 return s0;\r\n }\r\n\r\n function peg$parseeof() {\r\n var s0, s1, s2;\r\n\r\n s0 = peg$currPos;\r\n s1 = peg$currPos;\r\n peg$silentFails++;\r\n if (input.length > peg$currPos) {\r\n s2 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c2); }\r\n }\r\n peg$silentFails--;\r\n if (s2 === peg$FAILED) {\r\n s1 = void 0;\r\n } else {\r\n peg$currPos = s1;\r\n s1 = peg$FAILED;\r\n }\r\n if (s1 !== peg$FAILED) {\r\n peg$savedPos = s0;\r\n s1 = peg$c3();\r\n }\r\n s0 = s1;\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsetitle_statement() {\r\n var s0, s1, s2, s3;\r\n\r\n s0 = peg$currPos;\r\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c4) {\r\n s1 = input.substr(peg$currPos, 5);\r\n peg$currPos += 5;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s2 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n if (s2 !== peg$FAILED) {\r\n s3 = peg$parseto_eol();\r\n if (s3 !== peg$FAILED) {\r\n peg$savedPos = s0;\r\n s1 = peg$c8(s1, s2, s3);\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseparticipant_statement() {\r\n var s0;\r\n\r\n s0 = peg$parsealias_decl();\r\n if (s0 === peg$FAILED) {\r\n s0 = peg$parseparticipant_decl();\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsealias_decl() {\r\n var s0, s1, s2, s3, s4, s5;\r\n\r\n s0 = peg$currPos;\r\n if (input.substr(peg$currPos, 11).toLowerCase() === peg$c9) {\r\n s1 = input.substr(peg$currPos, 11);\r\n peg$currPos += 11;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\r\n }\r\n if (s1 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c11) {\r\n s1 = input.substr(peg$currPos, 6);\r\n peg$currPos += 6;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c12); }\r\n }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n s2 = [];\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s3 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n if (s3 !== peg$FAILED) {\r\n while (s3 !== peg$FAILED) {\r\n s2.push(s3);\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s3 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n }\r\n } else {\r\n s2 = peg$FAILED;\r\n }\r\n if (s2 !== peg$FAILED) {\r\n s3 = peg$parsequoted_name();\r\n if (s3 === peg$FAILED) {\r\n s3 = peg$parseas_delimited();\r\n }\r\n if (s3 !== peg$FAILED) {\r\n s4 = peg$parseas();\r\n if (s4 !== peg$FAILED) {\r\n s5 = peg$parseto_eol();\r\n if (s5 !== peg$FAILED) {\r\n peg$savedPos = s0;\r\n s1 = peg$c13(s1, s2, s3, s4, s5);\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseparticipant_decl() {\r\n var s0, s1, s2, s3;\r\n\r\n s0 = peg$currPos;\r\n if (input.substr(peg$currPos, 11).toLowerCase() === peg$c9) {\r\n s1 = input.substr(peg$currPos, 11);\r\n peg$currPos += 11;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\r\n }\r\n if (s1 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c11) {\r\n s1 = input.substr(peg$currPos, 6);\r\n peg$currPos += 6;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c12); }\r\n }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n s2 = [];\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s3 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n if (s3 !== peg$FAILED) {\r\n while (s3 !== peg$FAILED) {\r\n s2.push(s3);\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s3 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n }\r\n } else {\r\n s2 = peg$FAILED;\r\n }\r\n if (s2 !== peg$FAILED) {\r\n s3 = peg$parseto_eol();\r\n if (s3 !== peg$FAILED) {\r\n peg$savedPos = s0;\r\n s1 = peg$c14(s1, s2, s3);\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseas() {\r\n var s0, s1, s2, s3, s4;\r\n\r\n s0 = peg$currPos;\r\n s1 = [];\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s2 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n if (s2 !== peg$FAILED) {\r\n while (s2 !== peg$FAILED) {\r\n s1.push(s2);\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s2 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n }\r\n } else {\r\n s1 = peg$FAILED;\r\n }\r\n if (s1 !== peg$FAILED) {\r\n if (input.substr(peg$currPos, 2) === peg$c15) {\r\n s2 = peg$c15;\r\n peg$currPos += 2;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c16); }\r\n }\r\n if (s2 !== peg$FAILED) {\r\n s3 = [];\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s4 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s4 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n if (s4 !== peg$FAILED) {\r\n while (s4 !== peg$FAILED) {\r\n s3.push(s4);\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s4 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s4 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n }\r\n } else {\r\n s3 = peg$FAILED;\r\n }\r\n if (s3 !== peg$FAILED) {\r\n s1 = [s1, s2, s3];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseas_delimited() {\r\n var s0, s1, s2, s3, s4, s5;\r\n\r\n s0 = peg$currPos;\r\n s1 = [];\r\n s2 = peg$currPos;\r\n s3 = peg$currPos;\r\n peg$silentFails++;\r\n s4 = peg$parseas();\r\n peg$silentFails--;\r\n if (s4 === peg$FAILED) {\r\n s3 = void 0;\r\n } else {\r\n peg$currPos = s3;\r\n s3 = peg$FAILED;\r\n }\r\n if (s3 !== peg$FAILED) {\r\n s4 = peg$currPos;\r\n peg$silentFails++;\r\n if (input.charCodeAt(peg$currPos) === 10) {\r\n s5 = peg$c0;\r\n peg$currPos++;\r\n } else {\r\n s5 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\r\n }\r\n peg$silentFails--;\r\n if (s5 === peg$FAILED) {\r\n s4 = void 0;\r\n } else {\r\n peg$currPos = s4;\r\n s4 = peg$FAILED;\r\n }\r\n if (s4 !== peg$FAILED) {\r\n if (input.length > peg$currPos) {\r\n s5 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s5 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c2); }\r\n }\r\n if (s5 !== peg$FAILED) {\r\n s3 = [s3, s4, s5];\r\n s2 = s3;\r\n } else {\r\n peg$currPos = s2;\r\n s2 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s2;\r\n s2 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s2;\r\n s2 = peg$FAILED;\r\n }\r\n if (s2 !== peg$FAILED) {\r\n while (s2 !== peg$FAILED) {\r\n s1.push(s2);\r\n s2 = peg$currPos;\r\n s3 = peg$currPos;\r\n peg$silentFails++;\r\n s4 = peg$parseas();\r\n peg$silentFails--;\r\n if (s4 === peg$FAILED) {\r\n s3 = void 0;\r\n } else {\r\n peg$currPos = s3;\r\n s3 = peg$FAILED;\r\n }\r\n if (s3 !== peg$FAILED) {\r\n s4 = peg$currPos;\r\n peg$silentFails++;\r\n if (input.charCodeAt(peg$currPos) === 10) {\r\n s5 = peg$c0;\r\n peg$currPos++;\r\n } else {\r\n s5 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\r\n }\r\n peg$silentFails--;\r\n if (s5 === peg$FAILED) {\r\n s4 = void 0;\r\n } else {\r\n peg$currPos = s4;\r\n s4 = peg$FAILED;\r\n }\r\n if (s4 !== peg$FAILED) {\r\n if (input.length > peg$currPos) {\r\n s5 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s5 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c2); }\r\n }\r\n if (s5 !== peg$FAILED) {\r\n s3 = [s3, s4, s5];\r\n s2 = s3;\r\n } else {\r\n peg$currPos = s2;\r\n s2 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s2;\r\n s2 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s2;\r\n s2 = peg$FAILED;\r\n }\r\n }\r\n } else {\r\n s1 = peg$FAILED;\r\n }\r\n if (s1 !== peg$FAILED) {\r\n peg$savedPos = s0;\r\n s1 = peg$c17(s1);\r\n }\r\n s0 = s1;\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsecomma_delimited() {\r\n var s0, s1;\r\n\r\n s0 = [];\r\n if (peg$c18.test(input.charAt(peg$currPos))) {\r\n s1 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n while (s1 !== peg$FAILED) {\r\n s0.push(s1);\r\n if (peg$c18.test(input.charAt(peg$currPos))) {\r\n s1 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\r\n }\r\n }\r\n } else {\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsesignal_statement() {\r\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\r\n\r\n s0 = peg$currPos;\r\n s1 = peg$parseparticipant();\r\n if (s1 !== peg$FAILED) {\r\n s2 = peg$parsews();\r\n if (s2 !== peg$FAILED) {\r\n s3 = peg$parsearrow();\r\n if (s3 !== peg$FAILED) {\r\n s4 = peg$parsews();\r\n if (s4 !== peg$FAILED) {\r\n s5 = peg$parseparticipant();\r\n if (s5 !== peg$FAILED) {\r\n s6 = peg$parsews();\r\n if (s6 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 58) {\r\n s7 = peg$c20;\r\n peg$currPos++;\r\n } else {\r\n s7 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\r\n }\r\n if (s7 !== peg$FAILED) {\r\n s8 = peg$parsews();\r\n if (s8 !== peg$FAILED) {\r\n s9 = peg$parseto_eol();\r\n if (s9 !== peg$FAILED) {\r\n peg$savedPos = s0;\r\n s1 = peg$c22(s1, s2, s3, s4, s5, s6, s7, s8, s9);\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsearrow() {\r\n var s0, s1, s2, s3, s4;\r\n\r\n s0 = peg$currPos;\r\n if (input.substr(peg$currPos, 2) === peg$c23) {\r\n s1 = peg$c23;\r\n peg$currPos += 2;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c24); }\r\n }\r\n if (s1 === peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 60) {\r\n s1 = peg$c25;\r\n peg$currPos++;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c26); }\r\n }\r\n }\r\n if (s1 === peg$FAILED) {\r\n s1 = null;\r\n }\r\n if (s1 !== peg$FAILED) {\r\n if (input.substr(peg$currPos, 4) === peg$c27) {\r\n s2 = peg$c27;\r\n peg$currPos += 4;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\r\n }\r\n if (s2 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 3) === peg$c29) {\r\n s2 = peg$c29;\r\n peg$currPos += 3;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c30); }\r\n }\r\n if (s2 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 3) === peg$c31) {\r\n s2 = peg$c31;\r\n peg$currPos += 3;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\r\n }\r\n if (s2 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 2) === peg$c33) {\r\n s2 = peg$c33;\r\n peg$currPos += 2;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c34); }\r\n }\r\n }\r\n }\r\n }\r\n if (s2 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 43) {\r\n s3 = peg$c35;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c36); }\r\n }\r\n if (s3 === peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 45) {\r\n s3 = peg$c37;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c38); }\r\n }\r\n }\r\n if (s3 === peg$FAILED) {\r\n s3 = null;\r\n }\r\n if (s3 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 42) {\r\n s4 = peg$c39;\r\n peg$currPos++;\r\n } else {\r\n s4 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\r\n }\r\n if (s4 === peg$FAILED) {\r\n s4 = null;\r\n }\r\n if (s4 !== peg$FAILED) {\r\n s1 = [s1, s2, s3, s4];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseparticipant() {\r\n var s0, s1;\r\n\r\n s0 = peg$currPos;\r\n s1 = peg$parsequoted_name();\r\n if (s1 === peg$FAILED) {\r\n s1 = peg$parsearrow_delimited();\r\n }\r\n if (s1 !== peg$FAILED) {\r\n peg$savedPos = s0;\r\n s1 = peg$c41(s1);\r\n }\r\n s0 = s1;\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsequoted_name() {\r\n var s0, s1, s2, s3, s4;\r\n\r\n s0 = peg$currPos;\r\n s1 = peg$currPos;\r\n if (input.charCodeAt(peg$currPos) === 34) {\r\n s2 = peg$c42;\r\n peg$currPos++;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\r\n }\r\n if (s2 !== peg$FAILED) {\r\n s3 = [];\r\n if (peg$c44.test(input.charAt(peg$currPos))) {\r\n s4 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s4 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\r\n }\r\n while (s4 !== peg$FAILED) {\r\n s3.push(s4);\r\n if (peg$c44.test(input.charAt(peg$currPos))) {\r\n s4 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s4 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\r\n }\r\n }\r\n if (s3 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 34) {\r\n s4 = peg$c42;\r\n peg$currPos++;\r\n } else {\r\n s4 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\r\n }\r\n if (s4 !== peg$FAILED) {\r\n s2 = [s2, s3, s4];\r\n s1 = s2;\r\n } else {\r\n peg$currPos = s1;\r\n s1 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s1;\r\n s1 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s1;\r\n s1 = peg$FAILED;\r\n }\r\n if (s1 !== peg$FAILED) {\r\n peg$savedPos = s0;\r\n s1 = peg$c46(s1);\r\n }\r\n s0 = s1;\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsearrow_delimited() {\r\n var s0, s1, s2, s3, s4;\r\n\r\n s0 = peg$currPos;\r\n s1 = [];\r\n s2 = peg$currPos;\r\n s3 = peg$currPos;\r\n peg$silentFails++;\r\n s4 = peg$parsearrow();\r\n peg$silentFails--;\r\n if (s4 === peg$FAILED) {\r\n s3 = void 0;\r\n } else {\r\n peg$currPos = s3;\r\n s3 = peg$FAILED;\r\n }\r\n if (s3 !== peg$FAILED) {\r\n if (peg$c47.test(input.charAt(peg$currPos))) {\r\n s4 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s4 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c48); }\r\n }\r\n if (s4 !== peg$FAILED) {\r\n s3 = [s3, s4];\r\n s2 = s3;\r\n } else {\r\n peg$currPos = s2;\r\n s2 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s2;\r\n s2 = peg$FAILED;\r\n }\r\n if (s2 !== peg$FAILED) {\r\n while (s2 !== peg$FAILED) {\r\n s1.push(s2);\r\n s2 = peg$currPos;\r\n s3 = peg$currPos;\r\n peg$silentFails++;\r\n s4 = peg$parsearrow();\r\n peg$silentFails--;\r\n if (s4 === peg$FAILED) {\r\n s3 = void 0;\r\n } else {\r\n peg$currPos = s3;\r\n s3 = peg$FAILED;\r\n }\r\n if (s3 !== peg$FAILED) {\r\n if (peg$c47.test(input.charAt(peg$currPos))) {\r\n s4 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s4 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c48); }\r\n }\r\n if (s4 !== peg$FAILED) {\r\n s3 = [s3, s4];\r\n s2 = s3;\r\n } else {\r\n peg$currPos = s2;\r\n s2 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s2;\r\n s2 = peg$FAILED;\r\n }\r\n }\r\n } else {\r\n s1 = peg$FAILED;\r\n }\r\n if (s1 !== peg$FAILED) {\r\n peg$savedPos = s0;\r\n s1 = peg$c49(s1);\r\n }\r\n s0 = s1;\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseone_participant_action() {\r\n var s0, s1, s2, s3;\r\n\r\n s0 = peg$currPos;\r\n if (input.substr(peg$currPos, 8) === peg$c50) {\r\n s1 = peg$c50;\r\n peg$currPos += 8;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c51); }\r\n }\r\n if (s1 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 10) === peg$c52) {\r\n s1 = peg$c52;\r\n peg$currPos += 10;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c53); }\r\n }\r\n if (s1 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 7) === peg$c54) {\r\n s1 = peg$c54;\r\n peg$currPos += 7;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\r\n }\r\n }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n s2 = [];\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s3 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n if (s3 !== peg$FAILED) {\r\n while (s3 !== peg$FAILED) {\r\n s2.push(s3);\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s3 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n }\r\n } else {\r\n s2 = peg$FAILED;\r\n }\r\n if (s2 !== peg$FAILED) {\r\n s3 = peg$parseparticipant();\r\n if (s3 !== peg$FAILED) {\r\n s1 = [s1, s2, s3];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseto_eol() {\r\n var s0, s1, s2;\r\n\r\n s0 = peg$currPos;\r\n s1 = [];\r\n if (peg$c56.test(input.charAt(peg$currPos))) {\r\n s2 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c57); }\r\n }\r\n while (s2 !== peg$FAILED) {\r\n s1.push(s2);\r\n if (peg$c56.test(input.charAt(peg$currPos))) {\r\n s2 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c57); }\r\n }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n peg$savedPos = s0;\r\n s1 = peg$c58(s1);\r\n }\r\n s0 = s1;\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsews() {\r\n var s0, s1, s2;\r\n\r\n s0 = peg$currPos;\r\n s1 = [];\r\n if (peg$c59.test(input.charAt(peg$currPos))) {\r\n s2 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c60); }\r\n }\r\n while (s2 !== peg$FAILED) {\r\n s1.push(s2);\r\n if (peg$c59.test(input.charAt(peg$currPos))) {\r\n s2 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c60); }\r\n }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n peg$savedPos = s0;\r\n s1 = peg$c61(s1);\r\n }\r\n s0 = s1;\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsesp() {\r\n var s0, s1;\r\n\r\n s0 = [];\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s1 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n while (s1 !== peg$FAILED) {\r\n s0.push(s1);\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s1 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n }\r\n } else {\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsecomments() {\r\n var s0, s1;\r\n\r\n s0 = [];\r\n s1 = peg$parsecomment();\r\n while (s1 !== peg$FAILED) {\r\n s0.push(s1);\r\n s1 = peg$parsecomment();\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsecomment() {\r\n var s0, s1, s2;\r\n\r\n s0 = peg$currPos;\r\n if (input.charCodeAt(peg$currPos) === 35) {\r\n s1 = peg$c62;\r\n peg$currPos++;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c63); }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n s2 = peg$parseto_eol();\r\n if (s2 !== peg$FAILED) {\r\n peg$savedPos = s0;\r\n s1 = peg$c64(s1, s2);\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseerror() {\r\n var s0, s1, s2;\r\n\r\n s0 = peg$currPos;\r\n s1 = [];\r\n if (peg$c56.test(input.charAt(peg$currPos))) {\r\n s2 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c57); }\r\n }\r\n if (s2 !== peg$FAILED) {\r\n while (s2 !== peg$FAILED) {\r\n s1.push(s2);\r\n if (peg$c56.test(input.charAt(peg$currPos))) {\r\n s2 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c57); }\r\n }\r\n }\r\n } else {\r\n s1 = peg$FAILED;\r\n }\r\n if (s1 !== peg$FAILED) {\r\n peg$savedPos = s0;\r\n s1 = peg$c65(s1);\r\n }\r\n s0 = s1;\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseannotation() {\r\n var s0, s1, s2, s3;\r\n\r\n s0 = peg$currPos;\r\n s1 = [];\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s2 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n if (s2 !== peg$FAILED) {\r\n while (s2 !== peg$FAILED) {\r\n s1.push(s2);\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s2 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n }\r\n } else {\r\n s1 = peg$FAILED;\r\n }\r\n if (s1 !== peg$FAILED) {\r\n s2 = peg$parseto_eol();\r\n if (s2 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 10) {\r\n s3 = peg$c0;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\r\n }\r\n if (s3 !== peg$FAILED) {\r\n peg$savedPos = s0;\r\n s1 = peg$c66(s1, s2, s3);\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseautonumber_statement() {\r\n var s0, s1, s2, s3, s4;\r\n\r\n s0 = peg$currPos;\r\n if (input.substr(peg$currPos, 10).toLowerCase() === peg$c67) {\r\n s1 = input.substr(peg$currPos, 10);\r\n peg$currPos += 10;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c68); }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n s2 = [];\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s3 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n if (s3 !== peg$FAILED) {\r\n while (s3 !== peg$FAILED) {\r\n s2.push(s3);\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s3 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n }\r\n } else {\r\n s2 = peg$FAILED;\r\n }\r\n if (s2 !== peg$FAILED) {\r\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c69) {\r\n s3 = input.substr(peg$currPos, 3);\r\n peg$currPos += 3;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c70); }\r\n }\r\n if (s3 === peg$FAILED) {\r\n s3 = [];\r\n if (peg$c71.test(input.charAt(peg$currPos))) {\r\n s4 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s4 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c72); }\r\n }\r\n if (s4 !== peg$FAILED) {\r\n while (s4 !== peg$FAILED) {\r\n s3.push(s4);\r\n if (peg$c71.test(input.charAt(peg$currPos))) {\r\n s4 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s4 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c72); }\r\n }\r\n }\r\n } else {\r\n s3 = peg$FAILED;\r\n }\r\n }\r\n if (s3 !== peg$FAILED) {\r\n s1 = [s1, s2, s3];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseinclude_statement() {\r\n var s0, s1, s2, s3;\r\n\r\n s0 = peg$currPos;\r\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c73) {\r\n s1 = input.substr(peg$currPos, 7);\r\n peg$currPos += 7;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c74); }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n s2 = [];\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s3 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n if (s3 !== peg$FAILED) {\r\n while (s3 !== peg$FAILED) {\r\n s2.push(s3);\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s3 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n }\r\n } else {\r\n s2 = peg$FAILED;\r\n }\r\n if (s2 !== peg$FAILED) {\r\n s3 = peg$parsequoted_name();\r\n if (s3 === peg$FAILED) {\r\n s3 = peg$parseto_eol();\r\n }\r\n if (s3 !== peg$FAILED) {\r\n s1 = [s1, s2, s3];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseoption_statement() {\r\n var s0, s1, s2, s3;\r\n\r\n s0 = peg$currPos;\r\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c75) {\r\n s1 = input.substr(peg$currPos, 6);\r\n peg$currPos += 6;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c76); }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n s2 = [];\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s3 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n if (s3 !== peg$FAILED) {\r\n while (s3 !== peg$FAILED) {\r\n s2.push(s3);\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s3 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n }\r\n } else {\r\n s2 = peg$FAILED;\r\n }\r\n if (s2 !== peg$FAILED) {\r\n s3 = peg$parsefooter_option();\r\n if (s3 === peg$FAILED) {\r\n s3 = peg$parsegroup_option();\r\n }\r\n if (s3 !== peg$FAILED) {\r\n s1 = [s1, s2, s3];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsefooter_option() {\r\n var s0, s1, s2, s3, s4, s5;\r\n\r\n s0 = peg$currPos;\r\n if (input.substr(peg$currPos, 6) === peg$c77) {\r\n s1 = peg$c77;\r\n peg$currPos += 6;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c78); }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n s2 = [];\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s3 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n while (s3 !== peg$FAILED) {\r\n s2.push(s3);\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s3 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n }\r\n if (s2 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 61) {\r\n s3 = peg$c79;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c80); }\r\n }\r\n if (s3 !== peg$FAILED) {\r\n s4 = [];\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s5 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s5 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n while (s5 !== peg$FAILED) {\r\n s4.push(s5);\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s5 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s5 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n }\r\n if (s4 !== peg$FAILED) {\r\n s5 = peg$parseto_eol();\r\n if (s5 !== peg$FAILED) {\r\n s1 = [s1, s2, s3, s4, s5];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsegroup_option() {\r\n var s0, s1, s2, s3, s4, s5;\r\n\r\n s0 = peg$currPos;\r\n if (input.substr(peg$currPos, 13) === peg$c81) {\r\n s1 = peg$c81;\r\n peg$currPos += 13;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c82); }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n s2 = [];\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s3 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n while (s3 !== peg$FAILED) {\r\n s2.push(s3);\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s3 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n }\r\n if (s2 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 61) {\r\n s3 = peg$c79;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c80); }\r\n }\r\n if (s3 !== peg$FAILED) {\r\n s4 = [];\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s5 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s5 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n while (s5 !== peg$FAILED) {\r\n s4.push(s5);\r\n if (input.charCodeAt(peg$currPos) === 32) {\r\n s5 = peg$c6;\r\n peg$currPos++;\r\n } else {\r\n s5 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\r\n }\r\n }\r\n if (s4 !== peg$FAILED) {\r\n if (peg$c83.test(input.charAt(peg$currPos))) {\r\n s5 = input.charAt(peg$currPos);\r\n peg$currPos++;\r\n } else {\r\n s5 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c84); }\r\n }\r\n if (s5 !== peg$FAILED) {\r\n s1 = [s1, s2, s3, s4, s5];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsesimple_note_statement() {\r\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\r\n\r\n s0 = peg$currPos;\r\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c85) {\r\n s1 = input.substr(peg$currPos, 4);\r\n peg$currPos += 4;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c86); }\r\n }\r\n if (s1 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c87) {\r\n s1 = input.substr(peg$currPos, 5);\r\n peg$currPos += 5;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c88); }\r\n }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n s2 = peg$parsesp();\r\n if (s2 !== peg$FAILED) {\r\n s3 = peg$parsenote_placement();\r\n if (s3 !== peg$FAILED) {\r\n s4 = peg$parsesp();\r\n if (s4 !== peg$FAILED) {\r\n s5 = peg$parseparticipant_list();\r\n if (s5 !== peg$FAILED) {\r\n s6 = peg$parsews();\r\n if (s6 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 58) {\r\n s7 = peg$c20;\r\n peg$currPos++;\r\n } else {\r\n s7 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\r\n }\r\n if (s7 !== peg$FAILED) {\r\n s8 = peg$parsews();\r\n if (s8 !== peg$FAILED) {\r\n s9 = peg$parseto_eol();\r\n if (s9 !== peg$FAILED) {\r\n s1 = [s1, s2, s3, s4, s5, s6, s7, s8, s9];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsenote_placement() {\r\n var s0;\r\n\r\n if (input.substr(peg$currPos, 4) === peg$c89) {\r\n s0 = peg$c89;\r\n peg$currPos += 4;\r\n } else {\r\n s0 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c90); }\r\n }\r\n if (s0 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 7) === peg$c91) {\r\n s0 = peg$c91;\r\n peg$currPos += 7;\r\n } else {\r\n s0 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c92); }\r\n }\r\n if (s0 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 8) === peg$c93) {\r\n s0 = peg$c93;\r\n peg$currPos += 8;\r\n } else {\r\n s0 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c94); }\r\n }\r\n }\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseparticipant_list() {\r\n var s0, s1, s2, s3, s4, s5, s6, s7;\r\n\r\n s0 = peg$currPos;\r\n s1 = peg$parseparticipant();\r\n if (s1 !== peg$FAILED) {\r\n s2 = [];\r\n s3 = peg$currPos;\r\n s4 = peg$parsews();\r\n if (s4 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 44) {\r\n s5 = peg$c95;\r\n peg$currPos++;\r\n } else {\r\n s5 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c96); }\r\n }\r\n if (s5 !== peg$FAILED) {\r\n s6 = peg$parsews();\r\n if (s6 !== peg$FAILED) {\r\n s7 = peg$parseparticipant_list();\r\n if (s7 !== peg$FAILED) {\r\n s4 = [s4, s5, s6, s7];\r\n s3 = s4;\r\n } else {\r\n peg$currPos = s3;\r\n s3 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s3;\r\n s3 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s3;\r\n s3 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s3;\r\n s3 = peg$FAILED;\r\n }\r\n while (s3 !== peg$FAILED) {\r\n s2.push(s3);\r\n s3 = peg$currPos;\r\n s4 = peg$parsews();\r\n if (s4 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 44) {\r\n s5 = peg$c95;\r\n peg$currPos++;\r\n } else {\r\n s5 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c96); }\r\n }\r\n if (s5 !== peg$FAILED) {\r\n s6 = peg$parsews();\r\n if (s6 !== peg$FAILED) {\r\n s7 = peg$parseparticipant_list();\r\n if (s7 !== peg$FAILED) {\r\n s4 = [s4, s5, s6, s7];\r\n s3 = s4;\r\n } else {\r\n peg$currPos = s3;\r\n s3 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s3;\r\n s3 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s3;\r\n s3 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s3;\r\n s3 = peg$FAILED;\r\n }\r\n }\r\n if (s2 !== peg$FAILED) {\r\n s1 = [s1, s2];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsemultiline_note_statement() {\r\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9;\r\n\r\n s0 = peg$currPos;\r\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c85) {\r\n s1 = input.substr(peg$currPos, 4);\r\n peg$currPos += 4;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c86); }\r\n }\r\n if (s1 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 5).toLowerCase() === peg$c87) {\r\n s1 = input.substr(peg$currPos, 5);\r\n peg$currPos += 5;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c88); }\r\n }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n s2 = peg$parsesp();\r\n if (s2 !== peg$FAILED) {\r\n s3 = peg$parsenote_placement();\r\n if (s3 !== peg$FAILED) {\r\n s4 = peg$parsesp();\r\n if (s4 !== peg$FAILED) {\r\n s5 = peg$parseparticipant_list();\r\n if (s5 !== peg$FAILED) {\r\n s6 = peg$parsews();\r\n if (s6 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 10) {\r\n s7 = peg$c0;\r\n peg$currPos++;\r\n } else {\r\n s7 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\r\n }\r\n if (s7 !== peg$FAILED) {\r\n s8 = [];\r\n s9 = peg$parsetext();\r\n while (s9 !== peg$FAILED) {\r\n s8.push(s9);\r\n s9 = peg$parsetext();\r\n }\r\n if (s8 !== peg$FAILED) {\r\n s9 = peg$parseend_note();\r\n if (s9 !== peg$FAILED) {\r\n s1 = [s1, s2, s3, s4, s5, s6, s7, s8, s9];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsetext() {\r\n var s0, s1, s2, s3, s4;\r\n\r\n s0 = peg$currPos;\r\n s1 = peg$currPos;\r\n peg$silentFails++;\r\n s2 = peg$currPos;\r\n s3 = peg$parseend_note();\r\n if (s3 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 10) {\r\n s4 = peg$c0;\r\n peg$currPos++;\r\n } else {\r\n s4 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\r\n }\r\n if (s4 !== peg$FAILED) {\r\n s3 = [s3, s4];\r\n s2 = s3;\r\n } else {\r\n peg$currPos = s2;\r\n s2 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s2;\r\n s2 = peg$FAILED;\r\n }\r\n peg$silentFails--;\r\n if (s2 === peg$FAILED) {\r\n s1 = void 0;\r\n } else {\r\n peg$currPos = s1;\r\n s1 = peg$FAILED;\r\n }\r\n if (s1 !== peg$FAILED) {\r\n s2 = peg$parseto_eol();\r\n if (s2 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 10) {\r\n s3 = peg$c0;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\r\n }\r\n if (s3 !== peg$FAILED) {\r\n s1 = [s1, s2, s3];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseend_note() {\r\n var s0, s1, s2;\r\n\r\n s0 = peg$currPos;\r\n s1 = peg$parsews();\r\n if (s1 !== peg$FAILED) {\r\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c97) {\r\n s2 = input.substr(peg$currPos, 8);\r\n peg$currPos += 8;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c98); }\r\n }\r\n if (s2 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 9).toLowerCase() === peg$c99) {\r\n s2 = input.substr(peg$currPos, 9);\r\n peg$currPos += 9;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c100); }\r\n }\r\n if (s2 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c101) {\r\n s2 = input.substr(peg$currPos, 3);\r\n peg$currPos += 3;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c102); }\r\n }\r\n if (s2 === peg$FAILED) {\r\n s2 = peg$parseeof();\r\n }\r\n }\r\n }\r\n if (s2 !== peg$FAILED) {\r\n s1 = [s1, s2];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseref_statement() {\r\n var s0, s1, s2, s3, s4, s5, s6, s7, s8;\r\n\r\n s0 = peg$currPos;\r\n s1 = peg$currPos;\r\n s2 = peg$parseparticipant();\r\n if (s2 !== peg$FAILED) {\r\n s3 = peg$parsews();\r\n if (s3 !== peg$FAILED) {\r\n s4 = peg$parsearrow();\r\n if (s4 !== peg$FAILED) {\r\n s5 = peg$parsews();\r\n if (s5 !== peg$FAILED) {\r\n s2 = [s2, s3, s4, s5];\r\n s1 = s2;\r\n } else {\r\n peg$currPos = s1;\r\n s1 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s1;\r\n s1 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s1;\r\n s1 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s1;\r\n s1 = peg$FAILED;\r\n }\r\n if (s1 === peg$FAILED) {\r\n s1 = null;\r\n }\r\n if (s1 !== peg$FAILED) {\r\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c103) {\r\n s2 = input.substr(peg$currPos, 8);\r\n peg$currPos += 8;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c104); }\r\n }\r\n if (s2 !== peg$FAILED) {\r\n s3 = peg$parsews();\r\n if (s3 !== peg$FAILED) {\r\n s4 = peg$parseparticipant_list();\r\n if (s4 !== peg$FAILED) {\r\n s5 = peg$currPos;\r\n s6 = peg$parsews();\r\n if (s6 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 58) {\r\n s7 = peg$c20;\r\n peg$currPos++;\r\n } else {\r\n s7 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\r\n }\r\n if (s7 !== peg$FAILED) {\r\n s8 = peg$parseto_eol();\r\n if (s8 !== peg$FAILED) {\r\n s6 = [s6, s7, s8];\r\n s5 = s6;\r\n } else {\r\n peg$currPos = s5;\r\n s5 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s5;\r\n s5 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s5;\r\n s5 = peg$FAILED;\r\n }\r\n if (s5 === peg$FAILED) {\r\n s5 = null;\r\n }\r\n if (s5 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 10) {\r\n s6 = peg$c0;\r\n peg$currPos++;\r\n } else {\r\n s6 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\r\n }\r\n if (s6 !== peg$FAILED) {\r\n s7 = [];\r\n s8 = peg$parsetext();\r\n while (s8 !== peg$FAILED) {\r\n s7.push(s8);\r\n s8 = peg$parsetext();\r\n }\r\n if (s7 !== peg$FAILED) {\r\n s8 = peg$parseend_ref();\r\n if (s8 !== peg$FAILED) {\r\n s1 = [s1, s2, s3, s4, s5, s6, s7, s8];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseend_ref() {\r\n var s0, s1, s2;\r\n\r\n s0 = peg$currPos;\r\n s1 = peg$parsews();\r\n if (s1 !== peg$FAILED) {\r\n s2 = peg$parseend_ref_inner();\r\n if (s2 === peg$FAILED) {\r\n s2 = peg$parseeof();\r\n }\r\n if (s2 !== peg$FAILED) {\r\n s1 = [s1, s2];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseend_ref_inner() {\r\n var s0, s1, s2;\r\n\r\n s0 = peg$currPos;\r\n if (input.substr(peg$currPos, 7).toLowerCase() === peg$c105) {\r\n s1 = input.substr(peg$currPos, 7);\r\n peg$currPos += 7;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c106); }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n s2 = peg$parseref_to_part();\r\n if (s2 === peg$FAILED) {\r\n s2 = null;\r\n }\r\n if (s2 !== peg$FAILED) {\r\n s1 = [s1, s2];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseref_to_part() {\r\n var s0, s1, s2, s3, s4, s5, s6, s7;\r\n\r\n s0 = peg$currPos;\r\n s1 = peg$parsews();\r\n if (s1 !== peg$FAILED) {\r\n s2 = peg$parsearrow();\r\n if (s2 !== peg$FAILED) {\r\n s3 = peg$parsews();\r\n if (s3 !== peg$FAILED) {\r\n s4 = peg$parseparticipant();\r\n if (s4 !== peg$FAILED) {\r\n s5 = peg$parsews();\r\n if (s5 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 58) {\r\n s6 = peg$c20;\r\n peg$currPos++;\r\n } else {\r\n s6 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\r\n }\r\n if (s6 !== peg$FAILED) {\r\n s7 = peg$parseto_eol();\r\n if (s7 !== peg$FAILED) {\r\n s1 = [s1, s2, s3, s4, s5, s6, s7];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseparallel_statement() {\r\n var s0, s1, s2, s3, s4, s5, s6, s7;\r\n\r\n s0 = peg$currPos;\r\n if (input.substr(peg$currPos, 8).toLowerCase() === peg$c107) {\r\n s1 = input.substr(peg$currPos, 8);\r\n peg$currPos += 8;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c108); }\r\n }\r\n if (s1 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 6).toLowerCase() === peg$c109) {\r\n s1 = input.substr(peg$currPos, 6);\r\n peg$currPos += 6;\r\n } else {\r\n s1 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c110); }\r\n }\r\n }\r\n if (s1 !== peg$FAILED) {\r\n s2 = peg$parsews();\r\n if (s2 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 123) {\r\n s3 = peg$c111;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c112); }\r\n }\r\n if (s3 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 10) {\r\n s4 = peg$c0;\r\n peg$currPos++;\r\n } else {\r\n s4 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\r\n }\r\n if (s4 !== peg$FAILED) {\r\n s5 = peg$parsestatements();\r\n if (s5 !== peg$FAILED) {\r\n s6 = peg$parsews();\r\n if (s6 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 125) {\r\n s7 = peg$c113;\r\n peg$currPos++;\r\n } else {\r\n s7 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c114); }\r\n }\r\n if (s7 === peg$FAILED) {\r\n s7 = peg$parseeof();\r\n }\r\n if (s7 !== peg$FAILED) {\r\n s1 = [s1, s2, s3, s4, s5, s6, s7];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsegroup_statement() {\r\n var s0, s1, s2, s3, s4, s5, s6, s7;\r\n\r\n s0 = peg$currPos;\r\n s1 = peg$parsegroup_type();\r\n if (s1 !== peg$FAILED) {\r\n s2 = peg$currPos;\r\n s3 = peg$parsesp();\r\n if (s3 !== peg$FAILED) {\r\n s4 = peg$parseto_eol();\r\n if (s4 !== peg$FAILED) {\r\n s3 = [s3, s4];\r\n s2 = s3;\r\n } else {\r\n peg$currPos = s2;\r\n s2 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s2;\r\n s2 = peg$FAILED;\r\n }\r\n if (s2 === peg$FAILED) {\r\n s2 = null;\r\n }\r\n if (s2 !== peg$FAILED) {\r\n if (input.charCodeAt(peg$currPos) === 10) {\r\n s3 = peg$c0;\r\n peg$currPos++;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\r\n }\r\n if (s3 !== peg$FAILED) {\r\n s4 = peg$parsestatements();\r\n if (s4 !== peg$FAILED) {\r\n s5 = [];\r\n s6 = peg$parseelse_clause();\r\n while (s6 !== peg$FAILED) {\r\n s5.push(s6);\r\n s6 = peg$parseelse_clause();\r\n }\r\n if (s5 !== peg$FAILED) {\r\n s6 = peg$parsews();\r\n if (s6 !== peg$FAILED) {\r\n s7 = peg$parseend_group();\r\n if (s7 === peg$FAILED) {\r\n s7 = peg$parseeof();\r\n }\r\n if (s7 !== peg$FAILED) {\r\n s1 = [s1, s2, s3, s4, s5, s6, s7];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parsegroup_type() {\r\n var s0;\r\n\r\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c115) {\r\n s0 = input.substr(peg$currPos, 3);\r\n peg$currPos += 3;\r\n } else {\r\n s0 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c116); }\r\n }\r\n if (s0 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c117) {\r\n s0 = input.substr(peg$currPos, 4);\r\n peg$currPos += 4;\r\n } else {\r\n s0 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c118); }\r\n }\r\n if (s0 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c119) {\r\n s0 = input.substr(peg$currPos, 3);\r\n peg$currPos += 3;\r\n } else {\r\n s0 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c120); }\r\n }\r\n if (s0 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c121) {\r\n s0 = input.substr(peg$currPos, 4);\r\n peg$currPos += 4;\r\n } else {\r\n s0 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c122); }\r\n }\r\n if (s0 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 3).toLowerCase() === peg$c123) {\r\n s0 = input.substr(peg$currPos, 3);\r\n peg$currPos += 3;\r\n } else {\r\n s0 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c124); }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseend_group() {\r\n var s0, s1, s2, s3, s4, s5;\r\n\r\n s0 = peg$currPos;\r\n s1 = peg$parsews();\r\n if (s1 !== peg$FAILED) {\r\n s2 = peg$currPos;\r\n if (input.substr(peg$currPos, 3) === peg$c101) {\r\n s3 = peg$c101;\r\n peg$currPos += 3;\r\n } else {\r\n s3 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c125); }\r\n }\r\n if (s3 !== peg$FAILED) {\r\n s4 = peg$parsesp();\r\n if (s4 !== peg$FAILED) {\r\n s5 = peg$parsegroup_type();\r\n if (s5 !== peg$FAILED) {\r\n s3 = [s3, s4, s5];\r\n s2 = s3;\r\n } else {\r\n peg$currPos = s2;\r\n s2 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s2;\r\n s2 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s2;\r\n s2 = peg$FAILED;\r\n }\r\n if (s2 === peg$FAILED) {\r\n if (input.substr(peg$currPos, 3) === peg$c101) {\r\n s2 = peg$c101;\r\n peg$currPos += 3;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c125); }\r\n }\r\n }\r\n if (s2 !== peg$FAILED) {\r\n s1 = [s1, s2];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n function peg$parseelse_clause() {\r\n var s0, s1, s2, s3, s4;\r\n\r\n s0 = peg$currPos;\r\n s1 = peg$parsews();\r\n if (s1 !== peg$FAILED) {\r\n if (input.substr(peg$currPos, 4).toLowerCase() === peg$c117) {\r\n s2 = input.substr(peg$currPos, 4);\r\n peg$currPos += 4;\r\n } else {\r\n s2 = peg$FAILED;\r\n if (peg$silentFails === 0) { peg$fail(peg$c118); }\r\n }\r\n if (s2 !== peg$FAILED) {\r\n s3 = peg$parsesp();\r\n if (s3 !== peg$FAILED) {\r\n s4 = peg$parseto_eol();\r\n if (s4 !== peg$FAILED) {\r\n s1 = [s1, s2, s3, s4];\r\n s0 = s1;\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n } else {\r\n peg$currPos = s0;\r\n s0 = peg$FAILED;\r\n }\r\n\r\n return s0;\r\n }\r\n\r\n\r\n function AstNode(type, data, location) {\r\n \tthis.type = type;\r\n this.data = data;\r\n this.locus = location;\r\n }\r\n\r\n // initializer\r\n function Ast(label, thing, location) {\r\n return new AstNode(label, thing, location); // initializer\r\n\r\n }\r\n \r\n\r\n\r\n peg$result = peg$startRuleFunction();\r\n\r\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\r\n return peg$result;\r\n } else {\r\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\r\n peg$fail(peg$endExpectation());\r\n }\r\n\r\n throw peg$buildStructuredError(\r\n peg$maxFailExpected,\r\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\r\n peg$maxFailPos < input.length\r\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\r\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\r\n );\r\n }\r\n }\r\n\r\n return {\r\n SyntaxError: peg$SyntaxError,\r\n parse: peg$parse\r\n };\r\n})();\r\n","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=less&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=less&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RevisionView.vue?vue&type=style&index=0&id=758de7e2&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RevisionView.vue?vue&type=style&index=0&id=758de7e2&scoped=true&lang=less&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=style&index=0&id=a9cb2fea&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=style&index=0&id=a9cb2fea&scoped=true&lang=less&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HintView.vue?vue&type=style&index=0&id=98eee264&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HintView.vue?vue&type=style&index=0&id=98eee264&scoped=true&lang=less&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AceEditor.vue?vue&type=style&index=0&id=d999117c&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AceEditor.vue?vue&type=style&index=0&id=d999117c&scoped=true&lang=less&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Splitter.vue?vue&type=style&index=0&id=ffdb5fa8&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Splitter.vue?vue&type=style&index=0&id=ffdb5fa8&scoped=true&lang=less&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountDialog.vue?vue&type=style&index=0&id=a314d720&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountDialog.vue?vue&type=style&index=0&id=a314d720&scoped=true&lang=less&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileTabsComponent.vue?vue&type=style&index=0&id=a927822a&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileTabsComponent.vue?vue&type=style&index=0&id=a927822a&scoped=true&lang=less&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpDialog.vue?vue&type=style&index=0&id=54ea5df4&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpDialog.vue?vue&type=style&index=0&id=54ea5df4&scoped=true&lang=less&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.showMain)?_c('WsdMain',{attrs:{\"app\":_vm.app}}):_vm._e(),(_vm.showAbout)?_c('AboutComponent',{attrs:{\"app\":_vm.app}}):_vm._e(),_c('PromptDialog',{ref:\"prompter\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"full\"},[_c('div',{staticStyle:{\"overflow-y\":\"scroll\",\"position\":\"absolute\",\"top\":\"0\",\"left\":\"0\",\"bottom\":\"0\",\"right\":\"300px\"}},[_c('h1',[_vm._v(\"Basic app test\")]),_c('span',{staticStyle:{\"background\":\"red\",\"color\":\"white\"},style:({ visibility: _vm.Wsd.busy ? 'visible' : 'hidden' })},[_vm._v(\"Busy\")]),_c('br'),_vm._v(\"\\n\\n User: \"+_vm._s(_vm.Wsd.user.email)),_c('br'),_vm._v(\"\\n Userid: \"+_vm._s(_vm.Wsd.user.userid)+\"\\n \"),_c('div',[_vm._v(\"\\n username: \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.username),expression:\"username\"}],domProps:{\"value\":(_vm.username)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.username=$event.target.value}}}),_vm._v(\" password:\\n \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}}),_vm._v(\" password2:\\n \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password2),expression:\"password2\"}],domProps:{\"value\":(_vm.password2)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password2=$event.target.value}}}),_c('br'),_c('button',{staticClass:\"ui button\",on:{\"click\":_vm.signin}},[_vm._v(\"Sign in\")]),_c('button',{directives:[{name:\"google-signin\",rawName:\"v-google-signin\"}]},[_vm._v(\"Google signin\")]),_vm._v(\"\\n .\\n \"),_c('button',{on:{\"click\":function($event){return _vm.signInModel.addUser(_vm.username, _vm.password, _vm.password2)}}},[_vm._v(\"\\n Create user\\n \")]),_c('button',{on:{\"click\":function($event){return _vm.app.signOut()}}},[_vm._v(\"Sign out\")]),_c('button',{on:{\"click\":function($event){return _vm.signInModel.forgotPassword(_vm.username, _vm.password)}}},[_vm._v(\"\\n Forgot password\\n \")]),_vm._v(\"\\n Sign in error: \"+_vm._s(_vm.signInModel.error)+\"\\n \")]),_c('h2',[_vm._v(\"Account info\")]),_c('div',[_vm._v(\"\\n Subscribed: \"+_vm._s(_vm.accountModel.subscribed())),_c('br'),_vm._v(\"\\n expiryDate: \"+_vm._s(_vm.accountModel.expiryDate())),_c('br'),_vm._v(\"\\n hasGoogle: \"+_vm._s(_vm.accountModel.hasGoogle())),_c('br'),_vm._v(\"\\n specialUser: \"+_vm._s(_vm.accountModel.specialUser())),_c('br'),_vm._v(\"\\n cancelled: \"+_vm._s(_vm.accountModel.cancelled())),_c('br')]),_c('button',{on:{\"click\":function($event){return _vm.accountModel.updateEmail()}}},[_vm._v(\"\\n Update email\\n \")]),_c('button',{on:{\"click\":function($event){return _vm.accountModel.updatePassword()}}},[_vm._v(\"\\n Update password\\n \")]),_c('button',{directives:[{name:\"google-add-signin\",rawName:\"v-google-add-signin\"}]},[_vm._v(\"Add google signin\")]),_c('button',{on:{\"click\":function($event){return _vm.accountModel.removeGoogleSignin()}}},[_vm._v(\"\\n RemoveGoogleSignin\\n \")]),_c('button',{on:{\"click\":function($event){return _vm.buy('yearly120-30')}}},[_vm._v(\"Buy annual\")]),_c('button',{on:{\"click\":function($event){return _vm.buy('monthly15-30')}}},[_vm._v(\"Buy monthly\")]),_c('button',{on:{\"click\":function($event){return _vm.buy('daypass')}}},[_vm._v(\"Buy day pass\")]),_c('button',{on:{\"click\":function($event){return _vm.accountModel.updateCard()}}},[_vm._v(\"\\n Update credit card\\n \")]),_c('button',{on:{\"click\":function($event){return _vm.accountModel.cancelPayments()}}},[_vm._v(\"\\n Cancel payments\\n \")]),_c('button',{on:{\"click\":function($event){return _vm.accountModel.showReceipts()}}},[_vm._v(\"\\n View receipts\\n \")]),_c('button',{on:{\"click\":function($event){return _vm.accountModel.updateProductKey()}}},[_vm._v(\"\\n Set Product key\\n \")]),_c('h2',[_vm._v(\"Files\")]),_c('button',{on:{\"click\":function($event){return _vm.fileModel.init()}}},[_vm._v(\"Init model\")]),_c('br'),_vm._v(\"\\n Search: \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.fileModel.searchText),expression:\"fileModel.searchText\"}],domProps:{\"value\":(_vm.fileModel.searchText)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.fileModel, \"searchText\", $event.target.value)}}}),_c('br'),_c('div',{staticClass:\"folders\"},_vm._l((_vm.fileModel.folders),function(folder){return _c('div',{key:folder.projectid,staticClass:\"folder\",class:{ selected: _vm.fileModel.currentFolder === folder },on:{\"click\":function($event){return _vm.fileModel.setFolder(folder)}}},[_vm._v(\"\\n \"+_vm._s(folder.name)+\"\\n \")])}),0),_c('button',{on:{\"click\":function($event){return _vm.fileModel.deleteFile()}}},[_vm._v(\"Delete file\")]),_c('button',{on:{\"click\":function($event){return _vm.fileModel.rename()}}},[_vm._v(\"Rename file\")]),_c('button',{on:{\"click\":function($event){return _vm.fileModel.createFolder()}}},[_vm._v(\"Create folder\")]),_c('button',{on:{\"click\":function($event){return _vm.fileModel.deleteFolder()}}},[_vm._v(\"Delete folder\")]),_c('button',{on:{\"click\":function($event){return _vm.fileModel.renameFolder()}}},[_vm._v(\"Rename folder\")]),_c('button',{on:{\"click\":function($event){return _vm.fileModel.moveToFolder()}}},[_vm._v(\"\\n Move to folder\\n \")]),_c('button',{on:{\"click\":function($event){return _vm.fileModel.createInFolder()}}},[_vm._v(\"\\n Create in folder\\n \")]),_c('button',{on:{\"click\":function($event){return _vm.fileModel.inviteToProject()}}},[_vm._v(\"\\n Share by email\\n \")]),_c('button',{on:{\"click\":function($event){return _vm.fileModel.duplicate()}}},[_vm._v(\"Duplicate\")]),_c('button',{on:{\"click\":function($event){return _vm.fileModel.openFromComputer()}}},[_vm._v(\"\\n Open from computer\\n \")]),_c('div',{staticClass:\"files\"},[_c('table',[_c('tr',[_c('th',{on:{\"click\":function($event){return _vm.fileModel.setSortOrder('name')}}},[_vm._v(\"\\n Name\\n \")]),_c('th',{on:{\"click\":function($event){return _vm.fileModel.setSortOrder('date')}}},[_vm._v(\"\\n Date\\n \")])]),_vm._l((_vm.fileModel.files),function(file){return _c('tr',{key:file.fileid,staticClass:\"file\",class:{ selected: _vm.fileModel.currentFile === file },on:{\"click\":function($event){return _vm.fileModel.setFile(file)},\"dblclick\":function($event){return _vm.fileModel.open()}}},[_c('td',[_vm._v(_vm._s(file.name))]),_c('td',[_vm._v(_vm._s(file.mtime))])])})],2)]),_c('h2',[_vm._v(\"File editor\")]),_c('h3',[_vm._v(\"Open files\")]),_c('div',{staticClass:\"listing\"},_vm._l((_vm.openFiles.files),function(file){return _c('div',{key:file.fileid,staticClass:\"list-item\",class:{ selected: _vm.isActiveFile(file) },on:{\"click\":function($event){return _vm.setActiveFile(file)}}},[_vm._v(\"\\n \"+_vm._s(file.name)+\"\\n \")])}),0),_c('button',{on:{\"click\":function($event){return _vm.create()}}},[_vm._v(\"Create\")]),_c('button',{on:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"Close\")]),(_vm.activeFile && _vm.activeFile.fileid < 0)?_c('button',{on:{\"click\":function($event){return _vm.app.saveFile(_vm.activeFile)}}},[_vm._v(\"\\n Save new\\n \")]):_vm._e(),_c('button',{on:{\"click\":function($event){return _vm.renameParticipant()}}},[_vm._v(\"Rename participant\")]),_c('h3',[_vm._v(\"editor\")]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.text),expression:\"text\"}],ref:\"editor\",staticStyle:{\"width\":\"100%\"},attrs:{\"rows\":\"30\"},domProps:{\"value\":(_vm.text)},on:{\"keypress\":function($event){return _vm.onTextChanged()},\"input\":function($event){if($event.target.composing){ return; }_vm.text=$event.target.value}}}),_c('br'),_c('button',{on:{\"click\":_vm.exportDiagram}},[_vm._v(\"Export\")])]),_c('DebugPanel',{staticClass:\"DebugPanel\",staticStyle:{\"position\":\"absolute\",\"top\":\"0\",\"bottom\":\"0\",\"right\":\"0\",\"width\":\"300px\"}}),_c('PromptDialog',{ref:\"prompter\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*jslint sub: true */\n\ntype ListenerFn = (key: string, text: string) => void;\ntype LoggerFn = (key: string, ...args: any[]) => void;\n\nexport class Logger {\n public disabled: { [key: string]: boolean } = {};\n public listeners: ListenerFn[] = [];\n\n public enable(key: string, enabled: boolean = true) {\n this.disabled[key] = !enabled;\n }\n\n /** @param {string} key\n @param {boolean=} enabled */\n public create(key: string, enabled = true): LoggerFn {\n if (enabled === false) {\n this.disabled[key] = true;\n }\n const self = this;\n const fn = function (..._: any[]) {\n self.logfunc(key, arguments);\n };\n return fn;\n }\n\n public addListener(listenerFn: ListenerFn) {\n this.listeners.push(listenerFn);\n return listenerFn;\n }\n\n public removeListener(listenerFn: ListenerFn) {\n for (let i = 0; i < this.listeners.length; i++) {\n if (this.listeners[i] === listenerFn) {\n this.listeners.splice(i, 1);\n return;\n }\n }\n }\n\n public consoleEnabled = false;\n\n public enableConsole() {\n if (!this.consoleEnabled) {\n this.consoleEnabled = true;\n this.addListener((key, message) => {\n console.log(key + ': ' + message);\n });\n }\n }\n\n private logfunc(key: string, args: IArguments) {\n const message: string[] = [];\n const format: string = args[0];\n let i;\n if (this.listeners.length === 0) {\n return;\n }\n\n const segments = format.split('%s');\n message.push(segments[0]);\n for (i = 1; i < segments.length; i++) {\n if (i - 1 >= args.length - 1) {\n message.push('');\n } else if (typeof args[i] === 'string' || typeof args[i] === 'number') {\n message.push(args[i]);\n } else if (args[i] === undefined) {\n message.push('(undefined)');\n } else if (args[i] === null) {\n message.push('(null)');\n } else if (args[i] instanceof Object &&\n args[i].toString instanceof Function) {\n message.push(args[i].toString());\n } else {\n message.push(JSON.stringify(args[i]));\n }\n message.push(segments[i]);\n }\n\n const joined = message.join('');\n for (const listener of this.listeners) {\n listener(key, joined);\n }\n }\n}\n\nexport let log = new Logger();\n\nexport function CreateLogger(key: string) {\n return log.create(key);\n}","import { log } from \"./log\";\n\nexport class TrackerClass {\n enabled = true;\n url = \"http://www.hanovsolutions.com/tracker.py\";\n domain = window.location.hostname;\n log = log.create(\"TRACKER\");\n\n enable(setting: boolean) {\n this.enabled = setting;\n }\n\n arrival(eventName: string, data?: string) {\n var referrer;\n data = data || \"\";\n referrer = document.referrer;\n if (referrer !== \"\") {\n if (data !== \"\") {\n data += \"&referrer=\" + encodeURIComponent(referrer);\n } else {\n data = \"referrer=\" + encodeURIComponent(referrer);\n }\n }\n this.event(eventName, data);\n }\n\n event(name: string, data?: any) {\n var items, key, script, url;\n if (!this.enabled) {\n return;\n }\n // http/https must match.\n if (this.url.indexOf(window.location.protocol) !== 0) {\n return;\n }\n url = this.url + \"?e=\" + encodeURIComponent(this.domain + \":\" + name);\n if (data) {\n if (typeof data !== \"string\") {\n items = [];\n for (key in data) {\n if (data.hasOwnProperty(key)) {\n items.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key]));\n }\n }\n data = items.join(\"&\");\n }\n url += \"&d=\" + encodeURIComponent(data);\n }\n script = document.createElement(\"script\");\n script.setAttribute(\"src\", url);\n document.body.appendChild(script);\n }\n}\n\nexport let Tracker = new TrackerClass();\n","/*\nThe EventEmitter is inspired by the node.js API. It lets you bind handler\nfunctions to certain named events. When the event occurs, all the handlers for\nit are called.\n*/\n\nimport { log as Log } from \"./log\"\n\nlet log = Log.create(\"EventEmitter\")\n\ntype Fn = (...args: any[]) => void;\nexport type HandlerFn = Fn;\n\nexport class EventEmitter {\n nolog = false;\n events: { [key: string]: Fn[] } = {};\n eventQueue: any[][] = [];\n\n //@ts-ignore\n emit(name: string, ...var_args: any[]) {\n let args = Array.prototype.slice.apply(arguments) as any;\n this.eventQueue.push(args);\n if (this.eventQueue.length === 1) {\n setTimeout(() => {\n for (let i = 0; i < this.eventQueue.length; i++) {\n this.dispatch.apply(this, this.eventQueue[i] as any);\n }\n this.eventQueue.length = 0;\n }, 0);\n }\n }\n\n //@ts-ignore\n emitNow(name: string, ...var_args: any[]) {\n // Using the queue guarantees events are received in the same\n // order that they are sent, in case the listener\n // emits more events.\n let args = Array.prototype.slice.apply(arguments) as any;\n this.eventQueue.push(args);\n if (this.eventQueue.length === 1) {\n for (let i = 0; i < this.eventQueue.length; i++) {\n this.dispatch.apply(this, this.eventQueue[i] as any);\n }\n this.eventQueue.length = 0;\n }\n }\n\n private emitting: { [key: string]: [string, any[]] } = {};\n\n //@ts-ignore\n emitOnce(name: string, ...var_args: any[]) {\n let args = Array.prototype.slice.apply(arguments) as [string, any[]];\n let key = args[0];\n if (!(key in this.emitting)) {\n setTimeout(() => {\n let args = this.emitting[key];\n delete this.emitting[key];\n this.dispatch.apply(this, args);\n }, 0);\n }\n this.emitting[key] = args;\n }\n\n private dispatch(name: string, ...var_args: any[]) {\n if (name in this.events) {\n let fnlist = this.events[name];\n if (!this.nolog) {\n log(\"Emit %s\", name);\n }\n for (var fn of fnlist) {\n fn.apply(null, var_args);\n }\n }\n }\n\n on(names: string, fn: Fn) {\n if (!this.events) {\n this.events = {};\n }\n\n for (let name of names.split(\" \")) {\n this.bind(name, fn);\n }\n }\n\n /** @param {string} name */\n once(name: string, fn: Fn) {\n var self = this;\n var wrapper = function () {\n self.unbind(name, wrapper);\n fn.apply(null, arguments as any as any[]);\n };\n\n self.bind(name, wrapper);\n }\n\n bind(name: string, fn: Fn) {\n if (name in this.events) {\n this.events[name].push(fn);\n } else {\n this.events[name] = [fn];\n }\n return fn;\n }\n\n removeListener(name: string, fn: Fn) {\n return this.unbind(name, fn);\n }\n\n unbind(name: string, fn: Fn) {\n var arr, i, _i, _ref;\n if (name in this.events) {\n arr = this.events[name];\n for (i = _i = 0, _ref = arr.length - 1; _i <= _ref; i = _i += 1) {\n if (arr[i] === fn) {\n arr.splice(i, 1);\n break;\n }\n }\n if (arr.length === 0) {\n delete this.events[name];\n }\n }\n }\n\n joinEvents(emitter: EventEmitter) {\n var key;\n if (emitter.events === this.events) {\n return;\n }\n for (key in emitter.events) {\n if (key in this.events) {\n this.events[key] = this.events[key].concat(emitter.events[key]);\n } else {\n this.events[key] = emitter.events[key];\n }\n }\n emitter.events = this.events;\n }\n\n clearEvents() {\n this.events = {};\n }\n};\n","declare var unescape: (input: string) => string;\n\nexport var Url = {\n unescape: function (string: string) {\n string = string.replace(/\\+/g, \" \");\n if (typeof decodeURIComponent !== undefined) {\n return decodeURIComponent(string);\n } else {\n return unescape(string);\n }\n },\n\n splitQueryString: function (string: string, separator: string) {\n var a: any, field, fields, i, index, key, value, _i, _len;\n separator = separator || \"?\";\n a = {};\n index = string.indexOf(separator);\n if (index >= 0) {\n string = string.substr(index + 1);\n }\n index = string.indexOf('#');\n if (index >= 0) {\n string = string.substr(0, index);\n }\n fields = string.split(\"&\");\n for (_i = 0, _len = fields.length; _i < _len; _i++) {\n field = fields[_i];\n i = field.split(\"=\");\n key = Url.unescape(i[0]);\n if (key[0] == '/' && key.indexOf(\".\") === -1) {\n key = key.substr(1);\n }\n value = i.length > 1 ? Url.unescape(i[1]) : \"\";\n if (key.length) {\n a[key] = value;\n }\n }\n return a;\n },\n\n encode: function (mapping: any) {\n var first, key, parts;\n parts = [];\n first = true;\n for (key in mapping) {\n if (mapping.hasOwnProperty(key)) {\n if (key.charAt(0) === '/') {\n // place slashes first\n if (!first) {\n parts.unshift(\"&\");\n }\n if (mapping[key] !== \"\") {\n parts.unshift(encodeURIComponent(mapping[key]));\n parts.unshift(\"=\")\n }\n parts.unshift(\"/\" + encodeURIComponent(key.substr(1)));\n first = false;\n continue;\n }\n if (!first) {\n parts.push('&');\n }\n first = false;\n parts.push(encodeURIComponent(key));\n if (mapping[key] !== \"\") {\n parts.push('=');\n parts.push(encodeURIComponent(mapping[key]));\n }\n }\n }\n return parts.join(\"\");\n },\n\n replaceHashValue: function (key: string, value: string) {\n var encoded, query;\n query = Url.hash();\n query[key] = value;\n encoded = Url.encode(query);\n window.location.hash = encoded;\n },\n\n deleteHashValue: function (key: string) {\n var encoded, query;\n query = Url.hash();\n delete query[key];\n encoded = Url.encode(query);\n window.location.hash = encoded;\n },\n\n setBooleanHashValue: function (key: string, value: boolean) {\n var encoded, query;\n query = Url.hash();\n if (value) {\n query[key] = \"1\";\n } else {\n delete query[key];\n }\n encoded = Url.encode(query);\n window.location.hash = encoded;\n },\n\n hash: function (url: string = window.location.hash) {\n return Url.splitQueryString(url, '#');\n },\n\n query: function (url: string = window.location.href) {\n return Url.splitQueryString(url, '?');\n },\n\n getFloatHashValue: function (key: string, def: number) {\n var hash = Url.hash();\n if (key in hash) {\n return parseFloat(hash[key]);\n }\n return def;\n }\n};\n","import { log } from './log';\n\nexport type CID = string;\n\n// for listing revisions\nexport interface Revision {\n cid: CID;\n ts: number;\n local: boolean;\n}\n\n/** Represents an operation, that is part of a larger list of\n * operations performed together.*/\nexport interface IOp {\n clone(): IOp;\n\n // return the inverse Op. The Op is guaranteed to have\n // been executed at least once previously.\n inverse(): IOp;\n}\n\nlet olog = log.create(\"OTDocument\");\n\n/** A transaction. All the operations are performed together. Each\n * operation has a CID (ChangeId). The change id may be used to\n * determine which operation should be peformed first in the case of\n * conflict.\n*/\nexport class OpList {\n constructor(\n public cid: CID,\n public parentCid: CID,\n public ts: number,\n public ops: IOp[] = [],\n public local = false) { // set by addLocalOps\n }\n\n public clone(id: CID, ts = this.ts): OpList {\n const ops: IOp[] = [];\n for (const op of this.ops) {\n ops.push(op.clone());\n }\n return new OpList(id, this.parentCid, ts, ops, this.local);\n }\n\n public inverse(id: CID = this.cid, ts = this.ts): OpList {\n const ops: IOp[] = [];\n for (let i = this.ops.length - 1; i >= 0; i--) {\n ops.push(this.ops[i].inverse());\n }\n return new OpList(id, this.parentCid, ts, ops, this.local);\n }\n}\n\nexport class EncodedChanges {\n constructor(\n private changes: string,\n private baseCid: string,\n private lastCid: string,\n ) {\n\n }\n\n public getData() {\n return this.changes;\n }\n\n public getBaseCid() {\n return this.baseCid;\n }\n\n public getLastCid() {\n return this.lastCid;\n }\n\n public empty() {\n return this.baseCid === this.lastCid;\n }\n\n toString() {\n return this.changes;\n }\n}\n\nexport const enum CidType {\n // Each change accepted by the server is numbered, starting from 1.\n Numbered,\n\n // CIDs are assigned by each client at random.\n Random,\n}\n\nexport abstract class Document {\n protected log = log.create('OTDocument');\n\n // The local undo stack, containing only local\n // Ops.\n private undoStack: OpList[] = [];\n private next = 0;\n\n // list of local Ops not yet sent.\n private local: OpList[] = [];\n\n // all ops in order\n protected all: OpList[] = [];\n\n // For numbered cids: the last change number\n // the server has acknowledged receiving. It corresponds to one-past\n // the index in the all array.\n private ackedTo = 0;\n\n // for random Cids: \n // all changes ever received and created.\n // some might not be in the all list because we didn't get their parents yet.\n private unsorted: { [cid: string]: OpList } = {};\n\n // set while we are inserting remote changes, to avoid\n // inifinite recursion.\n private ignoring = false;\n\n // revision that we are locked to\n private lockTo: null | CID = null;\n\n // debug info only printed out if things go wrong after an update\n protected debugInfo = \"\";\n\n // length of all - local before remote changes are added.\n private debugOldTop = 0;\n\n constructor(\n private autoexec = false,\n private cidType: CidType) {\n\n }\n\n public canUndo() {\n return this.next > 0 && !this.locked();\n }\n\n public canRedo() {\n return this.next < this.undoStack.length && !this.locked();\n }\n\n public undo() {\n //this.log(\"Undo index %s of %s\", this.next, this.undoStack.length);\n if (this.canUndo()) {\n this.ignoring = true;\n this.reapply(this.undoStack[--this.next], true);\n this.commit(false, true);\n this.ignoring = false;\n }\n }\n\n public redo() {\n //this.log(\"Redo index %s of %s\", this.next, this.undoStack.length);\n if (this.canRedo()) {\n this.ignoring = true;\n this.reapply(this.undoStack[this.next++], false);\n this.commit(false, true);\n this.ignoring = false;\n }\n }\n\n public clearUndoStack() {\n this.undoStack.length = 0;\n this.next = 0;\n }\n\n /** Returns the index of the next local that would be redone\n * Can be used to implement dirty()\n */\n public getUndoIndex() {\n return this.next;\n }\n\n isApplying() {\n return this.ignoring;\n }\n\n private indexOfCID(cid: CID | null) {\n if (cid === null) {\n return this.all.length - 1;\n }\n\n for (let i = 0; i < this.all.length; i++) {\n if (this.all[i].cid === cid) {\n return i;\n }\n }\n\n return -1;\n }\n\n locked() {\n return this.lockTo !== null;\n }\n\n gotoRevision(rev: CID | null) {\n // find index of cid.\n let wantedIndex = this.indexOfCID(rev);\n\n if (wantedIndex < 0) {\n // cannot go to that index.\n this.log(`CID ${rev} does not exist`);\n return false;\n }\n\n let currentIndex = this.indexOfCID(this.lockTo);\n if (wantedIndex === this.all.length - 1) {\n // head\n rev = null;\n }\n\n this.ignoring = true;\n /*\n olog(\"GOTO CHANGE %s\", rev);\n for (let i = 0; i < this.all.length; i++) {\n let str = `change [${i}]: ${this.all[i].cid}`\n if (i === wantedIndex) {\n str += \" (wanted)\"\n }\n if (this.all[i].cid === this.lockTo) {\n str += \" (lockedTo)\"\n }\n olog(str);\n }\n */\n this.lockTo = rev;\n\n if (wantedIndex === currentIndex) {\n // nothing to do.\n } else if (currentIndex < wantedIndex) {\n for (let i = currentIndex + 1; i <= wantedIndex; i++) {\n this.executeList(this.all[i]);\n }\n this.commit(false);\n } else {\n for (let i = currentIndex; i > wantedIndex; i--) {\n this.executeList(this.all[i].inverse());\n }\n this.commit(false);\n }\n this.ignoring = false;\n }\n\n public getRevisionList(): Revision[] {\n let result: Revision[] = [];\n for (let ops of this.all) {\n result.push({\n cid: ops.cid,\n ts: ops.ts,\n local: ops.local,\n })\n }\n return result;\n }\n\n public getChangesToSend() {\n if (this.local.length) {\n if (this.cidType === CidType.Numbered) {\n return new EncodedChanges(this.encode(this.local),\n (this.ackedTo).toString(),\n (this.ackedTo + this.local.length).toString());\n } else {\n return new EncodedChanges(\n this.encode(this.local),\n this.local[0].parentCid,\n this.local[this.local.length - 1].cid);\n }\n } else {\n return new EncodedChanges(\"\", \"0\", \"0\");\n }\n }\n\n public getAckedTo() {\n return this.ackedTo;\n }\n\n public resetToLocal() {\n // start a new session, make all changes local.\n this.ackedTo = 0;\n this.local = this.all.concat();\n for (let change of this.all) {\n change.local = true;\n }\n }\n\n public markChangesSent(lastCid: CID) {\n if (this.cidType === CidType.Numbered) {\n const numSent = parseInt(lastCid, 10) - this.ackedTo;\n //this.log(\"Marking %s changes sent (lastCID=%s ackedTo=%s)\", numSent, lastCid, this.ackedTo);\n for (let i = 0; i < numSent; i++) {\n this.all[this.ackedTo + i].cid = (this.ackedTo + i + 1).toString();\n if (this.ackedTo + i + 1 < this.all.length) {\n this.all[this.ackedTo + i + 1].parentCid = this.all[this.ackedTo + i].cid;\n }\n }\n this.ackedTo += numSent;\n this.local.splice(0, numSent);\n } else {\n for (let i = this.local.length - 1; i >= 0; i--) {\n //this.log(\"Check change %s/%s\", lastCid, this.local[i].cid);\n if (lastCid === this.local[i].cid) {\n this.local.splice(0, i + 1);\n return;\n }\n }\n }\n }\n\n public hasOutstandingChanges() {\n return this.local.length > 0;\n }\n\n public getLastCid(): CID {\n if (this.all.length) {\n return this.all[this.all.length - 1].cid;\n } else {\n return this.firstCid();\n }\n }\n\n public addLocalOps(opList: OpList, skipUndo = false) {\n if (this.ignoring) {\n return;\n }\n\n opList.local = true;\n\n if (!skipUndo) {\n this.undoStack.length = this.next;\n this.undoStack.push(opList);\n this.next += 1;\n }\n\n this.local.push(opList);\n this.all.push(opList);\n if (this.autoexec) {\n this.log(\"Executing LOCAL %s\", opList.cid);\n this.executeList(opList);\n } else {\n this.log(\"adding LOCAL %s\", opList.cid);\n }\n\n if (this.cidType === CidType.Random) {\n this.unsorted[opList.cid] = opList;\n }\n }\n\n private executeList(opList: OpList) {\n for (const Op of opList.ops) {\n this.execute(Op);\n }\n }\n\n /** Return the index of the given Oplist in the all array. */\n private findOperationIndex(cid: CID): number {\n // We are more likely to be searching for things near the end, so\n // start from there.\n for (var i = this.all.length - 1; i >= 0; i--) {\n if (this.all[i].cid === cid) {\n break;\n }\n }\n\n return i; // possibly -1\n }\n\n /** Reapply the Op or its inverse. The Op must already\n * exist in all[]\n */\n private reapply(opList: OpList, inverse: boolean) {\n const revno = this.findOperationIndex(opList.cid);\n if (revno === -1) {\n this.log('ERROR');\n return;\n }\n\n let revision;\n const id = this.nextCid();\n if (inverse) {\n // inverse change starts off right after the original change\n revision = opList.inverse(id, this.now());\n revision.parentCid = this.all[revno].cid;\n } else {\n // the reapplied change has the same parent.\n revision = opList.clone(id, this.now());\n }\n\n this.debugInfo = `Before ${inverse ? \"UNDO\" : \"REDO\"}:\\n`;\n for (let op of revision.ops) {\n this.debugInfo += ` ${op}\\n`\n }\n\n for (let i = inverse ? revno + 1 : revno; i < this.all.length; i++) {\n this.transformOpList(this.all[i], [revision]);\n }\n revision.parentCid = this.all[this.all.length - 1].cid;\n\n this.debugInfo += `After ${inverse ? \"UNDO\" : \"REDO\"} xform:\\n`;\n for (let op of revision.ops) {\n this.debugInfo += ` ${op}\\n`\n }\n\n this.local.push(revision);\n this.all.push(revision);\n this.executeList(revision);\n\n if (this.cidType === CidType.Random) {\n this.unsorted[revision.cid] = revision;\n }\n }\n\n /** initial conditions: list1 and list2 have the same parent.\n *\n * After calling, list2 will follow list1.\n */\n private transformOpList(list1: OpList, lists2: OpList[]) {\n if (lists2.length === 0) {\n return;\n }\n\n if (list1.parentCid !== lists2[0].parentCid) {\n throw new Error('Error: Expected same parentage.');\n }\n\n for (let op of list1.ops) {\n for (const list2 of lists2) {\n op = this.transformList(op, list2.ops, list1.cid, list2.cid);\n }\n }\n\n lists2[0].parentCid = list1.cid;\n }\n\n private transformList(b: IOp, oplist: IOp[], cid1: CID, cid2: CID) {\n /** A A\n * / \\ / \\\n * C B C B\n * / / \\ \\\n * D D B' C' Note B' and C' have same\n * document state.\n */\n\n for (let i = 0; i < oplist.length; i++) {\n const c = oplist[i];\n\n oplist[i] = this.transformOp(b, c, cid1, cid2, false);\n b = this.transformOp(c, b, cid2, cid1, true);\n }\n\n return b;\n }\n\n // Cursor ops, if present, are temporary extra local operations added to the end,\n // and transformed as if they were. They are an imaginary \"set cursor to this position\"\n // so that after the changes are applied, the position of the cursor can be updated to the\n // new location.\n public addRemoteChanges(encoded: string, cursorOps?: IOp[]): boolean {\n const newLists = this.decode(encoded);\n //this.log(\"Decoded %s to %s\", encoded, newLists);\n if (newLists === null || newLists.length === 0) {\n return newLists !== null;\n }\n this.log(\"Entering addRemoteChanges\");\n this.debugOldTop = this.all.length - this.local.length;\n this.debugInfo = \"Before applying remote changes:\\nLOCAL:\\n\";\n for (let list of this.local) {\n for (let op of list.ops) {\n this.debugInfo += ` ${op}\\n`\n }\n }\n let cursor: OpList | null = null;\n\n if (cursorOps) {\n cursor = new OpList(this.nextCid(true), this.getLastCid(), new Date().getTime() / 1000, cursorOps, true);\n }\n\n let lockedToIndex = this.indexOfCID(this.lockTo);\n\n let revertedTo = this.all.length;\n\n if (this.cidType === CidType.Numbered) {\n if (this.locked()) {\n throw new Error(\"Not implemented\");\n }\n // for server-numbered changes, the changes the server sends\n // are considered as accepted and must be placed next.\n //for (let i = 0; i < newLists.length; i++) {\n // newLists[i].cid = (this.ackedTo + i).toString();\n // if (i + 1 < newLists.length) {\n // newLists[i + 1].parentCid = newLists[i].cid;\n // }\n //}\n\n // if we should simply append the changes to the end,\n if (this.ackedTo === this.all.length) {\n //this.log(\"Tacking changes at end\");\n // do so.\n for (const opList of newLists) {\n this.all.push(opList);\n if (cursor) {\n this.transformOpList(opList, [cursor]);\n }\n }\n\n } else {\n //this.log(\"Placing %s changes at position %s\", newLists.length, this.ackedTo)\n // rewind to the given position.\n this.ignoring = true;\n while (revertedTo !== this.ackedTo) {\n revertedTo -= 1;\n this.executeList(this.all[revertedTo].inverse());\n }\n this.ignoring = false;\n\n let shiftedOld = this.all.slice(this.ackedTo);\n\n if (cursor) {\n shiftedOld.push(cursor);\n }\n\n this.all.length = this.ackedTo;\n\n while (newLists.length > 0 && shiftedOld.length > 0) {\n if (this.areOpsEquivalent(newLists[0], shiftedOld[0])) {\n this.log(\"Removing DUPE oplist\");\n shiftedOld.shift();\n this.local.shift();\n this.all.push(newLists.shift()!)\n this.ackedTo += 1;\n } else {\n break;\n }\n }\n\n for (const list of newLists) {\n this.transformOpList(list, shiftedOld);\n }\n\n if (cursor) {\n shiftedOld.pop();\n }\n\n this.all = this.all.concat(newLists, shiftedOld);\n }\n\n this.ackedTo += newLists.length;\n } else {\n // add to unsorted list.\n for (let list of newLists) {\n if (!(list.cid in this.unsorted)) {\n this.unsorted[list.cid] = list;\n }\n }\n\n // create tree of changes\n let tree: { [cid: string]: string[] } = {};\n tree[this.firstCid()] = [];\n for (let cid in this.unsorted) {\n tree[cid] = [];\n }\n\n for (let cid in this.unsorted) {\n let list = this.unsorted[cid];\n if (list.parentCid in tree) {\n tree[list.parentCid].push(list.cid);\n }\n }\n\n for (let cid in tree) {\n tree[cid].sort((a, b) => {\n const alocal = this.isLocalCid(a);\n const blocal = this.isLocalCid(b);\n if (alocal && !blocal) {\n return 1;\n } else if (!alocal && blocal) {\n return -1;\n } else if (a < b) {\n return -1\n } else if (a > b) {\n return 1;\n } else {\n return 0;\n }\n });\n }\n\n let printDag = (tree: any, cid: string, level: number) => {\n let line = \"\";\n for (let i = 0; i < level; i++) {\n line += \"..\";\n }\n line += \"[\" + cid + \"]\";\n this.log(line);\n for (let child of tree[cid]) {\n printDag(tree, child, level + 1);\n }\n }\n\n //printDag(tree, this.firstCid(), 0);\n\n // starting from the root of the tree, find either a change which we do \n // not have already, or a change with more than one child.\n var children = tree[this.firstCid()];\n let firstChangeId = this.firstCid();\n let i;\n for (i = 0; i < this.all.length; i++) {\n if (children.length !== 1 || children[0] !== this.all[i].cid) {\n break;\n }\n\n firstChangeId = children[0];\n children = tree[children[0]];\n }\n\n // remove all changes from tree that we encounter up to this point.\n // undo all changes down to this point in the tree and truncate our\n // list.\n this.ignoring = true;\n for (let j = lockedToIndex; j >= i; j--) {\n this.log(\"[%s] Executing INVERSE %s\", j, this.all[j].cid);\n try {\n this.executeList(this.all[j].inverse());\n } catch (e) {\n this.log(\"Error occurred HEREEEEEE %s\", this.all[j].cid);\n throw e;\n }\n }\n this.ignoring = false;\n\n this.all.length = i;\n\n let ordered: OpList[] = [];\n this.getNodesAsList(tree, firstChangeId, ordered);\n\n // append the list to our list of changes\n // execute the new changes.\n revertedTo = this.all.length;\n for (let i = 1; i < ordered.length; i++) {\n this.all.push(ordered[i]);\n }\n\n lockedToIndex = this.indexOfCID(this.lockTo);\n this.log(\"revertedTo=%s lockedTo=%s ordered=%s all=%s\", revertedTo, lockedToIndex, ordered.length, this.all.length);\n this.debugInfo += `revertedTo=${revertedTo} lockedTo=${lockedToIndex} ordered=${ordered.length} all=${this.all.length}\\n`\n }\n\n //this.log(\"AFTER INSERTING %s\", JSON.stringify(this.all, null, 2));\n\n this.ignoring = true;\n\n // redo other changes\n for (let i = revertedTo; i <= lockedToIndex; i++) {\n this.log(\"[%s] Executing REMOTE %s\", i, this.all[i].cid);\n this.executeList(this.all[i]);\n }\n\n if (this.all.length - revertedTo > 0) {\n this.commit(true);\n } else {\n this.log(\"no remote changes to commit\");\n }\n\n this.ignoring = false;\n\n this.log(\"Done addremotechanges\");\n\n return true;\n }\n\n private isLocalCid(cid: string) {\n return cid in this.unsorted && this.unsorted[cid].local;\n }\n\n private getNodesAsList(tree: { [cid: string]: string[] }, cid: string, output: OpList[]) {\n // add the node to the list.\n output.push(this.unsorted[cid]);\n\n let children: string[] = tree[cid];\n\n // while the node has one child,\n while (children.length === 1) {\n // add the child to the list and keep going\n output.push(this.unsorted[children[0]]);\n children = tree[children[0]];\n }\n\n // if there are zero children, then we are done.. return the list.\n if (children.length === 0) {\n return;\n }\n\n let start = output.length;\n\n // let the rhs be the list from the first child.\n this.getNodesAsList(tree, children[0], output);\n\n // for each other child,\n for (let i = 1; i < children.length; i++) {\n let branch: OpList[] = [];\n\n // get its list\n this.getNodesAsList(tree, children[i], branch);\n\n // transform each element follow all elements of the first list.\n for (let i = start; i < output.length; i++) {\n this.transformOpList(output[i], branch);\n }\n\n output.push.apply(output, branch);\n }\n }\n\n /** Returns the parent of the first change, usually a fixed constant */\n protected firstCid(): CID {\n return (0).toString();\n }\n\n public _nextCid = -1;\n public _cidPrefix = '';\n /** Returns the next Id to use for a local change */\n protected nextCid(peek = false): CID {\n let cid: string;\n if (this.cidType === CidType.Numbered) {\n let result = this._nextCid.toString();\n if (!peek) {\n this._nextCid -= 1;\n }\n return result;\n } else {\n return this._cidPrefix + Math.floor(Math.random() * 1000000).toString(36);\n }\n }\n\n public show() {\n this.log('%s', JSON.stringify(this.all, null, 2));\n }\n\n public now() {\n return Math.floor(new Date().getTime() / 1000);\n }\n\n public getNextRevisionNumber() {\n return this.all.length + 1;\n }\n\n getCidType() {\n return this.cidType;\n }\n\n setCidPrefix(prefix: string) {\n this._cidPrefix = prefix;\n }\n\n getCidPrefix() {\n return this._cidPrefix;\n }\n\n cidLess(cid1: CID, cid2: CID) {\n if (this.cidType === CidType.Numbered) {\n let c1 = parseInt(cid1, 10);\n let c2 = parseInt(cid2, 10);\n if (c1 < 0 && c2 < 0) {\n return c1 > c2;\n } else if (c1 > 0 && c2 > 0) {\n return c1 < c2;\n } else if (c2 > 0) {\n return false;\n } else {\n return true;\n }\n } else {\n return cid1 < cid2;\n }\n }\n\n protected areOpsEquivalent(ops1: OpList, ops2: OpList) {\n let str1 = this.encode([ops1]);\n let str2 = this.encode([ops2]);\n return str1 == str2;\n }\n\n toString() {\n let str = `DEBUG:\\n${this.debugInfo}\\nALL:\\n`;\n for (let i = 0; i < this.all.length; i++) {\n if (i === this.all.length - this.local.length) {\n str += \"LOCAL:\\n\"\n } else if (i === this.debugOldTop) {\n str += \"OLD TOP:\\n\";\n }\n for (let op of this.all[i].ops) {\n str += ` ${op}\\n`\n }\n }\n str += `all:${this.all.length} oldTop=${this.debugOldTop} local=${this.local.length}`\n return str;\n }\n\n /** Initial conditions, op1 and op2 have the same parent.\n * Returns an operation which is op2 following op1.\n */\n protected abstract transformOp(op1: IOp, op2: IOp, cid1: CID, cid2: CID, stitching: boolean): IOp;\n\n /** Execute the given operation */\n protected abstract execute(op: IOp): void;\n\n // optional commit called after all executing\n commit(remote: boolean, skipUndo = false) { }\n\n protected abstract decode(input: string): OpList[] | null;\n protected abstract encode(input: OpList[]): string;\n}\n\nfunction now() {\n return Math.round(new Date().getTime() / 1000);\n}\n\n/** Defines a test document consisting of two operations:\n * add(a, b) -- adds A to the value of the document and errors\n * if the value now does not equal b.\n *\n * multiply(a, b) -- multiply a with the value of the document and errors\n * if the value now does not equal b.\n *\n * Good for testing because every change will conflict with every other change\n * unless transformed.\n *\n * first cid is zero.\n * remote cids are positive\n * local cids are negative\n */\n\nclass TestOp implements IOp {\n constructor(\n public type: 'a' | 'm',\n public operand: number,\n public newValue: number) {\n\n }\n\n public clone() {\n return new TestOp(this.type, this.operand, this.newValue);\n }\n\n public inverse() {\n if (this.type === 'a') {\n return new TestOp('a', -this.operand, this.newValue - this.operand);\n } else {\n return new TestOp('m', 1 / this.operand, this.newValue / this.operand);\n }\n }\n\n}\n\nclass TestDocument extends Document {\n public value = 0;\n\n constructor(cidType: CidType, public prefix: string) {\n super(true, cidType);\n this.setCidPrefix(prefix);\n }\n\n /** Execute the given operation */\n public execute(op: TestOp) {\n if (op.type === 'a') {\n this.log('Add to %s %s', this.value, op.operand);\n this.value += op.operand;\n } else if (op.type === 'm') {\n this.log('Multiply %s by %s', this.value, op.operand);\n this.value *= op.operand;\n }\n\n if (this.value !== op.newValue) {\n throw new Error(`Document value should be ${op.newValue}, but got ${this.value}`);\n }\n }\n\n decode(input: string) {\n let lists = JSON.parse(input, (key: string, value: any) => {\n if (value instanceof Object) {\n if (value.operand) {\n return new TestOp(value.type, value.operand, value.newValue);\n } else if (value.ops) {\n return new OpList(value.cid, value.parentCid, value.ts, value.ops);\n }\n }\n return value;\n });\n\n if (this.getCidType() === CidType.Numbered) {\n let prev = this.getAckedTo();\n let next = prev + 1;\n for (let list of lists) {\n list.parentCid = prev.toString();\n list.cid = next.toString();\n prev = next;\n next += 1;\n }\n }\n return lists;\n }\n\n public encode(input: OpList[]) {\n return JSON.stringify(input);\n }\n\n transformOp(op1: TestOp, op2: TestOp, cid1: CID, cid2: CID) {\n this.log(\"transform %s/,%s\", cid1, cid2);\n //this.log(` ${op1.operand} ${op1.type}_${op1.newValue}/ ${op2.operand} ${op2.type}_${op2.newValue} == ${newValue}`);\n let newValue;\n if (this.cidLess(cid1, cid2)) {\n // op1 goes first.\n newValue = op1.newValue;\n if (op2.type === 'a') {\n newValue += op2.operand;\n } else {\n newValue *= op2.operand;\n }\n\n return new TestOp(op2.type, op2.operand, newValue);\n } else {\n // op2 goes first. But we can't change op1. So calculate\n // the result of op2,op1 change op2 to be an add operation.\n newValue = op2.newValue;\n if (op1.type === 'a') {\n newValue += op1.operand;\n } else {\n newValue *= op1.operand;\n }\n\n this.log(` Modified op2 with value ${newValue}`);\n return new TestOp('a', newValue - op1.newValue, newValue);\n }\n\n }\n\n public add(operand: number) {\n const cid = this.nextCid();\n this.addLocalOps(new OpList(cid, this.getLastCid(), now(),\n [new TestOp('a', operand, this.value + operand)]));\n }\n\n public multiply(operand: number) {\n const cid = this.nextCid();\n this.addLocalOps(new OpList(cid, this.getLastCid(), now(),\n [new TestOp('m', operand, this.value * operand)]));\n }\n}\n\nfunction Test() {\n log.enableConsole();\n\n function RunTest(cidType: CidType) {\n let doc1 = new TestDocument(cidType, \"A-\");\n\n doc1.add(5);\n doc1.multiply(5);\n console.log(doc1.value);\n\n let doc2 = new TestDocument(cidType, \"B-\");\n doc2.add(2);\n doc2.multiply(2);\n console.log(doc2.value);\n\n let changes1 = doc1.getChangesToSend()!;\n console.log(changes1.getData());\n doc1.markChangesSent(changes1.getLastCid());\n\n doc2.addRemoteChanges(changes1.getData());\n // should be (5*5+2)*2 = 54 or\n\n console.log(doc2.value);\n if (doc2.value !== 54) {\n throw new Error(\"Test failed.\");\n }\n let changes = doc2.getChangesToSend()!;\n console.log(changes);\n doc2.markChangesSent(changes.getLastCid());\n doc2.show();\n\n doc1.addRemoteChanges(changes.getData());\n if (doc1.value !== 54) {\n throw new Error(\"Test part 2 failed.\");\n }\n\n doc1.show();\n }\n\n RunTest(CidType.Numbered);\n console.log(\"NUMBERED CID TEST PASSED\");\n RunTest(CidType.Random);\n console.log(\"ALL TESTS PASSED\");\n}\n","function leq2(a1: number, a2: number, b1: number, b2: number) { // lexic. order for pairs\n return (a1 < b1 || a1 === b1 && a2 <= b2);\n}\n// and triples\nfunction leq3(a1: number, a2: number, a3: number, b1: number, b2: number, b3: number) {\n return (a1 < b1 || a1 === b1 && leq2(a2, a3, b2, b3));\n}\n// stably sort a[0..n-1] to b[0..n-1] with keys in 0..K from r\nfunction radixPass(a: number[], b: number[], r: number[], o: number, n: number, K: number) { // count occurrences\n var c: number[] = []; // counter array\n var i, sum;\n for (i = 0; i <= K; i++) {\n c[i] = 0; // reset counters\n }\n for (i = 0; i < n; i++) {\n c[r[a[i] + o]]++; // count occurences\n }\n for (i = 0, sum = 0; i <= K; i++) { // exclusive prefix sums\n var t = c[i];\n c[i] = sum;\n sum += t;\n }\n for (i = 0; i < n; i++) {\n b[c[r[a[i] + o]]++] = a[i]; // sort\n }\n}\n\n// find the suffix array SA of s[0..n-1] in {1..K}^n\n// require s[n]=s[n+1]=s[n+2]=0, n>=2\nfunction suffixArray(s: number[], SA: number[], n: number, K: number) {\n\n function arr(size: number) {\n var a: number[] = [];\n for (var i = 0; i < size; i++) {\n a.push(0);\n }\n return a;\n }\n\n var n0 = (n + 2) / 3 | 0, n1 = (n + 1) / 3 | 0, n2 = n / 3 | 0, n02 = n0 + n2;\n var s12 = arr(n02 + 3);\n s12[n02] = s12[n02 + 1] = s12[n02 + 2] = 0;\n var SA12 = arr(n02 + 3);\n SA12[n02] = SA12[n02 + 1] = SA12[n02 + 2] = 0;\n var s0 = arr(n0);\n var SA0 = arr(n0);\n var t: number, p, k;\n\n // generate positions of mod 1 and mod 2 suffixes\n // the \"+(n0-n1)\" adds a dummy mod 1 suffix if n%3 == 1\n for (var i = 0, j = 0; i < n + (n0 - n1); i++) {\n if (i % 3 !== 0) {\n s12[j++] = i;\n }\n }\n\n // lsb radix sort the mod 1 and mod 2 triples\n radixPass(s12, SA12, s, 2, n02, K);\n radixPass(SA12, s12, s, 1, n02, K);\n radixPass(s12, SA12, s, 0, n02, K);\n\n // find lexicographic names of triples\n var name = 0, c0 = -1, c1 = -1, c2 = -1;\n for (i = 0; i < n02; i++) {\n if (s[SA12[i]] !== c0 || s[SA12[i] + 1] !== c1 || s[SA12[i] + 2] !== c2) {\n name++;\n c0 = s[SA12[i]];\n c1 = s[SA12[i] + 1];\n c2 = s[SA12[i] + 2];\n }\n if (SA12[i] % 3 === 1) {\n s12[SA12[i] / 3 | 0] = name; // left half\n } else {\n s12[(SA12[i] / 3 | 0) + n0] = name; // right half\n }\n }\n\n // recurse if names are not yet unique\n if (name < n02) {\n suffixArray(s12, SA12, n02, name);\n // store unique names in s12 using the suffix array \n for (i = 0; i < n02; i++) {\n s12[SA12[i]] = i + 1;\n }\n } else { // generate the suffix array of s12 directly\n for (i = 0; i < n02; i++) {\n SA12[s12[i] - 1] = i;\n }\n }\n\n // stably sort the mod 0 suffixes from SA12 by their first character\n for (i = 0, j = 0; i < n02; i++) {\n if (SA12[i] < n0) {\n s0[j++] = 3 * SA12[i];\n }\n }\n radixPass(s0, SA0, s, 0, n0, K);\n\n function GetI() {\n return (SA12[t] < n0 ? SA12[t] * 3 + 1 : (SA12[t] - n0) * 3 + 2);\n }\n\n // merge sorted SA0 suffixes and sorted SA12 suffixes\n for (p = 0, t = n0 - n1, k = 0; k < n; k++) {\n i = GetI(); // pos of current offset 12 suffix\n j = SA0[p]; // pos of current offset 0 suffix\n if (SA12[t] < n0 ?\n leq2(s[i], s12[SA12[t] + n0], s[j], s12[j / 3 | 0]) :\n leq3(s[i], s[i + 1], s12[SA12[t] - n0 + 1], s[j], s[j + 1], s12[(j / 3 | 0) + n0])) { // suffix from SA12 is smaller\n SA[k] = i;\n t++;\n if (t === n02) { // done --- only SA0 suffixes left\n for (k++; p < n0; p++, k++) {\n SA[k] = SA0[p];\n }\n }\n } else {\n SA[k] = j;\n p++;\n if (p === n0) { // done --- only SA12 suffixes left\n for (k++; t < n02; t++, k++) {\n SA[k] = GetI();\n }\n }\n }\n }\n}\n\n// find the start or end of each bucket\nfunction getBuckets(s: number[], bkt: number[], n: number, k: number, end: boolean, os: number) {\n var sum = 0, i;\n\n // clear all buckets\n for (i = 0; i <= k; i++) {\n bkt[i] = 0;\n }\n\n // compute the size of each bucket\n for (i = 0; i < n; i++) {\n bkt[s[i + os]] += 1;\n }\n\n for (i = 0; i <= k; i++) {\n sum += bkt[i];\n if (end) {\n bkt[i] = sum;\n } else {\n bkt[i] = sum - bkt[i];\n }\n }\n}\n\n// compute SAl\nfunction induceSAl(t: number[], SA: number[], s: number[], bkt: number[], n: number, K: number, end: boolean, os: number, oa: number) {\n var i, j;\n\n // find starts of buckets\n getBuckets(s, bkt, n, K, end, os);\n for (i = 0; i < n; i++) {\n j = SA[i + oa] - 1;\n if (j >= 0 && !t[j]) {\n SA[bkt[s[j + os]] + oa] = j;\n bkt[s[j + os]] += 1;\n }\n }\n}\n\n// compute SAs\nfunction induceSAs(t: number[], SA: number[], s: number[], bkt: number[], n: number, K: number, end: boolean, os: number, oa: number) {\n var i, j;\n\n // find ends of buckets\n getBuckets(s, bkt, n, K, end, os);\n for (i = n - 1; i >= 0; i -= 1) {\n j = SA[i + oa] - 1;\n if (j >= 0 && t[j]) {\n bkt[s[j + os]] -= 1;\n SA[bkt[s[j + os]] + oa] = j;\n }\n }\n}\n\n// find the suffix array SA of s[0..n-1] in {1..K}^n\n// require s[n-1]=0 (the sentinel!), n>=2\n// use a working space (excluding s and SA) of\n// at most 2.25n+O(1) for a constant alphabet\nfunction SA_IS(s: number[], SA: number[], n: number, K: number, os: number, oa: number) {\n var i, t: number[], bkt: number[] | null, n1, name, prev, pos, diff, d, j, s1, SA1, s1off;\n\n //print(\"SA_IS {0}..{1}\".format(os, os+n))\n function isLms(i: number) {\n return i > 0 && t[i] && !t[i - 1];\n }\n\n //print(\"Stage 1\");\n t = [];\n t[n - 2] = 0;\n t[n - 1] = 1;\n\n for (i = n - 3; i >= 0; i -= 1) {\n if (s[i + os] < s[i + 1 + os] || s[i + os] === s[i + 1 + os] && t[i + 1] === 1) {\n t[i] = 1;\n } else {\n t[i] = 0;\n }\n }\n\n //print(\"Stage 2\");\n bkt = [];\n getBuckets(s, bkt, n, K, true, os);\n\n for (i = 0; i < n; i++) {\n SA[i + oa] = -1;\n }\n\n for (i = 1; i < n; i++) {\n if (isLms(i)) {\n bkt[s[i + os]] -= 1;\n SA[bkt[s[i + os]] + oa] = i;\n }\n }\n\n //print(\"Stage 3\");\n induceSAl(t, SA, s, bkt, n, K, false, os, oa);\n induceSAs(t, SA, s, bkt, n, K, true, os, oa);\n\n bkt = null;\n\n n1 = 0;\n for (i = 0; i < n; i++) {\n if (isLms(SA[i + oa])) {\n SA[n1 + oa] = SA[i + oa];\n n1 += 1;\n }\n }\n\n for (i = n1; i < n; i++) {\n SA[i + oa] = -1;\n }\n\n //print(\"Stage 4\");\n name = 0;\n prev = -1;\n for (i = 0; i < n1; i++) {\n pos = SA[i + oa];\n diff = false;\n for (d = 0; d < n; d++) {\n if (prev === -1 || s[pos + d + os] !== s[prev + d + os] ||\n t[pos + d] !== t[prev + d]) {\n diff = true;\n break;\n } else if (d > 0 && (isLms(pos + d) || isLms(prev + d))) {\n break;\n }\n }\n\n if (diff) {\n name += 1;\n prev = pos;\n }\n pos = (pos / 2) | 0;\n SA[n1 + pos + oa] = name - 1;\n }\n\n j = n - 1;\n for (i = n - 1; i >= n1; i -= 1) {\n if (SA[i + oa] >= 0) {\n SA[j + oa] = SA[i + oa];\n j -= 1;\n }\n }\n\n s1 = SA1 = SA;\n s1off = n - n1;\n if (name < n1) {\n SA_IS(s1, SA1, n1, name - 1, s1off + oa, oa);\n } else {\n for (i = 0; i < n1; i++) {\n SA1[s1[i + s1off + oa] + oa] = i;\n }\n }\n\n bkt = [];\n\n //print(\"Stage 5\");\n getBuckets(s, bkt, n, K, true, os);\n\n j = 0;\n for (i = 1; i < n; i++) {\n if (isLms(i)) {\n s1[s1off + oa + j] = i;\n j += 1;\n }\n }\n\n for (i = 0; i < n1; i++) {\n SA1[i + oa] = s1[oa + s1off + SA1[oa + i]];\n }\n\n for (i = n1; i < n; i++) {\n SA[i + oa] = -1;\n }\n\n for (i = n1 - 1; i >= 0; i -= 1) {\n j = SA[oa + i];\n SA[oa + i] = -1;\n bkt[s[os + j]] -= 1;\n SA[bkt[s[os + j]] + oa] = j;\n }\n\n //print(\"Stage 6\");\n induceSAl(t, SA, s, bkt, n, K, false, os, oa);\n induceSAs(t, SA, s, bkt, n, K, true, os, oa);\n}\n\n/** @param {boolean=} useDC3 \n*/\nfunction FindSuffixArray(str: string, useDC3 = true) {\n // find out which items are used in the string and assign each a number.\n var mapping: { [key: string]: number } = {};\n var sorted: string[] = [];\n var i, key;\n var item2Num: { [key: string]: number } = {};\n for (i = 0; i < str.length; i++) {\n if (!(str[i] in mapping)) {\n mapping[str[i]] = 1;\n }\n }\n\n // turn it into a sorted array\n for (key in mapping) {\n if (mapping.hasOwnProperty(key)) {\n sorted.push(key);\n }\n }\n sorted.sort();\n mapping = {};\n for (i = 0; i < sorted.length; i++) {\n item2Num[sorted[i]] = i + 1;\n }\n\n // create a numeric version of the string.\n var numeric: number[] = [];\n for (i = 0; i < str.length; i++) {\n numeric.push(item2Num[str[i]]);\n }\n\n var SA: number[] = [];\n if (useDC3 === false) {\n SA_IS(numeric, SA, numeric.length, sorted.length, 0, 0);\n\n } else {\n // add trailing zeroes as required by algorithm\n numeric.push(0);\n numeric.push(0);\n numeric.push(0);\n\n suffixArray(numeric, SA, str.length, sorted.length);\n }\n\n return SA;\n}\n\nfunction TestSuffixArray() {\n var RandomString = function (length: number) {\n var digits =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890\\r\\n\";\n var usernameChars: string[] = [];\n for (var i = 0; i < length; i++) {\n usernameChars.push(digits[Math.floor(Math.random() * digits.length)]);\n }\n\n return usernameChars.join(\"\");\n };\n\n var sequence = RandomString(100000);\n var N = 100, start, i;\n\n start = new Date().getTime();\n for (i = 0; i < N; i++) {\n FindSuffixArray(sequence, false);\n }\n console.log(\"SA_IS took %s ms\", new Date().getTime() - start);\n\n start = new Date().getTime();\n for (i = 0; i < N; i++) {\n FindSuffixArray(sequence, true);\n }\n console.log(\"DC3 took %s ms\", new Date().getTime() - start);\n}\n\nexport { FindSuffixArray };","//#include \n//#include \n\nimport { log } from \"./log\"\nimport { FindSuffixArray } from \"./suffix\"\n\nvar DiffLog = log.create(\"DIFF\");\n\ninterface Block {\n i: number;\n j: number;\n k: number;\n}\n\ninterface DiffCmd {\n skip: number;\n ins: number;\n del: number;\n at: number;\n conflict?: boolean;\n}\n\n/*\n Convert from blocks of form i, j, k\n i - position in string 1\n j - position in string 2\n k - number of characters the same\n\n into blocks of the form:\n skip: number of characters to skip\n del: number of characters to delete\n ins: nummber of characters to insert\n*/\nfunction getOpcodes(blocks: Block[], minSame: number) {\n var tag, block;\n var del, skip = 0,\n ins;\n var i = 0,\n j = 0,\n k;\n var answer: DiffCmd[] = [];\n for (k = 0; k < blocks.length; k++) {\n block = blocks[k];\n if (block.k > 0 && block.k < minSame) {\n continue;\n }\n ins = del = 0;\n if (i < block.i && j < block.j) {\n // replace\n del = block.i - i;\n ins = block.j - j;\n } else if (i < block.i) {\n del = block.i - i;\n } else if (j < block.j) {\n ins = block.j - j;\n }\n if (skip || del || ins) {\n answer.push({\n skip: skip,\n del: del,\n ins: ins,\n at: 0\n });\n }\n i = block.i + block.k;\n j = block.j + block.k;\n skip = block.k;\n }\n\n return answer;\n}\n\n/** Offset the i, k values in the blocks by the given amount. */\nfunction OffsetMatches(blocks: Block[], offset1: number, offset2: number) {\n for (var i = 0; i < blocks.length; i++) {\n blocks[i].i += offset1;\n blocks[i].j += offset2;\n }\n return blocks;\n}\n\nfunction MergeMatches(matches: Block[], Op: (m1: Block, m2: Block) => boolean) {\n if (matches.length === 0) {\n return;\n }\n\n // keep pointer i and j, j > 1\n var i = 0, j = 1;\n while (j < matches.length) {\n // If matches_i and matches_j overlap,\n if (Op(matches[i], matches[j])) {\n // update i to encompass j\n\n // otherwise, if j > i + 1, then\n } else {\n if (j > i + 1) {\n // copy matches_j to be just after i\n matches[i + 1] = matches[j];\n }\n i += 1;\n }\n\n j += 1;\n }\n\n matches.length = i + 1;\n}\n\nfunction OverlappingMatch(m1: Block, m2: Block) {\n if (m1.i + m1.k > m2.i ||\n m1.j + m1.k > m2.j) {\n // conflict. Keep the longer match.\n if (m2.k > m1.k) {\n m1.i = m2.i;\n m1.j = m2.j;\n m1.k = m2.k;\n }\n\n return true;\n }\n return false;\n}\n\n// The Myers algorithm works quickly when the strings are mostly the same, \n// while the python algorithm works quickly when the strings are substantially \n// different. Here is the maximum difference tolerated by the Myers Diff \n// algorithm before timing out.\nvar MYERS_DIFF_LIMIT = 512;\n\nfunction MyersLCS(t1: string | string[], t2: string | string[]) {\n /** @constructor */\n class Snake {\n constructor(public parent: Snake,\n public i: number,\n public j: number,\n public k: number\n ) { }\n }\n\n var N = t1.length;\n var M = t2.length;\n var MAX = M + N;\n var off = MAX + 1;\n var V: number[] = [];\n var snakes: Snake[] = [];\n var x: number, y: number, snake: Snake | null = null;\n\n for (var i = 0; i <= 2 * MAX; i++) {\n V.push(0);\n }\n\n outer:\n for (var D = 0; D <= MAX; D++) {\n for (var k = -D; k <= D; k += 2) {\n\n if (k === -D || (k !== D && V[k - 1 + off] < V[k + 1 + off])) {\n x = V[k + 1 + off];\n y = x - k;\n snake = new Snake(snakes[k + 1 + off], x, y, 0);\n } else {\n x = V[k - 1 + off] + 1;\n y = x - k;\n snake = new Snake(snakes[k - 1 + off], x, y, 0);\n }\n\n while (x < N && y < M && t1[x] === t2[y]) {\n snake.k += 1;\n x += 1;\n y += 1;\n }\n\n V[k + off] = x;\n snakes[k + off] = snake;\n\n if (x >= N && y >= M) {\n break outer;\n }\n }\n\n if (D > MYERS_DIFF_LIMIT) {\n DiffLog(\"Myers algorithm timed out.\");\n return null;\n }\n }\n\n var blocks: Snake[] = [];\n while (snake) {\n if (snake.k) {\n blocks.push(snake);\n }\n snake = snake.parent;\n }\n blocks.reverse();\n return blocks;\n}\n\n\ninterface IJK {\n i: number;\n j: number;\n k: number;\n}\n\nfunction PythonLCS(a: string | string[], b: string | string[]) {\n // minSame gives the minimum number of consecutive characters in each \n // matching block.\n\n // For each character in a, index from the character to the list of\n // positions in b.\n var b2j: any;\n\n function createIndex() {\n b2j = {};\n var ch;\n for (var i = 0; i < b.length; i++) {\n ch = b[i];\n if (ch in b2j) {\n b2j[ch].push(i);\n } else {\n b2j[ch] = [i];\n }\n }\n }\n\n function findLongestMatch(alo: number, ahi: number, blo: number, bhi: number): IJK {\n var j2len: { [key: number]: number } = {},\n newj2len: { [key: number]: number };\n var nothing: number[] = [];\n var i, j, k, z;\n var besti = alo;\n var bestj = blo;\n var bestsize = 0;\n for (i = alo; i < ahi; i++) {\n var index = b2j[a[i]] || nothing;\n newj2len = {};\n for (z = 0; z < index.length; z++) {\n j = index[z];\n if (j < blo) {\n continue;\n }\n if (j >= bhi) {\n break;\n }\n k = newj2len[j] = (j2len[j - 1] || 0) + 1;\n if (k > bestsize) {\n besti = i - k + 1;\n bestj = j - k + 1;\n bestsize = k;\n }\n }\n j2len = newj2len;\n }\n\n while (besti > alo && bestj > blo && a[besti - 1] === b[bestj - 1]) {\n besti -= 1;\n bestj -= 1;\n bestsize += 1;\n }\n\n while (besti + bestsize < ahi && bestj + bestsize < bhi &&\n a[besti + bestsize] === b[bestj + bestsize]) {\n bestsize += 1;\n }\n\n return {\n i: besti,\n j: bestj,\n k: bestsize\n };\n }\n\n function getMatchingBlocks() {\n var la = a.length;\n var lb = b.length;\n var queue = [{\n alo: 0,\n ahi: la,\n blo: 0,\n bhi: lb\n }];\n var matchingBlocks: IJK[] = [];\n var q, i, match: IJK, m2;\n while (queue.length) {\n q = queue.pop()!;\n match = findLongestMatch(q.alo, q.ahi, q.blo, q.bhi);\n if (match.k) { // if k is 0, there was no matching block\n matchingBlocks.push(match);\n if (q.alo < match.i && q.blo < match.j) {\n queue.push({\n alo: q.alo,\n ahi: match.i,\n blo: q.blo,\n bhi: match.j\n });\n }\n if (match.i + match.k < q.ahi && match.j + match.k < q.bhi) {\n queue.push({\n alo: match.i + match.k,\n ahi: q.ahi,\n blo: match.j + match.k,\n bhi: q.bhi\n });\n }\n }\n }\n\n matchingBlocks.sort(function (a, b) {\n return a.i - b.i;\n });\n\n var m1: IJK = {\n i: 0,\n j: 0,\n k: 0\n };\n var non_adjacent: IJK[] = [];\n for (i = 0; i < matchingBlocks.length; i++) {\n m2 = matchingBlocks[i];\n if (m1.i + m1.k === m2.i && m1.j + m1.k === m2.j) {\n m1.k += m2.k;\n } else {\n if (m1.k) {\n non_adjacent.push(m1);\n }\n m1 = m2;\n }\n }\n if (m1.k) {\n non_adjacent.push(m1);\n }\n non_adjacent.push({\n i: la,\n j: lb,\n k: 0\n });\n return non_adjacent;\n }\n\n createIndex();\n return getMatchingBlocks();\n}\n\nclass SuffixArray {\n length1: number;\n length2: number;\n seq: string;\n sa: number[];\n lcp: number[];\n\n constructor(A: string, B: string) {\n this.length1 = A.length + 1;\n this.length2 = B.length + 1;\n this.seq = A + String.fromCharCode(1) + B + String.fromCharCode(0);\n\n function kasai(s: string, sa: number[]) {\n var n = sa.length, k = 0, j;\n var lcp: number[] = [];\n var rank: number[] = [];\n\n for (var i = 0; i < n; i++) {\n rank[sa[i]] = i;\n }\n\n i = 0;\n for (; ;) {\n if (i >= n) {\n break;\n }\n\n if (rank[i] === n - 1) {\n k = 0;\n i += 1;\n continue;\n }\n\n j = sa[rank[i] + 1];\n\n while (i + k < n && j + k < n && s[i + k] === s[j + k]) {\n k += 1;\n }\n\n lcp[rank[i]] = k;\n\n i += 1;\n if (k) {\n k -= 1;\n }\n }\n\n return lcp;\n }\n\n this.sa = FindSuffixArray(this.seq);\n this.lcp = kasai(this.seq, this.sa);\n }\n\n matches(minimumSize: number) {\n // returns all maximal matches between texts.\n var matches: IJK[] = [];\n var self = this;\n\n // forward pass\n var lcp = 0;\n var aIndex = 0;\n for (var i = 0; i < self.sa.length; i++) {\n if (self.sa[i] < self.length1) {\n // string in A\n lcp = self.lcp[i];\n aIndex = self.sa[i];\n } else {\n // string in B.\n matches[self.sa[i] - self.length1] = {\n i: aIndex,\n j: self.sa[i] - self.length1,\n k: lcp\n };\n lcp = Math.min(lcp, self.lcp[i]);\n }\n }\n\n // reverse pass\n lcp = 0;\n aIndex = 0;\n var bIndex;\n for (i = self.sa.length - 1; i >= 0; i -= 1) {\n if (self.sa[i] < self.length1) {\n // string in A\n aIndex = self.sa[i];\n if (i > 0) {\n lcp = self.lcp[i - 1];\n }\n } else {\n // string in B.\n lcp = Math.min(lcp, self.lcp[i]);\n bIndex = self.sa[i] - self.length1;\n var match = matches[bIndex];\n if (lcp > match.k) {\n matches[bIndex].i = aIndex;\n matches[bIndex].k = lcp;\n }\n }\n }\n\n return matches;\n }\n\n mums() {\n var matches: IJK[] = [];\n var i: number;\n var self = this;\n var match: IJK;\n\n // for each position\n for (i = 1; i < self.length1 + self.length2 - 1; i++) {\n // if it's a local maximum of lcp,\n if (self.lcp[i] <= self.lcp[i - 1] || self.lcp[i] <= self.lcp[i + 1]) {\n continue;\n }\n\n // if they are in different strings,\n if ((self.sa[i] < self.length1 && self.sa[i + 1] < self.length1) ||\n (self.sa[i] >= self.length1 && self.sa[i + 1] >= self.length1)) {\n continue;\n }\n\n // if the previous characters are different,\n if (self.seq[self.sa[i] - 1] === self.seq[self.sa[i + 1] - 1]) {\n continue;\n }\n\n match = {\n i: 0, j: 0, k: 0\n };\n\n // found a maximum unique match.\n if (self.sa[i] < self.sa[i + 1]) {\n match.i = self.sa[i];\n match.j = self.sa[i + 1] - self.length1;\n //print(\"%10d %10d %5d |\" % (self.sa[i], self.sa[i+1] - self.length1, self.lcp[i]), end=\"\")\n } else {\n match.i = self.sa[i + 1];\n match.j = self.sa[i] - self.length1;\n //print(\"%10d %10d %5d |\" % (self.sa[i+1], self.sa[i] - self.length1, self.lcp[i]), end=\"\");\n }\n\n match.k = self.lcp[i];\n matches.push(match);\n //print(self.seq[self.sa[i]:self.sa[i]+80])\n }\n\n\n // sort by position in first sequence.\n matches.sort(function (a, b) {\n return a.i - b.i;\n });\n\n // find longest increasing sequence in positions of second sequence.\n var N = matches.length;\n var P: number[] = [];\n var M: number[] = [];\n var L = 0;\n var lo, hi, newL, mid;\n\n for (i = 0; i < N; i++) {\n // Binary search for the largest positive j ≤ L\n // such that X[M[j]] < X[i]\n lo = 1;\n hi = L;\n while (lo <= hi) {\n mid = ((lo + hi + 1) / 2) | 0;\n if (matches[M[mid]].j < matches[i].j) {\n lo = mid + 1;\n } else {\n hi = mid - 1;\n }\n }\n\n // After searching, lo is 1 greater than the\n // length of the longest prefix of X[i]\n newL = lo;\n\n // The predecessor of X[i] is the last index of \n // the subsequence of length newL-1\n P[i] = M[newL - 1];\n M[newL] = i;\n\n if (newL > L) {\n // If we found a subsequence longer than any we've\n // found yet, update L\n L = newL;\n }\n }\n\n // Reconstruct the longest increasing subsequence\n var matches2: IJK[] = [];\n var k = M[L];\n for (i = 0; i < L; i++) {\n matches2.push(matches[k]);\n k = P[k];\n }\n\n matches2.reverse();\n MergeMatches(matches2, OverlappingMatch);\n\n /*\n //DiffLog(\"Final set of matches:\\n\");\n for(i = 0; i < matches2.length; i++) {\n //DiffLog(\" match %s %s %s\\n\", matches2[i].i, matches2[i].j, matches2[i].k);\n\n var s1 = self.seq.substr(matches2[i].i, matches2[i].k);\n var s2 = self.seq.substr(matches2[i].j + self.length1, matches2[i].k);\n if (s1 !== s2) {\n DiffLog(\"MISMATCH!\");\n DiffLog(\" s1=%s\", s1);\n DiffLog(\" s2=%s\", s2);\n }\n }\n */\n\n return matches2;\n }\n};\n\nfunction CalculateLCS(a: string | string[], b: string | string[]): Block[] {\n var result: Block[] | null = null;\n\n if (a.length === 0 || b.length === 0) {\n result = [];\n\n // if sizes are within a certain distance of eachother, use Myers diff. \n // Otherwise, use python diff.\n } else if (Math.abs(a.length - b.length) < MYERS_DIFF_LIMIT) {\n DiffLog(\"Use Myers diff to compare a:%s, b:%s\", a.length, b.length);\n result = MyersLCS(a, b);\n }\n\n if (!result) {\n DiffLog(\"Use Python diff to compare a:%s, b:%s\", a.length, b.length);\n result = PythonLCS(a, b);\n }\n\n return result;\n}\n\nfunction CalculateLCSUsingSuffixArray(S: string, T: string) {\n //DiffLog(\"Align %s / %s\", S, T);\n var output: Block[] = [];\n\n var mums = new SuffixArray(S, T).mums();\n\n var size = mums.length;\n var p1 = 0, p2 = 0, mum, diffs: Block[], j;\n for (var i = 0; i < size; i++) {\n mum = mums[i];\n if (mum.i - p1 > 0 || mum.j - p2 > 0) {\n //DiffLog(\"SA Align %s,%s length %s,%s\\n\", p1, p2, mum.i-p1, mum.j-p2);\n diffs = CalculateLCS(S.substr(p1, mum.i - p1), T.substr(p2, mum.j - p2));\n for (j = 0; j < diffs.length; j++) {\n diffs[j].i += p1;\n diffs[j].j += p2;\n //DiffLog(\" add %s %s %s\", diffs[j].i, diffs[j].j, diffs[j].k);\n output.push(diffs[j]);\n }\n }\n //DiffLog(\" Add %s %s %s\", mum.i, mum.j, mum.k);\n output.push(mum);\n p1 = mum.i + mum.k;\n p2 = mum.j + mum.k;\n }\n\n if (S.length - p1 > 0 || T.length - p2 > 0) {\n //DiffLog(\"SA Align %s,%s length %s,%s\\n\", p1, p2, S.length-p1, T.length-p2);\n diffs = CalculateLCS(S.substr(p1), T.substr(p2));\n for (j = 0; j < diffs.length; j++) {\n diffs[j].i += p1;\n diffs[j].j += p2;\n //DiffLog(\" add %s %s %s\", diffs[j].i, diffs[j].j, diffs[j].k);\n output.push(diffs[j]);\n }\n }\n\n return output;\n}\n\nfunction DiffEncode(a: string | string[], b: string | string[], minSame: number) {\n var lcs;\n // if they are strings, then we can use the align by suffix array.\n if (typeof a === \"string\" && typeof b === \"string\") {\n lcs = CalculateLCSUsingSuffixArray(a, b);\n } else {\n lcs = CalculateLCS(a, b);\n }\n\n // required by getOpCodes\n lcs.push({ i: a.length, j: b.length, k: 0 });\n return getOpcodes(lcs, minSame);\n}\n\ninterface EditOperation {\n type: 'd' | 'i';\n position: number;\n text: string;\n}\n\n/*\n Return the differences between text as an array of\n edit operations. Each has the form:\n\n type: \"d\" for delete or \"i\" for insert\n position: position of the operation\n text: the text to insert or delete.\n*/\nfunction ComputeEditOperations(A: string, B: string, minSame: number) {\n var matches = CalculateLCSUsingSuffixArray(A, B);\n\n var ops: EditOperation[] = [];\n var i = 0, j = 0, k, x, match;\n for (x = 0; x < matches.length; x++) {\n match = matches[x];\n if (match.k > 0 && match.k < minSame) {\n continue;\n }\n\n var ins = 0, del = 0;\n if (i < match.i && j < match.j) {\n // delete and insert\n del = match.i - i;\n ins = match.j - j;\n } else if (i < match.i) {\n del = match.i - i;\n } else if (j < match.j) {\n ins = match.j - j;\n }\n\n if (del) {\n ops.push({\n type: \"d\",\n position: j,\n text: A.substr(i, del)\n });\n }\n\n if (ins) {\n ops.push({\n type: \"i\",\n position: j,\n text: B.substr(j, ins)\n });\n }\n\n i = match.i + match.k;\n j = match.j + match.k;\n }\n\n return ops;\n}\n\nfunction ApplyEditOperations(A: string, ops: EditOperation[]) {\n var i, op, B = \"\", apos = 0, bpos = 0;\n for (i = 0; i < ops.length; i++) {\n op = ops[i];\n if (op.position > bpos) {\n B += A.substr(apos, op.position - bpos);\n apos += op.position - bpos;\n bpos = op.position;\n }\n\n switch (op.type) {\n case \"d\":\n // Some text is deleted.\n apos += op.text.length;\n break;\n\n case \"i\":\n // Some text is inserted.\n B += op.text;\n bpos += op.text.length;\n break;\n\n default:\n break;\n }\n }\n\n return B;\n}\n\nfunction AddPositionToDiffCommands(cmds: DiffCmd[]) {\n var position = 0;\n for (var i = 0; i < cmds.length; i++) {\n var cmd = cmds[i];\n cmd.at = position + cmd.skip;\n position += cmd.skip + cmd.del;\n }\n return cmds;\n}\n\nfunction MergeNWays(Base: string, ...othersIn: string[]): string;\nfunction MergeNWays(Base: string[], ...othersIn: (string[])[]): string[];\nfunction MergeNWays(Base: string | string[], ...othersIn: (string | string[])[]) {\n var cmd, cmd1, cmd2, diffs, i, j, k, l, leastAt, leastI, len, len1, len2, m, merged, n, next, o, optr, others, p, q, r, ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9, row1, row2, rpos, sequence;\n // Array of array of diff commands for each sequence\n diffs = [];\n\n others = [];\n\n for (i = j = 1, ref = arguments.length - 1; j <= ref; i = j += 1) {\n others.push(arguments[i]);\n }\n\n //DiffLog(\"others: %s\", JSON.stringify(others));\n\n // position of the next command for each item of diffs[]\n next = [];\n\n // replacement position in each diff command sequence of diffs[]\n rpos = [];\n for (k = 0, len = others.length; k < len; k++) {\n sequence = others[k];\n next.push(0);\n rpos.push(0);\n diffs.push(AddPositionToDiffCommands(DiffEncode(Base, sequence, 0)));\n }\n\n // for each conflicting diff chunk, mark the later one for discarding.\n for (row1 = 0; row1 < diffs.length; row1++) {\n for (i = 0; i < diffs[row1].length; i++) {\n cmd1 = diffs[row1][i];\n for (row2 = row1 + 1; row2 < diffs.length; row2++) {\n for (j = 0; j < diffs[row2].length; j++) {\n cmd2 = diffs[row2][j];\n //DiffLog(\"Check chunk %s vs %s\", cmd1, cmd2);\n if (cmd2.at > cmd1.at && cmd2.at < cmd1.at + cmd1.del) {\n cmd2.conflict = true;\n } else if (cmd1.at > cmd2.at && cmd1.at < cmd2.at + cmd2.del) {\n cmd2.conflict = true;\n } else if (cmd2.at + cmd2.del > cmd1.at &&\n cmd2.at + cmd2.del < cmd1.at + cmd1.del) {\n cmd2.conflict = true;\n } else if (cmd1.at + cmd1.del > cmd2.at &&\n cmd1.at + cmd1.del < cmd2.at + cmd2.del) {\n cmd2.conflict = true;\n }\n }\n }\n }\n }\n\n // merged output\n merged = [];\n\n // current position in base\n optr = 0;\n\n while (true) {\n leastAt = Number.MAX_VALUE;\n leastI = -1;\n\n // choose the next chunk. Choose the earliest ones. \n for (i = p = 0, ref6 = diffs.length - 1; p <= ref6; i = p += 1) {\n if (next[i] < diffs[i].length && diffs[i][next[i]].at < leastAt) {\n leastAt = diffs[i][next[i]].at;\n leastI = i;\n }\n }\n\n // If we are unable to choose a chunk, we are done.\n if (leastI === -1) {\n break;\n }\n\n cmd = diffs[leastI][next[leastI]];\n\n // If the chunkj was not conflicting, then choose it.\n if (optr <= cmd.at && cmd.conflict !== true) {\n // Add elements that are the same.\n for (i = q = ref7 = optr, ref8 = cmd.at - 1; q <= ref8; i = q += 1) {\n merged.push(Base[i]);\n }\n\n // execute the command\n for (i = r = 0, ref9 = cmd.ins - 1; r <= ref9; i = r += 1) {\n merged.push(others[leastI][rpos[leastI] + i + cmd.skip]);\n }\n optr = cmd.at + cmd.del;\n }\n\n // update indicies\n rpos[leastI] += cmd.skip + cmd.ins;\n next[leastI] += 1;\n }\n\n while (optr < Base.length) {\n merged.push(Base[optr]);\n optr += 1;\n }\n\n // if the input was a string, then the output should be a string too.\n if (typeof Base === 'string') {\n merged = merged.join('');\n }\n\n return merged;\n}\n\nlet Test_DiffEncode = function () {\n var allpass, cmd, cmds, j, k, len, len1, str, test, tests;\n tests = [\n // insert in middle\n {\n first: \"ABCDEFG\",\n second: \"AB123CDEFG\",\n cmds: \"s2r0w3;s5r0w0\"\n }, {\n // insert at beginning\n first: \"ABCDEFG\",\n second: \"123ABCDEFG\",\n cmds: \"s0r0w3;s7r0w0\"\n }, {\n // insert at end\n first: \"ABCDEFG\",\n second: \"ABCDEFG123\",\n cmds: \"s7r0w3\"\n }, {\n // insert at beginning and end\n first: \"ABCDEFG\",\n second: \"123ABCDEFG123\",\n cmds: \"s0r0w3;s7r0w3\"\n }, {\n // delete at beginning, insert at end\n first: \"ABCDEFG\",\n second: \"DEFG123\",\n cmds: \"s0r3w0;s4r0w3\"\n }\n ];\n\n allpass = true;\n for (j = 0, len = tests.length; j < len; j++) {\n test = tests[j];\n cmds = DiffEncode(test.first, test.second, 0);\n str = [];\n for (k = 0, len1 = cmds.length; k < len1; k++) {\n cmd = cmds[k];\n str.push(\"s\" + cmd.skip + \"r\" + cmd.del + \"w\" + cmd.ins);\n }\n str = str.join(\";\");\n if (test.cmds !== str) {\n allpass = false;\n console.log(\"DiffEncode(\" + test.first + \", \" + test.second + \" failed\");\n console.log(\" Expected: \" + test.cmds);\n console.log(\" But Got: \" + str);\n }\n }\n\n if (allpass) {\n DiffLog(\"DiffEncode tests passed.\");\n }\n\n return allpass;\n};\n\nlet Test_MergeNWays = function () {\n var allpass, j, len, result, test, tests;\n tests = [{ // A inserts in middle\n base: \"ABCDE\",\n a: \"A123BCDE\",\n b: \"ABCDE\",\n r: \"A123BCDE\"\n }, {\n // B inserts in middle\n base: \"ABCDE\",\n a: \"ABCDE\",\n b: \"A123BCDE\",\n r: \"A123BCDE\"\n }, {\n // A, B inserts do same change\n base: \"ABCDE\",\n a: \"A123BCDE\",\n b: \"A123BCDE\",\n r: \"A123123BCDE\"\n }, {\n // A inserts at beginning, B, inserts at end\n base: \"ABCDE\",\n a: \"123ABCDE\",\n b: \"ABCDE123\",\n r: \"123ABCDE123\"\n }, {\n // A modifies something, B also modifies is.\n base: \"ABCDE\",\n a: \"A12DE\",\n b: \"A34DE\",\n r: \"A12DE\"\n }];\n\n allpass = true;\n\n for (j = 0, len = tests.length; j < len; j++) {\n test = tests[j];\n result = MergeNWays(test.base, test.a, test.b);\n if (test.r !== result) {\n DiffLog(\"MergeNWays(\" + test.base + \", \" + test.a + \", \" + test.b + \" failed\");\n DiffLog(\" Expected: \" + test.r);\n DiffLog(\" But Got: \" + result);\n allpass = false;\n }\n }\n\n if (allpass) {\n DiffLog(\"MergeNWays tests passed.\");\n }\n\n return allpass;\n};\n\n\nexport { DiffEncode };","import { Document as OTDocument, IOp, OpList, CID, CidType } from \"./OperationalTransform\";\nimport { DiffEncode } from \"./Merge\";\nimport { log } from \"./log\";\n\nexport class SelectionRange {\n constructor(public start: number, public length: number) { }\n\n public toString() {\n return `(start=${this.start}, length=${this.length})`;\n }\n\n public equals(o: SelectionRange): boolean {\n return this.start === o.start && this.length === o.length;\n }\n\n public toRowColumn(text: string) {\n // split into rows\n let lines = text.split(\"\\n\");\n let at = 0;\n let i = 0;\n let ret = {\n start: {\n row: 0,\n column: 0\n },\n end: {\n row: 0,\n column: 0\n }\n };\n\n for (; i < lines.length; i++) {\n let line = lines[i];\n let next = at + line.length + 1;\n if (next >= this.start) {\n ret.start.row = i;\n ret.start.column = this.start - at;\n break;\n }\n at = next;\n }\n\n for (; i < lines.length; i++) {\n let line = lines[i];\n let next = at + line.length + 1;\n if (next >= this.start + this.length) {\n ret.start.row = i;\n ret.start.column = this.start + this.length - at;\n break;\n }\n at = next;\n }\n\n return ret;\n }\n}\n\nconst enum Overlap {\n // [x1....x2]\n // [y1....y2]\n // d/d: set position to x1, length to y2-x2\n // d/i: nop\n // i/d: shift second\n // i/i: shift second if cid is <\n Equal,\n\n // [x1....x2] [y1...y2]\n // */*: shift\n ForwardDetached,\n\n // [x1....x2]\n // [y1....y2]\n // d/d: set position to x1, length to y2-x2\n // */*: shift\n ForwardAttached,\n\n // [x1....x2]\n // [y1.....y2]\n // d/d: set position to x1, length to y2-x2\n // d/i: set position to x1\n // i/*: shift\n ForwardPartialOverlap,\n\n // [x1.....x2]\n // [y1.y2]\n // d/d: set position to x1, length to y2 - x2\n // d/i: set position to x1\n // i/*: shift\n ForwardAligned,\n\n // [x1........x2]\n // [y1...y2]\n // d/d: set position to x1, length to max(0, y2-x2)\n // d/i: set position to x1\n // i/*: shift\n ForwardOverlap,\n\n // [y1.....y2] [x1....y2]\n // */*: nop\n ReverseDetached,\n\n // [x1...x2]\n // [y1.....y2]\n // */*: nop\n ReverseAttached,\n\n // [x1....x2]\n // [y1....y2]\n // i/d: increase length by x2-x1\n ReversePartialOverlap,\n\n // [x1....x2]\n // [y1........y2]\n // i/d: increase length by x2-x1\n ReverseAligned,\n\n // [x1...x2]\n // [y1..........y2]\n // i/d: increase length by x2-x1\n ReverseOverlap,\n}\n\nclass TextOperation implements IOp {\n constructor(\n public type: 'i' | 'd',\n public position: number,\n public length: number,\n public data: string,\n ) { }\n\n public clone() {\n return new TextOperation(this.type, this.position, this.length, this.data);\n }\n\n public inverse() {\n if (this.type === 'i') {\n return new TextOperation('d', this.position, this.length, this.data);\n } else {\n if (this.data.length !== this.length) {\n // We need the data filled in to invert a delete.\n throw new Error('Operation should have been done first.');\n } else {\n return new TextOperation('i', this.position, this.length, this.data);\n }\n }\n }\n\n public toString() {\n return `${this.type};${this.position};${this.length}`;\n }\n}\n\ninterface TextCommand {\n cmd: string;\n position: number;\n length: number;\n info: { [key: string]: string };\n str: string;\n next: number;\n}\n\nexport class TextDocument extends OTDocument {\n private value = '';\n\n public static MINIMUM_DIFFERENCE = 7;\n private static MAGIC_TAG = 'OTsKXlp87Lyw';\n\n constructor() {\n super(true, CidType.Numbered);\n }\n\n undo(selection?: SelectionRange) {\n if (selection) {\n this.log('selection was %s:%s', selection.start, selection.length);\n }\n console.log(this.save());\n\n super.undo();\n }\n\n redo(selection?: SelectionRange) {\n if (selection) {\n this.log('selection was %s:%s', selection.start, selection.length);\n }\n\n super.redo();\n }\n\n\n public addRemoteTextChanges(data: string, selection?: SelectionRange) {\n let cursor: IOp[] | undefined;\n if (selection) {\n this.log('selection was %s:%s', selection.start, selection.length);\n cursor = [new TextOperation('d', selection.start, selection.length, \"\")];\n }\n const result = super.addRemoteChanges(data, cursor);\n if (cursor && selection) {\n let cursorOp = cursor[0] as TextOperation;\n selection.start = cursorOp.position;\n selection.length = cursorOp.length;\n this.log('selection now %s:%s', selection.start, selection.length);\n }\n return result;\n }\n\n public addRevision(text: string) {\n const base = this.getHead();\n if (text === base) {\n return false;\n }\n const commands = DiffEncode(base, text, TextDocument.MINIMUM_DIFFERENCE);\n let pos1 = 0, pos2 = 0;\n const revision = new OpList(this.nextCid(), this.getLastCid(), this.now());\n this.log('Create operation with CID %s', revision.cid);\n for (let j = 0; j < commands.length; j++) {\n const command = commands[j];\n\n if (command.skip) {\n pos1 += command.skip;\n pos2 += command.skip;\n }\n\n if (command.del) {\n revision.ops.push(new TextOperation('d', pos1, command.del, ''));\n }\n\n if (command.ins) {\n revision.ops.push(new TextOperation('i', pos1, command.ins, text.substr(pos2, command.ins)));\n pos1 += command.ins;\n pos2 += command.ins;\n }\n }\n\n if (revision.ops.length > 0) {\n this.addLocalOps(revision);\n }\n\n return true;\n }\n\n /** Execute the given operation */\n public execute(op: TextOperation) {\n this.log('Apply op %s', op);\n this.value = this.apply(op, this.value);\n }\n\n public apply(op: TextOperation, text: string) {\n if (op.type === 'i') {\n text = text.substr(0, op.position) +\n op.data + text.substr(op.position);\n } else if (op.type == 'd') {\n op.data = text.substr(op.position, op.length);\n text = text.substr(0, op.position) +\n text.substr(op.position + op.length);\n }\n\n return text;\n }\n\n public BASE = 10;\n public encode(input: OpList[]) {\n let out = '';\n if (input.length) {\n out += `${input[0].parentCid};`;\n }\n for (const revision of input) {\n out += 'n' + revision.ts.toString(36) + ';';\n for (const change of revision.ops) {\n const op = change as TextOperation;\n if (op.type === 'i') {\n out += 'i' + op.position.toString(this.BASE) + ';' +\n op.length.toString(this.BASE) +\n ';' + op.data;\n } else if (op.type === 'd') {\n out += 'd' + op.position.toString(this.BASE) + ';' +\n op.length.toString(this.BASE) + ';';\n }\n }\n }\n\n return out;\n }\n\n public readCommand(input: string, pos: number) {\n const enum State {\n start,\n timestamp,\n key,\n value,\n value_esc,\n position,\n length,\n end,\n }\n\n const cmd: TextCommand = {\n cmd: 'N',\n position: 0,\n length: 0,\n str: '',\n next: 0,\n info: {},\n };\n\n let state = State.start;\n const keys: { [key: string]: string } = {};\n let key = '';\n let value = '';\n\n //this.log(\"readCommand: %s\", input.substr(pos, 10));\n\n for (; state !== State.end; pos += 1) {\n if (pos >= input.length) {\n return null;\n }\n const ch = input.charAt(pos);\n //this.log(\"char %s state %s\", ch, state);\n switch (state) {\n case State.start:\n cmd.cmd = ch;\n switch (ch) {\n case 'N':\n state = State.key;\n break;\n case 'n':\n state = State.timestamp;\n break;\n case 'I':\n case 'D':\n case 'S':\n state = State.length;\n break;\n case 'i':\n case 'd':\n state = State.position;\n break;\n default:\n this.log('Bad command code: \\'%s\\'', ch);\n return null;\n }\n break;\n\n case State.timestamp:\n if (ch >= 'a' && ch <= 'z' ||\n ch >= '0' && ch <= '9') {\n cmd.str += ch;\n } else if (ch === ';') {\n state = State.end;\n } else {\n this.log('Invalid character in timestamp: \\'%s\\'', ch);\n return null;\n }\n break;\n\n case State.key:\n if (ch >= 'a' && ch <= 'z') {\n key += ch;\n cmd.str += ch;\n } else if (ch === '=') {\n state = State.value;\n value = '';\n cmd.str += ch;\n } else if (ch === ';') {\n state = State.end;\n cmd.str += ch;\n } else {\n this.log('Invalid character in keyname: \\'%s\\'', ch);\n return null;\n }\n break;\n\n case State.value:\n if (ch === '\\\\') {\n state = State.value_esc;\n } else if (ch === ',') {\n cmd.info[key] = value;\n key = '';\n state = State.key;\n } else if (ch === ';') {\n cmd.info[key] = value;\n state = State.end;\n } else {\n value += ch;\n }\n break;\n\n case State.value_esc:\n value += ch;\n state = State.value;\n break;\n\n case State.position:\n const code = ch.charCodeAt(0);\n if (code >= 48 && code <= 57) {\n cmd.position = cmd.position * 10 + code - 48;\n } else if (ch === ';') {\n state = State.length;\n } else {\n this.log('Invalid character in position: \\'%s\\'', ch);\n return null;\n }\n break;\n\n case State.length: {\n const code = ch.charCodeAt(0);\n if (code >= 48 && code <= 57) {\n cmd.length = cmd.length * 10 + code - 48;\n } else if (ch === ';') {\n state = State.end;\n } else {\n this.log('Invalid character in length: \\'%s\\'', ch);\n return null;\n }\n break;\n }\n }\n }\n\n cmd.next = pos;\n if (cmd.cmd === 'I' || cmd.cmd === 'i') {\n if (cmd.next + cmd.length > input.length) {\n this.log('Insert command length %s exceeds length of string %s',\n cmd.position + cmd.length, input.length);\n return null;\n }\n cmd.str = input.substr(pos, cmd.length);\n cmd.next += cmd.length;\n }\n //this.log(\"parsed %s;%s;%s;%s\", cmd.cmd, cmd.position, cmd.length, cmd.str);\n return cmd;\n\n }\n\n public decode(input: string): OpList[] | null {\n\n const cmds: OpList[] = [];\n let revision: OpList | null = null;\n\n let pos = 0;\n // format begins with a number, the parentCid, followed by ;\n let prevCid = 0;\n while (pos < input.length) {\n const ch = input.charAt(pos);\n const code = input.charCodeAt(pos);\n if (ch === ';') {\n pos++;\n break;\n } else if (code >= 48 && code <= 57) {\n prevCid = prevCid * 10 + code - 48;\n pos++;\n } else {\n this.log('Error decoding parent CID');\n return null;\n }\n }\n\n let nextCid = prevCid + 1;\n\n let at = 0;\n while (pos < input.length) {\n const cmd = this.readCommand(input, pos);\n if (cmd === null) {\n this.log('Error decoding');\n return null;\n }\n\n switch (cmd.cmd) {\n case 'N': {\n const date = Math.round(parseInt(cmd.info.date, 10) / 1000 || 0);\n revision = new OpList((nextCid++).toString(),\n (prevCid++).toString(),\n date,\n []);\n cmds.push(revision);\n at = 0;\n break;\n }\n case 'n':\n const date = parseInt(cmd.str, 36) || 0;\n revision = new OpList((nextCid++).toString(),\n (prevCid++).toString(),\n date,\n []);\n cmds.push(revision);\n at = 0;\n break;\n case 'I':\n if (!revision) {\n this.log('Missing n');\n return null;\n }\n revision.ops.push(new TextOperation('i', at, cmd.length, cmd.str));\n at += cmd.length;\n break;\n\n case 'i':\n if (!revision) {\n this.log('Missing n');\n return null;\n }\n revision.ops.push(new TextOperation('i', cmd.position, cmd.length, cmd.str));\n break;\n\n case 'S':\n at += cmd.length;\n break;\n\n case 'D':\n if (!revision) {\n this.log('Missing n');\n return null;\n }\n revision.ops.push(new TextOperation('d', at, cmd.length, cmd.str));\n break;\n case 'd':\n if (!revision) {\n this.log('Missing n');\n return null;\n }\n revision.ops.push(new TextOperation('d', cmd.position, cmd.length, cmd.str));\n break;\n default:\n this.log('Bad command');\n return null;\n }\n\n pos = cmd.next;\n }\n\n //this.log(\"Current %s\", JSON.stringify(this.all, null, 2));\n //this.log(\"Decoded %s\", JSON.stringify(cmds, null, 2));\n\n return cmds;\n }\n\n\n public transformOp(op1: TextOperation, op2: TextOperation, cid1: CID, cid2: CID) {\n //this.log(\"transform %s/,%s\", cid1, cid2);\n\n const x1 = op1.position, x2 = op1.position + op1.length;\n const y1 = op2.position, y2 = op2.position + op2.length;\n const debug = false;\n if (debug) {\n this.log(` xformop ${op1.type}/${op2.type}`);\n this.log(\"op1: %s\", JSON.stringify(op1, null, 2));\n this.log(\"op2 before: %s\", JSON.stringify(op2, null, 2));\n }\n let newPosition = op2.position;\n let newLength = op2.length;\n\n if (op1.type === 'd') {\n if (op2.type === 'd') {\n if (y1 >= x1 && y1 <= x2) {\n newPosition = x1;\n newLength = Math.max(0, y2 - x2);\n } else if (y1 > x2) {\n newPosition -= x2 - x1;\n } else if (y1 > x1) {\n newPosition = x1;\n }\n } else {\n // insert\n if (y1 >= x2) {\n newPosition -= x2 - x1;\n } else if (y1 >= x1) {\n newPosition = x1;\n }\n }\n } else {\n // op1 is insert\n if (op2.type === 'd') {\n if (y1 < x1 && y2 > x1) {\n newLength += x2 - x1;\n } else if (y1 > x1 || y1 === x1 && cid1 > cid2) {\n newPosition += x2 - x1;\n }\n } else if (y1 > x1 || y1 === x1 && cid1 > cid2) {\n newPosition += x2 - x1;\n }\n }\n\n if (newPosition !== op2.position ||\n newLength !== op2.length) {\n op2 = new TextOperation(op2.type, newPosition, newLength, op2.data);\n if (debug) this.log(\"op2 after: %s\", JSON.stringify(op2, null, 2));\n } else {\n if (debug) this.log(\"No change\");\n }\n\n return op2;\n }\n\n // one is first, 0 is empty, etc.\n public getRevision(which: number) {\n if (which > this.all.length || which < 0) {\n throw new Error(`Cannot retrieve revision ${which}; it doesn't exist`);\n }\n let text = '';\n for (let i = 0; i < which; i++) {\n for (const op of this.all[i].ops) {\n text = this.apply(op as TextOperation, text);\n }\n }\n return text;\n }\n\n public getHead() {\n return this.getRevision(this.getNextRevisionNumber() - 1);\n }\n\n public static Open(input: string): TextDocument | null {\n const doc = new TextDocument();\n if (input.substr(0, 12) !== \"OTprW4z9M9x7\") {\n doc.log(\"OT.Open: Missing header\");\n return null;\n }\n let pos = 12;\n let remoteLength = 0;\n\n while (pos < input.length) {\n const ch = input.charAt(pos);\n const code = input.charCodeAt(pos);\n if (ch === ';') {\n pos++;\n break;\n } else if (code >= 48 && code <= 57) {\n remoteLength = remoteLength * 10 + code - 48;\n pos++;\n } else {\n doc.log('Error decoding parent CID');\n return null;\n }\n }\n\n let remoteLists = doc.decode(input.substr(pos, remoteLength));\n if (remoteLists === null) {\n return null;\n }\n\n let localLists = doc.decode(input.substr(pos + remoteLength + 1));\n if (localLists === null) {\n return null;\n }\n\n if (!doc.addRemoteChanges(input.substr(pos, remoteLength))) {\n doc.log(\"Error decoding remote changes.\");\n return null;\n }\n\n for (let list of localLists) {\n doc.addLocalOps(list);\n }\n\n return doc;\n }\n\n public save() {\n let remote = this.encode(this.all.slice(0, this.getAckedTo()));\n let local = this.encode(this.all.slice(this.getAckedTo()));\n return `OTprW4z9M9x7${remote.length};${remote};${local}`;\n }\n}\n\nfunction Test_TextDocument() {\n const TESTS = `\ntest Basic storage\nadd A 1 This is a test\nadd A 2 This is a very good test and\nadd A 3 Completely different text.\nadd A 4 Different text in different ways.\ncheck A 1 This is a test\ncheck A 2 This is a very good test and\ncheck A 3 Completely different text.\ncheck A head Different text in different ways.\n\ntest Saving / opening\nadd A 1 This is a test\nadd A 2 This is a very good test and\nadd A 3 Completely different text.\nadd A 4 Different text in different ways.\ncopy A B\ncheck B 1 This is a test\ncheck B 2 This is a very good test and\ncheck B 3 Completely different text.\ncheck B head Different text in different ways.\n\ntest only A inserts\nadd A 1 ABCDE\ncopy A B\nadd A 2 A123BCDE\nmerge B A 2\ncheck A head A123BCDE\n\ntest B inserts in middle\nadd A 1 ABCDE\ncopy A B\nadd B 2 A123BCDE\nmerge B A 2\ncheck A head A123BCDE\n\ntest A inserts at beginning, B inserts at end\nadd A 1 ABCDE\ncopy A B\nadd A 2 123ABCDE\nadd B 2 ABCDE123\nmerge B A 2\ncheck A head 123ABCDE123\n\ntest A, B deletes same change\nadd A 1 ABCDE\ncopy A B\nadd A 2 ADE\nadd B 2 ADE\nmerge B A 2\ncheck A head ADE\n\ntest A, B inserts do same change\nadd A 1 ABCDE\ncopy A B\nadd A 2 A123BCDE\nadd B 2 A123BCDE\nmerge B A 2\ncheck A head A123BCDE\n\ntest A modifies something, B also modifies it.\nadd A 1 ABCDE\ncopy A B\nadd A 2 A12DE\nadd B 2 A34DE\nmerge B A 2\ncheck A head A3412DE\n\ntest undo and redo (one party).\nadd A 1 ABCDE\nadd A 2 12ABCDE34\nadd A 3 12ABC66DE34\ncheck A 3 12ABC66DE34\nundo A\ncheck A 4 12ABCDE34\nundo A\ncheck A 5 ABCDE\nredo A\ncheck A 6 12ABCDE34\nredo A\ncheck A 7 12ABC66DE34\n\ntest undo redo undo redo\nadd A 1 A\nadd A 2 ABC\nundo A\ncheck A 3 A\nredo A\ncheck A 4 ABC\nundo A\ncheck A 5 A\nredo A\ncheck A 6 ABC\n\ntest undo and redo (multi-party).\nadd A 1 ABCDE\ncopy A B\nadd A 2 12ABCDE34\nadd B 2 ABC66DE\nmerge B A 2\ncheck A head 12ABC66DE34\nundo A\ncheck A head ABC66DE\nredo A\ncheck A head 12ABC66DE34\n\ntest Range transformations\nadd A 1 ABC\ncopy A B\nadd A 2 12ABC\nadd B 2 ABC34\nmerge B A 2:0 -> 2:0\nmerge A B 5:0 -> 7:0\n\ntest duplicate elimination\nadd A 1 ABCDEF\ncopy A B\nadd A 2 ADEFGH\nadd A 3 ADEFGHijk\nadd B 2 ADEFGH\nmerge B A 2\ncheck A head ADEFGHijk\n`;\n\n log.enableConsole();\n const backup = TextDocument.MINIMUM_DIFFERENCE;\n TextDocument.MINIMUM_DIFFERENCE = 1;\n let docs: { [key: string]: TextDocument } = {};\n let testName = '';\n for (const line of TESTS.split('\\n')) {\n let m = /^test (.*)/.exec(line);\n if (m) {\n // start a new test\n console.log('*************** New test: %s', m[1]);\n testName = m[1];\n docs = {};\n continue;\n }\n\n m = /^add ([A-Z]) (\\d+) (.*)/.exec(line);\n if (m) {\n const rev = parseInt(m[2], 10);\n const name = m[1];\n const text = m[3];\n console.log(`Add to ${name}:${rev}: ${text}`);\n if (!(name in docs)) {\n docs[name] = new TextDocument();\n }\n const doc = docs[name];\n if (doc.getNextRevisionNumber() !== rev) {\n throw new Error(`Error: Next revision of ${name} not ${rev}, it's ${doc.getNextRevisionNumber()}`);\n }\n\n doc.addRevision(text);\n continue;\n }\n\n m = /^check ([A-Z]) (\\d+|head) (.*)/.exec(line);\n if (m) {\n const name = m[1];\n const text = m[3];\n if (!(name in docs)) {\n throw new Error(`Error: ${name} not in docs`);\n }\n const doc = docs[name];\n\n let rev: number;\n if (m[2] === 'head') {\n rev = doc.getNextRevisionNumber() - 1;\n } else {\n rev = parseInt(m[2], 10);\n }\n\n console.log(`Check that ${name}:${rev} is ${text}`);\n\n if (doc.getRevision(rev) !== text) {\n doc.show();\n console.log(`Expected: ${text}`);\n console.log(`Got: ${doc.getRevision(rev)}`);\n throw new Error('Error: not equal');\n }\n\n continue;\n }\n\n m = /^copy ([A-Z]) ([A-Z])/.exec(line);\n if (m) {\n const src = m[1];\n const dest = m[2];\n console.log(`Copy ${src} to ${dest}`);\n if (!(src in docs)) {\n throw new Error(`Error: ${src} not in docs`);\n }\n\n const changes = docs[src].getChangesToSend();\n if (changes) {\n docs[src].markChangesSent(changes.getLastCid());\n }\n const encoded = docs[src].save();\n const doc = TextDocument.Open(encoded);\n if (doc === null) {\n throw new Error('Error: failed to re-open doc');\n }\n\n docs[dest] = doc;\n\n continue;\n }\n\n m = /^merge ([A-Z]) ([A-Z]) (\\d+)/.exec(line);\n if (m) {\n const src = m[1];\n const srcAt = parseInt(m[3], 10) - 1;\n const dest = m[2];\n console.log(`Merge ${src} to ${dest} at ${srcAt}`);\n if (!(src in docs)) {\n throw new Error(`Error: ${src} not in docs`);\n }\n if (!(dest in docs)) {\n throw new Error(`Error: ${dest} not in docs`);\n }\n\n // now check if there are cursor commands\n m = /(\\d+):(\\d+) -> (\\d+):(\\d+)/.exec(line);\n let oldRange: SelectionRange | undefined;\n let newRange: SelectionRange = new SelectionRange(0, 0);\n if (m) {\n oldRange = new SelectionRange(parseInt(m[1], 10), parseInt(m[2], 20));\n newRange.start = parseInt(m[3], 10);\n newRange.length = parseInt(m[4], 10);\n }\n\n console.log('Before: ' + docs[dest].save());\n const encoded = docs[src].getChangesToSend();\n if (encoded) { docs[src].markChangesSent(encoded.getLastCid()); }\n if (encoded && !docs[dest].addRemoteTextChanges(encoded.getData(), oldRange)) {\n throw new Error('Error inserting revisions: ' + encoded);\n }\n if (oldRange && !oldRange.equals(newRange)) {\n throw new Error(`Error: Expected range ${newRange} but got ${oldRange}`);\n }\n console.log('After: ' + docs[dest].save());\n\n continue;\n }\n\n\n m = /^undo ([A-Z])/.exec(line);\n if (m) {\n const src = m[1];\n console.log(`Undo ${src}`);\n if (!(src in docs)) {\n throw new Error(`Error: ${src} not in docs`);\n }\n\n docs[src].undo();\n\n continue;\n }\n\n m = /^redo ([A-Z])/.exec(line);\n if (m) {\n const src = m[1];\n console.log(`Redo ${src}`);\n if (!(src in docs)) {\n throw new Error(`Error: ${src} not in docs`);\n }\n\n docs[src].redo();\n\n continue;\n }\n /*\n m = /^range ([A-Z]) (\\d+) (\\d): (\\d+) (\\d+) -> (\\d+) (\\d+)/.exec(line);\n if (m) {\n let src = m[1];\n let from = parseInt(m[2], 10)-1;\n let to = parseInt(m[3], 10)-1;\n let a1 = parseInt(m[4], 10);\n let a2 = parseInt(m[5], 10);\n let b1 = parseInt(m[6], 10);\n let b2 = parseInt(m[7], 10);\n\n if (!(src in docs)) {\n throw new Error(`Error: ${src} not in docs`);\n }\n\n\n console.log(`xform range (${a1}, ${a2}) from r${from} r${to} should be (${b1}, ${b2}))`);\n let range = new SelectionRange(a1, a2);\n let range2 = docs[src].transformRange(range, from, to);\n if (range2.start !== b1 || range2.length != b2) {\n throw new Error(`Error: Range was (${range2.start}, ${range2.length}) but expected (${b1}, ${b2})`);\n }\n continue;\n }\n */\n m = /[ ]*/.exec(line);\n if (m) {\n continue;\n }\n\n throw new Error(`Bad line: ${line}`);\n }\n\n console.log('All tests PASSED');\n\n TextDocument.MINIMUM_DIFFERENCE = backup;\n}\n\n\n//Test_TextDocument();\n","import { Wsd, FileInfo, ProjectInfo, WsdResponse, CopyFileInfo } from '@/Wsd';\nimport { TextDocument, SelectionRange } from '@/webshared/TextOperationalTransform';\nimport { Revision } from \"@/webshared/OperationalTransform\";\nimport { EventEmitter } from '@/webshared/EventEmitter';\nimport { log } from '@/webshared/log';\nexport { SelectionRange };\n\ninterface UpdatedMessage {\n type: 'updated';\n fileid: number;\n cid: number;\n data?: string;\n file?: FileInfo;\n}\n\ninterface AckMessage {\n type: 'ack';\n fileid: number;\n cid: number;\n}\n\ninterface DeletedMessage {\n type: 'deleted' | \"noaccess\";\n fileid: number;\n}\n\ninterface CorruptedMessage {\n type: 'corrupted';\n fileid: number;\n}\n\nexport { Revision };\n\nexport interface FileViewer {\n isActiveFile(file: FileInfo): boolean;\n getFileText(file: FileInfo): string;\n getFileSelection(file: FileInfo): SelectionRange;\n setFileText(file: FileInfo, text: string, selection: SelectionRange): void;\n}\n\nclass NullFileViewer {\n public isActiveFile(file: FileInfo) {\n return false;\n }\n\n public getFileText(file: FileInfo) {\n return '';\n }\n\n public getFileSelection(file: FileInfo) {\n return new SelectionRange(0, 0);\n }\n\n public setFileText(file: FileInfo, text: string, selection: SelectionRange) {\n\n }\n}\n\ntype ServerMessage = UpdatedMessage | DeletedMessage | CorruptedMessage | AckMessage;\n\n// Events: \n// \"added\", FileInfo, opened, conflict\nexport class OpenFile {\n constructor(\n public file: FileInfo) {\n if (file.dirty === undefined) {\n file.dirty = false;\n }\n }\n\n public sharedText = new TextDocument();\n //selectionRange = {start: {row: 0, column: 0}, end: {row:0, column: 0}};\n public selectionRange = new SelectionRange(0, 0);\n\n public hasChangesToSend = false;\n public sending = false;\n\n public local() {\n return this.file.fileid > 0;\n }\n\n toJSON() {\n let obj = {\n file: this.file,\n sharedText: this.sharedText.save(),\n hasChangesToSend: this.hasChangesToSend\n };\n\n return JSON.stringify(obj);\n }\n\n static fromJSON(frozen: string) {\n let obj = JSON.parse(frozen);\n\n let ofile = new OpenFile(obj.file);\n ofile.hasChangesToSend = obj.hasChangesToSend;\n let doc = TextDocument.Open(obj.sharedText);\n if (doc === null) {\n console.log(\"ERROR: Couldn't open doc from localStorage.\");\n return null;\n }\n ofile.sharedText = doc;\n return ofile;\n }\n}\n\n// Emits:\n// updated: file is updated. You should then call getUpdates() on the file\n// deleted(file): file deleted.\n// added: opened file has been opened.\nexport class FileStorage extends EventEmitter {\n public log = log.create('FileStorage');\n private ofiles: { [fileid: number]: OpenFile } = {};\n public files: FileInfo[] = [];\n\n // outstanding call to server\n public busy = false;\n public timeout: any = null;\n\n // information changed while busy\n public updateNeeded = false;\n public delay = 2;\n\n // is server up to date?\n public numOutstanding = 0;\n private started = false;\n\n constructor(private fileViewer: FileViewer = new NullFileViewer()) {\n super();\n\n Wsd.on(\"message\", (messages: ServerMessage[]) => {\n for (let message of messages) {\n this.processServerMessage(message);\n }\n });\n\n Wsd.on(\"reconnect\", () => {\n this.fetchChanges();\n })\n }\n\n start() {\n if (this.started) {\n return;\n }\n\n this.started = true;\n this.restoreFromStorage();\n this.fetchChanges();\n this.emit(\"started\");\n }\n\n get saved() {\n return this.numOutstanding = 0;\n }\n\n public setFileViewer(viewer: FileViewer) {\n this.fileViewer = viewer;\n }\n\n public listFiles() {\n return Wsd.listFiles();\n }\n\n public add(fileid: number) {\n if (fileid in this.ofiles) {\n this.emit('added', this.ofiles[fileid].file, true);\n return;\n }\n\n return Wsd.getFileInfo(fileid).then((response) => {\n this.log('Got response for fileid %s', fileid);\n const ofile = new OpenFile(response.data as FileInfo);\n this.ofiles[ofile.file.fileid] = ofile;\n this.files.push(ofile.file);\n this.fetchChanges();\n this.backupToStorage(ofile);\n this.emit('added', ofile.file, true);\n return ofile.file;\n });\n }\n\n public create(name: string, contents: string, style: string, project?: ProjectInfo) {\n // find the most negative fileid, or use -1.\n let newid = -1;\n for (let fileid in this.ofiles) {\n if (this.ofiles[fileid].file.fileid <= newid) {\n newid = this.ofiles[fileid].file.fileid - 1;\n }\n }\n\n let file: FileInfo = {\n fileid: newid,\n name: name,\n mtime: new Date().getTime() / 1000,\n projectid: project ? project.projectid : 0,\n projectName: project ? project.name : \"\",\n owner: Wsd.user.userid,\n dirty: true,\n info: {\n style: style\n }\n }\n\n let ofile = new OpenFile(file);\n this.ofiles[file.fileid] = ofile;\n this.files.push(ofile.file);\n ofile.sharedText.addRevision(contents);\n ofile.sharedText.clearUndoStack();\n this.backupToStorage(ofile);\n this.emit(\"added\", file, true);\n return file;\n }\n\n public notifyRename(fileid: number, name: string) {\n let ofile = this.ofiles[fileid];\n if (ofile) {\n ofile.file.name = name;\n this.backupToStorage(ofile);\n }\n }\n\n public notifyDeleted(fileid: number) {\n console.log(\"Notify deleted %s\", fileid);\n let ofile = this.ofiles[fileid];\n if (ofile) {\n this.close(ofile.file);\n console.log(\"Closed %s\", fileid);\n this.emit(\"deleted\", ofile.file);\n } else {\n console.log(\"File was not open.\");\n }\n }\n\n close(file: FileInfo) {\n delete this.ofiles[file.fileid];\n for (let i = 0; i < this.files.length; i++) {\n if (this.files[i].fileid === file.fileid) {\n this.files.splice(i, 1);\n break;\n }\n }\n this.removeFromStorage(file.fileid);\n Wsd.close(file.fileid);\n this.emit(\"closed\", file);\n }\n\n private fetchChanges() {\n if (this.busy) {\n this.updateNeeded = true;\n //Wsd.abortSubscribeRequest();\n return;\n }\n\n this.updateNeeded = false;\n const request: { [fileid: number]: number } = {};\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n\n let count = 0;\n let str = '';\n for (const fileid in this.ofiles) {\n const ofile = this.ofiles[fileid];\n if (ofile.file.fileid > 0) {\n request[fileid] = this.ofiles[fileid].sharedText.getAckedTo();\n count += 1;\n str += `${fileid}@${request[fileid]},`;\n }\n }\n this.log('Calling [%s] /open?' + str, Wsd.clientid);\n\n if (count == 0) {\n return;\n }\n\n this.busy = true;\n Wsd.open(request).then((response) => {\n this.busy = false;\n this.log('Subscription result: %s', JSON.stringify(response.data));\n }, (error) => {\n this.busy = false;\n this.log('Error processing subscribe message: %s', error.message);\n console.log('THE ERROR WAS: ', error);\n if (error.message !== \"Not signed in.\") {\n this.timeout = setTimeout(() => {\n this.timeout = null;\n this.fetchChanges();\n }, this.delay * 1000);\n }\n });\n }\n\n public processServerMessage(message: ServerMessage) {\n this.log(\"SERVER MESSAGE %s\", message.type);\n switch (message.type) {\n case 'ack':\n this.log('File %s acked to %s', message.fileid, message.cid);\n if (message.fileid in this.ofiles) {\n this.ofiles[message.fileid].sharedText.markChangesSent(message.cid.toString());\n } else {\n this.log('File does not exist!');\n }\n break;\n case 'corrupted':\n case 'noaccess':\n case 'deleted':\n this.log('File %s has been deleted.', message.fileid);\n if (message.fileid in this.ofiles) {\n const file = this.ofiles[message.fileid].file;\n this.close(file);\n this.emit('deleted', file);\n }\n break;\n case 'updated':\n if (message.fileid in this.ofiles) {\n const ofile = this.ofiles[message.fileid];\n if (\"data\" in message) {\n if (this.fileViewer.isActiveFile(ofile.file)) {\n this.log('File %s has been updated (active file)', message.fileid);\n const currentlyDisplayed = this.fileViewer.getFileText(ofile.file);\n const selection = this.fileViewer.getFileSelection(ofile.file);\n ofile.sharedText.addRevision(currentlyDisplayed);\n ofile.sharedText.addRemoteTextChanges(message.data!, selection);\n this.fileViewer.setFileText(ofile.file, ofile.sharedText.getHead(), selection);\n ofile.file.dirty = ofile.sharedText.hasOutstandingChanges();\n this.backupToStorage(ofile);\n } else {\n this.log('File %s has been updated (in background)', message.fileid);\n ofile.sharedText.addRemoteTextChanges(message.data!, ofile.selectionRange);\n ofile.file.dirty = ofile.sharedText.hasOutstandingChanges();\n }\n } else {\n // update of metadata only.\n this.log(\"Update file metadata.\");\n let newfile = message.file as FileInfo;\n let oldfile = ofile.file;\n CopyFileInfo(newfile, oldfile);\n }\n }\n break;\n }\n }\n\n public addRevision(file: FileInfo, current: string) {\n if (!(file.fileid in this.ofiles)) {\n this.log('Error: file %s does not exist', file.fileid);\n return;\n }\n const ofile = this.ofiles[file.fileid];\n\n ofile.sharedText.addRevision(current);\n this.backupToStorage(ofile);\n this.sendChanges(ofile);\n }\n\n public getRevisions(file: FileInfo): Revision[] {\n if (!(file.fileid in this.ofiles)) {\n this.log('Error: file %s does not exist', file.fileid);\n return [];\n }\n const ofile = this.ofiles[file.fileid];\n return ofile.sharedText.getRevisionList();\n }\n\n public getRevision(file: FileInfo, cid: string): string {\n if (!(file.fileid in this.ofiles)) {\n this.log('Error: file %s does not exist', file.fileid);\n return \"\";\n }\n const ofile = this.ofiles[file.fileid];\n return ofile.sharedText.getRevision(parseInt(cid, 10));\n }\n\n public setStyle(file: FileInfo, style: string) {\n file.info.style = style;\n\n if (!(file.fileid in this.ofiles)) {\n return;\n }\n\n let ofile = this.ofiles[file.fileid];\n if (file.fileid > 0) {\n Wsd.updateFile(file.fileid, file.name, \"\", file.info, 0).then((response) => {\n this.log(\"Updated fileid %d style to %s\", file.fileid, style);\n file.mtime = response.data.mtime;\n }, (error) => {\n this.log(\"Error: %s\", error.message);\n });\n }\n\n this.backupToStorage(ofile);\n }\n\n private sendChanges(ofile: OpenFile) {\n const changes = ofile.sharedText.getChangesToSend();\n if (changes && changes.empty()) {\n ofile.file.dirty = false;\n }\n if (changes && !changes.empty() && ofile.file.fileid > 0) {\n ofile.file.dirty = true;\n if (ofile.sending) {\n ofile.hasChangesToSend = true;\n } else {\n ofile.sending = true;\n ofile.hasChangesToSend = false;\n this.log('Appending to fileid %s@%s', ofile.file.fileid, changes.getBaseCid());\n Wsd.appendFile(ofile.file.fileid, changes.getBaseCid(), changes.getData()).then((response) => {\n this.log('Appending successful. mark sent to %s', changes!.getLastCid());\n ofile.sending = false;\n ofile.sharedText.markChangesSent(changes!.getLastCid());\n if (ofile.hasChangesToSend) {\n this.sendChanges(ofile);\n } else {\n ofile.file.dirty = false;\n }\n }, (error) => {\n this.log('Error appending to fileid %s: %s', ofile.file.fileid, error.message);\n if (error.message === \"Conflict\") {\n this.emit(\"conflict\", ofile.file);\n } else {\n ofile.sending = false;\n }\n });\n }\n }\n }\n\n public saveNew(file: FileInfo, name: string) {\n if (file.fileid > 0) {\n return Promise.reject(new Error(\"Already saved fileid\"));\n }\n\n if (!(file.fileid in this.ofiles)) {\n return Promise.reject(new Error(\"Unknown file, shouldn't happen\"));\n }\n\n let ofile = this.ofiles[file.fileid];\n let changes = ofile.sharedText.getChangesToSend();\n ofile.hasChangesToSend = false;\n this.log('creating to fileid %s', ofile.file.fileid);\n return Wsd.createFile(name, makeVTHeader(changes.getData()), file.info, false, file.projectid).then((response) => {\n this.log('creation successful. mark sent to %s', changes!.getLastCid());\n ofile.sending = false;\n ofile.sharedText.markChangesSent(changes!.getLastCid());\n if (ofile.hasChangesToSend) {\n this.sendChanges(ofile);\n }\n\n this.removeFromStorage(file.fileid);\n delete this.ofiles[file.fileid];\n\n file.fileid = response.data.fileid;\n file.mtime = response.data.mtime;\n file.name = name;\n file.dirty = false;\n\n this.ofiles[file.fileid] = ofile;\n this.backupToStorage(ofile);\n }, (error) => {\n this.log('Error creating to fileid %s: e.message=%s', ofile.file.fileid, error.message);\n ofile.sending = false;\n throw error;\n });\n }\n\n public setSelectionRange(file: FileInfo, range: SelectionRange) {\n if (!(file.fileid in this.ofiles)) {\n this.log('Error: file %s does not exist', file.fileid);\n return;\n }\n const ofile = this.ofiles[file.fileid];\n ofile.selectionRange = range;\n }\n\n public getSelectionRange(file: FileInfo) {\n if (!(file.fileid in this.ofiles)) {\n this.log('Error: file %s does not exist', file.fileid);\n }\n const ofile = this.ofiles[file.fileid];\n return ofile.selectionRange;\n }\n\n public isOpen(file: FileInfo) {\n return file.fileid in this.ofiles;\n }\n\n public canUndo(file: FileInfo) {\n if (!(file.fileid in this.ofiles)) {\n return false;\n }\n return this.ofiles[file.fileid].sharedText.canUndo();\n }\n\n public canRedo(file: FileInfo) {\n if (!(file.fileid in this.ofiles)) {\n return false;\n }\n return this.ofiles[file.fileid].sharedText.canRedo();\n }\n\n public undo(file: FileInfo) {\n if (!(file.fileid in this.ofiles)) {\n return;\n }\n\n let ofile = this.ofiles[file.fileid];\n\n if (this.fileViewer.isActiveFile(file)) {\n const selection = this.fileViewer.getFileSelection(ofile.file);\n ofile.sharedText.undo();\n this.fileViewer.setFileText(ofile.file, ofile.sharedText.getHead(), selection);\n } else {\n ofile.sharedText.undo();\n }\n }\n\n public redo(file: FileInfo) {\n if (!(file.fileid in this.ofiles)) {\n return;\n }\n\n let ofile = this.ofiles[file.fileid];\n\n if (this.fileViewer.isActiveFile(file)) {\n const selection = this.fileViewer.getFileSelection(ofile.file);\n ofile.sharedText.redo();\n this.fileViewer.setFileText(ofile.file, ofile.sharedText.getHead(), selection);\n } else {\n ofile.sharedText.undo();\n }\n\n }\n\n public getHead(file: FileInfo) {\n if (!(file.fileid in this.ofiles)) {\n this.log('Error: file %s does not exist', file.fileid);\n return \"\";\n }\n const ofile = this.ofiles[file.fileid];\n return ofile.sharedText.getHead();\n }\n\n backupToStorage(ofile: OpenFile) {\n localStorage.setItem(\"ofile:\" + ofile.file.fileid, ofile.toJSON());\n }\n\n removeFromStorage(fileid: number) {\n localStorage.removeItem(\"ofile:\" + fileid);\n }\n\n restoreFromStorage() {\n for (let i = 0; i < localStorage.length; i++) {\n let key = localStorage.key(i);\n if (key && key.substr(0, 6) === \"ofile:\") {\n let number = parseFloat(key.split(\":\")[1]);\n if (!isNaN(number)) {\n let ofile = OpenFile.fromJSON(localStorage.getItem(key)!);\n if (ofile) {\n this.ofiles[ofile.file.fileid] = ofile;\n this.files.push(ofile.file);\n }\n }\n }\n }\n }\n\n signout() {\n let toRemove: string[] = [];\n for (let i = 0; i < localStorage.length; i++) {\n let key = localStorage.key(i);\n if (key && key.substr(0, 6) === \"ofile:\") {\n toRemove.push(key);\n }\n }\n\n for (let i = 0; i < toRemove.length; i++) {\n let key = toRemove[i];\n localStorage.removeItem(key);\n }\n }\n\n}\n\nfunction makeVTHeader(input: string) {\n\n // changes the string that starts with 0; to one that\n // starts with the versioned text header.\n\n let result = input;\n if (result.substr(0, 2) === \"0;\") {\n result = \"VTsKXlp87Lyw\" + result.substr(2);\n }\n\n return result;\n}\n","import { parse, AstItem, Locus } from './parser.js';\n\nfunction ispart(type: string) {\n return type === \"participant\" || type === \"alias\";\n}\n\nexport class ParsedDiagram {\n private ast: any;\n\n constructor(input: string) {\n this.ast = parse(input);\n }\n\n public getParticipants() {\n const map: { [key: string]: boolean } = {};\n this.each((node: any) => {\n if (ispart(node.type)) {\n map[node.data] = true;\n }\n });\n\n const values: string[] = [];\n for (const name in map) {\n values.push(name);\n }\n return values;\n }\n\n public getParticipantUnderPoint(row: number, column: number): string | null {\n let ret: string | null = null;\n\n row += 1;\n column += 1;\n\n function inside(loc: Locus, line: number, column: number) {\n return line >= loc.start.line && column >= loc.start.column &&\n line <= loc.end.line && column < loc.end.column;\n }\n\n this.each((node: AstItem) => {\n //console.log(\"Check type=%s %s/%s inside \", typeof node, row, column, node);\n if (typeof node !== 'string' && ispart(node.type) && node.locus &&\n inside(node.locus, row, column)) {\n ret = node.data as string;\n }\n });\n\n return ret;\n }\n\n public renameParticipant(oldName: string, newName: string) {\n\n this.each((node: AstItem) => {\n console.log(JSON.stringify(node));\n if (typeof node !== 'string' &&\n ispart(node.type) &&\n node.data === oldName) {\n node.data = newName;\n }\n });\n }\n\n public toString() {\n let text = '';\n this.each((node: AstItem) => {\n if (typeof node === 'string') {\n text += node;\n }\n });\n\n return text;\n }\n\n public each(fn: (node: any) => void) {\n const stack: any[] = [this.ast];\n\n while (stack.length) {\n const node = stack.pop();\n if (node instanceof Array) {\n for (let i = node.length - 1; i >= 0; --i) {\n stack.push(node[i]);\n }\n } else if (node) {\n if (node instanceof Object) {\n stack.push(node.data);\n }\n fn(node);\n }\n }\n }\n}\n","declare let GoogleSigninLoaded: any;\r\ndeclare let gapi: any;\r\n\r\n(window as any).GoogleSigninLoaded = null;\r\n\r\nexport interface UserInfo {\r\n email: string;\r\n token: string;\r\n}\r\n\r\nexport class GoogleAuth {\r\n private auth2: any;\r\n private clientID = \"\";\r\n init(clientID: string): Promise {\r\n this.clientID = clientID;\r\n\r\n return this.loadScript().then((gapi: any) => {\r\n return this.loadAuth(gapi);\r\n }).then((auth2: any) => {\r\n console.log(\"Succesfully initialized GAPI auth2.\");\r\n this.auth2 = auth2;\r\n }, (error) => {\r\n throw error;\r\n });\r\n }\r\n\r\n signin(): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (!this.auth2) {\r\n reject(new Error(\"Google API not loaded.\"));\r\n return;\r\n }\r\n\r\n this.auth2.signIn().then((googleUser: any) => {\r\n let email = googleUser.getBasicProfile().getEmail();\r\n let token = googleUser.getAuthResponse().id_token;\r\n resolve({ email, token });\r\n }, (error: any) => {\r\n console.log(\"Google auth failed with: \", error);\r\n reject(error.error as Error);\r\n });\r\n });\r\n }\r\n\r\n private loadScript() {\r\n console.log('Google signin service initializing');\r\n return new Promise((resolve, reject) => {\r\n const url = 'https://apis.google.com/js/platform.js?onload=GoogleSigninLoaded';\r\n const script = document.createElement('script');\r\n script.setAttribute('src', url);\r\n script.setAttribute('async', 'async');\r\n script.setAttribute('defer', 'defer');\r\n script.onerror = () => {\r\n reject(new Error('Google API could not be loaded.'));\r\n };\r\n\r\n GoogleSigninLoaded = () => {\r\n console.log('Google scripts loaded!');\r\n resolve(gapi);\r\n };\r\n document.body.appendChild(script);\r\n });\r\n }\r\n\r\n private loadAuth(gapi: any) {\r\n return new Promise((resolve, reject) => {\r\n gapi.load('auth2', () => {\r\n gapi.auth2.init({\r\n client_id: this.clientID,\r\n scope: 'profile',\r\n }).then(() => {\r\n console.log(\"gapi\", gapi);\r\n resolve(gapi.auth2.getAuthInstance());\r\n }, (error: any) => {\r\n console.log(\"GOOGLE AUTH ERROR: \", error);\r\n reject(error);\r\n });\r\n });\r\n });\r\n\r\n }\r\n}\r\n","export class SignalPromise {\r\n resolve!: Function;\r\n reject!: Function;\r\n\r\n private promise: Promise;\r\n constructor() {\r\n this.promise = new Promise((resolve: Function, reject: Function) => {\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n });\r\n }\r\n\r\n then(a: (t: T) => any, b?: (e: Error) => any) {\r\n return this.promise.then(a, b);\r\n }\r\n}","import { log } from '@/webshared/log';\nimport Vue from 'vue';\nimport { Tracker } from '@/webshared/Tracker';\nimport { EventEmitter } from '@/webshared/EventEmitter';\nimport { Url } from '@/webshared/Url';\nimport { FileStorage, FileViewer } from \"@/OpenFiles\";\nimport { ParsedDiagram } from '@/ParsedDiagram';\nimport { GoogleAuth, UserInfo as GUserInfo } from \"@/webshared/GoogleAuth\";\nimport { SignalPromise } from './webshared/SignalPromise';\n\ndeclare let WSDCONFIG: WsdConfig;\nexport const MAX_UNSUBSCRIBED_WIDTH = 1200;\n\nexport interface WsdResponse {\n data: any;\n response: string;\n status: number;\n statusText: string;\n}\n\nexport interface DiagramRequest {\n apiVersion?: number;\n message: string;\n style: string;\n format: 'png' | 'svg' | 'pdf';\n filename: string,\n width?: number;\n height?: number;\n}\n\nexport interface User {\n access: string;\n cancelDate: number;\n email: string;\n expiry: number;\n hasPassword: boolean;\n newAccount: boolean;\n oauth: string[];\n paymentDate: number;\n subscriptionid: string;\n userid: number;\n subscribedSince: number;\n admin?: boolean;\n}\n\nexport interface WsdConfig {\n allowGoogleSignIn: boolean;\n googleClientId: string;\n signInMethod: 'user-managed' | 'admin-managed' | 'ldap' | 'disabled' | 'saml';\n enterprise: boolean;\n}\n\nexport interface FileInfo {\n fileid: number;\n name: string;\n mtime: number;\n projectid: number;\n projectName: string;\n owner: number;\n info: {\n style: string;\n }; // style, etc.\n dirty: boolean;\n}\n\nexport function CopyFileInfo(src: FileInfo, dest: FileInfo) {\n dest.fileid = src.fileid;\n dest.name = src.name;\n dest.mtime = src.mtime;\n dest.projectid = src.projectid;\n dest.projectName = src.projectName;\n dest.owner = src.owner;\n dest.info = src.info;\n dest.dirty = src.dirty;\n}\n\nexport interface ProjectInfo {\n projectid: number;\n name: string;\n token: string;\n}\n\nexport interface ProjectMember {\n userid: number;\n email: string;\n}\n\nexport interface StyleInfo {\n name: string;\n}\n\ninterface StripeToken {\n id: string;\n email: string | null;\n}\n\ninterface ExportOptions {\n style?: string;\n text: string;\n paper?: Paper;\n landscape?: boolean;\n filename: string;\n // filename for recursive include prevention\n ownFilename: string;\n format: string; //\"png\"|\"svg\"|\"pdf\"|\"text\";\n scale?: number; // 100 or 200\n ietf?: boolean;\n}\n\ndeclare let LICENSE_VALID: boolean;\n\nclass WsdClass extends EventEmitter {\n public SAVE_TIMEOUT = 5000;\n\n private count = 0;\n public log = log.create('WSD');\n public TEST = \"test\" in Url.hash();\n public delay = 0; //1500;\n public clientid = Math.round(Math.random() * 1000000000).toString(36);\n public config = WSDCONFIG;\n public googleError = false;\n public haveBaton = true;\n\n public root = `${location.protocol}//${location.host}/`;\n\n private _styles: StyleInfo[] = [];\n\n public prefixUrl(suffix: string) {\n if (suffix.indexOf('/') === 0) {\n suffix = suffix.substr(1);\n } else if (suffix.indexOf('http:') === 0 ||\n suffix.indexOf('https:') === 0) {\n return suffix;\n }\n return this.root + suffix;\n }\n\n public send(url: string, params: any = {}, cancel?: Promise, headers: any = {}) {\n url = this.prefixUrl(url);\n const ispolling = url.indexOf('/monitor') >= 0;\n if (!ispolling) {\n this.count += 1;\n }\n\n let aborted = false;\n\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest();\n req.open('POST', url);\n req.withCredentials = true;\n req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n req.onreadystatechange = () => {\n if (req.readyState === 4) {\n const response = {\n data: req.responseText,\n response: req.responseText,\n status: req.status,\n statusText: req.statusText,\n };\n\n if (req.status === 200) {\n const contentType = req.getResponseHeader('content-type');\n if (contentType && contentType.indexOf('application/json') === 0) {\n try {\n response.data = JSON.parse(response.data);\n } catch (e) { }\n }\n this.log('Successful request for %s', url);\n resolve(response);\n } else {\n let h = req.getResponseHeader(\"status\");\n\n let status = req.statusText;\n console.log(req.getAllResponseHeaders());\n console.log(\"h=%s status=%s\", h, status);\n if (h !== null) {\n status = h;\n } else if (status === \"\") {\n status = \"Network Error\";\n }\n this.log('Got error for %s: %s %s', url, req.status, status);\n reject(new Error(status));\n }\n }\n };\n\n let qs = '';\n for (const key in params) {\n if (qs.length) {\n qs += '&';\n }\n qs += encodeURIComponent(key);\n qs += '=';\n qs += encodeURIComponent(params[key]);\n }\n\n for (let key in headers) {\n req.setRequestHeader(key, headers[key]);\n }\n\n if (cancel) {\n cancel.then(() => {\n if (!aborted) {\n aborted = true;\n this.log(\"ABORTING STALE REQUEST\");\n req.abort();\n } else {\n this.log(\"ALREADY ABORTED\");\n }\n });\n }\n\n setTimeout(() => {\n if (!aborted) {\n req.send(qs);\n }\n }, this.delay);\n }).then((result) => {\n aborted = true;\n if (!ispolling) {\n this.count -= 1;\n }\n this.log('Count is %s', this.count);\n return result;\n }, (result) => {\n aborted = true;\n if (!ispolling) {\n this.count -= 1;\n }\n this.log('Count is %s', this.count);\n throw result;\n });\n }\n\n get busy() {\n return this.count > 0;\n }\n\n cancelDiagram = (b: boolean) => { };\n\n // messsage, style, format, apiVersion\n public diagram(request: DiagramRequest) {\n request.apiVersion = 1;\n this.cancelDiagram(true);\n let promise = new Promise((resolve, reject) => {\n this.cancelDiagram = resolve;\n });\n return this.send('index.php', request, promise).then((response) => {\n response.data.img = this.prefixUrl(response.data.img);\n return response;\n });\n }\n\n public user: User = {\n access: 'none',\n cancelDate: 0,\n email: '',\n expiry: 0,\n hasPassword: false,\n userid: 0,\n newAccount: false,\n oauth: [],\n paymentDate: 0,\n subscriptionid: '',\n subscribedSince: 0,\n };\n\n public authResult(response: WsdResponse): WsdResponse {\n response.data.oauth = response.data.oauth.split(',');\n this.user = response.data;\n this.log('Got auth result; email=%s', this.user.email);\n Tracker.event('signin', { email: this.user!.email, userid: this.user!.userid });\n this.emit('signed-in', this.user);\n return response;\n }\n\n public getUser() {\n return this.user;\n }\n\n receivedTo = 0;\n // start polling for server messages and emit on(\"message\", [])\n public startPolling(backoff = 0) {\n if (backoff) {\n this.log(\"Connecting in %s seconds\", backoff);\n }\n setTimeout(() => {\n this.log(\"Connecting....\");\n this.send(\"/files/monitor\", {\n clientid: this.clientid,\n ack: this.receivedTo,\n }).then((response) => {\n for (let message of response.data) {\n this.receivedTo = message[\"mid\"];\n if (message[\"type\"] === \"lostbaton\") {\n this.haveBaton = false;\n }\n }\n this.emit(\"message\", response.data);\n this.startPolling();\n }, (error) => {\n this.log(\"Connect error: \", error.message);\n switch (error.message) {\n case \"Timeout\":\n this.startPolling(0);\n break;\n case \"Gone\":\n this.emit(\"reconnect\");\n this.receivedTo = 0;\n this.startPolling(0);\n break;\n default:\n if (backoff === 0) {\n // avoid cascading failure due to everyone connecting at once.\n backoff = Math.random() * 30 / 2;\n }\n backoff = Math.min(backoff * 2, 5 * 60);\n this.startPolling(backoff);\n break;\n }\n });\n }, backoff * 1000);\n }\n\n public authenticate(email: string, password: string) {\n return this.send('/users/authenticate', {\n email,\n password,\n }).then((result) => this.authResult(result));\n }\n\n public samlAuth(email = Math.round(Math.random() * 1000000000).toString(36)) {\n location.href = Wsd.prefixUrl(\"/user/auth?sso=1&email=\" + encodeURIComponent(email));\n }\n\n public googleAuth(token: string) {\n return this.send('/users/googleAuth', {\n token,\n }).then((result) => this.authResult(result));\n }\n\n public addOauthMethod(token: string) {\n return this.send('/users/googleAuth', {\n token,\n add: 1,\n }).then((response) => {\n this.user!.oauth.push('google');\n });\n }\n\n public isLicenseValid() {\n return LICENSE_VALID === true;\n }\n\n public removeOauthMethod(method: string) {\n return this.send('/users/removeOauth', {\n method,\n }).then((response) => {\n const methods: string[] = [];\n for (let i = 0; i < this.user!.oauth.length; i++) {\n if (this.user!.oauth[i] !== method) {\n methods.push(this.user!.oauth[i]);\n }\n }\n this.user!.oauth = methods;\n });\n }\n\n public logout() {\n return this.send('/users/logout', {\n\n }).then(function (response) {\n window.location.reload();\n });\n\n }\n\n public logoutWithoutReloading() {\n return this.send('/users/logout', {\n\n });\n }\n\n public getUserInfo() {\n this.log('Requesting user info');\n return this.send('/users/info', {\n\n }).then((result) => this.authResult(result));\n }\n\n public getBaton() {\n return this.send('/files/getBaton', {}).then(() => {\n this.haveBaton = true;\n });\n }\n\n DEFAULT_TITLE = \"Untitled\";\n\n public extractTitle(text: string) {\n const re = /^\\s*title +(.+)/mi;\n //look for first line that matches title line\n const m = re.exec(text);\n if (m) {\n return m[1];\n } else {\n return this.DEFAULT_TITLE;\n }\n }\n\n public createPasswordResetToken(email: string) {\n return this.send('/users/forgotpassword', {\n email,\n });\n }\n\n public resetPassword(userid: number, token: string, password: string) {\n return this.send('/users/resetpassword', {\n userid,\n token,\n password,\n }).then((result) => this.authResult(result));\n }\n\n public addUser(email: string, password: string, nosignin?: boolean) {\n const a = this.send('/users/add', {\n email,\n password,\n });\n\n if (!nosignin) {\n a.then((r) => this.authResult(r));\n }\n\n return a;\n }\n\n getStyles(): Promise {\n if (this._styles.length) {\n return Promise.resolve(this._styles);\n }\n\n let BANNED_STYLES = {\n \"_plain\": 1,\n \"ascii\": 1,\n \"rfc\": 1,\n };\n\n return this.send(\"/styles\").then((result: WsdResponse) => {\n return result.data.filter((item: StyleInfo) => !(item.name in BANNED_STYLES)) as StyleInfo[];\n });\n }\n\n public changeUser(email: string, oldPassword: string, newPassword: string) {\n return this.send('/users/change', {\n email,\n oldpassword: oldPassword,\n newpassword: newPassword,\n test: this.TEST ? \"1\" : \"0\",\n }).then((response) => {\n if (email !== this.user!.email) {\n Tracker.event('change-email', { email, userid: this.user!.userid });\n }\n\n this.user!.email = email;\n return response;\n });\n }\n\n public cancelPayments() {\n return this.send('/users/cancelPayments', {\n test: this.TEST ? \"1\" : \"0\",\n }).then((response) => {\n this.user!.cancelDate = new Date().getTime() / 1000;\n return response;\n });\n }\n\n public setProductKey(key: string) {\n return this.send('index.php', {\n function: 'setProductKey',\n key,\n });\n }\n\n public listFolders() {\n return this.send('/project/list', {});\n }\n\n public listUsers() {\n return this.send('/users/list', {});\n }\n\n public listFiles() {\n return this.send('/files/list', {});\n }\n\n public listFolderFiles(folderid: number) {\n return this.send('/project/listFiles', {\n projectid: folderid,\n });\n }\n\n public createFile(name: string, contents: string, info: any, replace: boolean, projectid: number, open = true) {\n return this.send('/files/create', {\n name,\n contents,\n replace: replace ? '1' : '0',\n info: Url.encode(info),\n projectid,\n clientid: open ? this.clientid : \"\",\n }).then(function (response) {\n Tracker.event('save-new', { fileid: response.data.fileid, name });\n return response;\n });\n }\n\n public updateFile(fileid: number, name: string, contents: string, info: any, baseTime: number) {\n return this.send('/files/update', {\n fileid,\n name,\n contents,\n info: Url.encode(info),\n basetime: baseTime,\n }).then(function (response) {\n Tracker.event('save', { fileid, name });\n return response;\n });\n }\n\n public open(ids: { [fileid: number]: number; }) {\n let str = '';\n for (const fileid in ids) {\n if (str.length) {\n str += ',';\n }\n str += fileid + '@' + ids[fileid];\n }\n\n return this.send('/files/open', {\n add: str,\n clientid: this.clientid,\n });\n }\n\n public close(fileid: number) {\n return this.send('/files/open', {\n remove: fileid,\n clientid: this.clientid,\n });\n }\n\n public appendFile(fileid: number, cid: number | string, data: string) {\n return this.send('/files/append', {\n fileid,\n cid,\n data,\n clientid: this.clientid,\n });\n }\n\n public deleteFile(fileid: number) {\n return this.send('/files/delete', {\n fileid,\n }).then(function (response) {\n Tracker.event('delete', { fileid });\n return response;\n });\n }\n\n public renameFile(fileid: number, newname: string) {\n return this.send('/files/rename', {\n fileid,\n name: newname,\n }).then(function (response: WsdResponse) {\n Tracker.event('rename-file', { fileid, name: newname });\n return response;\n });\n }\n\n public createProject(name: string) {\n return this.send('/project/create', {\n name,\n });\n }\n\n public deleteProject(projectid: number) {\n return this.send('/project/delete', {\n projectid,\n });\n }\n\n public renameProject(projectid: number, name: string) {\n return this.send('/project/rename', {\n projectid,\n name,\n });\n }\n\n public inviteToProject(projectid: number, email: string) {\n let root = this.root;\n if (root.substr(root.length - 1) === \"/\") {\n root = root.substr(0, root.length - 1);\n }\n return this.send('/project/invite', {\n projectid,\n email,\n baseURL: root,\n });\n }\n\n public readFile(fileid: number) {\n return this.send('/files/read', {\n fileid,\n contentType: 'text',\n }).then(function (response) {\n Tracker.event('open-file', { fileid });\n return response;\n });\n }\n\n public getFileInfo(fileid: number) {\n return this.send('/files/info', {\n fileid,\n });\n }\n\n public getLink(fileid: number) {\n return this.send('/files/link', {\n fileid,\n }).then((response) => {\n response.data.url = this.prefixUrl('/files/render?link=' + response.data.link);\n return response;\n });\n }\n\n public resolveIncludes(text: string, filename: string) {\n return this.send('/files/resolveIncludes', {\n text,\n filename,\n });\n }\n\n public joinProject(token: string) {\n return this.send('/project/join', {\n token,\n });\n }\n\n public addProjectMember(projectid: number, email: string) {\n return this.send('/project/addMember', {\n projectid,\n email,\n });\n }\n\n public removeProjectMember(projectid: number, memberid: number) {\n return this.send('/project/removeMember', {\n projectid,\n memberid,\n });\n }\n\n public listProjectFiles(projectid: number) {\n return this.send('/project/listFiles', {\n projectid,\n }).then((response) => {\n return response.data.users as ProjectMember[];\n });\n }\n\n public listProjectMembers(projectid: number) {\n return this.send('/project/listMembers', {\n projectid,\n }).then((response) => {\n return response.data.users as ProjectMember[];\n });\n }\n\n public getFolderInviteLink(folder: ProjectInfo) {\n let invite = \"/#invite=\";\n invite += encodeURIComponent(folder[\"token\"]);\n invite += \"&from=\";\n invite += encodeURIComponent(this.user.email);\n invite += \"&name=\";\n invite += encodeURIComponent(folder[\"name\"]);\n return this.prefixUrl(invite);\n }\n\n\n public addProjectFile(projectid: number, fileid: number) {\n return this.send('/project/addFile', {\n projectid,\n fileid,\n });\n }\n\n public removeProjectFile(fileid: number) {\n return this.send('/project/removeFile', {\n fileid,\n });\n }\n\n public adminResetPassword(userid: number, newPassword: string) {\n return this.send('/users/change', {\n userid,\n newpassword: newPassword,\n });\n }\n\n public setConfig(key: string, value: string) {\n return this.send('/config/set', {\n key,\n value,\n });\n }\n\n public getConfig() {\n return this.send('/config/get', {}).then((response: WsdResponse) => {\n this.config = response.data;\n return this.config;\n });\n }\n\n public testLdap(username: string, password: string, ldapUri: string, ldapSearchUser: string,\n ldapSearchPassword: string, ldapSearchBase: string, ldapSearchFilter: string) {\n return this.send('/test/ldap', {\n username,\n password,\n ldapUri,\n ldapSearchUser,\n ldapSearchPassword,\n ldapSearchBase,\n ldapSearchFilter,\n });\n }\n\n public deleteUser(userid: number) {\n return this.send('/users/delete', {\n userid,\n });\n }\n\n private google = new GoogleAuth();\n googleLoaded = new SignalPromise();\n loadGoogleSignin(clientID: string) {\n return this.google.init(clientID).then(() => {\n console.log(\"GOOGLE LOADED\");\n this.googleLoaded.resolve();\n }, (error) => {\n this.googleLoaded.reject(error);\n });\n }\n\n signInGoogle() {\n return this.google.signin().then((user: GUserInfo) => {\n return this.googleAuth(user.token);\n });/*.then(null, (error:Error) => {\n console.log(error);\n alert('Error signing into Google: ' + (error.message || error));\n });*/\n }\n\n addGoogleMethod(): Promise {\n return this.google.signin().then((user) => {\n return this.addOauthMethod(user.token);\n }).then(null, (error: any) => {\n console.log(error);\n alert('Error signing into Google: ' + (error.details || error.message || error));\n throw error;\n });\n }\n\n public print(text: string, style: string, title: string) {\n const wndIn = window.open('about:blank', '_blank');\n if (wndIn === null) {\n this.log('window.open returned null');\n return;\n }\n const wnd: any = wndIn;\n this.diagram({\n message: text,\n style,\n format: 'png',\n filename: \"\",\n }).then((response) => {\n wnd.document.write('');\n wnd.document.write('' + title +\n '');\n wnd.document.write('');\n\n this.log('Document src: %s', response.data.img);\n wnd.document.write('\"); '';\n\n wnd.document.write('');\n wnd.document.close();\n wnd.focus();\n setTimeout(function () {\n wnd.print();\n wnd.close();\n }, 500);\n }, (error) => {\n wnd.close();\n });\n }\n\n public hash() {\n return Url.hash();\n }\n\n public query() {\n return Url.query();\n }\n\n public gold() {\n return 'web' in this.hash() ||\n document.location!.href.indexOf('http://www.websequencediagrams.com') === 0 ||\n document.location!.href.indexOf('https://www.websequencediagrams.com') === 0;\n }\n\n public allowSignIn() {\n return this.config.signInMethod !== \"disabled\";\n }\n\n public subscribed() {\n return !this.gold() ||\n this.user.expiry > new Date().getTime() / 1000;\n }\n\n public subscriptionPrefix(prefix: string) {\n return this.user.subscriptionid &&\n this.user.subscriptionid.substr(0, prefix.length) === prefix;\n }\n\n public isSubscribedMonthly() {\n // if the user has a current subscription and it expires less than 35 days after the payment date\n return Wsd.user.paymentDate > 0 && Wsd.user.expiry < Wsd.user.paymentDate + 35 * 24 * 60 * 60 &&\n this.subscribed();\n }\n\n public openUrl(url: string, target = '_blank') {\n if (url.length === 0 || url.charAt(0) !== '/') {\n url = '/' + url;\n }\n url = this.prefixUrl(url);\n window.open(url, target);\n }\n\n // page or image type.\n public getWsdLink(type: string, text: string, style: string, hmac: string) {\n\n class BitWriter {\n // encodes as URL-BASE64\n public str = '';\n public partial = 0;\n public partialSize = 0;\n public table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';\n\n public addBits(bits: number, size: number) {\n this.partial = (this.partial << size) | bits;\n this.partialSize += size;\n while (this.partialSize >= 6) {\n this.str += this.table.charAt((this.partial >>\n (this.partialSize - 6)) & 0x3f);\n this.partialSize -= 6;\n }\n }\n\n public finish() {\n if (this.partialSize) {\n this.str += this.table.charAt(\n (this.partial << (6 - this.partialSize)) & 0x3f);\n this.partialSize = 0;\n this.partial = 0;\n }\n }\n }\n\n function encodeBase64(str: string) {\n const writer = new BitWriter();\n for (let n = 0; n < str.length; n++) {\n writer.addBits(str.charCodeAt(n), 8);\n }\n\n writer.finish();\n\n return writer.str;\n }\n\n function encodeUtf8(str: string): string {\n const Len = str.length;\n\n let lengthRequired = 0;\n for (let point = 0, nextcode = 0, i = 0; i !== Len;) {\n point = str.charCodeAt(i), i += 1;\n if (point >= 0xD800 && point <= 0xDBFF) {\n if (i === Len) {\n lengthRequired += 3;\n }\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n nextcode = str.charCodeAt(i);\n if (nextcode >= 0xDC00 && nextcode <= 0xDFFF) {\n point = (point - 0xD800) * 0x400 + nextcode - 0xDC00 + 0x10000;\n i += 1;\n if (point > 0xffff) {\n lengthRequired += 4;\n continue;\n }\n } else {\n lengthRequired += 3;\n }\n }\n if (point <= 0x007f) {\n lengthRequired += 1;\n } else if (point <= 0x07ff) {\n lengthRequired += 2;\n } else {\n lengthRequired += 3;\n }\n }\n\n let resArr = new Uint8Array(lengthRequired);\n let resPos = -1;\n for (let point = 0, nextcode = 0, i = 0; i !== Len;) {\n point = str.charCodeAt(i), i += 1;\n if (point >= 0xD800 && point <= 0xDBFF) {\n if (i === Len) {\n resArr[resPos += 1] = 0xef/*0b11101111*/; resArr[resPos += 1] = 0xbf/*0b10111111*/;\n resArr[resPos += 1] = 0xbd/*0b10111101*/; break;\n }\n // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n nextcode = str.charCodeAt(i);\n if (nextcode >= 0xDC00 && nextcode <= 0xDFFF) {\n point = (point - 0xD800) * 0x400 + nextcode - 0xDC00 + 0x10000;\n i += 1;\n if (point > 0xffff) {\n resArr[resPos += 1] = (0x1e/*0b11110*/ << 3) | (point >>> 18);\n resArr[resPos += 1] = (0x2/*0b10*/ << 6) | ((point >>> 12) & 0x3f/*0b00111111*/);\n resArr[resPos += 1] = (0x2/*0b10*/ << 6) | ((point >>> 6) & 0x3f/*0b00111111*/);\n resArr[resPos += 1] = (0x2/*0b10*/ << 6) | (point & 0x3f/*0b00111111*/);\n continue;\n }\n } else {\n resArr[resPos += 1] = 0xef/*0b11101111*/; resArr[resPos += 1] = 0xbf/*0b10111111*/;\n resArr[resPos += 1] = 0xbd/*0b10111101*/; continue;\n }\n }\n if (point <= 0x007f) {\n resArr[resPos += 1] = (0x0/*0b0*/ << 7) | point;\n } else if (point <= 0x07ff) {\n resArr[resPos += 1] = (0x6/*0b110*/ << 5) | (point >>> 6);\n resArr[resPos += 1] = (0x2/*0b10*/ << 6) | (point & 0x3f/*0b00111111*/);\n } else {\n resArr[resPos += 1] = (0xe/*0b1110*/ << 4) | (point >>> 12);\n resArr[resPos += 1] = (0x2/*0b10*/ << 6) | ((point >>> 6) & 0x3f/*0b00111111*/);\n resArr[resPos += 1] = (0x2/*0b10*/ << 6) | (point & 0x3f/*0b00111111*/);\n }\n }\n let out = \"\";\n for (let i = 0; i < resArr.length; i++) {\n out += String.fromCharCode(resArr[i]);\n }\n return out;\n }\n\n function encodeNumber(num: number) {\n // encodes a number in only as many bytes as required, 7 bits at a time.\n // bit 8 is used to indicate whether another byte follows.\n if (num >= 0x3FFF) {\n return String.fromCharCode(0x80 | ((num >> 14) & 0x7f)) +\n String.fromCharCode(0x80 | ((num >> 7) & 0x7f)) +\n String.fromCharCode(num & 0x7f);\n } else if (num >= 0x7F) {\n return String.fromCharCode(0x80 | ((num >> 7) & 0x7f)) +\n String.fromCharCode(num & 0x7f);\n } else {\n return String.fromCharCode(num);\n }\n }\n\n function encodeLz77(input: string) {\n const MinStringLength = 4;\n\n let output = '';\n let pos = 0;\n const hash: { [key: string]: number[]; } = {};\n\n // set last pos to just after the last chunk.\n const lastPos = input.length - MinStringLength;\n let i;\n\n for (i = MinStringLength; i < input.length; i++) {\n const subs = input.substr(i - MinStringLength, MinStringLength);\n if (hash[subs] === undefined) {\n hash[subs] = [];\n }\n hash[subs].push(i - MinStringLength);\n //document.write(\"subs[\" + subs + \"]=\" + (pos - MinStringLength) + \"
\");\n }\n\n // loop until pos reaches the last chunk.\n while (pos < lastPos) {\n\n // search start is the current position minus the window size, capped\n // at the beginning of the string.\n let matchLength = MinStringLength;\n let foundMatch = false;\n const bestMatch = { distance: 0, length: 0 };\n const prefix = input.substr(pos, MinStringLength);\n const matches = hash[prefix];\n\n // loop until the end of the matched region reaches the current\n // position.\n //while ((searchStart + matchLength) < pos) {\n if (matches !== undefined) {\n for (i = 0; i < matches.length; i++) {\n const searchStart = matches[i];\n if (searchStart + matchLength >= pos) {\n break;\n }\n\n while (searchStart + matchLength < pos) {\n // check if string matches.\n const isValidMatch = (\n (input.substr(searchStart, matchLength) === input.substr(pos, matchLength))\n );\n if (isValidMatch) {\n // we found at least one match. try for a larger one.\n const realMatchLength = matchLength;\n matchLength++;\n if (foundMatch && (realMatchLength > bestMatch.length)) {\n bestMatch.distance = pos - searchStart - realMatchLength;\n bestMatch.length = realMatchLength;\n }\n foundMatch = true;\n } else {\n break;\n }\n }\n }\n }\n\n if (bestMatch.length) {\n output += String.fromCharCode(0) +\n encodeNumber(bestMatch.distance) +\n encodeNumber(bestMatch.length);\n\n pos += bestMatch.length;\n } else {\n if (input.charCodeAt(pos) !== 0) {\n output += input.charAt(pos);\n } else {\n output += String.fromCharCode(0) +\n String.fromCharCode(0);\n }\n pos++;\n }\n }\n return output + input.slice(pos).replace(/\\x00/g, '\\x00\\x00');\n }\n\n style = '&s=' + style;\n\n text = encodeBase64(encodeLz77(encodeUtf8(text)));\n let str = 'lz=' + text + style;\n\n if (hmac && hmac !== '') {\n str += '&h=' + hmac;\n }\n\n if (type === 'page') {\n return this.prefixUrl('/?' + str);\n } else {\n return this.prefixUrl('/cgi-bin/cdraw?' + str);\n }\n }\n\n public buy(token: StripeToken, product: string, description: string, test: boolean, paymentIntent?: string) {\n let FNV = 16777619;\n let tagno = FNV;\n let email = token.email || this.user.email;\n\n function imul(a: number, b: number) {\n var aHi = (a >>> 16) & 0xffff;\n var aLo = a & 0xffff;\n var bHi = (b >>> 16) & 0xffff;\n var bLo = b & 0xffff;\n // the shift by 0 fixes the sign on the high part\n // the final |0 converts the unsigned value into a signed value\n return ((aLo * bLo) + (((aHi * bLo + aLo * bHi) << 16) >>> 0) | 0);\n }\n\n\n for (let i = 0; i < email.length; i++) {\n tagno = (tagno ^ email.charCodeAt(i)) | 0;\n tagno = imul(tagno, FNV) | 0;\n }\n\n let headers: any = {};\n /*\n let et = Math.abs(tagno).toString(16);\n var digits =\n \"abcdef0123456789\";\n\n while (et.length < 32) {\n et += digits[Math.floor(Math.random() * digits.length)];\n }\n headers[window.alert.name[2].toUpperCase() + window.alert.name[4] + window.HTMLImageElement.name.substr(6, 2)] = et;\n */\n return this.send('/users/buy', {\n stripeToken: token.id,\n product,\n email: token.email || this.user.email,\n description,\n customer: this.user.subscriptionid ?\n this.user.subscriptionid.substr(3) : '',\n test: test ? 1 : 0,\n paymentIntent: paymentIntent || \"\",\n }, undefined, headers);\n }\n\n public isWebEdition(hash = Url.hash()) {\n return 'web' in hash ||\n document.location!.href.indexOf('http://www.websequencediagrams.com') === 0 ||\n document.location!.href.indexOf('https://www.websequencediagrams.com') === 0;\n }\n\n\n // Return true, if based on the url, we should start in the app rather than the\n // buy page.\n shouldStartInApp() {\n let query = Url.query();\n let hash = Url.hash();\n\n return window.location.pathname === \"/app\" ||\n !this.isWebEdition(hash) ||\n window.location.pathname !== '/about' ||\n (\"lz\" in query) ||\n (\"invite\" in hash) ||\n (\"open\" in hash) ||\n (\"browse\" in hash) ||\n (\"token\" in query);\n }\n\n shouldRedirectToApp(query: any, hash: any) {\n return Wsd.isWebEdition(hash) && window.location.pathname !== \"/app\" &&\n window.location.pathname !== \"/about\" && (\n \"open\" in hash ||\n \"lz\" in query ||\n \"invite\" in hash ||\n \"browse\" in hash ||\n \"token\" in query\n );\n }\n\n public download(options: ExportOptions) {\n if (options.format === \"txt\") {\n var element = document.createElement('a');\n element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(options.text));\n element.setAttribute('download', options.filename);\n\n element.style.display = 'none';\n document.body.appendChild(element);\n\n element.click();\n\n document.body.removeChild(element);\n return new Promise((resolve, reject) => {\n resolve({\n data: '',\n response: '',\n status: 0,\n statusText: ''\n });\n });\n }\n\n return this.send(\"index.php\", {\n style: options.style || \"default\",\n message: options.text,\n paper: options.paper,\n landscape: options.landscape ? \"1\" : \"0\",\n filename: options.filename,\n ownFilename: options.ownFilename,\n format: options.format,\n scale: options.scale || 100,\n apiVersion: 1,\n ietf: options.ietf ? \"1\" : \"0\",\n }).then((response: any) => {\n this.openUrl('index.php' + response.data.img, '_self');\n });\n }\n}\n\nfunction decodeBase64(input: string): string {\n return atob(input.replace(/\\-/g, \"+\").replace(/_/g, \"/\"));\n}\n\ninterface pint {\n n: number;\n}\n\nfunction decodeNumber(str: string, pos: pint): number {\n let ret = 0;\n while (pos.n < str.length) {\n let ch = str.charCodeAt(pos.n);\n pos.n++;\n ret = (ret << 7) | (ch & 0x7f);\n if ((ch & 0x80) == 0) {\n break;\n }\n }\n\n return ret;\n}\n\nfunction decodeLz77(input: string): string {\n let output = \"\";\n let pos = { n: 0 };\n\n while (pos.n < input.length) {\n let ch = input.charCodeAt(pos.n);\n if (ch !== 0) {\n output += String.fromCharCode(ch);\n pos.n++;\n } else if (pos.n + 1 < input.length) {\n let nextChar = input.charCodeAt(pos.n + 1);\n if (nextChar != 0) {\n pos.n++;\n let distance = decodeNumber(input, pos);\n let length = decodeNumber(input, pos);\n let p = output.length - distance - length;\n if (p > output.length || p < 0 || length < 0 ||\n p + length > output.length) {\n console.log(\"distance=%s length=%s p=%s\", distance, length, p);\n return \"decode error\";\n }\n output += output.substr(output.length - distance - length, length);\n } else {\n output += String.fromCharCode(0);\n pos.n += 2;\n }\n } else {\n break;\n }\n }\n return output;\n}\n\nfunction decodeUtf8(input: string): string {\n var output = \"\";\n for (var i = 0; i < input.length; i++) {\n const byte1 = input.charCodeAt(i);\n if ((byte1 & 0x80) === 0) { // 1-byte or null\n output += String.fromCharCode(byte1);\n } else if ((byte1 & 0xe0) === 0xc0) { // 2-byte\n const byte2 = input.charCodeAt(++i) & 0x3f;\n output += String.fromCharCode(((byte1 & 0x1f) << 6) | byte2);\n } else if ((byte1 & 0xf0) === 0xe0) { // 3-byte\n const byte2 = input.charCodeAt(++i) & 0x3f;\n const byte3 = input.charCodeAt(++i) & 0x3f;\n output += String.fromCharCode(((byte1 & 0x1f) << 12) | (byte2 << 6) | byte3);\n } else if ((byte1 & 0xf8) === 0xf0) { // 4-byte\n const byte2 = input.charCodeAt(++i) & 0x3f;\n const byte3 = input.charCodeAt(++i) & 0x3f;\n const byte4 = input.charCodeAt(++i) & 0x3f;\n\n // this can be > 0xffff, so possibly generate surrogates\n let codepoint = ((byte1 & 0x07) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4;\n if (codepoint > 0xffff) {\n // codepoint &= ~0x10000;\n codepoint -= 0x10000;\n output += String.fromCharCode((codepoint >>> 10) & 0x3ff | 0xd800);\n codepoint = 0xdc00 | codepoint & 0x3ff;\n }\n output += String.fromCharCode(codepoint);\n } else {\n // invalid initial byte\n }\n }\n\n return output;\n}\n\nfunction decodeLz(lz: string): string {\n try {\n return decodeUtf8(decodeLz77(decodeBase64(lz)));\n } catch (e) {\n console.log(\"CAUGHT ERROR: \", e);\n console.log(\"string was \", lz);\n return \"decode error\";\n }\n}\n\ndeclare let StripeCheckout: any | null;\ndeclare let Stripe: any | null;\n\nexport interface Product {\n name: string; // name in stripe\n amount: number; // in pennies\n description: string; // Description of product\n buttonLabel: string; // eg. \"Subscribe\" or \"Pay $100\"\n}\n\nclass CancelError extends Error { };\n\nclass PaymentClass {\n public KEY: string;\n public handler: any;\n private stripe: any;\n public test: boolean;\n public log = log.create('STRIPE');\n public enabled: false;\n\n constructor() {\n this.test = 'test' in Url.hash();\n if (this.test) {\n this.KEY = 'pk_test_xvSUgrbDGGq7Fi68TOnae0h0';\n } else {\n this.KEY = 'pk_live_X7i21IAu15PTBSaE0qL6vJCD';\n }\n\n window.addEventListener(\"load\", () => {\n if (typeof StripeCheckout !== 'undefined') {\n this.handler = StripeCheckout.configure({\n key: this.KEY,\n //image: '/img/documentation/checkout/marketplace.png',\n locale: 'auto',\n allowRememberMe: false,\n });\n }\n\n if (typeof Stripe !== \"undefined\") {\n this.stripe = Stripe(this.KEY);\n }\n });\n }\n\n isTest() {\n return this.test;\n }\n\n public buy(product: Product, requireAddress = false, prompt?: WsdDialog) {\n let cancelled = true;\n return new Promise((resolve, reject) => {\n this.log('Buy: %s for %s', product.name, product.amount);\n if (!this.handler) {\n reject(new Error('Stripe could not be loaded.'));\n return;\n }\n this.handler.open({\n name: 'WebSequenceDiagrams',\n description: product.description,\n amount: product.amount,\n email: Wsd.getUser().email,\n panelLabel: product.buttonLabel,\n billingAddress: requireAddress,\n zipCode: requireAddress,\n token: async (token: StripeToken) => {\n cancelled = false;\n if (prompt) {\n prompt.open({\n title: \"Upgrading\",\n cancel: false,\n message: \"Please wait\"\n });\n prompt.setBusy(true);\n }\n try {\n\n let result = await Wsd.buy(token, product.name, product.description, this.test);\n\n if (result.data.status != \"active\" || result.data.status != \"complete\") {\n let stripeResponse = await this.stripe.confirmCardPayment(\n result.data.clientSecret\n );\n\n if (stripeResponse.error) {\n // Show `result.error.message` in payment form\n throw stripeResponse.error;\n } else {\n // The card action has been handled\n // The PaymentIntent can be confirmed again on the server\n // call method with result.paymentIntent.id\n\n result = await Wsd.buy(token, product.name, product.description, this.test, stripeResponse.paymentIntent.id);\n\n resolve(result);\n }\n } else {\n resolve(result);\n }\n } catch (e) {\n console.log(\"Got an error: \", (e as any).message);\n reject(e);\n\n } finally {\n if (prompt) {\n prompt.close();\n }\n }\n },\n closed: () => {\n this.log('Stripe closed. Cancelled=%s', cancelled);\n if (cancelled) {\n reject(new CancelError('User cancelled'));\n }\n },\n });\n });\n }\n\n public isCancelError(error: Error) {\n // instanceof in Typescript for errors is broken\n return error.message === \"User cancelled\";\n }\n\n public updateStripeCreditCard() {\n let cancelled = true;\n return new Promise((resolve, reject) => {\n if (!this.handler) {\n reject(new Error('Stripe could not be loaded.'));\n return;\n }\n this.handler.open({\n name: 'WebSequenceDiagrams',\n description: 'Update card details',\n panelLabel: 'Update card details',\n email: Wsd.getUser().email,\n billingAddress: true,\n token: (token: StripeToken) => {\n cancelled = false;\n Wsd.buy(token, 'update-card-details', 'update-card-details', this.test).then(resolve, reject);\n },\n\n closed: () => {\n if (cancelled) {\n reject(new CancelError('User cancelled'));\n }\n },\n });\n });\n }\n}\n\nexport let Wsd = new WsdClass();\nexport let Payment = new PaymentClass();\n\ninterface Option {\n name: string,\n value: string;\n}\n\ninterface Input {\n name?: string; // what it's called in getValue()\n label?: string;\n value?: string;\n options?: Option[];\n password?: boolean;\n multiline?: boolean;\n}\n\nexport interface PromptParams {\n title?: string; // WebSequenceDiagrams\n message: string;\n action?: string; // OK\n cancel?: boolean; // Allow cancel. Default true\n\n input?: Input[];\n}\n\nexport interface WsdDialog {\n open(params: PromptParams, onOK?: (value: string) => void): void;\n close(): void;\n setError(error: string): void;\n setBusy(busy: boolean): void;\n getValue(name: string): string;\n}\n\ntype PromptFn = (params: PromptParams) => Promise;\n\n\nexport type Paper = \"letter\" | \"a4\" | \"11x17\" | \"a1\" | \"a2\" | \"a3\" | \"legal\";\n\n/*\nUsage:\nCall start()\n\nEvents:\nbrowse-files: You should show the file browser. Optional parameter is the folderid to open.\nsign-in (message): You should show the sign in dialog with the special message.\n*/\nexport class WsdApp extends EventEmitter {\n log = log.create(\"WSDAPP\");\n\n constructor() {\n super();\n }\n\n config = WSDCONFIG;\n prompt: WsdDialog;\n\n // last invite email used, to save the user typing it again\n inviteEmail: string = \"\";\n\n // requested product to purchase when waiting for sign in\n requestedProduct: Product | null = null;\n\n private openFiles = new FileStorage();\n\n getOpenFiles(viewer?: FileViewer) {\n if (viewer) {\n this.openFiles.setFileViewer(viewer);\n }\n return this.openFiles;\n }\n\n private fileModel: WsdFileModel | null = null;\n setFileModel(fileModel: WsdFileModel) {\n this.fileModel = fileModel;\n }\n\n notifyFileCreated(file: FileInfo) {\n this.log(\"Notify file created called\");\n if (this.fileModel) {\n this.log(\"Telling filemodel\");\n this.fileModel.notifyFileCreate(file);\n }\n }\n\n start(prompt: WsdDialog) {\n this.log(\"Wsd.start()\");\n if (!prompt) {\n throw new Error(\"WsdApp.start(): null prompt\");\n }\n this.prompt = prompt;\n function hideSplash() {\n let splash = document.getElementById(\"splash\") as any;\n if (splash) {\n splash.style.display = 'none';\n }\n }\n\n // if we have certain items in the hash, we should start in the app.\n const query = Url.query();\n const hash = Url.hash();\n\n if (Wsd.shouldRedirectToApp(query, hash)) {\n this.log(\"Redirecting to /app\");\n window.location.pathname = \"/app\";\n return;\n }\n\n if (this.config.allowGoogleSignIn && this.config.signInMethod === 'user-managed') {\n Wsd.loadGoogleSignin(this.config.googleClientId);\n }\n\n Wsd.on(\"signed-in\", () => {\n this.onFirstSignedIn();\n });\n\n // get the user info. then,\n this.log('GetUserInfo');\n\n if (\"delay\" in hash) {\n let delay = parseFloat(hash[\"delay\"]);\n if (delay) {\n this.log(\"Set delay to %s\", delay);\n Wsd.delay = delay;\n }\n }\n\n // if \"resetPassword\" is in the query string, then show the\n // reset password screen.\n if ('resetpassword' in query && \"userid\" in query && \"token\" in query) {\n hideSplash();\n this.resetPassword(parseFloat(query[\"userid\"]), query[\"token\"]);\n } else {\n Wsd.getUserInfo().then(() => {\n hideSplash();\n this.onInfoChecked(query, hash);\n\n }, (error: Error) => {\n console.log(error);\n hideSplash();\n this.onInfoChecked(query, hash);\n });\n }\n\n Wsd.getConfig().then((response: WsdConfig) => {\n this.config = response;\n });\n\n this.openFiles.on(\"conflict\", (file: FileInfo) => {\n this.prompt.open({\n title: \"Conflict\",\n message: \"A conflict was detected. The file will be reopened.\",\n cancel: false,\n }, () => {\n this.prompt.close();\n this.openFiles.close(file);\n this.openFiles.add(file.fileid);\n });\n });\n }\n\n onInfoChecked(query: any, hash: any) {\n this.log(\"onInfoChecked()\");\n // we have checked if the user has signed in. \n // maybe they did and maybe they didn't.\n\n // if license==new is in the query,\n // show the product key dialog.\n if (query.license === 'new' || !Wsd.isLicenseValid()) {\n this.updateProductKey();\n }\n\n // if we are not signed in, and an invite was requested, \n if (Wsd.user.userid === 0) {\n if (\"invite\" in hash) {\n this.emit(\"sign-in\", \"Please sign in to accept the invitation to the shared folder.\");\n } else if (\"browse\" in hash) {\n this.emit(\"sign-in\", \"Please sign in to view your files.\");\n } else if (\"open\" in hash) {\n this.emit(\"sign-in\", \"Please sign in to view your files.\");\n }\n\n this.openFiles.start();\n }\n\n if (query[\"lz\"]) {\n let text = decodeLz(query[\"lz\"]);\n this.openFiles.create(\n Wsd.extractTitle(text),\n text,\n query[\"s\"] || \"default\"\n );\n }\n }\n\n private alreadySignedIn = false;\n onFirstSignedIn() {\n this.log(\"onFirstSignedIn()\");\n if (this.alreadySignedIn) {\n return;\n }\n this.alreadySignedIn = true;\n\n const query = Url.query();\n const hash = Url.hash();\n\n // if invite is in the hash,\n if (\"invite\" in hash && \"from\" in hash && \"name\" in hash) {\n let invite = hash[\"invite\"];\n let from = hash[\"from\"];\n let name = hash[\"name\"];\n\n // remove the hash from the query.\n delete hash[\"invite\"];\n delete hash[\"from\"];\n delete hash[\"name\"];\n window.location.hash = Url.encode(hash);\n\n this.acceptInvite(invite, from, name);\n }\n\n // if browse is in the hash, and the user is signed in,\n // show the file browser.\n if (\"browse\" in hash) {\n this.emit(\"browse-files\", 0);\n }\n\n if (\"open\" in hash) {\n Url.deleteHashValue(\"open\");\n // if open is in the hash,\n // when done, try to open the file and handle errors.\n this.openFile(parseFloat(hash[\"open\"]));\n }\n\n this.log(\"Buy check\");\n if (\"buy\" in hash && this.requestedProduct) {\n this.log(\"Buy check ok\");\n Url.deleteHashValue(\"buy\");\n this.buy(this.requestedProduct);\n }\n\n Wsd.startPolling();\n Wsd.getBaton();\n this.openFiles.start();\n }\n\n acceptInvite(token: string, email: string, folderName: string) {\n // prompt for invite acceptance.\n this.prompt.open({\n title: \"Invitation to shared folder\",\n message: email + \" invites you to add the folder \\\"\" + folderName + \"\\\" to your list of shared folders.\",\n action: \"Accept\"\n }, (key: string) => {\n this.prompt.setBusy(true);\n Wsd.joinProject(token).then((response) => {\n this.prompt.close();\n this.log(\"Joined projectid %s\", response.data.projectid);\n this.emit(\"browse-files\", response.data.projectid);\n }, (error: Error) => {\n this.prompt.setError(error.message);\n });\n });\n }\n\n resetPassword(userid: number, token: string) {\n this.prompt.open({\n title: \"Reset password\",\n message: \"Please enter the new password to use.\",\n action: \"Change\",\n\n input: [{\n name: \"password\",\n label: \"New password\",\n value: '',\n password: true\n }, {\n name: \"password2\",\n label: \"Retype new password\",\n value: '',\n password: true\n }]\n }, () => {\n let password = this.prompt.getValue(\"password\");\n let password2 = this.prompt.getValue(\"password2\");\n if (password !== password2) {\n this.prompt.setError(\"Passwords do not match.\");\n return;\n }\n this.prompt.setBusy(true);\n Wsd.resetPassword(userid, token, password).then(() => {\n this.prompt.close();\n }, (error) => {\n this.prompt.setError(error.message);\n });\n });\n }\n\n updateProductKey() {\n this.prompt.open({\n title: \"Product key\",\n action: \"Verify\",\n message: \"Please paste your product key\",\n input: [{\n label: \"Product key\",\n value: \"\",\n multiline: true\n }]\n }, (key: string) => {\n this.prompt.setBusy(true);\n Wsd.setProductKey(key).then(() => {\n window.location.href = Wsd.prefixUrl(\"status.html\");\n }, (error) => {\n this.prompt.setError(error.message);\n });\n });\n }\n\n openFile(fileid: number) {\n this.openFiles.add(fileid);\n }\n\n saveFile(file: FileInfo) {\n if (file.fileid > 0) {\n // nothing to do.\n return;\n }\n\n this.prompt.open({\n title: \"Save new file\",\n action: \"Save\",\n message: \"Please confirm the name of the file.\",\n input: [{\n label: \"File name\",\n value: file.name,\n }]\n }, (name: string) => {\n this.prompt.setBusy(true);\n this.openFiles.saveNew(file, name).then(() => {\n this.log(\"openFiles.save promise resolved success\");\n this.prompt.close();\n this.notifyFileCreated(file);\n }, (error: Error) => {\n this.log(\"openFiles.save promise resolved with error.\");\n this.prompt.setError(error.message);\n });\n });\n }\n\n closeFile(file: FileInfo) {\n if (file.fileid <= 0) {\n this.prompt.open({\n title: \"Discard file?\",\n action: \"Discard\",\n message: \"This file is not saved. Do you want to discard it?\"\n }, () => {\n this.prompt.close();\n this.openFiles.close(file);\n });\n } else {\n this.openFiles.close(file);\n }\n }\n\n signOut() {\n // check if any unsaved files\n let unsaved = false;\n for (let file of this.openFiles.files) {\n unsaved = unsaved || file.dirty;\n }\n\n let signout = () => {\n this.openFiles.signout();\n Wsd.logout();\n this.alreadySignedIn = false;\n };\n\n if (!unsaved) {\n signout();\n } else {\n this.prompt.open({\n title: \"Unsaved files\",\n message: \"Do you want to sign out and lose your unsaved work?\",\n action: \"Sign out\"\n }, () => {\n signout();\n });\n }\n }\n\n renameParticipant(viewer: FileViewer, file: FileInfo) {\n // get the file text and selection\n let text = viewer.getFileText(file);\n let selection = viewer.getFileSelection(file).toRowColumn(text).start;\n\n // parse it\n let parsed = new ParsedDiagram(text);\n let underCursor = parsed.getParticipantUnderPoint(selection.row, selection.column);\n let participants = parsed.getParticipants();\n if (participants.length === 0) {\n this.prompt.open({\n title: \"Rename participant\",\n message: \"No participants were found in the diagram text.\",\n cancel: false\n }, () => {\n this.prompt.close();\n });\n return;\n }\n\n let options: Option[] = [];\n for (let participant of participants) {\n options.push({\n name: participant,\n value: participant\n });\n }\n\n // pop up dialog\n this.prompt.open({\n title: \"Rename participant\",\n action: \"Rename\",\n message: \"Choose a participant to rename.\",\n input: [{\n name: \"from\",\n label: \"Old name\",\n value: underCursor ? underCursor : participants[0],\n options: options\n }, {\n name: \"to\",\n label: \"New name\",\n value: \"\"\n }]\n }, () => {\n let fromPart = this.prompt.getValue(\"from\");\n let toPart = this.prompt.getValue(\"to\");\n this.log(\"Rename %s->%s\", fromPart, toPart);\n if (toPart.length === 0) {\n this.prompt.setError(\"Please enter a new name.\");\n return;\n }\n\n parsed.renameParticipant(fromPart, toPart);\n let selection = viewer.getFileSelection(file);\n viewer.setFileText(file, parsed.toString(), selection);\n this.prompt.close();\n });\n }\n\n renameFile(file: FileInfo) {\n this.prompt.open({\n title: \"Rename file\",\n action: \"Rename\",\n message: \"Please enter the new name for the file.\",\n input: [{\n label: \"Filename\",\n value: file.name\n\n }]\n }, (newName: string) => {\n file.name = newName;\n if (file.fileid > 0) {\n this.prompt.setBusy(true);\n Wsd.renameFile(file.fileid, newName).then((response) => {\n this.prompt.close();\n this.openFiles.notifyRename(file.fileid, file.name);\n }, (error: Error) => {\n this.prompt.setError(error.message);\n });\n } else {\n this.openFiles.notifyRename(file.fileid, file.name);\n this.prompt.close();\n }\n });\n }\n\n\n buy(product: Product) {\n this.log(\"buy(%s)\", product.name);\n return new Promise((resolve, reject) => {\n if (Wsd.user.userid === 0 && product.name !== \"team\") {\n Url.replaceHashValue(\"buy\", product.name);\n this.emit(\"sign-in\", \"Please sign in or create an account to purchase.\");\n this.requestedProduct = product;\n } else if (Wsd.subscribed() && product.name !== \"team\") {\n this.prompt.open({\n title: \"Already purchased\",\n message: \"You cannot make a purchase while already active. Please wait for your current subscription to run out or contact support@websequencediagrams.com\",\n cancel: false\n });\n reject(new Error(\"Already purchased\"));\n } else {\n Payment.buy(product, false, this.prompt).then(() => {\n Wsd.getUserInfo();\n this.prompt.open({\n title: \"Account upgraded\",\n message: \"Thank-you for your purchase.\",\n cancel: false\n }, () => {\n resolve(true);\n });\n }, (error: Error) => {\n if (!Payment.isCancelError(error)) {\n this.prompt.open({\n title: \"Error during purchase\",\n message: \"Error: \" + error.message + \" Please contact support@websequencediagrams.com\",\n cancel: false\n }, () => {\n this.prompt.close();\n reject(error);\n });\n } else {\n reject(error);\n }\n });\n }\n });\n }\n\n openFromComputer() {\n let onSelected = () => {\n if (input.files === null || input.files.length === 0) {\n return;\n }\n\n var reader = new FileReader();\n let file = input.files[0];\n\n // Closure to capture the file information.\n reader.onload = () => {\n this.log(\"file.openFromComputer() onload\");\n let name = file.name;\n let contents = reader.result as string;\n this.openFiles.create(name, contents, \"default\").dirty = false;\n };\n\n // Read in the image file as a data URL.\n reader.readAsText(file);\n };\n\n let input: HTMLInputElement = document.getElementById(\"uploadInput\") as HTMLInputElement;\n if (!input) {\n input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"file\");\n input.setAttribute(\"accept\", \".txt\");\n (input.style as any).display = \"none\";\n document.body.appendChild(input);\n input.addEventListener(\"change\", onSelected);\n }\n\n input.click();\n }\n\n duplicateFile(file: FileInfo) {\n this.prompt.open({\n title: \"Copy document\",\n message: \"\",\n input: [{\n name: \"name\",\n label: \"Name\",\n value: \"Copy of \" + file.name\n }]\n }, () => {\n this.prompt.close();\n let name = this.prompt.getValue(\"name\");\n let text = this.openFiles.getHead(file);\n\n if (file.fileid > 0) {\n Wsd.createFile(name, text, file.info, false, 0, false).then((response) => {\n this.openFile(response.data.fileid);\n }, (error) => {\n this.prompt.setError(error.message);\n });\n } else {\n this.openFiles.create(name, text, file.info.style);\n }\n });\n }\n\n newTab() {\n window.open(location.href, \"_blank\");\n }\n}\n\nexport class WsdSignInModel {\n constructor(private app: WsdApp) {\n\n }\n\n error = \"\";\n busy = false;\n\n authenticate(username: string, password: string) {\n this.error = \"\";\n this.busy = true;\n return Wsd.authenticate(username, password).then(() => {\n this.busy = false;\n }, (error) => {\n this.error = error.message;\n this.busy = false;\n if (this.error === 'saml required') {\n Wsd.samlAuth(username);\n // does not return, goes to new page.\n }\n });\n }\n\n addUser(username: string, password: string, password2: string) {\n if (username === \"\") {\n this.error = \"Please enter an email address.\";\n return Promise.reject(new Error());\n } else if (password !== password2) {\n this.error = \"Passwords do not match\";\n return Promise.reject(new Error());\n } else if (password === \"\") {\n this.error = \"Password is blank.\";\n return Promise.reject(new Error());\n }\n\n this.error = \"\";\n this.busy = true;\n return Wsd.addUser(username, password).then(() => {\n this.busy = false;\n }, (error) => {\n this.busy = false;\n this.error = error.message;\n });\n }\n\n forgotPassword(username: string) {\n if (!Wsd.gold()) {\n this.app.prompt.open({\n title: \"Private instance\",\n message: \"Please contact an administrator to reset your password.\",\n cancel: false\n });\n return;\n }\n\n if (username === \"\") {\n this.error = \"Please enter your email first.\";\n return;\n }\n\n this.busy = true;\n return Wsd.createPasswordResetToken(username).then(() => {\n this.busy = false;\n this.error = \"An email has been sent to your address with instructions.\";\n this.app.prompt.open({\n message: this.error,\n cancel: false\n });\n }, (error) => {\n this.busy = false;\n this.error = error.toString();\n if (this.error === 'Error: No such user') {\n this.error = 'The email was not found. Are there any other emails you may have used to sign in?';\n }\n this.app.prompt.open({\n message: this.error,\n cancel: false\n });\n });\n }\n}\n\nexport class WsdAccountModel {\n constructor(private app: WsdApp) {\n\n }\n\n busy = false;\n error = \"\";\n\n updateEmail() {\n let prompt = this.app.prompt;\n this.app.prompt.open({\n title: \"Update email\",\n message: \"Please enter the new email address to use.\",\n action: \"Update\",\n\n input: [{\n name: \"email\",\n label: \"New Email\",\n value: Wsd.user.email\n }, {\n name: \"password\",\n label: \"Current password\",\n value: '',\n password: true\n }]\n }, () => {\n let email = prompt.getValue(\"email\");\n let password = prompt.getValue(\"password\");\n prompt.setBusy(true);\n Wsd.changeUser(email, password, password).then(() => {\n prompt.close();\n }, (error) => {\n prompt.setError(error.message);\n });\n });\n }\n\n updatePassword() {\n let prompt = this.app.prompt;\n this.app.prompt.open({\n title: \"Change password\",\n message: \"Please enter the new password to use.\",\n action: \"Change\",\n\n input: [{\n name: \"current\",\n label: \"Current password\",\n value: '',\n password: true\n }, {\n name: \"password\",\n label: \"New password\",\n value: '',\n password: true\n }, {\n name: \"password2\",\n label: \"Retype new password\",\n value: '',\n password: true\n }]\n }, () => {\n let current = prompt.getValue(\"current\");\n let password = prompt.getValue(\"password\");\n let password2 = prompt.getValue(\"password2\");\n if (password !== password2) {\n prompt.setError(\"Passwords do not match.\");\n return;\n }\n prompt.setBusy(true);\n Wsd.changeUser(Wsd.user.email, current, password).then(() => {\n prompt.close();\n }, (error) => {\n prompt.setError(error.message);\n });\n });\n\n }\n\n updateProductKey() {\n this.app.updateProductKey();\n }\n\n expiryDate() {\n return new Date(Wsd.getUser().expiry * 1000).toLocaleDateString();\n }\n\n hasGoogle() {\n return Wsd.user.oauth.join(',').indexOf('google') > -1;\n }\n\n subscribed() {\n const now = new Date().getTime() / 1000;\n return Wsd.user.expiry > now;\n }\n\n expired() {\n const now = new Date().getTime() / 1000;\n return Wsd.user.expiry && Wsd.user.expiry < now;\n }\n\n hasReceipts() {\n return Wsd.user.subscriptionid.indexOf(\"I-\") === 0 ||\n Wsd.user.subscriptionid.indexOf(\"ST-\") === 0;\n }\n\n specialUser() {\n return (Wsd.user.subscriptionid === '0' || Wsd.user.subscriptionid.indexOf(\"team:\") === 0) && this.subscribed();\n }\n\n cancelled() {\n return Wsd.user.cancelDate > Wsd.user.paymentDate;\n }\n\n removeGoogleSignin() {\n Wsd.removeOauthMethod('google');\n }\n\n public showReceipts() {\n window.open('https://www.websequencediagrams.com/receipts.py?user=' + Wsd.user.subscriptionid, \"receipts\");\n }\n\n public cancelPayments() {\n let prompt = this.app.prompt;\n if (Wsd.getUser().subscriptionid.indexOf(\"I-\") === 0) {\n prompt.open({\n title: \"Canceling information\",\n message: \"I'm sorry, but you signed up under the old Paypal \" +\n \"system. You must use Paypal to cancel, or email \" +\n \"support@websequencediagrams.com. In the future, if you \" +\n \"sign up again, this button will work properly.\",\n cancel: false\n });\n return;\n }\n\n if (confirm(\"Are you sure you want to cancel your premium features when the next payment is due?\")) {\n this.busy = true;\n this.error = \"\";\n Wsd.cancelPayments().then(() => {\n this.busy = false;\n }, (error) => {\n this.busy = false;\n prompt.open({\n title: \"Error\",\n message: error.toString(),\n cancel: false\n });\n });\n }\n }\n\n updateCard() {\n this.busy = true;\n Payment.updateStripeCreditCard().then(() => {\n this.busy = false;\n }, (error) => {\n this.busy = false;\n this.app.prompt.open({\n title: \"Error\",\n message: error.message,\n cancel: false\n });\n });\n }\n}\n\nlet AllFiles: ProjectInfo = {\n projectid: 0,\n name: \"All files\",\n token: \"\"\n};\n\nlet SharedFiles: ProjectInfo = {\n projectid: -1,\n name: \"Shared with me\",\n token: \"\"\n};\n\nexport const enum SortOrder {\n Date = \"date\",\n Name = \"name\",\n Folder = \"folder,\"\n};\n\nexport class WsdFileModel {\n constructor(private app: WsdApp) {\n this.app.setFileModel(this);\n }\n\n error = \"\";\n success = \"\";\n busy = false;\n openFiles = this.app.getOpenFiles();\n\n folders: ProjectInfo[] = [AllFiles, SharedFiles];\n files: FileInfo[] = [];\n currentFolder = AllFiles;\n currentFile: FileInfo | null = null;\n\n private allFiles: FileInfo[] = [];\n sortOrder: SortOrder = SortOrder.Date;\n private reverseSort = true;\n private log = log.create(\"FileModel\");\n private _searchText = \"\";\n\n get searchText() {\n return this._searchText;\n }\n\n set searchText(text: string) {\n this._searchText = text;\n this.filterFiles();\n }\n\n init(showFolderId = 0) {\n this.currentFolder = AllFiles;\n Wsd.listFolders().then((result) => {\n this.folders.length = 2;\n this.folders = this.folders.concat(result.data.projects);\n console.log(\"Got folders \", this.folders);\n for (let folder of this.folders) {\n if (folder.projectid === showFolderId) {\n this.currentFolder = folder;\n }\n }\n }, (error: Error) => {\n this.error = error.message;\n });\n\n Wsd.listFiles().then((result) => {\n this.allFiles = result.data.files;\n this.filterFiles();\n });\n }\n\n notifyFileCreate(file: FileInfo) {\n this.allFiles.push(file);\n this.filterFiles();\n }\n\n private filterFiles() {\n let files = [];\n // if searchtext is nothing or current folder is all files,\n if (this._searchText === \"\" && this.currentFolder === AllFiles) {\n files = this.allFiles.concat();\n } else if (this._searchText !== \"\") {\n let text = this._searchText.toLowerCase();\n for (let i = 0; i < this.allFiles.length; i++) {\n let file = this.allFiles[i];\n if (file.name.toLowerCase().indexOf(text) >= 0) {\n files.push(file);\n }\n }\n } else if (this.currentFolder === SharedFiles) {\n for (let i = 0; i < this.allFiles.length; i++) {\n let file = this.allFiles[i];\n if (file.owner !== Wsd.user.userid) {\n files.push(file);\n }\n }\n } else {\n for (let i = 0; i < this.allFiles.length; i++) {\n let file = this.allFiles[i];\n if (file.projectid === this.currentFolder.projectid) {\n files.push(file);\n }\n }\n }\n\n switch (this.sortOrder) {\n case SortOrder.Name:\n files.sort((a, b) => {\n if (a.name < b.name) {\n return -1;\n } else {\n return 1;\n }\n });\n break;\n case SortOrder.Date:\n files.sort((a, b) => {\n return a.mtime < b.mtime ? -1 : 1;\n });\n break;\n case SortOrder.Folder:\n files.sort((a, b) => {\n if (a.projectName < b.projectName) {\n return -1;\n } else if (a.projectName > b.projectName) {\n return 1;\n } else {\n return a.name < b.name ? -1 : 1;\n }\n });\n break;\n }\n\n if (this.reverseSort) {\n files.reverse();\n }\n\n if (this.currentFile) {\n let found = false;\n for (let file of files) {\n if (file.fileid === this.currentFile.fileid) {\n found = true;\n this.currentFile = file;\n }\n }\n if (!found) {\n this.currentFile = null;\n }\n }\n\n this.files = files;\n }\n\n setSortOrder(order: SortOrder) {\n console.log(\"sortorder: \", order);\n if (order === this.sortOrder) {\n this.reverseSort = !this.reverseSort;\n } else {\n this.sortOrder = order;\n this.reverseSort = false;\n }\n this.filterFiles();\n }\n\n setFolder(folder: ProjectInfo) {\n this.log(\"Set folder to %s\", folder.name);\n this.currentFolder = folder;\n this.filterFiles();\n }\n\n setFile(file: FileInfo) {\n this.currentFile = file;\n }\n\n rename() {\n if (this.currentFile) {\n this.app.renameFile(this.currentFile);\n }\n }\n\n deleteFile() {\n if (this.currentFile === null) {\n return;\n }\n\n this.app.prompt.open({\n title: \"Delete file\",\n action: \"Delete\",\n message: \"Are you sure you want to delete this file: \\\"\" + this.currentFile.name + \"\\\"? Deletions are permanent and no restoration is possible.\"\n }, (key: string) => {\n this.app.prompt.setBusy(true);\n Wsd.deleteFile(this.currentFile!.fileid).then(() => {\n this.app.prompt.close();\n for (let i = 0; i < this.allFiles.length; i++) {\n if (this.allFiles[i].fileid === this.currentFile!.fileid) {\n this.allFiles.splice(i, 1);\n }\n }\n this.openFiles.notifyDeleted(this.currentFile!.fileid);\n this.filterFiles();\n }, (error) => {\n this.app.prompt.setError(error.message);\n });\n });\n\n }\n\n createFolder() {\n this.app.prompt.open({\n title: \"Create folder\",\n action: \"Create folder\",\n message: \"Please enter the name for new the folder.\",\n input: [{\n label: \"Folder name\",\n value: \"New folder\"\n }]\n }, (name: string) => {\n this.app.prompt.setBusy(true);\n Wsd.createProject(name).then((response) => {\n this.currentFolder = {\n projectid: response.data.projectid,\n name: name,\n token: response.data.token\n };\n this.folders.push(this.currentFolder);\n this.filterFiles();\n this.app.prompt.close();\n }, (error: Error) => {\n this.app.prompt.setError(error.message);\n });\n });\n }\n\n deleteFolder() {\n if (this.currentFolder === AllFiles || this.currentFolder === SharedFiles) {\n return;\n }\n\n this.app.prompt.open({\n title: \"Delete folder\",\n action: \"Delete\",\n message: \"Are you sure you want to delete this folder: \\\"\" + this.currentFolder.name + \"\\\"? All of the contained files will be moved to the All Files area of their owners.\",\n }, (key: string) => {\n this.app.prompt.setBusy(true);\n Wsd.deleteProject(this.currentFolder.projectid).then(() => {\n this.app.prompt.close();\n this.onFolderRemoved(this.currentFolder);\n }, (error) => {\n this.app.prompt.setError(error.message);\n });\n });\n }\n\n private onFolderRemoved(folder: ProjectInfo) {\n for (let i = 0; i < this.folders.length; i++) {\n if (this.folders[i].projectid === folder.projectid) {\n this.folders.splice(i, 1);\n }\n }\n\n if (this.currentFolder === folder) {\n this.currentFolder = AllFiles;\n }\n this.filterFiles();\n }\n\n getFilePreviewUrl(file: FileInfo) {\n return Wsd.prefixUrl(`/files/render?fileid=${file.fileid}&height=200&width=200`);\n }\n\n renameFolder() {\n if (this.currentFolder === AllFiles || this.currentFolder === SharedFiles) {\n return;\n }\n\n let folder = this.currentFolder;\n\n this.app.prompt.open({\n title: \"Rename folder\",\n action: \"Rename\",\n message: \"Please enter the new name for the folder.\",\n input: [{\n label: \"Folder name\",\n value: folder.name\n\n }]\n }, (newName: string) => {\n this.app.prompt.setBusy(true);\n Wsd.renameProject(folder.projectid, newName).then((response) => {\n folder.name = newName;\n this.app.prompt.close();\n }, (error: Error) => {\n this.app.prompt.setError(error.message);\n });\n });\n }\n\n moveFile() {\n if (this.currentFile === null) {\n return;\n }\n\n let file = this.currentFile;\n\n let options: Option[] = [];\n for (let folder of this.folders) {\n if (folder !== SharedFiles) {\n options.push({\n name: folder.name,\n value: folder.projectid.toString()\n });\n }\n }\n\n this.app.prompt.open({\n title: \"Move to folder\",\n action: \"Move\",\n message: \"Please select the new folder\",\n input: [{\n label: \"Folder name\",\n value: file.projectid === 0 ? AllFiles.projectid.toString() : file.projectid.toString(),\n options: options\n }],\n }, (idstring: string) => {\n let found = AllFiles;\n for (let folder of this.folders) {\n if (folder.projectid.toString() === idstring) {\n found = folder;\n break;\n }\n }\n\n this.app.prompt.setBusy(true);\n if (found === AllFiles && file.projectid === 0) {\n this.app.prompt.close();\n } else if (found === AllFiles) {\n Wsd.removeProjectFile(file.fileid).then(() => {\n file.projectid = 0;\n file.projectName = \"\";\n this.filterFiles();\n this.app.prompt.close();\n }, (error: Error) => {\n this.app.prompt.setError(error.message);\n });\n } else {\n Wsd.addProjectFile(found.projectid, file.fileid).then(() => {\n file.projectid = found.projectid;\n file.projectName = found.name;\n this.filterFiles();\n this.app.prompt.close();\n }, (error: Error) => {\n this.app.prompt.setError(error.message);\n });\n }\n });\n }\n\n findByFileid(fileid: number): FileInfo | null {\n for (let file of this.allFiles) {\n if (file.fileid === fileid) {\n return file;\n }\n }\n\n return null;\n }\n\n moveToFolder(fileid: number, folder: ProjectInfo) {\n let filep = this.findByFileid(fileid);\n if (!filep) {\n return;\n }\n\n let file = filep; // not null\n\n if (folder === SharedFiles) {\n\n } else if (folder === AllFiles && file.projectid === 0) {\n\n } else if (folder === AllFiles) {\n Wsd.removeProjectFile(file.fileid).then(() => {\n file.projectid = 0;\n file.projectName = \"\";\n this.filterFiles();\n }, (error: Error) => {\n alert(\"Error: \" + error.message);\n });\n } else {\n Wsd.addProjectFile(folder.projectid, file.fileid).then(() => {\n file.projectid = folder.projectid;\n file.projectName = folder.name;\n this.filterFiles();\n }, (error: Error) => {\n alert(\"Error: \" + error.message);\n });\n }\n\n }\n\n createInFolder() {\n return new Promise((resolve, reject) => {\n if (this.currentFolder === AllFiles || this.currentFolder === SharedFiles) {\n reject(new Error(\"user cancelled\"));\n }\n\n return this.app.prompt.open({\n title: \"New diagram\",\n message: \"Please enter the name of the new diagram\",\n input: [{\n name: \"title\",\n value: Wsd.DEFAULT_TITLE\n }]\n }, () => {\n this.app.prompt.setBusy(true);\n let title = this.app.prompt.getValue(\"title\");\n let openFiles = this.app.getOpenFiles();\n let file = openFiles.create(title, `title ${title}\\n\\n`, \"default\", this.currentFolder);\n\n return openFiles.saveNew(file, title).then(() => {\n this.app.prompt.close();\n resolve(file);\n }, (error) => {\n this.app.prompt.setError(error.message);\n });\n });\n });\n }\n\n inviteToProject() {\n if (this.currentFolder === AllFiles || this.currentFolder === SharedFiles) {\n return;\n }\n\n let folder = this.currentFolder;\n\n this.app.prompt.open({\n title: \"Share folder\",\n action: \"Invite\",\n message: \"Please enter an email address. The owner of this address will be able to edit the file.\",\n input: [{\n label: \"Email\",\n value: this.app.inviteEmail\n }]\n }, (email: string) => {\n this.app.prompt.setBusy(true);\n Wsd.inviteToProject(folder.projectid, email).then((response) => {\n this.app.prompt.close();\n }, (error: Error) => {\n this.app.prompt.setError(error.message);\n });\n });\n }\n\n duplicate() {\n if (this.currentFile === null) {\n return;\n }\n\n let file = this.currentFile;\n\n this.app.prompt.open({\n title: \"Duplicate file\",\n message: \"Enter a name for the new copy\",\n input: [{\n label: \"Name of copy\",\n value: \"Copy of \" + file.name\n }],\n action: \"Duplicate\"\n }, (newname: string) => {\n this.app.prompt.setBusy(true);\n Wsd.readFile(file.fileid).then((response) => {\n return Wsd.createFile(newname, response.data, file.info, false,\n file.projectid);\n }).then((response) => {\n var newfile: FileInfo = {\n fileid: response.data[\"fileid\"],\n mtime: response.data[\"mtime\"],\n name: newname,\n projectid: file.projectid,\n projectName: file.projectName,\n owner: file.owner,\n info: file.info,\n dirty: false\n };\n this.allFiles.push(newfile);\n this.filterFiles();\n this.app.prompt.close();\n }, (error: Error) => {\n if (error) {\n this.app.prompt.setError(error.message);\n }\n });\n });\n\n }\n\n openFromComputer() {\n this.app.openFromComputer();\n }\n\n open() {\n if (this.currentFile === null) {\n return;\n }\n\n this.app.openFile(this.currentFile.fileid);\n }\n\n removeProjectMember(folder: ProjectInfo, userid: number) {\n return new Promise((resolve, reject) => {\n\n let remove = () => {\n Wsd.removeProjectMember(folder.projectid, userid).then((result) => {\n if (userid === Wsd.user.userid) {\n this.onFolderRemoved(folder);\n }\n resolve(result);\n }, reject);\n };\n\n // if member is current user, prompt first.\n if (userid === Wsd.user.userid) {\n this.app.prompt.open({\n title: \"Remove folder\",\n action: \"Remove\",\n message: \"Are you sure you want to remove yourself from this folder? Other users that it is shared with will not be affected.\",\n }, (key: string) => {\n this.app.prompt.close();\n remove();\n });\n } else {\n remove();\n }\n });\n }\n}\n\nVue.directive('google-signin', {\n inserted(el) {\n el.setAttribute(\"key\", \"asf\");\n Wsd.log(\"Waiting for google load\");\n el.style.visibility = \"hidden\";\n Wsd.googleLoaded.then(() => {\n el.style.visibility = \"visible\";\n Wsd.log('Adding an element to google-signin');\n el.addEventListener(\"click\", (e) => {\n Wsd.signInGoogle();\n });\n });\n },\n\n unbind(el) {\n\n }\n});\n\nVue.directive('google-signin-error', {\n inserted(el) {\n el.style.visibility = \"hidden\";\n Wsd.googleLoaded.then(() => { },\n (error) => {\n el.style.visibility = \"visible\";\n let child = el.querySelector(\".error-message\");\n if (child) {\n child.textContent = error.message || (error as any).details;\n }\n });\n },\n\n unbind(el) {\n\n }\n});\n\n\nVue.directive('google-add-signin', {\n inserted(el) {\n Wsd.log('Adding an element to google-add-signin');\n Wsd.googleLoaded.then(() => {\n el.addEventListener(\"click\", (e) => {\n Wsd.addGoogleMethod();\n });\n });\n },\n});\n\nif (Wsd.root.indexOf(\"localhost:8080\") >= 0) {\n Wsd.root = Wsd.root.replace(\"localhost:8080\", \"localhost:1086\");\n}\n\n(window as any).IsWebEdition = function () {\n return Wsd.isWebEdition();\n};\n\nwindow.onerror = function (msg, url, lineNo, columnNo, error) {\n // ... handle error ...\n console.log(\"Error: %s, %o\", msg, error);\n return false;\n};\n\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { log } from \"./log\";\n\nexport interface Offset {\n left: number;\n top: number;\n}\n\nexport interface OffsetRect extends Offset {\n width: number;\n height: number;\n}\n\nexport interface Margins {\n top: number;\n left: number;\n right: number;\n bottom: number;\n topPad: number;\n bottomPad: number;\n rightPad: number;\n leftPad: number;\n}\n\nfunction parseSize(size: string | null) {\n return parseFloat(size || \"\") || 0;\n}\n\nexport type ValidElement = HTMLElement | SVGElement;\n\nexport class ElClass {\n constructor(public el: ValidElement) { }\n\n setStyle(obj: any) {\n for (let key in obj) {\n if (key.indexOf(\"-\") >= 0) throw new Error(`setStyle: styles must be camelcase; not ${key}`);\n (this.el.style as any)[key] = \"\" + obj[key];\n }\n\n return this;\n }\n\n setAttributes(obj: any) {\n for (let key in obj) {\n this.el.setAttribute(key, obj[key]);\n }\n return this;\n }\n\n appendTo(parent: Node) {\n parent.appendChild(this.el);\n return this;\n }\n\n insertAfter(target: Node) {\n if (target.parentNode) {\n target.parentNode.insertBefore(this.el, target.nextSibling);\n }\n return this;\n }\n\n insertBefore(target: Node) {\n if (target.parentNode) {\n target.parentNode.insertBefore(this.el, target);\n }\n return this;\n }\n\n remove() {\n if (this.el.parentNode) {\n this.el.parentNode.removeChild(this.el);\n }\n return this;\n }\n\n getStyle(key: string) {\n return (window.getComputedStyle(this.el) as any)[key] || \"\";\n }\n\n getOffset(includeMargins = false): OffsetRect {\n var box = this.el.getBoundingClientRect();\n\n let ret = {\n top: box.top + window.pageYOffset,\n left: box.left + window.pageXOffset,\n width: box.width,\n height: box.height,\n };\n\n if (includeMargins) {\n let m = this.getMargins();\n ret.top -= m.top;\n ret.height += m.top + m.bottom;\n ret.left -= m.left;\n ret.width += m.left + m.right;\n }\n\n return ret;\n }\n\n setOffset(offset: Offset) {\n let parentOffset: Offset;\n let parent = this.getOffsetParent();\n if (parent) {\n parentOffset = parent.getOffset();\n } else {\n parentOffset = { left: 0, top: 0 };\n }\n this.el.style.left = (offset.left - parentOffset.left) + \"px\";\n this.el.style.top = (offset.top - parentOffset.top) + \"px\";\n\n return this;\n }\n\n getOffsetParent() {\n if (!(this.el instanceof HTMLElement) ||\n this.getStyle(\"position\") === \"fixed\") {\n return $html(document.body);\n }\n\n var node = this.el.parentElement;\n while (node) {\n var position = $html(node).getStyle(\"position\");\n if (position !== \"static\") {\n break;\n }\n node = node.parentElement;\n }\n return node ? $html(node) : null;\n }\n\n getMargins(): Margins {\n let s = window.getComputedStyle(this.el);\n let ret = {\n left: parseSize(s.marginLeft),\n top: parseSize(s.marginTop),\n right: parseSize(s.marginRight),\n bottom: parseSize(s.marginBottom),\n leftPad: 0,\n rightPad: 0,\n topPad: 0,\n bottomPad: 0,\n };\n\n if (s.boxSizing === \"content-box\") {\n // also add border and padding\n ret.leftPad += parseSize(s.borderLeftWidth) + parseSize(s.paddingLeft);\n ret.topPad += parseSize(s.borderTopWidth) + parseSize(s.paddingTop);\n ret.rightPad += parseSize(s.borderRightWidth) + parseSize(s.paddingRight);\n ret.bottomPad += parseSize(s.borderBottomWidth) + parseSize(s.paddingBottom);\n }\n return ret;\n }\n\n addClass(className: string) {\n this.el.classList.add(className);\n return this;\n }\n\n toggleClass(className: string, value: boolean) {\n // IE doesn't support second parameter\n if (value) {\n this.el.classList.add(className);\n } else {\n this.el.classList.remove(className);\n }\n }\n\n addEventListener(events: string, fn: (e: any) => void, useCapture = false) {\n for (let name of events.split(\" \")) {\n this.el.addEventListener(name, fn, useCapture);\n }\n return this;\n }\n\n removeEventListener(events: string, fn: (e: any) => void, useCapture = false) {\n for (let name of events.split(\" \")) {\n this.el.removeEventListener(name, fn, useCapture);\n }\n return this;\n }\n\n matches(selector: string) {\n let el = this.el as any;\n if (this.el.matches) {\n return this.el.matches(selector);\n } else if (el[\"msMatchesSelector\"]) {\n return el[\"msMatchesSelector\"](selector);\n }\n\n // not tested too well. Here for IE.\n for (let expr of selector.split(\",\")) {\n expr = expr.trim();\n if (expr.length == 0) {\n continue;\n }\n if (expr[0] == '[') {\n // it has this attribute\n let attr = expr.substr(1, expr.length - 2);\n return this.el.hasAttribute(attr);\n } else {\n return this.el.tagName === expr.toUpperCase();\n }\n }\n\n return false;\n }\n\n query(selector: string, fn: (a: HTMLElement) => void) {\n if (this.matches(selector) && (this.el instanceof HTMLElement)) {\n fn(this.el);\n }\n Array.prototype.forEach.call(this.el.querySelectorAll(selector), fn as (\n a: ValidElement\n ) => void);\n }\n\n clear() {\n while (this.el.firstChild !== null) {\n this.el.removeChild(this.el.firstChild);\n }\n return this;\n }\n\n setText(text: string) {\n if (this.el instanceof HTMLElement) {\n this.el.innerText = text;\n }\n return this;\n }\n\n asHTMLElement() {\n if (!(this.el instanceof HTMLElement)) {\n throw new Error(\"Expected an HTML element: \" + this.el.outerHTML);\n }\n return this.el as HTMLElement;\n }\n}\n\nfunction $html(tagName: string, attrs?: {}): ElClass;\nfunction $html(e: Element): ElClass;\nfunction $html(arg: any, arg2?: {}) {\n if (typeof arg === \"string\") {\n if (arg[0] == '<') {\n let elements = $html.elementsFromString(arg);\n return new ElClass(elements[0] as HTMLElement);\n } else {\n let ret = new ElClass(document.createElement(arg));\n if (arg2) {\n ret.setAttributes(arg2);\n }\n return ret;\n }\n } else {\n return new ElClass(arg);\n }\n}\n\nlet _scrollbarWidth: number | null = null;\n\nnamespace $html {\n export function getElement(selector: any): HTMLElement | null {\n if (selector instanceof HTMLElement) {\n return selector;\n } else if (typeof selector === \"string\") {\n return document.querySelector(selector);\n } else if (\"jQuery\" in window && selector instanceof (window as any)[\"jQuery\"]) {\n return selector[0];\n } else {\n return null;\n }\n }\n\n export function getViewportRect() {\n var docElement = document.documentElement;\n var hasVerticalScroll = docElement.scrollHeight > docElement.clientHeight;\n var hasHorizontalScroll = docElement.scrollWidth > docElement.clientWidth;\n var sbwidth = hasVerticalScroll ? $html.getScrollbarWidth() : 0;\n var sbheight = hasHorizontalScroll ? $html.getScrollbarWidth() : 0;\n\n var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;\n\n let rect = {\n width: window.innerWidth - sbwidth,\n height: window.innerHeight - sbheight,\n left: scrollLeft,\n top: scrollTop\n };\n\n // See test case \"colour picker always on top\"\n // and the logic in Dialog.ts\n let vv: any = (window as any).visualViewport;\n const isIPad = !!navigator.userAgent.toLowerCase().match(/(iphone|ipad)/);\n if (isIPad && vv) {\n // iOS\n // vv.offsetTop is 0 even when page is scrolled.\n // vv.pageTop takes into account both page scrolling and the pinch to zoom.\n rect.left = vv.pageLeft;\n rect.top = vv.pageTop;\n rect.width = vv.width;\n rect.height = vv.height;\n }\n return rect;\n }\n\n export function getScrollbarWidth(): number {\n if (_scrollbarWidth === null) {\n var outer = document.createElement(\"div\");\n outer.style.visibility = \"hidden\";\n outer.style.width = \"100px\";\n document.body.appendChild(outer);\n\n var widthNoScroll = outer.offsetWidth;\n\n // force scrollbars\n outer.style.overflow = \"scroll\";\n\n // add innerdiv\n var inner = document.createElement(\"div\");\n inner.style.width = \"100%\";\n outer.appendChild(inner);\n\n var widthWithScroll = inner.offsetWidth;\n\n // remove divs\n // @ts-ignore\n outer.parentNode.removeChild(outer);\n\n _scrollbarWidth = widthNoScroll - widthWithScroll;\n }\n\n return _scrollbarWidth;\n }\n\n export function getHighestZIndex(): number {\n var elems = document.getElementsByTagName(\"*\");\n var highest = 0;\n for (var i = 0; i < elems.length; i++) {\n var zindex = parseInt($html(elems[i]).getStyle(\"z-index\"), 10) || 0;\n if (zindex > highest) {\n // HACK exception for mouse pointers\n if (!elems[i].classList.contains(\"ZwibblerMousePointer\") && !elems[i].classList.contains(\"zwibbler-tooltip\")) {\n highest = zindex;\n }\n }\n }\n return highest;\n }\n\n export function getScreenDimensions() {\n let flipped = false;;\n if (screen.orientation) {\n flipped = screen.orientation.type.startsWith(\"landscape\");\n } else if (typeof window.orientation === \"number\") { // ios\n flipped = Math.abs(window.orientation) === 90;\n } else {\n // safari.\n }\n\n if (flipped) {\n return {\n width: screen.height,\n height: screen.width,\n };\n }\n\n return {\n width: screen.width,\n height: screen.height,\n };\n }\n\n export function elementsFromString(html: string) {\n let div = document.createElement(\"div\");\n div.innerHTML = html;\n let elements: ValidElement[] = [];\n let node: Node | null = div.firstChild;\n while (node) {\n if (node instanceof HTMLElement || node instanceof SVGElement) {\n elements.push(node);\n }\n node = node.nextSibling;\n }\n\n for (let elem of elements) {\n div.removeChild(elem);\n }\n\n return elements;\n }\n\n export function elementsToString(elements: HTMLElement[]) {\n let ret: string[] = [];\n for (let el of elements) {\n ret.push(el.outerHTML);\n }\n return ret.join(\"\");\n }\n\n export function isTargetTextEntry(el: EventTarget | null, ev?: Event) {\n if (!(el instanceof HTMLElement)) {\n return false;\n }\n\n switch (el.tagName) {\n case \"INPUT\":\n case \"TEXTAREA\":\n case \"OPTION\":\n case \"SELECT\":\n return true;\n\n case \"BUTTON\":\n if (ev instanceof KeyboardEvent) {\n return ev.key === \"Enter\";\n }\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n export function isImageTainted(el: HTMLImageElement | HTMLCanvasElement | HTMLVideoElement): boolean {\n let a = el as any;\n if (!(\"ZwibblerTainted\" in a)) {\n if (!(el instanceof HTMLCanvasElement)) {\n let canvas = document.createElement(\"canvas\");\n let ctx = canvas.getContext(\"2d\")!;\n ctx.drawImage(el, 0, 0, 1, 1, 0, 0, 1, 1);\n el = canvas;\n }\n\n try {\n el.getContext(\"2d\")!.getImageData(0, 0, 1, 1);\n a[\"ZwibblerTainted\"] = false;\n } catch (e) {\n a[\"ZwibblerTainted\"] = true;\n }\n }\n return a[\"ZwibblerTainted\"];\n }\n\n export function escapeHtml(html: string) {\n let div = document.createElement('div');\n div.innerText = html;\n return div.innerHTML;\n }\n\n export function isSafari() {\n return navigator.userAgent.search(\"Safari\") >= 0 &&\n navigator.userAgent.search(\"Chrome\") < 0;\n }\n}\n\nexport { $html };\n\n\ninterface AjaxSettings {\n url: string;\n method?: \"GET\" | \"POST\";\n params?: any;\n mimeType?: string;\n responseType?: \"arraybuffer\" | \"document\";\n contentType?: string;\n withCredentials?: boolean;\n data?: string;\n delay?: number;\n cancel?: PromiseLike;\n headers?: { [key: string]: string; };\n}\n\nexport function $ajax(settings: AjaxSettings) {\n return new Promise((resolve, reject) => {\n let xhr = new XMLHttpRequest();\n if (settings.mimeType) {\n xhr.overrideMimeType(settings.mimeType);\n }\n\n if (settings.withCredentials) {\n xhr.withCredentials = true;\n }\n\n if (settings.responseType) {\n xhr.responseType = settings.responseType;\n }\n\n let method = settings.method || \"GET\";\n let params = settings.params || {};\n let url = settings.url;\n let query = \"\";\n var first = true;\n let useFormData = false;\n let formData: FormData | null = null;\n let queryToSend: string | FormData;\n\n for (var key in params) {\n if (params[key] instanceof Blob) {\n useFormData = true;\n method = \"POST\";\n break;\n }\n if (1) {\n if (!first) {\n query += '&';\n }\n first = false;\n query += key + \"=\" + encodeURIComponent(params[key]);\n }\n }\n\n if (method === \"GET\" && query.length > 0) {\n url += \"?\" + query;\n query = \"\";\n }\n\n if (useFormData) {\n formData = new FormData();\n for (let key in params) {\n formData.append(key, params[key]);\n }\n }\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n resolve(xhr);\n } else {\n let status = xhr.statusText;\n if (xhr.status === 0) {\n status = \"Could not contact server.\";\n } else if (xhr.getResponseHeader(\"status\")) {\n status = xhr.getResponseHeader(\"status\")!;\n }\n reject(new Error(`${xhr.status} ${status}`));\n }\n }\n };\n\n xhr.open(method, url, true);\n\n if (settings.headers) {\n for (let key in settings.headers) {\n let value = settings.headers[key];\n xhr.setRequestHeader(key, value);\n }\n }\n\n if (typeof settings.data === \"string\") {\n queryToSend = settings.data;\n } else if (formData) {\n queryToSend = formData;\n } else {\n queryToSend = query;\n }\n\n if (settings.contentType) {\n xhr.setRequestHeader(\"Content-type\", \"application/json\");\n } else if (method === \"POST\" && !useFormData) {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n\n if (settings.cancel) {\n settings.cancel.then(() => {\n xhr.abort();\n });\n }\n\n if (settings.delay) {\n setTimeout(() => {\n xhr.send(queryToSend);\n }, settings.delay);\n } else {\n xhr.send(queryToSend);\n }\n }) as PromiseLike;\n}\n\nexport class StyleInjector {\n insertedStyles: string[] = [];\n styles: HTMLElement | null = null;\n\n inject(text: string) {\n for (let style of this.insertedStyles) {\n if (style === text) {\n return;\n }\n }\n\n this.insertedStyles.push(text);\n\n if (!this.styles) {\n this.styles = document.createElement(\"style\");\n if (document.head) {\n document.head.insertBefore(this.styles, document.head.firstChild);\n }\n }\n\n this.styles.appendChild(document.createTextNode(text));\n\n }\n\n destroy() {\n if (this.styles) {\n $html(this.styles).remove();\n this.styles = null;\n }\n this.insertedStyles.length = 0;\n }\n}\n\nexport interface OpenFileArgs {\n // Example: \".jpg,.png\"\n accept?: string;\n format: \"text\" | \"data-uri\" | \"ArrayBuffer\" | \"File\";\n capture?: string;\n}\n\nexport interface OpenFileResult {\n contentType: string;\n data: string | ArrayBuffer | File;\n}\n\nexport class FileOpener {\n input: HTMLInputElement | null = null;\n\n destroy() {\n if (this.input && this.input.parentNode) {\n this.input.parentNode.removeChild(this.input);\n }\n }\n\n open(options: OpenFileArgs): PromiseLike {\n return this._open(options, false).then((results) => {\n return results[0];\n });\n }\n\n openAll(options: OpenFileArgs): PromiseLike {\n return this._open(options, true);\n }\n\n private _open(options: OpenFileArgs, multiple: boolean): PromiseLike {\n return new Promise((resolve) => {\n if (this.input && this.input.parentNode) {\n this.input.parentNode.removeChild(this.input);\n }\n\n this.input = document.createElement(\"input\");\n this.input.style.display = \"none\";\n this.input.setAttribute(\"id\", \"ZwibblerFileInput\");\n this.input.setAttribute(\"type\", \"file\");\n if (multiple) this.input.setAttribute(\"multiple\", \"TRUE\");\n if (typeof options.capture === \"string\") {\n this.input.setAttribute(\"capture\", options.capture);\n }\n document.body.appendChild(this.input);\n\n if (options.accept) {\n this.input.setAttribute(\"accept\", options.accept);\n }\n\n let numReaders = 0;\n let results: OpenFileResult[] = [];\n\n this.input.addEventListener(\"change\", function (this: HTMLInputElement) {\n var files = this.files;\n if (files && files.length > 0) {\n if (options.format === \"File\") {\n for (let i = 0; i < files.length; i++) {\n results.push({\n contentType: files[i].type,\n data: files[i],\n });\n }\n resolve(results);\n } else {\n for (let i = 0; i < files.length; i++) {\n startReading(files[i]);\n }\n }\n }\n });\n\n function startReading(file: File) {\n let reader = new FileReader();\n numReaders++;\n reader.addEventListener(\"load\", () => {\n doneReading(reader, file.type);\n });\n if (options.format === \"data-uri\") {\n reader.readAsDataURL(file);\n } else if (options.format === \"text\") {\n reader.readAsText(file);\n } else if (options.format === \"ArrayBuffer\") {\n reader.readAsArrayBuffer(file);\n }\n console.log(\"Started reading; numReaders=\", numReaders);\n }\n\n function doneReading(reader: FileReader, type: string) {\n results.push({\n contentType: type,\n data: reader.result!,\n });\n numReaders--;\n console.log(\"Done reading; numReaders now \", numReaders);\n if (numReaders === 0) {\n resolve(results);\n }\n }\n\n this.input.value = \"\";\n this.input.click();\n });\n }\n}\n\nfunction newFile(data: [string | ArrayBuffer], filename: string, mimeType: { type: string; }) {\n try {\n return new File(data, filename, mimeType);\n } catch (e) {\n // internet explorer 11?\n return new Blob(data, mimeType);\n }\n}\n\ninterface SaveRecord {\n objectURL: string;\n anchor: HTMLAnchorElement;\n timeout: number;\n}\n\nexport class FileSaver {\n // all the things we need to clean up.\n private records: SaveRecord[] = [];\n private log = log.create(\"FileSaver\");\n\n\n destroy() {\n for (let i = this.records.length - 1; i >= 0; i--) {\n this.clearRecord(this.records[i]);\n }\n }\n\n private clearRecord(r: SaveRecord) {\n clearTimeout(r.timeout);\n window.URL.revokeObjectURL(r.objectURL);\n\n if (r.anchor.parentNode) {\n r.anchor.parentNode.removeChild(r.anchor);\n }\n\n for (let i = 0; i < this.records.length; i++) {\n if (this.records[i] === r) {\n this.records.splice(i, 1);\n break;\n }\n }\n }\n\n saveDataURI(dataURI: string, filename: string) {\n // convert base64 to raw binary data held in a string\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n var byteString = atob(dataURI.split(',')[1]);\n\n // separate out the mime component\n var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\n\n // write the bytes of the string to an ArrayBuffer\n var ab = new ArrayBuffer(byteString.length);\n var ia = new Uint8Array(ab);\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n // write the ArrayBuffer to a blob, and you're done\n var blob = newFile([ab], filename, { type: mimeString });\n this.saveBlob(blob, filename);\n }\n\n saveText(text: string, mimeType: string, filename: string) {\n let blob = newFile([text], filename, { type: mimeType });\n this.saveBlob(blob, filename);\n }\n\n saveBlob(blob: Blob, filename: string) {\n //@ts-ignore\n if (window[\"navigator\"][\"msSaveOrOpenBlob\"]) {\n //log(\"Using msSaveOrOpenBlob()\");\n //@ts-ignore\n window[\"navigator\"][\"msSaveOrOpenBlob\"](blob, filename);\n return;\n }\n\n let objectURL = window.URL.createObjectURL(blob);\n\n // DO NOT CHANGE THESE WITHOUT TESTING ON BOTH IPAD AND IPAD PRO.\n const isIPadPro = /Macintosh/.test(navigator.userAgent) && 'ontouchend' in document;\n const isIPad = !!navigator.userAgent.toLowerCase().match(/(iphone|ipad)/);\n const isPDF = blob.type === \"application/pdf\";\n this.log(\"isIPadPro=%s isIPad=%s isPDF=%s\", isIPadPro, isIPad, isPDF);\n this.log(\"Using blob object url %s\", objectURL);\n //if (isIPad || isIPadPro && isPDF) {\n if (isIPad) {\n this.log(\"iIOS; open in new tab\");\n // IPAD PRO refuses to download PDF and always opens it. Furthermore, \n // it ignores target and download in A tag.\n // IPAD does not allow you to download a blob in another tab.\n window.open(objectURL, \"_blank\");\n return;\n }\n this.log(\"Sane browser; open using tag\");\n\n let r: SaveRecord = {\n objectURL: objectURL,\n timeout: 0,\n anchor: document.createElement(\"a\"),\n };\n this.records.push(r);\n\n r.anchor.innerHTML = \"download\";\n r.anchor.setAttribute(\"href\", objectURL);\n r.anchor.setAttribute(\"download\", filename);\n r.anchor.style.display = \"none\";\n document.body.appendChild(r.anchor);\n r.anchor.click();\n //@ts-ignore\n r.timeout = setTimeout(() => {\n this.clearRecord(r);\n }, 1000);\n }\n}\n\n/** Wrapper for ResizeObserver. If not supported by browser,\n * no resize events will be sent.\n */\ninterface ResizeObserver {\n \"observe\"(e: Element): void;\n \"unobserve\"(e: Element): void;\n}\n\nexport class ResizeNotifier {\n observer: ResizeObserver | null = null;\n constructor(private element: HTMLElement, onResize: () => void) {\n if (\"ResizeObserver\" in window) {\n const w = window as any;\n this.observer = new w[\"ResizeObserver\"](() => {\n onResize();\n }) as ResizeObserver;\n this.observer.observe(element);\n }\n }\n\n destroy() {\n if (this.observer) {\n this.observer.unobserve(this.element);\n }\n }\n\n static Supported() {\n return \"ResizeObserver\" in window;\n }\n}\n\n","import { log } from \"./log\"\nimport { Destructor } from \"./Destructor\"\nimport { $html, StyleInjector } from \"./Html\"\n\ntype Line = { key: string, line: string };\n\nlet STYLE = `\n\n.z-inner-debug.black {\n background: #000;\n white-space: pre-wrap;\n}\n\n.z-inner-debug.white {\n background: #fff;\n}\n\n.z-debug-panel {\n font-family: \"monospace\";\n font-size: 12px;\n display: flex;\n flex-flow: column nowrap;\n text-align: left;\n}\n\n.z-inner-debug {\n flex: 1 1 auto;\n overflow: scroll;\n}\n\n.z-inner-debug.black div {\n border-bottom: 1px solid #222;\n margin-bottom: 3px;\n}\n\n.z-inner-debug.white div {\n border-bottom: 1px solid #eee;\n margin-bottom: 3px;\n}\n`\n\nconst MAX_LINE_LENGTH = 1024;\n\n/**\n A div that hooks into the @log framework and displays lines that are\n logged.\n*/\nexport class DebugPanel {\n private inner: HTMLElement;\n\n constructor(public div: HTMLElement, destructor: Destructor, white: boolean = false) {\n const styles = new StyleInjector();\n styles.inject(STYLE);\n div.classList.add(\"z-debug-panel\");\n\n let timer: any = 0;\n $html(\"input\").\n setAttributes({\n \"type\": \"text\",\n \"placeholder\": \"regexp...\",\n \"onclick\": \"this.select()\"\n }).\n appendTo(div).\n addEventListener(\"input\", (e: Event) => {\n if (timer) {\n window.clearTimeout(timer);\n }\n timer = setTimeout(() => {\n this.setFilter((e.target as HTMLInputElement).value);\n timer = 0;\n }, 200);\n });\n\n this.inner = $html(\"div\").\n addClass(\"z-inner-debug\").\n appendTo(div).asHTMLElement();\n\n\n $html(\"button\").\n appendTo(this.div).\n setStyle({ \"flex\": \"0 0 auto\" }). // iOS safari needs it\n setText(\"Scroll to bottom/top\").\n addEventListener(\"click\", () => {\n if (!this.atBottom()) {\n this.inner.scrollTop = this.inner.scrollHeight;\n } else {\n this.inner.scrollTop = 0;\n }\n });\n\n this.listenFn = log.addListener((key, line) => {\n return this.addLine(key, line);\n });\n\n destructor.add(() => {\n log.removeListener(this.listenFn);\n styles.destroy();\n });\n\n this.addLine(\"DEBUG\", \"Debug window starting\");\n $html(this.inner).addClass(white ? \"white\" : \"black\");\n this.colours = white ? this.coloursWhite : this.coloursBlack;\n }\n\n private nextColour = 0;\n private keyColours: { [key: string]: string } = {};\n private shown = false;\n private listenFn: (key: string, line: string) => void;\n private timeout: any = null;\n private lines: Line[] = [];\n private filter: RegExp | null = null;\n\n private coloursBlack = [\n \"#5da700\",\n \"#ed81ff\",\n \"#02ab34\",\n \"#f92798\",\n \"#59ff91\",\n \"#ff6b80\",\n \"#3cffe4\",\n \"#ffd32b\",\n \"#5e8caa\",\n \"#ffdb7f\",\n \"#e5cdff\",\n \"#00c17e\",\n \"#f6f6f5\",\n \"#9a861e\",\n \"#daff9d\",\n \"#808d40\"];\n\n private coloursWhite = [\"#2f361e\",\n \"#6b35c2\",\n \"#416323\",\n \"#431b77\",\n \"#af2f21\",\n \"#5451ad\",\n \"#805221\",\n \"#962e7f\",\n \"#456354\",\n \"#a52e4f\",\n \"#273c4c\",\n \"#692d25\",\n \"#455b8a\",\n \"#3f1a2a\",\n \"#382454\",\n \"#774f63\"];\n private colours: string[] = [];\n\n show() {\n this.div.style.display = \"flex\";\n this.shown = true;\n this._addLines();\n this.inner.scrollTop = this.inner.scrollHeight;\n }\n\n hide() {\n this.div.style.display = \"none\";\n this.shown = false;\n }\n\n private getColourOf(key: string) {\n if (!(key in this.keyColours)) {\n this.keyColours[key] = this.colours[this.nextColour];\n this.nextColour = (this.nextColour + 1) % this.colours.length;\n }\n return this.keyColours[key];\n }\n\n addLine(key: string, line: string) {\n if (line.length > MAX_LINE_LENGTH) {\n line = line.substr(0, MAX_LINE_LENGTH - 3) + \"...\";\n }\n\n for (let part of line.split(\"\\n\")) {\n this.lines.push({\n key: key,\n line: part\n });\n }\n\n /* wait a bit so the logging doesn't slow things down.*/\n if (this.shown && this.timeout === null) {\n this.timeout = setTimeout(() => {\n this.timeout = null;\n this._addLines();\n }, 100);\n }\n }\n\n private setFilter(text: string) {\n if (text.length < 2) {\n this.filter = null;\n } else {\n try {\n this.filter = new RegExp(text, \"i\");\n } catch (e) { }\n }\n\n let node: Node | null = this.inner.firstChild;\n while (node) {\n let div = node as HTMLElement;\n if (div.nodeType === 1 && div.tagName === \"DIV\") {\n if (!this.filter || this.filter.exec(div.textContent!)) {\n (div as any).style.display = \"block\";\n } else {\n (div as any).style.display = \"none\";\n }\n }\n node = node.nextSibling;\n }\n }\n\n private atBottom() {\n return this.inner.scrollTop >= this.inner.scrollHeight -\n this.inner.clientHeight;\n }\n\n private _addLines() {\n let atBottom = this.atBottom();\n\n for (let line of this.lines) {\n let colour = this.getColourOf(line.key);\n let div = document.createElement(\"div\");\n div.style.color = colour;\n let text = `${line.key}: ${line.line}`;\n if (this.filter && !this.filter.exec(text)) {\n div.style.display = \"none\";\n }\n div.appendChild(document.createTextNode(text));\n this.inner.appendChild(div);\n }\n if (atBottom) {\n this.inner.scrollTop = this.inner.scrollHeight;\n }\n this.lines.length = 0;\n }\n};\n\n","import { log } from \"./log\"\n\ntype Fn = () => void;\n\ninterface EventListener {\n on(name: string, fn: Function): void;\n removeListener(name: string, fn: Function): void;\n}\n\nexport class Destructor {\n destructors: Fn[] = [];\n log = log.create(\"DESTRUCTOR\");\n\n add(fn: Fn) {\n this.destructors.push(fn);\n }\n\n addEventListener(el: EventTarget, type: string, fn: (evt: any) => void, useCapture: any = false) {\n let handle = (type: string) => {\n el.addEventListener(type, fn, useCapture);\n this.add(function () {\n el.removeEventListener(type, fn, useCapture);\n });\n }\n\n for (let t of type.split(\" \")) {\n handle(t);\n }\n }\n\n on(el: EventListener, type: string, fn: Function) {\n el.on(type, fn);\n this.add(function () {\n el.removeListener(type, fn);\n });\n }\n\n destroy() {\n this.log(\"Running %s destructors\", this.destructors.length);\n for (var i = this.destructors.length - 1; i >= 0; i--) {\n this.destructors[i]();\n }\n this.destructors.length = 0;\n }\n};\n","\n\n\n\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport { DebugPanel } from \"@/webshared/DebugPanel\";\nimport { Destructor } from \"@/webshared/Destructor\";\nimport { log } from \"@/webshared/log\";\n\n@Component({\n components: {}\n})\nexport default class DebugComponent extends Vue {\n public destructor = new Destructor();\n public panel: DebugPanel | null = null;\n\n public mounted() {\n //@ts-ignore\n this.panel = new DebugPanel(this.$el, this.destructor, false);\n this.panel!.show();\n\n //this.panel!.div.css('position', 'static');\n }\n\n public beforeDestroy() {\n //this.panel!.hide();\n this.destructor.destroy();\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DebugPanel.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DebugPanel.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DebugPanel.vue?vue&type=template&id=3ef70d8c&scoped=true&\"\nimport script from \"./DebugPanel.vue?vue&type=script&lang=ts&\"\nexport * from \"./DebugPanel.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DebugPanel.vue?vue&type=style&index=0&id=3ef70d8c&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3ef70d8c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{style:(_vm.mainStyle),on:{\"mousemove\":_vm.mousemove}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.show!='second'),expression:\"show!='second'\"}],staticClass:\"first\",style:(_vm.first)},[_vm._t(\"first\")],2),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.show==='both'),expression:\"show==='both'\"}],style:({flexBasis:_vm.gap+'px'})}),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.show!='first'),expression:\"show!='first'\"}],staticClass:\"second\",style:(_vm.second)},[_vm._t(\"second\")],2),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.show=='both'),expression:\"show=='both'\"}],style:(_vm.dragger),on:{\"mousedown\":_vm.mousedown}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { log } from \"@/webshared/log\";\nimport { $html } from \"@/webshared/Html\";\n\n@Component({\n components: {}\n})\nexport default class Splitter extends Vue {\n public mainStyle = {\n display: \"flex\",\n flexFlow: \"row\",\n position: \"relative\"\n };\n\n public dragger = {\n left: \"0px\",\n top: \"0px\",\n position: \"absolute\",\n height: \"auto\",\n width: \"auto\",\n bottom: \"0px\",\n zIndex: 1000,\n cursor: \"ew-resize\",\n right: \"auto\",\n backgroundColor: \"rgba(0, 0, 0, 0.0)\"\n };\n\n public first = {\n display: \"flex\",\n flexBasis: \"auto\",\n flexGrow: 0,\n position: \"relative\",\n minHeight: 0,\n minWidth: 0\n };\n\n public second = {\n display: \"flex\",\n flexBasis: \"auto\",\n flexGrow: 0,\n position: \"relative\",\n minHeight: 0,\n minWidth: 0\n };\n\n public down = false;\n @Prop({ default: \"horizontal\" })\n public type: string;\n @Prop({ default: 20 })\n public thickness: number;\n @Prop({ default: 100 })\n public position: number;\n @Prop({ default: 1 })\n public gap: number;\n @Prop({ default: 0.5 })\n public gravity: number;\n @Prop({ default: \"both\" })\n public show: string;\n\n public desired: number = 0; // this is the desired position.\n public minSize = 50;\n public width = 0;\n public height = 0;\n\n public fn: any;\n public resizeFn: any;\n\n el: HTMLElement;\n\n public log = log.create(\"Splitter\");\n\n public mounted() {\n this.el = this.$el as HTMLElement;\n this.onTypeChanged();\n\n this.fn = (e: MouseEvent) => {\n this.mouseup(e);\n };\n\n this.resizeFn = (e: Event) => {\n this.onWindowResize();\n };\n\n document.addEventListener(\"mouseup\", this.fn);\n window.addEventListener(\"resize\", this.resizeFn);\n\n setTimeout(() => {\n this.moveSplitter();\n }, 0);\n }\n\n public beforeDestroy() {\n this.log(\"Destroyed splitter\");\n document.removeEventListener(\"mouseup\", this.fn);\n window.removeEventListener(\"resize\", this.resizeFn);\n }\n\n public getDesired(): number {\n let offset = this.desired;\n if (offset < 0) {\n if (this.type === \"horizontal\") {\n offset += this.el.offsetHeight;\n } else {\n offset += this.el.offsetWidth;\n }\n }\n\n //this.log(\"getDesired() returning %s=>%s\", this.desired, offset);\n return offset;\n }\n\n public setDesired(offset: number) {\n if (this.position >= 0) {\n this.desired = offset;\n } else if (this.type === \"horizontal\") {\n this.desired = offset - this.el.offsetHeight;\n } else {\n this.desired = offset - this.el.offsetWidth;\n }\n //this.log(\"Set desired %s=>%s\", offset, this.desired);\n this.$emit(\"move\", this.desired);\n }\n\n @Watch(\"type\")\n public onTypeChanged() {\n this.desired = this.position;\n\n if (this.show === \"first\") {\n // nothing to do\n this.first.flexGrow = 1.0;\n } else if (this.show === \"second\") {\n // nothing to do\n this.second.flexGrow = 1.0;\n } else if (this.type === \"vertical\") {\n this.mainStyle.flexFlow = \"row\";\n const offset = this.getDesired();\n\n this.dragger.width = this.thickness + \"px\";\n this.dragger.height = \"auto\";\n this.dragger.left = offset - this.thickness / 2 + \"px\";\n this.dragger.right = \"auto\";\n this.dragger.top = \"0px\";\n this.dragger.bottom = \"0px\";\n this.dragger.cursor = \"ew-resize\";\n\n if (this.desired > 0) {\n this.first.flexBasis = this.desired + \"px\";\n this.second.flexBasis = \"auto\";\n this.first.flexGrow = 0.0;\n this.second.flexGrow = 1.0;\n } else {\n this.first.flexBasis = \"auto\";\n this.second.flexBasis = -this.desired + \"px\";\n this.first.flexGrow = 1.0;\n this.second.flexGrow = 0.0;\n }\n } else {\n this.mainStyle.flexFlow = \"column\";\n const offset = this.getDesired();\n\n this.dragger.height = this.thickness + \"px\";\n this.dragger.width = \"auto\";\n this.dragger.top = offset - this.thickness / 2 + \"px\";\n this.dragger.left = \"0px\";\n this.dragger.right = \"0px\";\n this.dragger.cursor = \"ns-resize\";\n this.dragger.width = \"auto\";\n\n if (this.desired > 0) {\n this.first.flexBasis = this.desired + \"px\";\n this.second.flexBasis = \"auto\";\n this.first.flexGrow = 0.0;\n this.second.flexGrow = 1.0;\n } else {\n this.first.flexBasis = \"auto\";\n this.second.flexBasis = -this.desired + \"px\";\n this.first.flexGrow = 1.0;\n this.second.flexGrow = 0.0;\n }\n }\n\n window.dispatchEvent(new Event(\"resize\"));\n }\n\n @Watch(\"position\")\n public onPositionChanged(newValue: number, oldValue: number) {\n this.desired = newValue;\n this.moveSplitter();\n }\n\n @Watch(\"show\")\n public onShowChanged() {\n this.log(\"Show=%s\", this.show);\n\n this.onTypeChanged();\n }\n\n public mousedown(e: MouseEvent) {\n this.down = true;\n }\n\n public mousemove(e: MouseEvent) {\n //console.log(\"Mouse move\");\n if (this.down) {\n //console.log(\"Dragging\");\n\n const offset = $html(this.el).getOffset();\n const x = e.pageX - offset.left;\n const y = e.pageY - offset.top;\n this.setDesired(this.type === \"vertical\" ? x : y);\n\n this.moveSplitter();\n }\n }\n\n private moveSplitter() {\n if (this.show !== \"both\") {\n return;\n }\n\n const width = this.el.offsetWidth;\n const height = this.el.offsetHeight;\n this.width = width;\n this.height = height;\n let pos = 0;\n let op = 0;\n\n if (this.type === \"vertical\") {\n let x = this.getDesired();\n x = Math.max(this.minSize, x);\n x = Math.min(x, width - this.minSize);\n //console.log(\"width=%s x=%s minsize=%s thickness=%s, desired=%s\", width, x, this.minSize, this.thickness, this.desired);\n this.dragger.left = x - this.thickness / 2 + \"px\";\n op = width;\n pos = x;\n } else {\n let y = this.getDesired();\n y = Math.max(this.minSize, y);\n y = Math.min(y, height - this.minSize);\n this.dragger.top = y - this.thickness / 2 + \"px\";\n pos = y;\n op = height;\n //console.log('width=%s x=%s minsize=%s thickness=%s, desired=%s', height, y, this.minSize, this.thickness, this.desired);\n }\n //console.log('%s pos=%s', this.type, pos);\n if (this.desired > 0) {\n this.first.flexBasis = pos + \"px\";\n this.second.flexBasis = \"auto\";\n } else {\n this.first.flexBasis = \"auto\";\n this.second.flexBasis = op - pos + \"px\";\n }\n\n window.dispatchEvent(new Event(\"resize\"));\n }\n\n public mouseup(e: MouseEvent) {\n this.down = false;\n }\n\n public onWindowResize() {\n const width = this.el.offsetWidth;\n const height = this.el.offsetHeight;\n if (this.width === width && this.height === height) {\n return;\n }\n\n /*this.log(\n \"Resize %s splitter called: %s=>%s %s=>%s\",\n this.type,\n this.width,\n width,\n this.height,\n height\n );*/\n this.moveSplitter();\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Splitter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Splitter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Splitter.vue?vue&type=template&id=ffdb5fa8&scoped=true&\"\nimport script from \"./Splitter.vue?vue&type=script&lang=ts&\"\nexport * from \"./Splitter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Splitter.vue?vue&type=style&index=0&id=ffdb5fa8&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ffdb5fa8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.shown)?_c('div',{ref:\"dialog\",staticClass:\"ui modal prompt-dialog\",on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onEnterPressed($event)}}},[_c('div',{staticClass:\"header\",staticStyle:{\"background\":\"#000088\",\"color\":\"white\"}},[_vm._v(_vm._s(_vm.d.title))]),_c('div',{staticClass:\"content\"},[_c('div',{staticStyle:{\"margin-bottom\":\"1em\"},domProps:{\"innerHTML\":_vm._s(_vm.d.message)}}),_vm._l((_vm.d.input),function(input,index){return _c('div',{key:index,staticStyle:{\"margin-bottom\":\"1em\"}},[(!input.options && !input.multiline)?_c('div',{ref:\"input\",refInFor:true,staticClass:\"ui\",staticStyle:{\"margin-bottom\":\"1em\"}},[_c('label',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(_vm._s(input.label))]),_c('br'),_c('div',{staticClass:\"ui input fluid\"},[((input.password ? 'password' : 'text')==='checkbox')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(input.value),expression:\"input.value\"}],attrs:{\"placeholder\":input.label,\"myindex\":index,\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(input.value)?_vm._i(input.value,null)>-1:(input.value)},on:{\"change\":function($event){var $$a=input.value,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(input, \"value\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(input, \"value\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(input, \"value\", $$c)}}}}):((input.password ? 'password' : 'text')==='radio')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(input.value),expression:\"input.value\"}],attrs:{\"placeholder\":input.label,\"myindex\":index,\"type\":\"radio\"},domProps:{\"checked\":_vm._q(input.value,null)},on:{\"change\":function($event){return _vm.$set(input, \"value\", null)}}}):_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(input.value),expression:\"input.value\"}],attrs:{\"placeholder\":input.label,\"myindex\":index,\"type\":input.password ? 'password' : 'text'},domProps:{\"value\":(input.value)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(input, \"value\", $event.target.value)}}})])]):_vm._e(),(!input.options && input.multiline)?_c('div',{staticClass:\"ui form\"},[_c('label',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(_vm._s(input.label))]),_c('div',{staticClass:\"ui field fluid\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(input.value),expression:\"input.value\"}],ref:input,refInFor:true,attrs:{\"placeholder\":input.label,\"rows\":\"5\"},domProps:{\"value\":(input.value)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(input, \"value\", $event.target.value)}}})])]):_vm._e(),(input.options)?_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(input.value),expression:\"input.value\"}],ref:\"input\",refInFor:true,staticClass:\"ui dropdown\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(input, \"value\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((input.options),function(item){return _c('option',{key:item.value,domProps:{\"value\":item.value}},[_vm._v(_vm._s(item.name)+\"\\n \")])}),0):_vm._e()])}),(_vm.error != '')?_c('div',{staticClass:\"ui inverted red segment\"},[_c('i',{staticClass:\"large check circle icon\"}),_vm._v(\"\\n \"+_vm._s(_vm.error)+\"\\n \")]):_vm._e(),(_vm.busy)?_c('div',{staticClass:\"ui active inverted dimmer\"},[_c('div',{staticClass:\"ui text loader\"},[_vm._v(\"Working\")])]):_vm._e()],2),_c('div',{staticClass:\"actions\"},[_c('div',{staticClass:\"ui green right labeled icon button\",on:{\"click\":function($event){return _vm.onOK()}}},[_c('i',{staticClass:\"check circle icon\"}),_vm._v(\"\\n \"+_vm._s(_vm.d.action)+\"\\n \")]),(_vm.d.cancel)?_c('div',{staticClass:\"ui right labeled icon button\",on:{\"click\":function($event){return _vm.hide()}}},[_c('i',{staticClass:\"times circle icon\"}),_vm._v(\"\\n Cancel\\n \")]):_vm._e(),_c('div',{staticStyle:{\"clear\":\"both\",\"margin-top\":\"5px\"}})])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch, Model } from \"vue-property-decorator\";\nimport { log } from \"@/webshared/log\";\nimport { WsdDialog, PromptParams } from \"@/Wsd\";\n\ndeclare let $: any;\n\n@Component({\n components: {}\n})\nexport default class PromptDialog extends Vue implements WsdDialog {\n public log = log.create(\"PromptDialog\");\n public shown = false;\n public error = \"\";\n public busy = false;\n generation = 0;\n\n public d: PromptParams = {\n message: \"\"\n };\n\n private okFn: (value: string) => void;\n\n private bodyClicked = (e: MouseEvent) => { };\n\n @Watch(\"shown\")\n public onShownChanged() {\n if (this.shown === false) {\n this.hide();\n } else {\n let gen = this.generation;\n Vue.nextTick(() => {\n $(this.$refs.dialog).modal({\n closable: false,\n allowMultiple: true,\n // detachable: false\n onHidden: () => {\n if (gen == this.generation) {\n this.$emit(\"close\");\n this.shown = false;\n } else {\n this.log(\"Prompt: Ignore stale onHidden()\");\n }\n }\n });\n $(this.$refs.dialog).modal(\"show\");\n });\n }\n }\n\n public mounted() {\n this.log(\"Mounted\");\n\n // check if the first input is a select.\n let hasSelect = this.d.input && this.d.input[0].options;\n\n $(this.$refs.dialog).modal({\n closable: false,\n allowMultiple: true,\n // detachable: false\n autofocus: false,\n onHidden: () => {\n this.$emit(\"close\");\n this.shown = false;\n }\n });\n\n\n this.bodyClicked = (e: MouseEvent) => {\n if (this.shown) {\n let target = e.target as HTMLElement;\n if (target && !target.matches(\".prompt-dialog, .prompt-dialog *\")) {\n this.hide();\n }\n }\n }\n document.body.addEventListener(\"pointerdown\", this.bodyClicked, true);\n\n $(this.$refs.dialog).modal(\"show\");\n }\n\n public updated() {\n $(\".ui.dropdown\").dropdown({ showOnFocus: false });\n }\n\n public hide() {\n $(this.$refs.dialog).modal(\"hide\");\n }\n\n open(params: PromptParams, onOK?: (value: string) => void) {\n this.error = \"\";\n this.busy = false;\n this.shown = true;\n this.generation++;\n\n this.d = params;\n this.d.title = params.title || \"WebSequenceDiagrams\";\n this.d.action = params.action || \"OK\";\n this.d.cancel = params.cancel !== false;\n this.d.message = params.message || \"\";\n this.d.input = params.input || [];\n\n this.okFn =\n onOK ||\n ((value: string) => {\n this.close();\n });\n\n this.$nextTick(() => {\n let a = this.$refs.input as any;\n if (a && a.length && a[0].focus) {\n a[0].focus();\n }\n });\n }\n\n close() {\n this.shown = false;\n }\n\n setError(error: string) {\n this.error = error;\n this.busy = false;\n }\n\n setBusy(busy: boolean) {\n this.busy = busy;\n }\n\n public onOK() {\n let value = \"\";\n if (this.d.input && this.d.input.length) {\n value = this.d.input[0].value || \"\";\n }\n this.okFn(value);\n }\n\n public getValue(name: string) {\n for (let input of this.d.input!) {\n if (input.name === name) {\n return input.value || \"\";\n }\n }\n return \"\";\n }\n\n onEnterPressed(e: KeyboardEvent) {\n if (e.target && e.target instanceof HTMLInputElement && this.d.input) {\n // get the \"myindex\" property of the target\n let myindex = parseFloat(e.target.getAttribute(\"myindex\") || \"-1\");\n if (myindex === this.d.input.length - 1) {\n this.onOK();\n }\n }\n }\n\n public beforeDestroy() {\n document.body.removeEventListener(\"pointerdown\", this.bodyClicked, true);\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PromptDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PromptDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PromptDialog.vue?vue&type=template&id=da401f12&scoped=true&\"\nimport script from \"./PromptDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./PromptDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PromptDialog.vue?vue&type=style&index=0&id=da401f12&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"da401f12\",\n null\n \n)\n\nexport default component.exports","export class Debounce {\n private timer: any = null;\n private fn: (() => void) | null = null;\n\n constructor(private timeoutMs: number) {\n\n }\n\n now() {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n\n if (this.fn) {\n this.fn();\n this.fn = null;\n }\n }\n\n call(fn: () => void) {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n\n this.timer = setTimeout(() => {\n fn();\n this.fn = null;\n this.timer = 0;\n }, this.timeoutMs);\n this.fn = fn;\n }\n}","import { Product } from \"./Wsd\";\n\nlet products: Product[] = [{\n name: \"daypass\",\n amount: 1000,\n description: \"Day pass\",\n buttonLabel: \"Pay {{amount}}\"\n}, {\n name: \"monthly15\",\n amount: 1500,\n description: \"Monthly subscription\",\n buttonLabel: \"Subscribe for $15 monthly\"\n}, {\n name: \"monthly15-30\",\n amount: 1500,\n description: \"Monthly subscription\",\n buttonLabel: \"Subscribe for $15 monthly\"\n}, {\n name: \"yearly89\",\n amount: 8900,\n description: \"Annual subscription\",\n buttonLabel: \"Subscribe for $89/year\"\n}, {\n name: \"yearly99\",\n amount: 9900,\n description: \"Annual subscription\",\n buttonLabel: \"Subscribe for $99/year\"\n}, {\n name: \"yearly120\",\n amount: 12000,\n description: \"Annual subscription\",\n buttonLabel: \"Subscribe for $120/year\"\n}, {\n name: \"yearly120-30\",\n amount: 12000,\n description: \"Annual subscription\",\n buttonLabel: \"Subscribe for $120/year\"\n}, {\n name: \"team\",\n amount: 69900,\n description: \"Upgrade up to 10 accounts\",\n buttonLabel: \"Non-renewing\"\n}\n];\n\nexport let Products: { [name: string]: Product } = {};\nfor (let product of products) {\n Products[product.name] = product;\n}\n\nexport const SPECIAL_DEAL = false;\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { log } from \"@/webshared/log\";\nimport {\n Wsd,\n WsdApp,\n WsdSignInModel,\n WsdAccountModel,\n WsdFileModel,\n FileInfo,\n} from \"@/Wsd\";\nimport { FileStorage, FileViewer, SelectionRange } from \"@/OpenFiles\";\nimport DebugPanel from \"@/components/DebugPanel.vue\";\nimport Splitter from \"@/components/Splitter.vue\";\nimport PromptDialog from \"@/components/PromptDialog.vue\";\nimport { Debounce } from \"@/webshared/Debounce\";\nimport { Products } from \"@/WsdProducts\";\n\nconst SAVE_TIMEOUT = 200;\n\n@Component({\n components: {\n DebugPanel,\n Splitter,\n PromptDialog,\n },\n})\nexport default class BasicApp extends Vue {\n public log = log.create(\"BasicApp\");\n Wsd = Wsd;\n app = new WsdApp();\n prompter: PromptDialog;\n signInModel = new WsdSignInModel(this.app);\n accountModel = new WsdAccountModel(this.app);\n fileModel = new WsdFileModel(this.app);\n username = \"smhanov\";\n password = \"\";\n password2 = \"\";\n openFiles = this.app.getOpenFiles(this);\n activeFile: FileInfo | null = null;\n\n debounceSave = new Debounce(SAVE_TIMEOUT);\n\n text = \"hello world\";\n\n public mounted() {\n this.log(\"Mounted\");\n (document.querySelector(\"#splash\") as any).style.display = \"none\";\n this.prompter = this.$refs.prompter as PromptDialog;\n\n this.app.start(this.prompter);\n\n this.app.on(\"sign-in\", function (message) {\n // app requests sign in\n alert(message);\n });\n\n Wsd.on(\"signed-in\", () => {\n console.log(\"signedin\");\n this.fileModel.init();\n });\n }\n\n public beforeDestroy() {\n this.log(\"beforeDestroy()\");\n }\n\n signin() {\n this.signInModel.authenticate(this.username, this.password);\n }\n\n isActiveFile(file: FileInfo) {\n return (\n this.activeFile !== null && file.fileid === this.activeFile.fileid\n );\n }\n\n getFileText(file: FileInfo) {\n return this.text;\n }\n\n getFileSelection(file: FileInfo) {\n let editor = this.$refs[\"editor\"] as HTMLTextAreaElement;\n return new SelectionRange(\n editor.selectionStart,\n editor.selectionEnd - editor.selectionStart\n );\n }\n\n onTextChanged() {\n console.log(\"Text changed!\");\n this.debounceSave.call(() => {\n this.openFiles.addRevision(this.activeFile!, this.text);\n });\n }\n\n setFileText(file: FileInfo, text: string, selection: SelectionRange) {\n let editor = this.$refs[\"editor\"] as HTMLTextAreaElement;\n this.text = text;\n Vue.nextTick(() => {\n console.log(\"Set selection: %s\", selection.toString());\n editor.selectionStart = selection.start;\n editor.selectionEnd = selection.start + selection.length;\n });\n }\n\n setActiveFile(file: FileInfo) {\n this.activeFile = file;\n this.text = this.openFiles.getHead(file);\n }\n\n create() {\n this.openFiles.create(Wsd.DEFAULT_TITLE, \"File contents\", \"rose\");\n }\n\n close() {\n if (this.activeFile) {\n this.app.closeFile(this.activeFile);\n }\n }\n\n renameParticipant() {\n if (this.activeFile) {\n this.app.renameParticipant(this, this.activeFile);\n }\n }\n\n exportDiagram() {\n if (this.activeFile) {\n Wsd.download({\n text: this.text,\n format: \"pdf\",\n filename: \"Exported.pdf\",\n ownFilename: this.activeFile.name,\n });\n }\n }\n\n buy(what: string) {\n if (what in Products) {\n this.app.buy(Products[what]);\n }\n }\n /*\n undo(e:Event) {\n this.openFiles.undo(this.activeFile);\n if (e) {\n e.preventDefault();\n }\n }\n\n redo(e:Event) {\n this.openFiles.redo(this.activeFile);\n if (e) {\n e.preventDefault();\n }\n }*/\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BasicApp.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BasicApp.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./BasicApp.vue?vue&type=template&id=5f7c38b8&scoped=true&\"\nimport script from \"./BasicApp.vue?vue&type=script&lang=ts&\"\nexport * from \"./BasicApp.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./BasicApp.vue?vue&type=style&index=0&id=5f7c38b8&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5f7c38b8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"main\",on:{\"keydown\":_vm.onKeyDown,\"keyup\":_vm.onKeyUp}},[_c('div',{staticClass:\"editor-screen\"},[_c('div',{staticClass:\"ui borderless menu\",staticStyle:{\"flex-wrap\":\"wrap\",\"margin-bottom\":\"0\",\"flex\":\"0 0 auto\"}},[(_vm.Wsd.gold())?_c('img',{staticStyle:{\"align-self\":\"center\",\"cursor\":\"pointer\"},attrs:{\"src\":\"logo.svg\",\"height\":\"43\",\"title\":\"Purchase information\"},on:{\"click\":function($event){return _vm.buy(false)}}}):_vm._e(),(_vm.haveFiles)?_c('div',{staticClass:\"ui dropdown item\"},[_vm._v(\"\\n File\\n \"),_c('i',{staticClass:\"dropdown icon\"}),_c('div',{staticClass:\"menu\"},[_c('div',{staticClass:\"item\",on:{\"click\":function($event){return _vm.newFile()}}},[_c('i',{staticClass:\"ui file icon\"}),_vm._v(\"\\n New file\\n \")]),(_vm.Wsd.user.userid)?_c('div',{staticClass:\"item\",on:{\"click\":function($event){return _vm.browseFiles()}}},[_c('i',{staticClass:\"ui folder open icon\"}),_vm._v(\"\\n Open...\\n \")]):_vm._e(),_c('div',{staticClass:\"item\",on:{\"click\":function($event){return _vm.app.openFromComputer()}}},[_c('i',{staticClass:\"ui upload icon\"}),_vm._v(\"\\n Open from computer...\\n \")]),(_vm.activeFile && _vm.Wsd.user.userid)?_c('div',{staticClass:\"item\",on:{\"click\":function($event){return _vm.saveFile()}}},[_c('i',{staticClass:\"ui save icon\"}),_vm._v(\"\\n Save now\\n \")]):_vm._e(),(_vm.activeFile)?_c('div',{staticClass:\"item\",on:{\"click\":function($event){return _vm.app.renameFile(_vm.activeFile)}}},[_c('i',{staticClass:\"ui edit icon\"}),_vm._v(\"\\n Rename...\\n \")]):_vm._e(),_c('div',{staticClass:\"item\",on:{\"click\":function($event){_vm.activeFile && _vm.app.duplicateFile(_vm.activeFile)}}},[_c('i',{staticClass:\"ui copy icon\"}),_vm._v(\"\\n Make copy...\\n \")]),_c('div',{staticClass:\"item\",on:{\"click\":function($event){return _vm.toggleRevisions()}}},[_c('i',{staticClass:\"ui code branch icon\",class:{ check: _vm.showRevisions }}),_vm._v(\"\\n Show revisions\\n \")]),_c('hr'),_c('div',{staticClass:\"item\",on:{\"click\":function($event){_vm.showShareDialog = true}}},[_c('i',{staticClass:\"ui share icon\"}),_vm._v(\"\\n Share & Export...\\n \")]),_c('div',{staticClass:\"item\",on:{\"click\":_vm.print}},[_c('i',{staticClass:\"ui print icon\"}),_vm._v(\"\\n Print\\n \")])])]):_vm._e(),(_vm.haveFiles)?_c('div',{staticClass:\"ui dropdown item\"},[_vm._v(\"\\n Edit\\n \"),_c('i',{staticClass:\"dropdown icon\"}),_c('div',{staticClass:\"menu\"},[(_vm.clipboardAllowed)?_c('div',{staticClass:\"item\",on:{\"click\":function($event){return _vm.copyImage()}}},[_c('i',{staticClass:\"ui copy icon\"}),_vm._v(\"\\n Copy image to clipboard\\n \")]):_vm._e(),_c('div',{staticClass:\"item\",class:{ disabled: _vm.showSearch },on:{\"click\":function($event){_vm.showSearch = !_vm.showSearch}}},[_c('i',{staticClass:\"ui search icon\"}),_vm._v(\"\\n Find and replace\\n \")]),_c('div',{staticClass:\"item\",class:{ disabled: !_vm.canUndo() },on:{\"click\":function($event){return _vm.undo()}}},[_c('i',{staticClass:\"ui undo icon\"}),_vm._v(\"\\n Undo (Ctrl+Z)\\n \")]),_c('div',{staticClass:\"item\",class:{ disabled: !_vm.canRedo() },on:{\"click\":function($event){return _vm.redo()}}},[_c('i',{staticClass:\"ui redo icon\"}),_vm._v(\"\\n Redo (Ctrl+Shift+Z)\\n \")]),_c('hr'),_c('div',{staticClass:\"item\",on:{\"click\":_vm.renameParticipant}},[_c('i',{staticClass:\"ui edit outline icon\"}),_vm._v(\"\\n Rename participant\\n \")])])]):_vm._e(),(_vm.haveFiles)?_c('div',{staticClass:\"ui dropdown item\"},[_c('span',{style:(_vm.underline)},[_vm._v(\"V\")]),_vm._v(\"iew\\n \"),_c('i',{staticClass:\"dropdown icon\"}),_c('div',{staticClass:\"menu\"},[_c('div',{staticClass:\"item\",on:{\"click\":function($event){_vm.zoom = 'zoom-actual'}}},[_c('i',{staticClass:\"ui icon\",class:{ check: _vm.zoom == 'zoom-actual' }}),_vm._v(\"\\n Zoom actual size\\n \")]),_c('div',{staticClass:\"item\",on:{\"click\":function($event){_vm.zoom = 'zoom-width'}}},[_c('i',{staticClass:\"ui icon\",class:{ check: _vm.zoom == 'zoom-width' }}),_vm._v(\"\\n Zoom to width\\n \")]),_c('div',{staticClass:\"item\",on:{\"click\":function($event){_vm.zoom = 'zoom-page'}}},[_c('i',{staticClass:\"ui icon\",class:{ check: _vm.zoom == 'zoom-page' }}),_vm._v(\"\\n Zoom to page\\n \")]),_c('hr'),_c('div',{staticClass:\"item\",class:{ disabled: _vm.fullscreen },on:{\"click\":_vm.toggleShowTemplates}},[_c('i',{staticClass:\"ui icon\",class:{ check: _vm.showTemplates }}),_vm._v(\"\\n Show help templates\\n \")]),_c('div',{staticClass:\"item\",on:{\"click\":function($event){_vm.showErrors = !_vm.showErrors}}},[_c('i',{staticClass:\"ui icon\",class:{ check: _vm.showErrors }}),_vm._v(\"\\n Show errors\\n \")]),_c('div',{staticClass:\"item\",on:{\"click\":function($event){return _vm.toggleRevisions()}}},[_c('i',{staticClass:\"ui icon\",class:{ check: _vm.showRevisions }}),_vm._v(\"\\n Show revisions\\n \")]),_c('div',{staticClass:\"item\",on:{\"click\":function($event){_vm.fullscreen = !_vm.fullscreen}}},[_c('i',{staticClass:\"ui icon\",class:{ check: _vm.fullscreen }}),_vm._v(\"\\n Show only diagram\\n \")])])]):_vm._e(),(_vm.haveFiles)?_c('div',{staticClass:\"ui dropdown item scrolling\"},[_vm._v(\"\\n Style\\n \"),_c('i',{staticClass:\"dropdown icon\"}),_c('div',{staticClass:\"menu\"},[_c('div',{staticClass:\"item\",staticStyle:{\"width\":\"380px\"}},[_c('StyleComponent',{on:{\"change\":_vm.setStyle}})],1)])]):_vm._e(),_c('div',{staticClass:\"ui dropdown item\"},[_c('span',{style:(_vm.underline)},[_vm._v(\"H\")]),_vm._v(\"elp\\n \"),_c('i',{staticClass:\"dropdown icon\"}),_c('div',{staticClass:\"menu\"},[_c('div',{staticClass:\"item\",on:{\"click\":function($event){return _vm.Wsd.openUrl('examples.html')}}},[_c('i',{staticClass:\"ui book icon\"}),_vm._v(\"\\n Syntax and examples\\n \")]),_c('div',{staticClass:\"item\",on:{\"click\":function($event){return _vm.Wsd.openUrl('embedding.html')}}},[_c('i',{staticClass:\"ui code branch icon\",class:{ check: _vm.zoom == 'zoom-width' }}),_vm._v(\"\\n API and plugins\\n \")]),(_vm.Wsd.gold())?_c('div',{staticClass:\"item\",on:{\"click\":function($event){return _vm.buy(false)}}},[_c('i',{staticClass:\"ui shopping bag icon\"}),_vm._v(\"\\n About & contacts\\n \")]):_vm._e(),(!_vm.Wsd.gold())?_c('div',{staticClass:\"item\",on:{\"click\":function($event){return _vm.Wsd.openUrl('/status.html')}}},[_c('i',{staticClass:\"info circle icon\"}),_vm._v(\"License status\\n \")]):_vm._e(),_vm._m(0)])]),(_vm.Wsd.user.admin)?_c('div',{staticClass:\"ui dropdown item\",on:{\"click\":function($event){return _vm.Wsd.openUrl('/old/admin.html')}}},[_c('i',{staticClass:\"cogs icon\"}),_vm._v(\"\\n Admin\\n \")]):_vm._e(),(!_vm.Wsd.isLicenseValid())?_c('div',{staticClass:\"ui dropdown item\",on:{\"click\":function($event){return _vm.app.updateProductKey()}}},[_c('i',{staticClass:\"shopping bag icon\"}),_vm._v(\"\\n Enter Product Key\\n \")]):_vm._e(),(!_vm.Wsd.subscribed() && !_vm.showSale())?_c('div',{staticClass:\"ui dropdown item\",on:{\"click\":function($event){return _vm.buy(true)}}},[_c('i',{staticClass:\"shopping bag icon\"}),_vm._v(\"\\n Upgrade\\n \")]):_vm._e(),(!_vm.Wsd.subscribed() && _vm.showSale())?_c('div',{staticClass:\"ui dropdown item\",on:{\"click\":function($event){return _vm.buy(true)}}},[_c('i',{staticClass:\"shopping bag icon\"}),_c('span',{staticStyle:{\"background\":\"#ff0000\",\"padding\":\"10px\",\"color\":\"white\",\"border-radius\":\"5px\",\"font-weight\":\"bold\"}},[_vm._v(\" Year\\n end\\n sale\")])]):_vm._e(),(_vm.showDeal())?_c('div',{staticClass:\"ui dropdown item\",on:{\"click\":function($event){return _vm.emailOffer()}}},[_c('i',{staticClass:\"shopping bag icon\"}),_c('span',{staticStyle:{\"background\":\"#ff0000\",\"padding\":\"10px\",\"color\":\"white\",\"border-radius\":\"5px\",\"font-weight\":\"bold\"}},[_vm._v(\"Year\\n end\\n sale $89/year\")])]):_vm._e(),_c('div',{staticClass:\"stretch\"}),(_vm.hasGoogleSignin && _vm.Wsd.allowSignIn())?_c('div',{staticClass:\"ui buttons menu\"},[(!_vm.Wsd.user.userid)?_c('button',{directives:[{name:\"google-signin\",rawName:\"v-google-signin\"}],staticClass:\"ui google plus labeled icon button\"},[_c('i',{staticClass:\"google icon\"}),_vm._v(\"\\n Sign in\\n \")]):_vm._e(),(!_vm.Wsd.user.userid)?_c('button',{staticClass:\"ui icon button\",on:{\"click\":function($event){_vm.showSigninDialog = true}}},[_c('i',{staticClass:\"ellipsis horizontal icon\"})]):_vm._e()]):_vm._e(),(!_vm.hasGoogleSignin &&\n !_vm.Wsd.user.userid &&\n _vm.Wsd.allowSignIn()\n )?_c('div',{key:\"unique\",staticClass:\"ui buttons menu\"},[_c('button',{staticClass:\"ui icon button primary\",on:{\"click\":function($event){return _vm.signInClicked()}}},[_c('i',{staticClass:\"sign in icon\"}),_vm._v(\"\\n Sign in\\n \")])]):_vm._e(),(_vm.Wsd.user.userid)?_c('div',{staticClass:\"ui simple dropdown item right\"},[_c('i',{staticClass:\"user icon\"}),_vm._v(\"\\n Account\\n \"),_c('i',{staticClass:\"dropdown icon\"}),_c('div',{staticClass:\"menu\",staticStyle:{\"left\":\"auto\",\"right\":\"0\"}},[_c('div',{staticClass:\"icon item\"},[_vm._v(_vm._s(_vm.Wsd.user.email))]),_c('div',{staticClass:\"icon item\",on:{\"click\":function($event){_vm.showAccountDialog = true}}},[_c('i',{staticClass:\"cog icon\"}),_vm._v(\"\\n Account settings\\n \")]),_c('div',{staticClass:\"icon item\",on:{\"click\":function($event){return _vm.app.signOut()}}},[_c('i',{staticClass:\"sign-out icon\"}),_vm._v(\"\\n Sign out\\n \")])])]):_vm._e()]),(!_vm.hideSigninError &&\n !_vm.Wsd.user.userid &&\n _vm.hasGoogleSignin &&\n _vm.Wsd.allowSignIn()\n )?_c('div',{directives:[{name:\"google-signin-error\",rawName:\"v-google-signin-error\"}],staticClass:\"google-signin-warning\",on:{\"click\":function($event){_vm.hideSigninError = true}}},[_vm._v(\"\\n The Google signin button could not be loaded. Please click the\\n three dots and use the \\\"Forgot password\\\" feature to sign in.\\n \"),_c('div',{staticClass:\"error-message\"},[_vm._v(\"\\n Bad cookies could not be loaded because of bad stuff.\\n \")])]):_vm._e(),(!_vm.haveFiles)?_c('div',{staticClass:\"mainview nofiles\"},[_c('img',{staticStyle:{\"align-self\":\"center\",\"margin-bottom\":\"10px\"},attrs:{\"src\":\"logo.svg\",\"width\":\"100px\",\"alt\":\"WebSequenceDiagrams\"}}),_c('div',{staticStyle:{\"color\":\"white\",\"align-self\":\"center\",\"font-size\":\"20px\"}},[_vm._v(\"\\n What would you like to do?\\n \")]),_c('button',{on:{\"click\":_vm.newFile}},[_vm._v(\"New diagram\")]),(_vm.Wsd.user.userid)?_c('button',{on:{\"click\":function($event){return _vm.browseFiles()}}},[_vm._v(\"\\n Open from my files...\\n \")]):_vm._e(),_c('button',{on:{\"click\":function($event){return _vm.app.openFromComputer()}}},[_vm._v(\"\\n Open from my computer...\\n \")])]):_vm._e(),(_vm.haveFiles)?_c('div',{staticClass:\"mainview\"},[(_vm.showTemplates && !_vm.fullscreen)?_c('HintView',{staticStyle:{\"flex\":\"0 0 100px\"},on:{\"show-help\":_vm.onShowHelp}}):_vm._e(),_c('Splitter',{staticClass:\"edit-area\",staticStyle:{\"flex-grow\":\"1\"},attrs:{\"type\":\"horizontal\",\"gap\":5,\"thickness\":10,\"show\":_vm.showErrors && !_vm.fullscreen ? 'both' : 'first',\"position\":_vm.errorPosition},on:{\"move\":_vm.onErrorSplitterMoved}},[_c('template',{slot:\"first\"},[_c('Splitter',{staticStyle:{\"flex-grow\":\"1\"},attrs:{\"type\":_vm.layout,\"gap\":5,\"thickness\":10,\"position\":_vm.layout == 'horizontal' ? _vm.hposition : _vm.vposition,\"show\":_vm.fullscreen ? 'second' : 'both'},on:{\"move\":_vm.onSplitterMoved}},[_c('template',{slot:\"first\"},[_c('div',{staticClass:\"flex-col\"},[(_vm.showSearch)?_c('SearchBar',{on:{\"find\":function($event){\n var i = arguments.length, argsArray = Array(i);\n while ( i-- ) argsArray[i] = arguments[i];\nreturn _vm.search.apply(void 0, [ 'find' ].concat( argsArray ))},\"find-next\":function($event){\n var i = arguments.length, argsArray = Array(i);\n while ( i-- ) argsArray[i] = arguments[i];\nreturn _vm.search.apply(void 0, [ 'find-next' ].concat( argsArray ))},\"find-previous\":function($event){\n var i = arguments.length, argsArray = Array(i);\n while ( i-- ) argsArray[i] = arguments[i];\nreturn _vm.search.apply(\n void 0, [ 'find-previous' ].concat( argsArray )\n )},\"replace\":function($event){\n var i = arguments.length, argsArray = Array(i);\n while ( i-- ) argsArray[i] = arguments[i];\nreturn _vm.search.apply(void 0, [ 'replace' ].concat( argsArray ))},\"replace-all\":function($event){\n var i = arguments.length, argsArray = Array(i);\n while ( i-- ) argsArray[i] = arguments[i];\nreturn _vm.search.apply(void 0, [ 'replace-all' ].concat( argsArray ))},\"close\":function($event){_vm.showSearch = false}}}):_vm._e(),_c('AceEditor',{ref:\"editor\",staticStyle:{\"flex\":\"1 1 auto\"},attrs:{\"errors\":_vm.errors,\"readOnly\":_vm.currentRevision !== 'head'},on:{\"change-cursor\":_vm.onChangeCursor,\"change\":_vm.onTextChanged,\"undo\":_vm.undo,\"redo\":_vm.redo},model:{value:(_vm.text),callback:function ($$v) {_vm.text=$$v},expression:\"text\"}})],1)]),_c('template',{slot:\"second\"},[_c('div',{staticClass:\"flex-col\",staticStyle:{\"overflow\":\"hidden\"},on:{\"userzoomed\":function($event){return _vm.onUserZoomed()}}},[(true)?_c('ImageVue',{ref:\"imageVue\",attrs:{\"text\":_vm.text,\"zoom\":_vm.zoom,\"wsdstyle\":_vm.style,\"filename\":_vm.getFilename()},on:{\"gotoLine\":_vm.onGotoLine,\"rendered\":_vm.onGotDiagram,\"upgrade\":function($event){return _vm.buy(true)}}}):_vm._e(),_c('FileTabs',{attrs:{\"files\":_vm.files.files,\"selected\":_vm.activeFile},on:{\"changed\":_vm.onFileTabClicked,\"close\":_vm.onFileTabClose}})],1)])],2)],1),_c('template',{slot:\"second\"},[_c('ErrorListing',{staticClass:\"errors\",attrs:{\"errors\":_vm.errors},on:{\"clicked\":_vm.onGotoLine}})],1)],2),(_vm.showRevisions)?_c('RevisionView',{staticStyle:{\"flex\":\"0 0 200px\"},attrs:{\"revisions\":_vm.revisions},on:{\"revision\":_vm.onShowRevision,\"close\":function($event){return _vm.toggleRevisions()},\"upgrade\":function($event){return _vm.buy(true)}}}):_vm._e()],1):_vm._e(),_c('Footer',{staticClass:\"wsdfooter\",attrs:{\"line\":_vm.row,\"column\":_vm.column,\"errors\":_vm.errors.length},on:{\"show-errors\":function($event){(_vm.showErrors = !_vm.showErrors),\n (_vm.errorsHidden = _vm.errorsHidden || !_vm.showErrors)}}})],1),_c('div',{staticClass:\"ui modal login-dialog\"},[_c('i',{staticClass:\"close icon\"}),_c('div',{staticClass:\"header\"},[_vm._v(\"Sign in\")]),_vm._m(1),_c('div',{staticClass:\"actions\"},[_c('div',{staticClass:\"ui button\"},[_vm._v(\"Cancel\")]),_c('div',{staticClass:\"ui button\",on:{\"click\":_vm.closeSignIn}},[_vm._v(\"OK\")])])]),(_vm.showSigninDialog)?_c('SigninDialog',{attrs:{\"model\":_vm.signInModel,\"message\":_vm.signInMessage},on:{\"close\":function($event){_vm.showSigninDialog = false}}}):_vm._e(),(_vm.showAccountDialog)?_c('AccountDialog',{attrs:{\"model\":_vm.accountModel},on:{\"close\":function($event){_vm.showAccountDialog = false}}}):_vm._e(),(_vm.showFileDialog)?_c('FileDialog',{attrs:{\"folder\":_vm.browseFolderId,\"model\":_vm.fileModel},on:{\"close\":_vm.closeFiles}}):_vm._e(),(_vm.showShareDialog)?_c('ShareDialog',{attrs:{\"wsdstyle\":_vm.style,\"text\":_vm.text,\"mode\":'share',\"hmac\":_vm.hmac,\"file\":_vm.activeFile,\"model\":_vm.fileModel},on:{\"close\":function($event){_vm.showShareDialog = false}}}):_vm._e(),(_vm.showHelpDialog)?_c('HelpDialog',{attrs:{\"hint\":_vm.hintTemplate},on:{\"close\":function($event){_vm.showHelpDialog = false},\"upgrade\":function($event){return _vm.buy(true)},\"template-clicked\":_vm.onTemplateClicked}}):_vm._e(),(!_vm.Wsd.haveBaton)?_c('MultipleSigninDialog'):_vm._e(),(_vm.debug)?_c('DebugPanel',{staticClass:\"DebugPanel\"}):_vm._e()],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"item\"},[_c('a',{attrs:{\"href\":\"mailto:support@websequencediagrams.com\"}},[_vm._v(\"support@websequencediagrams.com\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"ui segment\"},[_c('div',{staticClass:\"ui two column very relaxed grid\"},[_c('div',{staticClass:\"column\"},[_vm._v(\"Sign in with email\")]),_c('div',{staticClass:\"column\"},[_vm._v(\"Or google\")])]),_c('div',{staticClass:\"ui vertical divider\"},[_vm._v(\"and\")])])}]\n\nexport { render, staticRenderFns }","import {EventEmitter, HandlerFn} from '@/webshared/EventEmitter';\nimport {Debounce} from '@/webshared/Debounce';\nimport {log} from '@/webshared/log';\n\nexport class Settings extends EventEmitter {\n\n private settings: { [name: string]: any } = {};\n private debounce = new Debounce(200);\n public log = log.create('Settings');\n\n constructor() {\n super();\n window.addEventListener('storage', (e: StorageEvent) => {\n if (e.key === 'settings' && e.newValue) {\n this.decode(e.newValue);\n }\n });\n\n const data = localStorage.getItem('settings');\n if (data) {\n this.decode(data);\n }\n }\n\n public on(key: string, fn: HandlerFn) {\n super.on(key, fn);\n if (key in this.settings) {\n fn(key, this.settings[key]);\n }\n }\n\n public create(name: string, defValue: any, fn?: (newValue: any) => void): any {\n if (!(name in this.settings)) {\n this.set(name, defValue);\n }\n if (fn) {\n this.on(name, fn);\n fn(this.settings[name]);\n }\n return this.get(name);\n }\n\n private decode(str: string) {\n try {\n const props = JSON.parse(str);\n if (typeof props === 'object') {\n this.merge(props);\n }\n } catch (e) {\n this.log('Could not decode settings');\n }\n }\n\n private merge(newProps: any) {\n for (const key in newProps) {\n const value = newProps[key];\n if (this.settings[key] !== value) {\n this.settings[key] = value;\n this.emit(key, value);\n }\n }\n }\n\n public get(name: string): any {\n return this.settings[name];\n }\n\n public setSilently(name: string, value: any) {\n this.settings[name] = value;\n this.debounce.call( () => {\n localStorage.setItem('settings', JSON.stringify(this.settings));\n });\n }\n\n public set(name: string, value: any) {\n this.setSilently(name, value);\n this.emit(name, value);\n return value;\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"myeditor\",staticStyle:{\"text-align\":\"left\"},on:{\"!keydown\":function($event){return _vm.onKeyDown($event)}}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","declare let ace: any;\n\n/*\n\nSone text case sent by a user:\ntitle Participant Request\n\noption footer=bar\n This is a comment with participant in it\n This is a comment whose next line starts with\n participant which is impossible to solve unless\n you force \"participant\" to start on character 1\n which is what I would suggest\n\nparticipant leading spc\nparticipant x\nparticipant dev test\nparticipant dev test\nparticipant dev_test\nparticipant dev/test\nparticipant dev-test\nparticipant dev&test\nparticipant\nparticipant dev-->test\n\nx->dev test: OK\nx-->dev_test: OK\nx->>dev/test: fail\nx-->>dev-test: fail\nx--->dev_test: invalid signal\nx->dev&test: fail\nx->\"dev/test\": fail\nparallel {\n x->dev test: OK\n state left of x: hi\n}\n\n*/\n\n\n// Given a regexp, modify it so that \\w matches unicode characters\n// The \\w characters MUST be inside of []\nexport function u(r: RegExp): RegExp {\n return new RegExp(r.source.replace(/\\\\w/g, '\\\\u00BF-\\\\u1FFF\\\\u2C00-\\\\uD7FF\\\\w_\\\\/&'), r.flags);\n}\n\nace.define('ace/mode/wsd', function (ace_require: any, exports: any, module: any) {\n\n var oop = ace_require(\"ace/lib/oop\");\n var TextMode = ace_require(\"ace/mode/text\").Mode;\n var ExampleHighlightRules = ace_require(\"ace/mode/wsd_highlight_rules\").ExampleHighlightRules;\n\n var Mode = function (this: any) {\n this.HighlightRules = ExampleHighlightRules;\n };\n oop[\"inherits\"](Mode, TextMode);\n\n var tmp = function () {\n // Extra logic goes here. (see below)\n };\n\n tmp.call(Mode.prototype);\n\n exports.Mode = Mode;\n});\n\nace.define('ace/mode/wsd_highlight_rules', function (ace_require: any, exports: any, module: any) {\n var oop = ace_require(\"ace/lib/oop\");\n var TextHighlightRules = ace_require(\"ace/mode/text_highlight_rules\")[\"TextHighlightRules\"];\n\n var ExampleHighlightRules = function (this: any) {\n /*\n var keywordMapper = this[\"createKeywordMapper\"]({\n \"keyword\":\n /participant|const|function/i\n }, \"text\", true);\n */\n this.$rules = {\n \"start\": [\n {\n token: \"comment\",\n regex: /#[^\\n]*/,\n next: \"start\"\n }, {\n token: [\"keyword\", \"text\", \"variable.language\", \"keyword\", \"variable.language\"],\n regex: u(/(participant|actor)(\\s+)([\\w,'\" \\\\]+)(\\s+as\\s+)([\\w,'\"]+)/),\n next: \"start\"\n }, {\n token: [\"keyword\", \"text\", \"variable.language\"],\n regex: u(/(participant|actor)(\\s+)([\\w,'\" \\\\]+)/),\n next: \"start\",\n }, {\n token: [\"keyword\", \"variable.language\", \"text\"],\n regex: u(/(note over|note left of|note right of|state over|state left of|state right of)(\\s+[\\w,'\" \\\\]+)(\\s*:)/),\n next: \"start\"\n }, {\n token: [\"keyword\", \"text\"],\n regex: /\\s*(title)(.*)/,\n next: \"start\",\n\n }, {\n token: \"keyword\", //[\"text\", \"keyword\", \"text\", \"text\"],\n regex: /(^\\s*)(alt|opt|else|loop|par|parallel|option|title\\s+(.*))(\\b)/,\n next: \"start\"\n }, {\n token: [\"text\", \"keyword\", \"text\", \"constant\"],\n regex: /(^\\s*)(include)(\\s+)(\\\"[^\\n]*)/,\n next: \"start\"\n }, {\n token: [\"text\", \"keyword\", \"variable.language\"],\n regex: /(^\\s*)(activate|deactivate|destroy)(\\s*\\w+)/,\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: /(^\\s*end)( [\\w]+)?/,\n next: \"start\"\n }, {\n token: [\"keyword\", \"variable.language\"],\n regex: u(/(note over|note left of|note right of|state over|state left of|state right of)(\\s+[\\w,'\" \\\\]+)/),\n next: \"notelines\"\n }, {\n token: [\"variable.language\", \"keyword.operator\", \"keyword.operator\", \"variable.language\", \"text\"],\n regex: u(/(^\\s*[\\w,'\" \\]\\[]+\\s*)(->|-->|->>|-->>|<->|<-->)([\\*\\+\\-]?)(\\s*[\\w,'\" \\]\\[]+)(\\s*:)/),\n next: \"start\"\n }, {\n token: [\"keyword\", \"variable.language\", \"text\"],\n regex: u(/(^\\s*ref over\\b)([\\w,'\" ]+)(:[^\\n]*)/),\n next: \"start\"\n }, {\n token: [\"variable.language\", \"keyword.operator\", \"keyword.operator\", \"keyword\", \"variable.language\", \"text\"],\n regex: u(/(^\\s*[\\w,'\" \\]\\[]+\\s*)(->|-->|->>|-->>|<->|<-->)(\\+|-|\\*)?(\\s*ref over\\b)([\\w,'\" ]+)(:[^\\n]*)/),\n next: \"reflines\"\n }, {\n caseInsensitive: true\n }\n ],\n\n \"notelines\": [\n {\n token: \"keyword\",\n regex: /^\\s*end note/,\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: /^\\s*end state/,\n next: \"start\"\n }, {\n token: \"text\",\n next: \"notelines\"\n }, {\n caseInsensitive: true\n }\n ],\n\n \"reflines\": [\n {\n token: [\"keyword\", \"keyword.operator\", \"variable.language\", \"text\"],\n regex: u(/^(\\s*end ref)(->|-->|->>|-->>|<->|<-->)([\\w,\" ]+)(:[^\\n]*)/),\n next: \"start\"\n }, {\n token: \"keyword\",\n regex: /^\\s*end ref/,\n next: \"start\"\n }, {\n token: \"text\",\n next: \"reflines\"\n }, {\n caseInsensitive: true\n }\n ]\n\n };\n };\n\n oop[\"inherits\"](ExampleHighlightRules, TextHighlightRules);\n\n exports.ExampleHighlightRules = ExampleHighlightRules;\n});\n","\n\n\n\n\nimport { Component, Prop, Model, Vue, Watch } from \"vue-property-decorator\";\nimport { log } from \"@/webshared/log\";\nimport { Wsd } from \"../Wsd\";\nimport \"./../AceEditMode\";\nimport { u } from \"./../AceEditMode\";\n\n\ndeclare let ace: any;\n\nexport interface RowRange {\n start: {\n row: number;\n column: number;\n };\n\n end: {\n row: number;\n column: number;\n };\n}\n\nconst ParticipantExtractors = [\n {\n regex: u(/^\\s*(participant|actor)\\s+(\"([^\"]|\\\\.)*\"|\\w+)\\s+as\\s+([\\w ]+)$/i),\n groups: [4],\n },\n {\n regex: u(/^\\s*(participant|actor)\\s+(\"([^\"]|\\\\.)*\"|[\\w ]+)/i),\n groups: [2],\n },\n {\n regex: u(/^\\s*(\"([^\"]|\\\\.)*\"|[\\w ]+)\\s*(->|-->|->>|-->>|<->|<-->)\\s*([\\*\\+\\-]?)(\"([^\"]|\\\\.)*\"|[\\w ]+)/i),\n groups: [1, 5],\n },\n];\n\nfunction getParticipants(text: string) {\n const lines = text.split(\"\\n\");\n const participants: any = {};\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n for (let j = 0; j < ParticipantExtractors.length; j++) {\n const extractor = ParticipantExtractors[j];\n const m = extractor.regex.exec(line);\n if (m) {\n for (let k = 0; k < extractor.groups.length; k++) {\n const group = extractor.groups[k];\n if (group < m.length) {\n if (m[group].charAt(0) === '\"') {\n participants[m[group].substr(1, m[group].length - 2)] = 1;\n } else {\n participants[m[group].trim()] = 1;\n }\n }\n }\n break;\n }\n }\n }\n\n const list: string[] = [];\n for (const key in participants) {\n if (participants.hasOwnProperty(key)) {\n list.push(key);\n }\n }\n\n return list;\n}\n\nlet nextID = 1000;\n\ninterface Editor {\n setValue(text: string): void;\n setAutoScrollEditorIntoView(b: boolean): void;\n commands: any;\n on(name: string, fn: () => void): void;\n getSession(): any;\n $blockScrolling: number;\n setShowPrintMargin(b: boolean): void;\n setOptions(options: any): void;\n getValue(): string;\n resize(): void;\n destroy(): void;\n setReadOnly(readOnly: boolean): void;\n gotoLine(line: number): void;\n getSelectionRange(): RowRange;\n undo(): void;\n redo(): void;\n find(text: string, options: any, b: boolean): void;\n findNext(options: any): void;\n findPrevious(options: any): void;\n replace(wth: string, options: any): void;\n replaceAll(wth: string): void;\n}\n\n@Component({\n components: {},\n})\nexport default class AceEditor extends Vue {\n // editor can be null because we can call its functions from timeouts and things\n // after vue destroys us.\n public editor: Editor | null;\n @Model(\"change\") public text: string;\n public fn: any;\n public ignoreChange = false;\n public textSet = \"\";\n @Prop({ default: () => [] }) public errors: string[];\n @Prop({ default: () => false }) public readOnly: boolean;\n id = nextID++;\n\n public log = log.create(\"AceEditor\");\n\n public mounted() {\n this.log(\"Mounted %s\", this.id);\n this.editor = ace.edit(this.$el) as Editor;\n this.editor.setValue(this.text);\n this.editor.setAutoScrollEditorIntoView(true);\n this.editor.commands.removeCommand(\"find\");\n this.editor.on(\"change\", () => {\n if (this.editor && !this.ignoreChange) {\n const value = this.editor.getValue().replace(/\\r\\n/g, \"\\n\");\n this.textSet = value;\n this.$emit(\"change\", value);\n }\n });\n\n this.editor.getSession().selection.on(\"changeCursor\", () => {\n if (!this.editor) {\n return;\n }\n const lead = this.editor.getSession().selection.getSelectionLead();\n this.log(\"ChangeCursor %s %s\", lead.row, lead.column);\n this.$emit(\"change-cursor\", lead.row, lead.column);\n });\n\n this.fn = (e: Event) => {\n setTimeout(() => {\n if (this.editor) {\n this.editor.resize();\n }\n }, 0);\n };\n\n window.addEventListener(\"resize\", this.fn);\n const langTools = ace.require(\"ace/ext/language_tools\");\n\n this.editor.$blockScrolling = Infinity;\n this.editor.setShowPrintMargin(false);\n\n this.editor.getSession().setMode(\"ace/mode/wsd\");\n this.editor.getSession().setNewLineMode(\"unix\");\n langTools.setCompleters([]);\n this.editor.setOptions({\n enableBasicAutocompletion: false,\n enableSnippets: false,\n enableLiveAutocompletion: true,\n liveAutocompletionThreshold: 3,\n liveAutocompletionDelay: 200,\n\n theme: \"ace/theme/monokai\",\n fontSize: \"13px\",\n });\n\n const keywords = (\n \"participant,actor,note over ,note left of ,note right of ,state over ,\" +\n 'title,destroy,activate,deactivate,include \",autonumber,ref'\n ).split(\",\");\n\n langTools.addCompleter({\n getCompletions: (\n editor: any,\n session: any,\n pos: any,\n prefix: any,\n callback: any\n ) => {\n if (!this.editor) {\n return;\n }\n\n const options: any[] = [];\n const lprefix = prefix.toLowerCase();\n const line = session.getLine(pos.row);\n\n const includeRe = /\\s*include\\s+\"/i;\n if (includeRe.exec(line)) {\n // search accessible files for prefix.\n Wsd.listFiles().then(function (files: any) {\n files = files.data;\n for (let i = 0; i < files.files.length; i++) {\n const file = files.files[i];\n if (\n file.name.toLowerCase().indexOf(lprefix) === 0\n ) {\n options.push({\n value: file.name + '\"',\n score: 1000,\n meta: \"saved file\",\n });\n }\n }\n callback(null, options);\n });\n\n return;\n }\n\n if (prefix.length === 0) {\n callback(null, []);\n return;\n }\n\n let i;\n for (i = 0; i < keywords.length; i++) {\n const keyword = keywords[i];\n if (keyword.indexOf(lprefix) === 0) {\n options.push({\n value: keyword,\n score: 1000,\n meta: \"keyword\",\n });\n }\n }\n\n console.log(\"Prefix is: \" + prefix);\n\n const participants = getParticipants(this.editor.getValue());\n for (i = 0; i < participants.length; i++) {\n const participant = participants[i];\n if (participant.indexOf(prefix) === 0) {\n options.push({\n value: participant,\n score: 1001,\n meta: \"participant\",\n });\n }\n }\n callback(null, options);\n },\n });\n }\n\n public updated() {\n this.log(\"updated()\");\n }\n\n public beforeDestroy() {\n this.log(\"Destroy!\");\n if (this.editor) {\n this.editor.destroy();\n this.editor = null;\n }\n\n window.removeEventListener(\"resize\", this.fn);\n }\n\n @Watch(\"text\")\n public setText(value: string, oldValue: string) {\n if (this.editor && this.textSet !== value) {\n this.ignoreChange = true;\n this.textSet = value;\n this.editor.setValue(value);\n this.ignoreChange = false;\n } else if (!this.editor) {\n this.log(\"setText called but not yet mounted\");\n }\n }\n\n @Watch(\"readOnly\")\n private setReadOnly() {\n if (this.editor) {\n this.log(\"set readonly=%s\", this.readOnly);\n this.editor.setReadOnly(this.readOnly);\n }\n }\n\n public gotoLine(line: number) {\n this.log(\"gotoLine(%s)\", line);\n if (!this.editor) {\n return;\n }\n this.editor.gotoLine(line + 1);\n }\n\n public getRowRange() {\n if (!this.editor) {\n return { start: { row: 0, column: 0 }, end: { row: 0, column: 0 } };\n }\n return this.editor.getSelectionRange();\n }\n\n public setRowRange(range: RowRange) {\n if (!this.editor) {\n return;\n }\n this.editor.getSession().selection.setSelectionRange(range);\n }\n\n public getSelectionRange() {\n if (!this.editor) {\n return { start: 0, length: 0 };\n }\n\n let lines = this.editor.getSession().doc.getAllLines(),\n range = this.editor.getSelectionRange(),\n i,\n n1,\n n2,\n selectionStart = 0,\n selectionEnd = 0;\n\n for (\n i = 0, n1 = lines.length, n2 = range.end.row;\n i < n1 && i <= n2;\n ++i\n ) {\n // Selection Start\n if (i === range.start.row) {\n selectionStart += range.start.column;\n } else if (i < range.start.row) {\n selectionStart += lines[i].length + 1;\n }\n\n // Selection End\n if (i === range.end.row) {\n selectionEnd += range.end.column;\n } else if (i < range.end.row) {\n selectionEnd += lines[i].length + 1;\n }\n }\n\n return {\n start: selectionStart,\n length: selectionEnd - selectionStart,\n };\n }\n\n public setSelectionRange(start: number, length: number) {\n // WsdMain will call this sometimes after Vue destroys and recreates the component...\n this.log(\"[%s] SetSelectionRange(%s,%s)\", this.id, start, length);\n if (this.editor === null) {\n this.log(\"Ignore stale request.\");\n return;\n }\n\n const value = this.editor.getValue();\n const startString = value.substring(0, start),\n endString = value.substring(0, start + length),\n startSplit = startString.split(\"\\n\"),\n endSplit = endString.split(\"\\n\"),\n startRow = startSplit.length ? startSplit.length - 1 : 0,\n endRow = endSplit.length ? endSplit.length - 1 : 0,\n startColumn = startSplit[startRow].length,\n endColumn = endSplit[endRow].length;\n\n this.editor.getSession().selection.setSelectionRange({\n start: {\n row: startRow,\n column: startColumn,\n },\n end: {\n row: endRow,\n column: endColumn,\n },\n });\n }\n\n @Watch(\"errors\")\n public onNewErrors() {\n const aceErrors = [];\n for (let i = 0; i < this.errors.length; i++) {\n const line = this.errors[i];\n if (line.indexOf(\"Line \") === 0) {\n const lineno = parseInt(line.substr(5), 10);\n if (lineno) {\n aceErrors.push({\n row: lineno - 1,\n column: 0,\n text: line,\n type: \"error\",\n });\n }\n }\n }\n if (this.editor) {\n this.editor.getSession().setAnnotations(aceErrors);\n }\n }\n\n public onKeyDown(e: KeyboardEvent) {\n if (\n (e.keyCode === 90 && (e.ctrlKey || e.metaKey) && e.shiftKey) ||\n (e.keyCode === 89 && (e.ctrlKey || e.metaKey))\n ) {\n e.stopPropagation();\n e.preventDefault();\n this.$emit(\"redo\");\n } else if (e.keyCode === 90 && (e.ctrlKey || e.metaKey)) {\n e.stopPropagation();\n e.preventDefault();\n this.$emit(\"undo\");\n }\n }\n\n public undo() {\n if (this.editor) {\n this.editor.undo();\n }\n }\n\n public redo() {\n if (this.editor) {\n this.editor.redo();\n }\n }\n\n public find(needle: string) {\n if (this.editor) {\n this.editor.find(needle, {}, false);\n }\n }\n\n public findNext(needle: string) {\n if (this.editor) {\n this.editor.findNext({ needle: needle });\n }\n }\n\n public findPrevious(needle: string) {\n if (this.editor) {\n this.editor.findPrevious({ needle: needle });\n }\n }\n\n public replace(needle: string, wi: string) {\n if (this.editor) {\n this.editor.replace(wi, {\n needle: needle,\n });\n this.editor.findNext({ needle: needle });\n }\n }\n\n public replaceAll(wi: string) {\n if (this.editor) {\n this.editor.replaceAll(wi);\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AceEditor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AceEditor.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AceEditor.vue?vue&type=template&id=d999117c&scoped=true&\"\nimport script from \"./AceEditor.vue?vue&type=script&lang=ts&\"\nexport * from \"./AceEditor.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AceEditor.vue?vue&type=style&index=0&id=d999117c&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d999117c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex-col\",staticStyle:{\"flex-grow\":\"1\",\"min-height\":\"0\",\"min-width\":\"0\"}},[(_vm.shrunk && _vm.allowShrinkWarning)?_c('div',{staticClass:\"shrink-warning\"},[_vm._v(\"\\n Your diagram is too wide for the free version, so it has been shrunk\\n to fit and may appear blurry.\\n \"),_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":function($event){return _vm.$emit('upgrade')}}},[_vm._v(\"Subscribe now\")]),_vm._v(\"\\n to get access to full quality diagrams and premium features.\\n \"),_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":function($event){return _vm.hideShrinkWarning()}}},[_vm._v(\"Hide this.\")])]):_vm._e(),_c('div',{ref:\"imageView\",staticClass:\"imageview\"})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { log } from \"./webshared/log\"\nimport { EventEmitter } from \"./webshared/EventEmitter\"\nimport { $html, ElClass } from \"./webshared/Html\"\n\ninterface Box {\n header: boolean;\n line: number;\n rect: [number, number, number, number];\n}\n\ninterface Header {\n div: ElClass;\n rect: [number, number, number, number];\n}\n\ninterface Point {\n x: number;\n y: number;\n}\n\nfunction copy(obj: any): any {\n return JSON.parse(JSON.stringify(obj));\n}\n\nexport class ImageView extends EventEmitter {\n private boxes: Box[] | null = null;\n private lineno = -1;\n private scale = 3;\n private img: HTMLImageElement | null = null;\n private sequence = 0;\n private dpi: number;\n private requestedScale: number;\n private zoomFactor = 1.0;\n private waywardClicks = 0;\n private MaxWaywardClicks = 3;\n private spinner: ElClass;\n private arrowsShown = false;\n private box: ElClass;\n private headers: Header[] = [];\n private clipheading: ElClass;\n private heading: ElClass;\n private dragStart: Point | null = null;\n private scrollStart: Point = { x: 0, y: 0 };\n private boxesEnabled = true;\n private mouseEntered = false;\n private unscaledBoxes: Box[] = [];\n private zoomType = \"zoom-actual\";\n\n constructor(private div: HTMLDivElement) {\n super();\n this.div.style.overflow = \"auto\";\n this.div.style.textAlign = \"left\";\n this.div.style.position = \"relative\";\n\n // calculate screen dpi\n var screenWidth = window.screen.availWidth;\n\n var inches = 1920 / 96;\n this.dpi = screenWidth / inches;\n this.log(\"Screen DPI is %s\", this.dpi);\n this.requestedScale = Math.max(1, this.dpi / 96);\n this.log(\"Screen DPI is %s, scaling by %s\", this.dpi, this.requestedScale);\n\n var self = this;\n\n this.spinner = $html(\"\", {\n \"src\": \"ajax-loader.gif\"\n }).setStyle({\n position: \"absolute\",\n left: \"50%\",\n top: \"50%\",\n display: \"none\",\n zIndex: \"100\"\n }).addEventListener(\"load\", () => {\n self.spinner.setStyle({\n //@ts-ignore\n marginTop: self.spinner.el.offsetHeight / 2 + \"px\",\n //@ts-ignore\n marginLeft: self.spinner.el.offsetWidth / 2 + \"px\",\n });\n }).appendTo(this.div);\n\n self.arrowsShown = false;\n $html(this.div).addEventListener(\"click\", () => {\n self.waywardClicks += 1;\n if (self.waywardClicks > self.MaxWaywardClicks && !self.arrowsShown) {\n self.waywardClicks = 0;\n self.arrowsShown = true;\n }\n });\n\n this.box = $html(\"
\").setStyle({\n borderWidth: \"4px\",\n borderRadius: \"3px\",\n borderColor: \"rgba(255,165,0,0.5)\",\n display: \"none\",\n position: \"absolute\",\n zIndex: \"1\",\n borderStyle: \"solid\",\n pointerEvents: \"none\",\n }).appendTo(this.div).addEventListener(\"mousemove\", (e: MouseEvent) => {\n if (e.type !== \"mousemove\") {\n return;\n }\n\n if (self.img) {\n var offset = $html(self.img).getOffset();\n var x = e.pageX - offset.left;\n var y = e.pageY - offset.top;\n self.onMouseMove(x, y);\n }\n });\n\n this.headers = [];\n\n var offset = $html(this.div).getOffset();\n this.clipheading = $html(\"
\").setStyle({\n overflow: \"hidden\",\n position: \"fixed\",\n width: \"500px\",\n height: \"64px\",\n top: offset.top + \"px\",\n left: offset.left + \"px\",\n pointerEvents: \"none\",\n }).appendTo(document.body);\n\n this.heading = $html(\"
\").setStyle({\n position: \"absolute\"\n }).appendTo(this.clipheading.el);\n\n this.format();\n\n // point x and y\n this.dragStart = null;\n\n this.boxesEnabled = true;\n this.mouseEntered = false;\n\n $html(this.div).addEventListener(\"scroll\", function () {\n self.onscroll();\n });\n\n\n $html(this.div).addEventListener(\"wheel\", function (e: WheelEvent) {\n self.onwheel(e);\n });\n\n $html(this.div).addEventListener(\"mouseenter mouseleave\", function (e) {\n self.mouseEntered = e.type === \"mouseenter\";\n self.setBoxesEnabled(self.boxesEnabled);\n });\n }\n\n fadeIn(img: HTMLImageElement) {\n img.style.opacity = \"0.0\";\n setTimeout(function () {\n img.style.transition = \"opacity 200ms ease\";\n img.style.opacity = \"1.0\";\n }, 1);\n }\n\n fadeOut(img: HTMLImageElement) {\n setTimeout(() => {\n img.style.transition = \"opacity 200ms ease\";\n img.style.opacity = \"0.0\";\n }, 1);\n setTimeout(function () {\n if (img.parentNode) {\n img.parentNode.removeChild(img);\n }\n }, 200);\n }\n\n destroy() {\n this.clipheading.remove();\n this.box.remove();\n }\n\n log = log.create(\"ImageView\");\n\n getSrc() {\n if (this.img) {\n return this.img.getAttribute(\"src\");\n }\n return \"\";\n }\n\n setBoxesEnabled(yes: boolean) {\n this.boxesEnabled = yes;\n //this.log(\"Boxes requested: %s mouseentered: %s\", yes, this.mouseEntered);\n yes = yes && this.mouseEntered;\n if (!yes) {\n this.hideBox();\n }\n\n this.clipheading.setStyle({\n display: this.boxesEnabled ? \"block\" : \"none\",\n });\n }\n\n width() {\n return this.div.offsetWidth;\n }\n\n height() {\n return this.div.offsetHeight;\n }\n\n resetUserZoom() {\n this.zoomFactor = 1.0;\n this._rescale();\n }\n\n getImageWidth() {\n if (this.img !== null) {\n return this.img.width;\n } else {\n return 0;\n }\n }\n\n setGrayed(grayed: boolean) {\n this.spinner.setStyle({\n display: grayed ? \"block\" : \"none\"\n });\n }\n\n load(src: string, boxes: Box[], allowScaling: boolean) {\n this.setGrayed(true);\n\n var self = this;\n var img = document.createElement(\"img\");\n self.log(\"Waiting for image %s to load.\", src);\n img.onload = function () {\n self.log(\"Image loaded\");\n self.onLoaded(img, src, boxes, allowScaling);\n };\n img.src = src;\n }\n\n onLoaded(img: HTMLImageElement, src: string, boxes: Box[], allowScaling: boolean) {\n // if allowScaling is set, then allow scaling even if it would make the \n // image wider than the available space.\n try {\n if (this.img !== null) {\n // switch to absolute positioning so it stays in place.\n let offset = { top: this.img.offsetTop, left: this.img.offsetLeft };\n this.img.style.position = \"absolute\";\n this.img.style.left = offset.left + \"px\";\n this.img.style.top = offset.top + \"px\";\n this.img.style.margin = \"0 0\";\n this.fadeOut(this.img);\n }\n this.setGrayed(false);\n this.boxes = boxes;\n this.unscaledBoxes = copy(boxes);\n\n this.img = img;\n this.div.insertBefore(this.img, null);\n this.fadeIn(this.img);\n } catch (e) {\n this.img = null;\n throw e;\n }\n\n //$(this.img).css(\"position\", \"relative\");\n $html(this.img).setStyle({\n cursor: \"pointer\",\n })\n this.hideBox();\n var self = this;\n\n if (this.sequence === 0) {\n // fix weird webkit bug that happens the first time it is\n // displayed.\n setTimeout(function () {\n if (self.img) {\n $html(self.img).setStyle({\n opacity: \"0.99\"\n });\n }\n }, 100);\n }\n\n this.sequence += 1;\n\n this.dragStart = null;\n\n $html(this.img).addEventListener(\"mousedown\", (e: MouseEvent) => {\n self.dragStart = { x: e.pageX, y: e.pageY };\n self.scrollStart = {\n x: self.div.scrollLeft,\n y: self.div.scrollTop,\n };\n e.preventDefault();\n e.stopPropagation();\n });\n\n $html(this.img).addEventListener(\"mousemove\", (e: MouseEvent) => {\n if (!this.img) {\n return;\n }\n\n var offset = $html(this.img).getOffset();\n var x = e.pageX - offset.left;\n var y = e.pageY - offset.top;\n self.onMouseMove(x, y);\n\n if (self.dragStart) {\n self.scroll(self.dragStart.x - e.pageX, self.dragStart.y -\n e.pageY);\n }\n });\n\n $html(this.img).addEventListener(\"mouseup mouseleave\", (e: MouseEvent) => {\n self.dragStart = null;\n });\n\n $html(this.img).addEventListener(\"click\", (e: MouseEvent) => {\n if (self.lineno >= 0) {\n self.emit(\"goto-line\", self.lineno);\n }\n });\n\n if (this.img.width * this.requestedScale < this.width() || allowScaling) {\n this.scale = this.requestedScale * this.zoomFactor;\n } else {\n this.scale = 1.0;\n }\n\n\n $html(this.img).setStyle({\n position: \"absolute\",\n })\n\n this._rescale();\n }\n\n // After changing the scale, we need to rescale the image and the boxes.\n private _rescale() {\n if (!this.img) return;\n\n this.img.width = this.scale * this.img.naturalWidth;\n\n var height = this.height();\n if (this.img.height < height) {\n $html(this.img).setStyle({\n top: \"50%\",\n marginTop: -this.img.height / 2 + \"px\",\n });\n } else {\n $html(this.img).setStyle({\n top: \"0\",\n marginTop: \"0\",\n });\n }\n\n var width = this.width();\n if (this.img.width < width) {\n $html(this.img).setStyle({\n left: \"50%\",\n marginLeft: -this.img.width / 2 + \"px\",\n });\n } else {\n $html(this.img).setStyle({\n left: \"0\",\n marginLeft: \"0\",\n });\n }\n\n let boxes = this.boxes = copy(this.unscaledBoxes);\n\n for (var i = 0; i < boxes.length; i++) {\n boxes[i].rect[0] *= this.scale;\n boxes[i].rect[1] *= this.scale;\n boxes[i].rect[2] *= this.scale;\n boxes[i].rect[3] *= this.scale;\n }\n\n this.createHeader(boxes);\n }\n\n createHeader(boxes: Box[]) {\n if (!this.img) {\n return;\n }\n\n var src = this.img.getAttribute(\"src\");\n this.heading.clear();\n\n this.headers.length = 0;\n\n if (!this.img) {\n return;\n }\n\n var offset = $html(this.img).getOffset();\n var divOffset = $html(this.div).getOffset();\n //var imgOffset = $(this.img).offset();\n\n //offset.left += imgOffset.left;\n //offset.top += imgOffset.top;\n\n var maxHeight = 0;\n\n for (var i = 0; i < boxes.length; i++) {\n var box = boxes[i];\n if (!box.header) {\n continue;\n }\n\n maxHeight = Math.max(maxHeight, box.rect[3]);\n\n var head = {\n div: $html(\"
\"),\n rect: box.rect\n };\n\n head.div.setStyle({\n backgroundImage: `url(${src})`,\n backgroundRepeat: \"no-repeat\",\n backgroundPosition: `${-head.rect[0]}px ${-head.rect[1]}px`,\n backgroundSize: `${this.img.width}px ${this.img.height}px`,\n position: \"absolute\",\n left: `${head.rect[0]}px`,\n top: \"0\",\n width: `${head.rect[2]}px`,\n height: `${head.rect[3]}px`,\n }).appendTo(this.heading.el);\n\n this.headers.push(head);\n }\n\n this.heading.setStyle({\n left: `${offset.left - divOffset.left}px`,\n width: `${this.img.offsetWidth}px`,\n height: `${maxHeight}px`,\n });\n\n this.clipheading.setStyle({\n height: `${maxHeight}px`,\n });\n\n this.onscroll();\n }\n\n onMouseMove(x: number, y: number) {\n if (this.boxes) {\n var i;\n for (i = 0; i < this.boxes.length; i++) {\n var rect = this.boxes[i][\"rect\"];\n if (x >= rect[0] && x < rect[0] + rect[2] &&\n y >= rect[1] && y < rect[1] + rect[3]) {\n this.drawBox(rect[0], rect[1], rect[2], rect[3]);\n this.lineno = this.boxes[i].line;\n break;\n }\n }\n if (i === this.boxes.length) {\n this.hideBox();\n }\n }\n }\n\n scroll(dx: number, dy: number) {\n //this.log(\"Scroll dx=%s dy=%s\", this.scrollStart.x + dx, this.scrollStart.y + dy);\n this.div.scrollLeft = this.scrollStart.x + dx;\n this.div.scrollTop = this.scrollStart.y + dy;\n }\n\n onscroll() {\n if (!this.img) {\n return;\n }\n\n var imgOffset = $html(this.img).getOffset();\n var divOffset = $html(this.div).getOffset();\n\n this.heading.setStyle({\n left: `${imgOffset.left - divOffset.left}px`\n });\n\n for (var i = 0; i < this.headers.length; i++) {\n var head = this.headers[i];\n var show = false;\n //console.log(\"rect: %o\", head);\n\n if (head.rect[1] + imgOffset.top < divOffset.top) {\n show = true;\n }\n\n head.div.setStyle({\n display: show ? \"block\" : \"none\",\n });\n }\n }\n\n onwheel(e: WheelEvent) {\n if (!e.ctrlKey || !this.img) return;\n e.preventDefault();\n let m = 1 + (0.1 * Math.abs(e.deltaY / 120));\n let scale\n if (e.deltaY > 0) {\n scale = 1 / m;\n } else {\n scale = m;\n }\n if (this.zoomFactor === 1.0) {\n // zoom changed, inform UI\n this.div.dispatchEvent(new CustomEvent(\"userzoomed\", {\n bubbles: true,\n }));\n }\n\n let oldWidth = this.img.width;\n let oldHeight = this.img.height;\n this.zoomFactor *= scale;\n console.log(\"Wheel scale %s; zoom factor now %s\", scale, this.zoomFactor)\n this.scale = this.requestedScale * this.zoomFactor;\n let newWidth = this.img.naturalWidth * this.scale;\n let newHeight = this.img.naturalHeight * this.scale;\n let dx = (newWidth - oldWidth);\n let dy = (newHeight - oldHeight);\n\n let offset = $html(this.img).getOffset();\n let imageX = e.pageX - offset.left;\n let imageY = e.pageY - offset.top;\n console.log(\"ImageX is %s, oldWidth is %s, %s\", imageX, oldWidth, imageX / oldWidth)\n\n this.div.scrollLeft += dx * (imageX / oldWidth);\n this.div.scrollTop += dy * (imageY / oldHeight);\n this._rescale();\n\n // Correct boxes currently highlighted.\n var x = e.pageX - offset.left;\n var y = e.pageY - offset.top;\n this.onMouseMove(x, y);\n }\n\n drawBox(x: number, y: number, width: number, height: number) {\n if (!this.boxesEnabled) {\n return;\n }\n var imgOffset = { left: this.img!.offsetLeft, top: this.img!.offsetTop };\n var border = 4;\n width += border;\n height += border;\n x += imgOffset.left - border;\n y += imgOffset.top - border;\n this.box.setStyle({\n display: \"block\",\n left: `${x}px`,\n top: `${y}px`,\n width: `${width}px`,\n height: `${height}px`\n })\n }\n\n hideBox() {\n this.box.setStyle({\n display: \"none\",\n })\n this.lineno = -1;\n }\n\n showLine(lineno: number) {\n if (this.boxes) {\n var i;\n for (i = 0; i < this.boxes.length; i++) {\n var box = this.boxes[i];\n if (box[\"line\"] === lineno) {\n this.drawBox(box[\"rect\"][0],\n box[\"rect\"][1],\n box[\"rect\"][2],\n box[\"rect\"][3]);\n break;\n }\n }\n\n if (i === this.boxes.length) {\n this.hideBox();\n }\n }\n }\n\n format() {\n var divOffset = $html(this.div).getOffset();\n if (this.img) {\n var imgOffset = $html(this.img).getOffset();\n this.heading.setStyle({\n left: `${imgOffset.left - divOffset.left}px`,\n });\n this.onscroll();\n }\n this.clipheading.setStyle({\n top: `${divOffset.top}px`,\n left: `${divOffset.left}px`,\n width: `${this.div.offsetWidth}px`,\n });\n }\n\n copyToClipboard() {\n if (!this.img) return Promise.resolve();\n\n // create a canvas element\n var canvas = document.createElement('canvas');\n canvas.width = this.img.naturalWidth;\n canvas.height = this.img.naturalHeight;\n\n // get the context\n var ctx = canvas.getContext('2d')!;\n ctx.drawImage(this.img, 0, 0);\n return copyCanvasToClipboard(canvas);\n }\n};\n\n\nfunction copyCanvasToClipboard(canvas: HTMLCanvasElement) {\n let makeBlob = (canvas: HTMLCanvasElement) => {\n return new Promise((resolve, reject) => {\n canvas.toBlob((blob) => {\n if (blob) {\n resolve(blob);\n } else {\n reject(new Error(`No blob created`));\n }\n });\n });\n };\n\n return navigator.clipboard\n //@ts-ignore\n .write([\n //@ts-ignore\n new ClipboardItem({\n \"image/png\": makeBlob(canvas)\n })\n ]);\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { ImageView } from \"../ImageView\";\nimport { log } from \"../webshared/log\";\nimport { Wsd, DiagramRequest, MAX_UNSUBSCRIBED_WIDTH } from \"../Wsd\";\nimport { Debounce } from \"../webshared/Debounce\";\n\nconst TYPING_TIMEOUT = 500;\n\n@Component({\n components: {},\n})\nexport default class ImageVue extends Vue {\n @Prop() public text: string;\n @Prop() public zoom: string;\n @Prop() public wsdstyle: string;\n @Prop() public filename: string;\n public view: ImageView;\n public textDebounce = new Debounce(TYPING_TIMEOUT);\n public settingsDebounce = new Debounce(0);\n public allowShrinkWarning = !Wsd.subscribed();\n public shrunk = false;\n\n public static TEXT_UNSET = \"ncwjnawoq23nnksdds\";\n\n public resizeFn: any;\n\n public log = log.create(\"ImageVue\");\n\n el: HTMLElement;\n\n public size() {\n return {\n width: this.el.offsetWidth,\n height: this.el.offsetHeight,\n };\n }\n\n public mounted() {\n this.log(\n \"Mounted; zoom=%s, text=%s\",\n this.zoom,\n this.text.substr(0, 32)\n );\n this.resizeFn = () => {\n this.onResize();\n };\n\n this.el = this.$el as HTMLElement;\n\n window.addEventListener(\"resize\", this.resizeFn);\n\n this.view = new ImageView(this.$refs.imageView as HTMLDivElement);\n this.reload();\n\n this.view.on(\"goto-line\", (line: number) => {\n this.log(\"goto-line %s\", line);\n this.$emit(\"gotoLine\", line);\n });\n }\n\n updated() {\n this.log(\"updated()\");\n }\n\n public beforeDestroy() {\n this.log(\"Destroyed\");\n this.view.destroy();\n window.removeEventListener(\"resize\", this.resizeFn);\n }\n\n public onResize() {\n if (this.zoom !== \"zoom-actual\") {\n this.textDebounce.call(() => {\n this.reload();\n });\n }\n\n setTimeout(() => {\n this.view.format();\n }, 0);\n }\n\n public reload() {\n this.log(\"reload(), zoom now %s\", this.zoom);\n if (this.text === ImageVue.TEXT_UNSET) {\n return;\n }\n\n let request: DiagramRequest = {\n message: this.text,\n style: this.wsdstyle,\n format: \"png\",\n filename: this.filename,\n width: 0,\n height: 0,\n };\n\n if (this.zoom !== \"zoom-actual\" && this.zoom !== \"zoom-custom\") {\n request.width = this.el.offsetWidth;\n }\n\n if (this.zoom === \"zoom-page\") {\n request.height = this.el.offsetHeight;\n }\n\n if (this.zoom !== \"zoom-custom\") {\n this.view.resetUserZoom();\n }\n\n this.log(\"Requesting image: zoom=%s\", this.zoom);\n Wsd.diagram(request).then(\n (response) => {\n this.view.load(response.data.img, response.data.boxes, this.zoom === \"zoom-custom\");\n this.$emit(\"rendered\", response.data);\n this.shrunk =\n response.data.actualWidth < response.data.naturalWidth &&\n response.data.actualWidth == MAX_UNSUBSCRIBED_WIDTH;\n Vue.nextTick(() => {\n // reposition the headings in case the shrink warning is shown and changes the position of the\n // image div.\n this.view.format();\n });\n },\n (error) => {\n console.log(\"Error: \" + error);\n }\n );\n }\n\n hideShrinkWarning() {\n this.allowShrinkWarning = false;\n Vue.nextTick(() => {\n this.view.format();\n });\n }\n\n resetUserZoom() {\n this.view.resetUserZoom();\n }\n\n @Watch(\"text\")\n public onTextChange() {\n this.log(\"TEXT CHANGED: %s\", this.text.substr(0, 32));\n this.textDebounce.call(() => {\n this.reload();\n });\n }\n\n @Watch(\"zoom\")\n public onZoomChange() {\n this.log(\"ZOOM CHANGED: %s\", this.zoom);\n this.settingsDebounce.call(() => {\n this.reload();\n });\n }\n\n @Watch(\"wsdstyle\")\n public onStyleChange() {\n this.log(\"STYLE CHANGED: %s\", this.wsdstyle);\n this.settingsDebounce.call(() => {\n this.reload();\n });\n }\n\n public showLine(line: number) {\n this.log(\"showLine(%s)\", line);\n this.view.showLine(line);\n }\n\n copyImage() {\n return this.view.copyToClipboard();\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageVue.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ImageVue.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ImageVue.vue?vue&type=template&id=36ece9a5&scoped=true&\"\nimport script from \"./ImageVue.vue?vue&type=script&lang=ts&\"\nexport * from \"./ImageVue.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ImageVue.vue?vue&type=style&index=0&id=36ece9a5&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"36ece9a5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"wsdfooter\"},[_c('span',[_vm._v(\"Ln \"+_vm._s(_vm.line + 1)+\", Col \"+_vm._s(_vm.column + 1))]),_c('span',{staticClass:\"clickable\",attrs:{\"title\":\"Show error listing\"},on:{\"click\":function($event){return _vm.$emit('show-errors')}}},[_c('span',{style:({ color: _vm.errors > 0 ? '#f00' : '#0f0' })},[_vm._v(\"âš«\")]),_vm._v(\"\\n \"+_vm._s(_vm.errors)+\"\\n \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport { Wsd } from \"@/Wsd\";\n\n@Component({\n components: {},\n})\nexport default class Footer extends Vue {\n @Prop() public line: number;\n @Prop() public column: number;\n @Prop({ default: 0 }) public errors: number;\n public Wsd = Wsd;\n\n public mounted() {}\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=a9cb2fea&scoped=true&\"\nimport script from \"./Footer.vue?vue&type=script&lang=ts&\"\nexport * from \"./Footer.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Footer.vue?vue&type=style&index=0&id=a9cb2fea&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a9cb2fea\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"error-listing\"},[(_vm.errors.length===0)?_c('div',{staticStyle:{\"color\":\"green\"}},[_vm._v(\"\\n There are no errors in the syntax of the diagram.\\n \")]):_vm._e(),_vm._l((_vm.errors),function(line){return _c('div',{key:line,staticClass:\"errorcls\",on:{\"click\":function($event){return _vm.onLineClicked(line)}}},[_vm._v(\"\\n \"+_vm._s(line)+\"\\n \")])})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from 'vue-property-decorator';\nimport { log } from '@/webshared/log';\n\n@Component({\n components: {},\n})\nexport default class MyComponent extends Vue {\n public log = log.create('ErrorListingComponent');\n @Prop() public errors: string[];\n public mounted() {\n this.log('Created!');\n }\n\n public onLineClicked(line: string) {\n const re = /^Line (\\d+)/;\n const m = re.exec(line);\n this.log('clicked %s', line);\n if (m) {\n this.$emit('clicked', parseFloat(m[1]) - 1);\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorListing.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorListing.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ErrorListing.vue?vue&type=template&id=7a0b7d18&scoped=true&\"\nimport script from \"./ErrorListing.vue?vue&type=script&lang=ts&\"\nexport * from \"./ErrorListing.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ErrorListing.vue?vue&type=style&index=0&id=7a0b7d18&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7a0b7d18\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"dialog\",staticClass:\"ui modal\"},[_c('div',{staticClass:\"flex-row\"},[_vm._m(0),_c('div',{staticClass:\"mycontent\"},[(!_vm.sso)?_c('h1',[_c('span',{staticStyle:{\"color\":\"#0080fc\"}},[_vm._v(\"Save your work\")]),_vm._v(\" by\\n creating an account\\n \")]):_vm._e(),(_vm.sso)?_c('h1',[_c('span',{staticStyle:{\"color\":\"#0080fc\"}},[_vm._v(\"Enter your email address\")]),_vm._v(\"\\n to use single sign on.\\n \")]):_vm._e(),(_vm.message != '')?_c('div',{staticStyle:{\"margin-bottom\":\"1em\"}},[_vm._v(\"\\n \"+_vm._s(_vm.message)+\"\\n \")]):_vm._e(),_c('div',{staticClass:\"ui input focus\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.email),expression:\"email\"}],attrs:{\"type\":\"text\",\"placeholder\":\"Email\"},domProps:{\"value\":(_vm.email)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.email=$event.target.value}}})]),(!_vm.sso)?_c('div',{staticClass:\"ui input focus\",staticStyle:{\"margin-top\":\"1em\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"type\":\"password\",\"placeholder\":\"Password\"},domProps:{\"value\":(_vm.password)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.signin()},\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}})]):_vm._e(),(_vm.model.error !== '')?_c('div',{staticClass:\"error-box\"},[_vm._v(\"\\n \"+_vm._s(_vm.model.error)+\"\\n \")]):_vm._e(),_c('Spinner',{style:({ visibility: _vm.model.busy ? 'visible' : 'hidden' })}),_c('div',{staticClass:\"actions\",staticStyle:{\"margin-top\":\"1em\"},style:({ visibility: _vm.model.busy ? 'hidden' : 'visible' })},[_c('button',{staticClass:\"ui rightlabeled icon button\",on:{\"click\":function($event){return _vm.signin()}}},[_vm._v(\"\\n Sign in\\n \")]),(\n _vm.Wsd.config.signInMethod === 'user-managed' && !_vm.sso\n )?_c('button',{staticClass:\"ui rightlabeled icon button\",on:{\"click\":function($event){return _vm.createAccount()}}},[_vm._v(\"\\n Create account\\n \")]):_vm._e(),(!_vm.sso)?_c('button',{staticClass:\"ui basic icon button\",on:{\"click\":function($event){return _vm.forgotPassword()}}},[_vm._v(\"\\n Forgot password\\n \")]):_vm._e(),(!_vm.sso && _vm.Wsd.gold())?_c('button',{staticClass:\"ui basic icon button\",on:{\"click\":function($event){_vm.sso = !_vm.sso}}},[_vm._v(\"\\n SSO\\n \")]):_vm._e(),(_vm.sso)?_c('button',{staticClass:\"ui basic icon button\",on:{\"click\":function($event){_vm.sso = !_vm.sso}}},[_vm._v(\"\\n Use password\\n \")]):_vm._e()])],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"logo\"},[_c('img',{attrs:{\"src\":\"wsd.png\"}})])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"load-bar\"},[_c('div',{staticClass:\"bar\"}),_c('div',{staticClass:\"bar\"}),_c('div',{staticClass:\"bar\"})])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\nimport { log } from '@/webshared/log';\n\n@Component({\n components: {\n\n },\n})\nexport default class Spinner extends Vue {\n public log = log.create('Spinner');\n public mounted() {\n this.log('Mounted');\n }\n\n public beforeDestroy() {\n this.log('beforeDestroy()');\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Spinner.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Spinner.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Spinner.vue?vue&type=template&id=16b98bfe&scoped=true&\"\nimport script from \"./Spinner.vue?vue&type=script&lang=ts&\"\nexport * from \"./Spinner.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Spinner.vue?vue&type=style&index=0&id=16b98bfe&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"16b98bfe\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { log } from \"@/webshared/log\";\nimport { Wsd, WsdSignInModel, WsdApp } from \"@/Wsd\";\nimport Spinner from \"@/components/Spinner.vue\";\n\ndeclare let $: any;\n\n@Component({\n components: {\n Spinner,\n },\n})\nexport default class SignInDialog extends Vue {\n public log = log.create(\"SigninDialog\");\n public shown = true;\n public Wsd = Wsd;\n public email = \"\";\n public password = \"\";\n public sso = false;\n @Prop() model: WsdSignInModel;\n @Prop({ default: \"\" }) public message: string;\n\n @Watch(\"shown\")\n public onShownChanged() {\n this.log(\"onShownChanged\");\n if (this.shown === false) {\n //this.$emit('close');\n } else {\n this.mounted();\n }\n }\n\n public created() {}\n\n public mounted() {\n this.log(\"Mounted\");\n console.log(this.$refs.dialog);\n\n $(this.$refs.dialog).modal({\n closeable: true,\n autofocus: true,\n // detachable: false\n onHidden: () => {\n console.log(\"onHidden\");\n this.$emit(\"close\");\n this.shown = false;\n },\n });\n $(this.$refs.dialog).modal(\"show\");\n }\n\n signin() {\n this.model.authenticate(this.email, this.password).then(() => {\n if (Wsd.user.userid) {\n this.hide();\n }\n });\n }\n\n createAccount() {\n this.model\n .addUser(this.email, this.password, this.password)\n .then(() => {\n if (Wsd.user.userid) {\n this.hide();\n }\n });\n console.log(\"errorr: %s\", this.model.error);\n }\n\n forgotPassword() {\n this.model.forgotPassword(this.email);\n console.log(\"eror: %s\", this.model.error);\n }\n\n public hide() {\n $(this.$refs.dialog).modal(\"hide\");\n }\n\n public beforeDestroy() {\n this.log(\"beforeDestroy()\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SigninDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SigninDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SigninDialog.vue?vue&type=template&id=0241b3c0&scoped=true&\"\nimport script from \"./SigninDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./SigninDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SigninDialog.vue?vue&type=style&index=0&id=0241b3c0&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0241b3c0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"dialog\",staticClass:\"ui modal\"},[_c('div',{staticClass:\"header\"},[_vm._v(\"Account settings\")]),_c('div',{staticClass:\"panes\"},[_c('div',{staticClass:\"pane\"},[_c('h3',[_vm._v(\"Email\")]),_vm._v(\"\\n \"+_vm._s(_vm.Wsd.user.email)+\"\\n \"),_c('br'),_c('br'),(_vm.Wsd.user.saml)?_c('div',{staticStyle:{\"text-align\":\"center\",\"margin-bottom\":\"10px\"}},[_vm._v(\"\\n You cannot change your email address because you sign in\\n with SSO.\\n \")]):_vm._e(),(!_vm.Wsd.user.saml)?_c('button',{staticClass:\"ui icon button fluid\",on:{\"click\":function($event){return _vm.model.updateEmail()}}},[_c('i',{staticClass:\"edit icon\"}),_vm._v(\"\\n Update email\\n \")]):_vm._e(),_c('button',{staticClass:\"ui icon button fluid\",staticStyle:{\"margin\":\"10px 0\"},on:{\"click\":function($event){return _vm.model.updatePassword()}}},[_c('i',{staticClass:\"edit icon\"}),_vm._v(\"\\n Update password\\n \")])]),(_vm.Wsd.config.allowGoogleSignIn)?_c('div',{staticClass:\"pane\"},[_c('h3',[_vm._v(\"Signing in\")]),(_vm.model.hasGoogle())?_c('p',[_vm._v(\"\\n You currently sign in with google.\\n \"),_c('br'),_c('br'),_c('button',{key:\"remove\",staticClass:\"ui button fluid\",on:{\"click\":function($event){return _vm.model.removeGoogleSignin()}}},[_vm._v(\"\\n Remove\\n \")])]):_c('p',[_vm._v(\"\\n You do not sign in with Google.\\n \"),_c('br'),_c('br'),_c('button',{directives:[{name:\"google-add-signin\",rawName:\"v-google-add-signin\"}],key:\"add\",staticClass:\"ui button icon fluid\"},[_c('i',{staticClass:\"google icon\"}),_vm._v(\"\\n Add Google Sign in\\n \")])])]):_vm._e(),(_vm.Wsd.gold())?_c('div',{staticClass:\"pane\"},[_c('h3',[_vm._v(\"Purchases\")]),(_vm.model.subscribed())?_c('div',[_vm._v(\"\\n You are paid up until \"+_vm._s(_vm.model.expiryDate())+\".\\n \"),(_vm.model.cancelled())?_c('span',[_vm._v(\"You have already cancelled payments.\")]):_vm._e()]):(_vm.model.expired())?_c('div',[_vm._v(\"\\n Your subscription expired on \"+_vm._s(_vm.model.expiryDate())+\"\\n \")]):_c('div',[_vm._v(\"You do not have any subscriptions.\")]),_c('br'),(\n _vm.model.subscribed() &&\n !_vm.model.cancelled() &&\n !_vm.model.specialUser()\n )?_c('button',{staticClass:\"ui button fluid\",on:{\"click\":function($event){return _vm.model.cancelPayments()}}},[_vm._v(\"\\n Cancel payments\\n \")]):_vm._e(),_c('br'),(\n _vm.model.subscribed() &&\n !_vm.model.cancelled() &&\n !_vm.model.specialUser()\n )?_c('button',{staticClass:\"ui button fluid\",on:{\"click\":function($event){return _vm.model.updateCard()}}},[_vm._v(\"\\n Update credit card\\n \")]):_vm._e(),_c('br'),(_vm.model.hasReceipts())?_c('button',{staticClass:\"ui button fluid\",on:{\"click\":function($event){return _vm.model.showReceipts()}}},[_vm._v(\"\\n Receipts\\n \")]):_vm._e()]):_vm._e()]),(_vm.model.busy)?_c('div',{staticClass:\"ui active inverted dimmer\"},[_c('div',{staticClass:\"ui text loader\"},[_vm._v(\"Working\")])]):_vm._e(),_c('Spinner',{style:({ visibility: _vm.model.busy ? 'visible' : 'hidden' })}),_c('div',{staticClass:\"actions\"},[_c('div',{staticClass:\"ui positive rightlabeled icon button\",on:{\"click\":function($event){return _vm.hide()}}},[_vm._v(\"\\n Done\\n \")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { log } from \"@/webshared/log\";\nimport { Wsd, WsdAccountModel } from \"@/Wsd\";\nimport Spinner from \"@/components/Spinner.vue\";\n\ndeclare let $: any;\n\n@Component({\n components: {\n Spinner,\n },\n})\nexport default class MyComponent extends Vue {\n public log = log.create(\"MyComponent\");\n public shown = true;\n public Wsd = Wsd;\n @Prop()\n public model: WsdAccountModel;\n\n @Watch(\"shown\")\n public onShownChanged() {\n this.log(\"onShownChanged\");\n if (this.shown === false) {\n //this.$emit('close');\n } else {\n this.mounted();\n }\n }\n\n public mounted() {\n this.log(\"Mounted\");\n console.log(this.$refs.dialog);\n\n $(this.$refs.dialog).modal({\n closeable: true,\n allowMultiple: true,\n // detachable: false\n onHidden: () => {\n console.log(\"onHidden\");\n this.$emit(\"close\");\n this.shown = false;\n },\n });\n $(this.$refs.dialog).modal(\"show\");\n }\n\n public hide() {\n $(this.$refs.dialog).modal(\"hide\");\n }\n\n public beforeDestroy() {\n this.log(\"beforeDestroy()\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AccountDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AccountDialog.vue?vue&type=template&id=a314d720&scoped=true&\"\nimport script from \"./AccountDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./AccountDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AccountDialog.vue?vue&type=style&index=0&id=a314d720&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a314d720\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"dialog\",staticClass:\"ui modal\",on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();return _vm.hide()}}},[_c('div',{staticClass:\"header\"},[_vm._v(\"Are you still there?\")]),_c('div',{staticClass:\"content\"},[_vm._v(\"\\n Your account has signed in using another browser.\\n \")]),_c('div',{staticClass:\"actions\"},[_c('div',{staticClass:\"ui positive rightlabeled icon button\",on:{\"click\":function($event){return _vm.hide()}}},[_vm._v(\"\\n Take control\\n \")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { log } from \"@/webshared/log\";\nimport { Wsd, WsdAccountModel } from \"@/Wsd\";\n\ndeclare let $: any;\n\n@Component({\n components: {},\n})\nexport default class MyComponent extends Vue {\n public log = log.create(\"MyComponent\");\n public Wsd = Wsd;\n\n public mounted() {\n this.log(\"Mounted\");\n\n $(this.$refs.dialog).modal({\n closeable: true,\n autofocus: false,\n onHidden: () => {\n console.log(\"onHidden\");\n Wsd.getBaton();\n this.$emit(\"close\");\n },\n });\n $(this.$refs.dialog).modal(\"show\");\n }\n\n public hide() {\n $(this.$refs.dialog).modal(\"hide\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleSigninDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleSigninDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MultipleSigninDialog.vue?vue&type=template&id=e57dc0da&scoped=true&\"\nimport script from \"./MultipleSigninDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./MultipleSigninDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MultipleSigninDialog.vue?vue&type=style&index=0&id=e57dc0da&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e57dc0da\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tabs\"},_vm._l((_vm.files),function(file){return _c('div',{key:file.id,staticClass:\"filetab\",class:{selected:file==_vm.selected},staticStyle:{\"flex\":\"1 1 auto\"},attrs:{\"title\":file.dirty ? 'Not saved' : 'Saved to server'},on:{\"click\":function($event){return _vm.onClick(file)}}},[_c('div',[_vm._v(\"\\n \"+_vm._s(file.name)+\"\\n \"),(file.dirty)?_c('span',{staticClass:\"dirty\"},[_c('i',{staticClass:\"exclamation circle icon\"}),_vm._v(\"(unsaved)\\n \")]):_vm._e()]),_c('div',{staticClass:\"closeicon hover\"},[_c('i',{staticClass:\"icon close\",on:{\"click\":function($event){return _vm.close(file)}}})])])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { log } from \"@/webshared/log\";\nimport { FileInfo } from \"@/Wsd\";\n\n@Component({\n components: {}\n})\nexport default class FileTabs extends Vue {\n public log = log.create(\"FileTabs\");\n @Prop() public files: FileInfo[];\n @Prop() public selected: FileInfo | null;\n\n close(file: FileInfo) {\n this.$emit(\"close\", file);\n }\n\n onClick(file: FileInfo) {\n this.$emit(\"changed\", file);\n }\n\n public mounted() {\n this.log(\"Mounted\");\n }\n\n public updated() {\n this.log(\"updated()\");\n }\n\n public beforeDestroy() {\n this.log(\"beforeDestroy()\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileTabsComponent.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileTabsComponent.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FileTabsComponent.vue?vue&type=template&id=a927822a&scoped=true&\"\nimport script from \"./FileTabsComponent.vue?vue&type=script&lang=ts&\"\nexport * from \"./FileTabsComponent.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FileTabsComponent.vue?vue&type=style&index=0&id=a927822a&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a927822a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"full flex-row\",staticStyle:{\"background\":\"pink\",\"z-index\":\"1000\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();_vm.shown=false}}},[_c('div',{staticClass:\"left-bar\"},[_c('button',{staticClass:\"ui icon button margin-bottom\",on:{\"click\":function($event){_vm.shown=false}}},[_c('i',{staticClass:\"angle left icon\"}),_vm._v(\"\\n Back\\n \")]),_c('div',{staticClass:\"ui icon input\",staticStyle:{\"width\":\"100%\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.model.searchText),expression:\"model.searchText\"}],attrs:{\"type\":\"text\",\"placeholder\":\"Search all files...\"},domProps:{\"value\":(_vm.model.searchText)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.model, \"searchText\", $event.target.value)}}}),_c('i',{staticClass:\"search link icon\"})]),_c('h2',[_vm._v(\"Folders\")]),_vm._l((_vm.model.folders),function(folder){return _c('div',{key:folder.projetid,staticClass:\"folder-name\",class:{selected:_vm.model.currentFolder===folder},attrs:{\"drop-data\":folder.projectid},on:{\"click\":function($event){return _vm.model.setFolder(folder)},\"drop\":function($event){return _vm.onFolderDrop($event, folder)},\"dragover\":_vm.onDragOver,\"dragleave\":_vm.onDragLeave}},[_c('i',{staticClass:\"folder icon\"}),_vm._v(\"\\n \"+_vm._s(folder.name)+\"\\n \")])}),_c('div',{staticClass:\"folder-name\",on:{\"click\":function($event){return _vm.model.createFolder(_vm.folder)}}},[_c('i',{staticClass:\"plus icon\"}),_vm._v(\"Create new folder\\n \")]),_c('hr',{staticStyle:{\"margin\":\"2em 0\"}}),_c('div',[_vm._v(\"You are signed in as \"+_vm._s(_vm.Wsd.user.email)+\".\")]),_c('hr',{staticStyle:{\"margin\":\"2em 0\"}}),_vm._m(0)],2),_c('div',{staticClass:\"right-bar flex-col\"},[_c('div',{staticStyle:{\"overflow-y\":\"scroll\",\"flex\":\"1 1 auto\",\"position\":\"relative\"}},[(_vm.model.files.length===0)?_c('div',{staticClass:\"no-files-warning\"},[_c('div',{staticClass:\"empty-folder-box\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"Empty folder\")]),_vm._v(\"You are signed in as\\n \"),_c('span',{staticStyle:{\"font-weight\":\"bold\"}},[_vm._v(_vm._s(_vm.Wsd.user.email)+\".\")]),_c('br'),_c('br'),_vm._v(\"Not seeing your files? Please check if you are signed in under the correct email.\\n Your files will never be removed without your permission.\\n \"),_c('br'),_c('br'),_c('a',{attrs:{\"href\":\"mailto:support@websequencediagrams.com\"}},[_vm._v(\"support@websequencediagrams.com\")])])]):_vm._e(),(_vm.model.files.length)?_c('table',{staticStyle:{\"width\":\"100%\",\"min-height\":\"0\"}},[_c('tr',[_c('th',{class:{bolded: _vm.model.sortOrder=='name'},on:{\"click\":function($event){return _vm.model.setSortOrder('name')}}},[_vm._v(\"Name\")]),_c('th',{class:{bolded: _vm.model.sortOrder=='folder'},on:{\"click\":function($event){return _vm.model.setSortOrder('folder')}}},[_vm._v(\"Folder\")]),_c('th',{class:{bolded: _vm.model.sortOrder=='date'},on:{\"click\":function($event){return _vm.model.setSortOrder('date')}}},[_vm._v(\"Date\")])]),_c('tbody',_vm._l((_vm.model.files),function(file){return _c('tr',{key:file.fileid,on:{\"click\":function($event){return _vm.model.setFile(file)}}},[(_vm.model.currentFile !== file)?_c('td',{attrs:{\"draggable\":\"true\"},on:{\"dragstart\":function($event){return _vm.onDragStart($event, file)}}},[_vm._v(_vm._s(file.name))]):_vm._e(),(_vm.model.currentFile === file)?_c('td',{staticClass:\"filecard\",attrs:{\"colspan\":\"3\",\"draggable\":\"true\"},on:{\"dragstart\":function($event){return _vm.onDragStart($event, file)}}},[_c('img',{attrs:{\"src\":_vm.model.getFilePreviewUrl(file),\"align\":\"left\",\"draggable\":\"false\"}}),_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(file.name))]),_c('div',{staticClass:\"date\"},[_vm._v(\"Changed \"+_vm._s(_vm.friendlyTime(file.mtime)))]),_c('button',{staticClass:\"ui primary button\",staticStyle:{\"margin\":\"0 6px 0 0\"},on:{\"click\":function($event){return _vm.open()}}},[_vm._v(\"Open\")]),_c('button',{staticClass:\"ui icon button\",attrs:{\"title\":\"Rename\"},on:{\"click\":function($event){return _vm.model.rename()}}},[_c('i',{staticClass:\"edit icon\"}),_vm._v(\"Rename\\n \")]),_c('button',{staticClass:\"ui icon button\",attrs:{\"title\":\"Permanently delete\"},on:{\"click\":function($event){return _vm.model.deleteFile()}}},[_c('i',{staticClass:\"delete icon\"}),_vm._v(\"Delete\\n \")]),_c('button',{staticClass:\"ui icon button\",attrs:{\"title\":\"Move\"},on:{\"click\":function($event){return _vm.model.moveFile()}}},[_c('i',{staticClass:\"folder icon\"}),_vm._v(\"Move\\n \")])]):_vm._e(),(_vm.model.currentFile !== file)?_c('td',[_vm._v(_vm._s(file.projectName))]):_vm._e(),(_vm.model.currentFile !== file)?_c('td',[_vm._v(_vm._s(_vm.friendlyTime(file.mtime)))]):_vm._e()])}),0)]):_vm._e()]),(_vm.model.currentFolder.projectid > 0)?_c('div',{staticClass:\"footer\"},[_c('button',{staticClass:\"ui primary button\",on:{\"click\":function($event){return _vm.createInFolder()}}},[_c('i',{staticClass:\"plus icon\"}),_vm._v(\"Create new diagram here\\n \")]),_c('button',{staticClass:\"ui button\",on:{\"click\":function($event){_vm.showShareFolderDialog=true}}},[_c('i',{staticClass:\"share icon\"}),_vm._v(\"Share folder...\\n \")]),_c('button',{staticClass:\"ui button\",on:{\"click\":function($event){return _vm.model.deleteFolder()}}},[_c('i',{staticClass:\"delete icon\"}),_vm._v(\"Delete folder\\n \")]),_c('button',{staticClass:\"ui button\",on:{\"click\":function($event){return _vm.model.renameFolder()}}},[_c('i',{staticClass:\"edit icon\"}),_vm._v(\"Rename folder\\\"\\n \")])]):_vm._e()]),(_vm.showShareFolderDialog)?_c('ShareFolderDialog',{attrs:{\"folder\":_vm.model.currentFolder,\"model\":_vm.model},on:{\"close\":function($event){_vm.showShareFolderDialog=false}}}):_vm._e()],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('a',{attrs:{\"href\":\"/files/zip\"}},[_vm._v(\"Download\")]),_vm._v(\" all files as a .zip\\n \")])}]\n\nexport { render, staticRenderFns }","export function Ago(input:number) {\n return FriendlyTime((input - new Date().getTime() / 1000) | 0);\n}\n\nexport function In(input:number) {\n return Ago(input);\n}\n\nexport function Interval(delta:number, short = false) {\n return FriendlyTime(delta, true, short);\n}\n\nfunction FriendlyTime(delta:number, interval:boolean = false, short = false) :string {\n delta = -Math.round(delta);\n var MINUTE = 60.0;\n var HOUR = 60 * MINUTE;\n var DAY = 24 * HOUR;\n var MONTH = 365.0 / 12 * DAY;\n var YEAR = 365.0 * DAY;\n// console.log(delta);\n let IN = interval ? \"\" : \"in \";\n let AGO = interval ? \"\" : \" ago\";\n let YEARS = short ? \"\\u00a0y\" : \" years\"\n let MONTHS = short ? \"\\u00a0m\" : \" months\"\n let DAYS = short ? \"\\u00a0d\" : \" days\"\n let HOURS = short ? \"\\u00a0h\" : \" hours\"\n let MINUTES = short ? \"\\u00a0m\" : \" minutes\"\n let SECONDS = short ? \"\\u00a0s\" : \" seconds\"\n\n if (delta < -2 * YEAR) {\n return IN + (-delta / YEAR | 0) + YEARS;\n } else if (delta < -2 * MONTH) {\n return IN + (-delta / MONTH | 0) + MONTHS;\n } else if (delta < -2 * DAY) {\n return IN + (-delta / DAY | 0) + DAYS;\n } else if (delta < -2 * HOUR) {\n return IN + (-delta / HOUR | 0) + HOURS;\n } else if (delta < -2 * MINUTE) {\n return IN + (-delta / MINUTE | 0) + MINUTES;\n } else if (delta < 0) {\n return IN + -delta + SECONDS;\n } else if (delta < 1 * MINUTE) {\n if (Math.abs(delta) <= 1 && !interval) {\n return \"now\";\n } else {\n return delta + SECONDS + AGO;\n }\n\n } else if (delta < 2 * MINUTE) {\n return \"a minute\" + AGO;\n\n } else if (delta < 45 * MINUTE) {\n return ((delta / MINUTE) | 0) + MINUTES + AGO;\n\n } else if (delta < 90 * MINUTE) {\n return \"an hour\" + AGO;\n\n } else if (delta < 24 * HOUR) {\n return ((delta / HOUR) | 0) + HOURS + AGO;\n\n } else if (delta < 48 * HOUR) {\n return interval ? \"a day\" : \"yesterday\";\n\n } else if (delta < 30 * DAY) {\n return ((delta / DAY)|0) + DAYS + AGO;\n\n } else if (delta < 12 * MONTH) {\n var months = (delta / MONTH) | 0;\n if (months <= 1) {\n return \"one month\" + AGO;\n } else {\n return months + MONTHS + AGO;\n }\n\n } else {\n var years = (delta / DAY / 365) | 0;\n if (years <= 1) {\n return \"one year\" + AGO;\n } else {\n return years + YEARS + AGO;\n }\n }\n}\n\nexport function DateToInt(date:Date) {\n return date.getFullYear() * 10000 +\n (date.getMonth() + 1) * 100 +\n date.getDate();\n}\n\nexport function IntToDate(i:number) {\n let year = Math.floor(i / 10000);\n let month = Math.floor((i % 10000) / 100) - 1;\n let day = i % 100;\n return new Date(year, month, day);\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"dialog\",staticClass:\"ui small modal\",on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();return _vm.hide()}}},[_c('div',{staticClass:\"header\"},[_vm._v(\"\\n Share folder \\\"\"+_vm._s(_vm.folder.name)+\"\\\"\\n \")]),_c('div',{staticClass:\"content\"},[_c('div',[_vm._v(\"Share this link to invite people\")]),_c('div',{staticClass:\"ui input fluid\"},[_c('input',{attrs:{\"type\":\"text\",\"placeholder\":\"Link\",\"readonly\":\"\"},domProps:{\"value\":_vm.shareUrl},on:{\"click\":function($event){return $event.target.select()}}})]),(_vm.Wsd.gold())?_c('div',[_c('br'),_c('div',[_vm._v(\"Or enter an email to invite:\")]),_c('div',{staticClass:\"ui input focus fluid\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.email),expression:\"email\"}],attrs:{\"type\":\"text\",\"placeholder\":\"Email\"},domProps:{\"value\":(_vm.email)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.email=$event.target.value}}}),_c('button',{staticClass:\"ui button\",on:{\"click\":function($event){return _vm.invite()}}},[_vm._v(\"Invite\")])])]):_vm._e(),_c('br'),_c('div',[_vm._v(\"Current members:\")]),_c('div',{staticClass:\"listing\"},_vm._l((_vm.members),function(member){return _c('div',{key:member.userid,staticClass:\"listitem\",class:{selected:_vm.selectedid === member.userid},on:{\"click\":function($event){_vm.selectedid=member.userid}}},[_c('i',{staticClass:\"user icon\"}),_vm._v(_vm._s(member.email)+\"\\n \")])}),0),_c('button',{staticClass:\"ui button\",class:{disabled:_vm.selectedid === 0},on:{\"click\":function($event){return _vm.remove()}}},[_vm._v(\"\\n Remove\\n \")]),(_vm.Wsd.busy)?_c('Spinner'):_vm._e(),(_vm.error!=='')?_c('div',{staticClass:\"error-box\"},[_vm._v(_vm._s(_vm.error))]):_vm._e()],1),_c('div',{staticClass:\"actions\"},[_c('div',{staticClass:\"ui positive rightlabeled icon button\",on:{\"click\":function($event){return _vm.hide()}}},[_vm._v(\"\\n Done\\n \")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\nimport { log } from '@/webshared/log';\nimport {Wsd, ProjectInfo, ProjectMember, WsdFileModel} from \"@/Wsd\";\nimport Spinner from \"@/components/Spinner.vue\";\n\ndeclare let $:any;\n\n@Component({\n components: {\n Spinner\n },\n})\nexport default class ShareFolderDialog extends Vue {\n public log = log.create('ShareFolderDialog');\n public Wsd = Wsd;\n public email = \"\";\n public error = \"\";\n @Prop() folder:ProjectInfo;\n @Prop() model:WsdFileModel;\n members:ProjectMember[] = [];\n\n // userid of selected member.\n selectedid = 0;\n\n public mounted() {\n this.log('Mounted');\n\n $(this.$refs.dialog).modal({\n closeable: true,\n autofocus: false,\n onHidden: () => {\n console.log(\"onHidden\");\n this.$emit(\"close\");\n }\n });\n $(this.$refs.dialog).modal(\"show\");\n\n Wsd.listProjectMembers(this.folder.projectid).then( (members:ProjectMember[]) => {\n this.members = members;\n }, (error:Error) => {\n this.error = error.message;\n });\n }\n\n get shareUrl() {\n return Wsd.getFolderInviteLink(this.folder);\n }\n\n public hide() {\n $(this.$refs.dialog).modal(\"hide\");\n }\n\n public invite() {\n if (this.email.indexOf(\"@\") < 1) {\n return;\n }\n\n var email = this.email;\n\n Wsd.inviteToProject(this.folder.projectid, email).then( (response) => {\n this.members.push({\n email: email + \"(invitation sent)\",\n userid: 0\n });\n }, (error) => {\n this.error = error;\n });\n }\n\n public remove() {\n this.model.removeProjectMember(this.folder, this.selectedid).then( () => {\n if (this.selectedid === Wsd.user.userid) {\n // bang, universe disappears.\n this.hide();\n }\n \n this.members = this.members.filter( member => member.userid !== this.selectedid );\n }, (error) => {\n this.error = error.message;\n });\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShareFolderDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShareFolderDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShareFolderDialog.vue?vue&type=template&id=1883a486&scoped=true&\"\nimport script from \"./ShareFolderDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShareFolderDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ShareFolderDialog.vue?vue&type=style&index=0&id=1883a486&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1883a486\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { log } from \"@/webshared/log\";\nimport { Wsd, ProjectInfo, FileInfo, WsdFileModel, SortOrder } from \"@/Wsd.ts\";\nimport { Ago } from \"@/webshared/FriendlyDate\";\nimport ShareFolderDialog from \"@/components/ShareFolderDialog.vue\";\n\n@Component({\n components: {\n ShareFolderDialog,\n },\n})\nexport default class FileDialog extends Vue {\n public shown = true;\n public log = log.create(\"FileDialog\");\n public Wsd = Wsd;\n public showShareFolderDialog = false;\n @Prop() model: WsdFileModel;\n @Prop() folder: number; // requested folder to show on opening\n\n @Watch(\"shown\")\n public onShownChanged() {\n if (this.shown === false) {\n this.$emit(\"close\");\n } else {\n this.mounted();\n }\n }\n\n onKeyDown(e: KeyboardEvent) {\n console.log(\"Keydown: \", e.keyCode);\n }\n\n get showError() {\n return this.model.error !== \"\";\n }\n\n set showError(value: boolean) {\n this.model.error = \"\";\n }\n\n public mounted() {\n this.log(\"Mounted, requested folder %s\", this.folder);\n this.model.init(this.folder);\n }\n\n public beforeDestroy() {\n this.log(\"beforeDestroy()\");\n }\n\n public friendlyTime(mtime: number) {\n return Ago(mtime);\n }\n\n public open() {\n this.shown = false;\n this.model.open();\n }\n\n public onDragStart(e: DragEvent, file: FileInfo) {\n console.log(\"Drag start on %o\", file);\n e.dataTransfer!.setData(\"text/plain\", file.fileid.toString());\n e.dataTransfer!.dropEffect = \"move\";\n }\n\n public onDragOver(ev: DragEvent) {\n ev.preventDefault();\n // Set the dropEffect to move\n ev.dataTransfer!.dropEffect = \"move\";\n console.log(\"onDragEver\");\n let target = ev.target as HTMLElement;\n if (target && target.setAttribute) {\n (ev.target as HTMLElement).setAttribute(\"drop-active\", \"true\");\n }\n }\n\n public onDragLeave(ev: DragEvent) {\n let target = ev.target as HTMLElement;\n if (target && target.setAttribute) {\n (ev.target as HTMLElement).removeAttribute(\"drop-active\");\n }\n }\n\n public onFolderDrop(ev: DragEvent, folder: ProjectInfo) {\n console.log(\"onDrop\");\n var data = ev.dataTransfer!.getData(\"text/plain\");\n console.log(\"Dropped on folder %s data=%s\", folder, data);\n ev.preventDefault();\n this.onDragLeave(ev);\n this.model.moveToFolder(parseInt(data, 10), folder);\n }\n\n public createInFolder() {\n this.model.createInFolder().then(() => {\n this.shown = false;\n });\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FileDialog.vue?vue&type=template&id=b5eb8850&scoped=true&\"\nimport script from \"./FileDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./FileDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FileDialog.vue?vue&type=style&index=0&id=b5eb8850&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b5eb8850\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"hintview\",attrs:{\"ondragstart\":\"return false;\"}},_vm._l((_vm.HELP),function(hint){return (hint.template)?_c('div',{staticClass:\"image\"},[(!_vm.subscribed() && hint.premium)?_c('div',{staticClass:\"premium\"},[_vm._v(\"PREMIUM\")]):_vm._e(),_c('img',{attrs:{\"src\":'t-' + hint.name + '.png'},on:{\"click\":function($event){return _vm.onSignal(hint)}}})]):_vm._e()}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export interface Hint {\n name: string;\n title: string;\n\n // Template that will be inserted.\n // If there's no template then it won't be shown in the hints section.\n template: string;\n\n // Example text\n example: string;\n\n description: string;\n\n // Preview to use for premiun features instead of the regular one.\n previewUrl?: string;\n\n premium?: boolean;\n}\n\nlet HINTS_TEXT = `\n---\nName: signal\nTitle: Simple signals\n\nTemplate:\nA->B: text\n\nDescription:\n

Draw a signal from one participant to another like this. The\nparticipants are automatically created when they are used.

\n

To include a colon in a participant name, enclose it in quotes.

\n\n
\n\":Alice\"->\":Bob\": Hello\n
\n\n
\n\n
# This is a comment.\n\nAlice->Bob: Filled arrow\nAlice->>Bob: Open arrow\nBob-->Alice: Dotted line\nBob-->>Alice: Dotted Line, open arrow\nBob-->Alice: Double arrow\nAlice->(1)Bob: Slightly delayed\nBob->(5)Alice: Highy delayed
\n\n---\nName: dotted\nTitle: Dotted lines\nTemplate:\nA-->B: text\n\nGoto: signal\n\n---\nName: activate\nTemplate:\nA->+B: text\nB-->-A: text\n\nTitle: Lifeline activation and destruction\n\nDescription:\n

Lifeline activation and destruction

\n

\n Use the + and - with signals to denote\n object activation. While activated, the participant's\n lifeline will be highlighted. + will activate\n the receiver, and - will deactivate the sender.\n

\n

\n Use * with signals to create a participant.\n

\n
A->*B: hello.
\n

\n You can use the destroy keyword to destroy a\n participant. The participant's lifeline will end at the\n previous signal.\n

\n\n
User->+A: DoWork\nA->*+B: <<createRequest>>\nB->*+C: DoWork\nC-->B: WorkDone\ndestroy C\nB-->-A: RequestCreated\nA->User: Done
\n

Alternate syntax

\nGe more control over activations using the activate\nand deactive keywords. The commands apply to the previous\nsignal.\n
Alice->Bob: Do some work!\nactivate Bob\n\nBob->Bob: Work routine\nactivate Bob\ndeactivate Bob\n\nBob->Alice: All done!\ndeactivate Bob\n
\n\n\n---\nName: self\nTitle: Signal to self\nTemplate:\nA->A: text\n\nDescription:\nA participant can send a signal to itself. This will result in an arrow that turns back on itself.\n

\n You may break the text into multiple lines by using \"\\\\n\".\n

\n
Alice->Alice: This is a signal to self.\\\\nIt also demonstrates \\\\nmultiline \\\\ntext.
\n\n\n---\nName: slanted\nTemplate:\nA->(2)B: text\nGoto: signal\n\n---\nName: actor\nTitle: Actors\n\nTemplate:\nactor A\nA->B:\n\nDescription:\nDeclare a participant using the actor keyword and it will\nappear with a person drawn above it.\n
actor User\nparticipant Terminal\n\nUser->Terminal: Login\n
\n\n---\nName: create\nTemplate:\nA->*B: text\nB-->A: text\ndestroy B\n\nGoto: activate\n\n---\nName: changing-order\nTitle: Changing the order of participants\nDescription:\nIf you want to participants to be shown in a different\norder than they are used, declare them first using the\nparticipant keyword. You can also rename them this way to save typing.\n
participant Bob\nparticipant Alice\nparticipant \"I have a really\\nlong name\" as L\n\nAlice->Bob: Authentication Request\nBob->Alice: Authentication Response\nBob->L: Log transaction
\n\n\n---\nName: alt\nTitle: Alternative & optional cases\nTemplate:\nalt text1\n A->B: text\nelse text2\n A->B: text\nend\n\nDescription:\nYou can group signals together using the\nalt/else, opt, loop, par,\nand seq keywords. All of them can take a text\ndescription that will be displayed in the group header.\nUse the end keyword to signal the end of a group.\nThe groups may be nested to any depth.\n

\n The else part is optional and can be repeated\n more than once for each condition.\n

\n\n
Alice->Bob: Authentication Request\nalt successful case\nBob->Alice: Authentication Accepted\nelse some kind of failure\nBob->Alice: Authentication Failure\nopt\n    loop 1000 times\n        Alice->Bob: DNS Attack\n    end\nend\nelse Another type of failure\nBob->Alice: Please repeat\nend
\n\n---\nName: opt\nTemplate:\nopt text\n A->B: text\nend\n\nGoto: alt\n\n---\nName: loop\nTemplate:\nloop text\n A->B: text\nend\n\nGoto: alt\n\n---\nName: notes\nTitle: Notes in the Diagram\nTemplate:\nnote over A,B: text1\nnote left of A: text2\nnote right of A\n multiline\n text\nend note\n\nDescription:\nYou can add notes to the diagram. Notes can be placed to the left or\nright of a participant, or placed over one or more participants.\n

\n If a note contains more than one line, it will not be\n word-wrapped. Instead, it will be formatted exacty as written.\n

\n
participant Alice\nparticipant Bob\n\nnote left of Alice \nThis is displayed \nleft of Alice.\nend note\nnote right of Alice: This is displayed right of Alice.\nnote over Alice: This is displayed over Alice.\nnote over Alice, Bob: This is displayed over Bob and Alice.
\n

Extended text descriptions (premium)

\n

\n Subscribers can explain sequences that follow simply by indenting your explanations with a\n space.\n

\n\n
 You can explain the sequences that follow\nsimply by indenting your explanations \nwith a space.\n\n   Alice->Bob: Wow!
\n\n---\nName: offpage\nPremium: true\nTemplate: \n[->A: text\nA->]: text\n\nTitle: Arrow to off-page\nDescription:\nExtend an arrow from or to an off-page participant by using [ or ] to reference the left or right side of the page.\non \n\n
[->A: text\nA->]: text\n
\n\n---\nName: ref\nPremium: true\nTemplate:\nA->ref over B: input\n text\nend ref -> A: output\n\nTitle: Reference other sequences\n\nDescription:\nYou can summarize or refer to sequences by drawing a box over one or more\nparticipants.\n\n
\n\n
ref over Mobile, Base Station\n    Refer to 3GPP 44.060 6.6.4.1\nend ref
\n

\n You can optionally have a signal going into the box or\n one coming out.\n

\n
Alice->ref over Bob, Mary: input\n    refer to other diagram\nend ref -->Alice: output
\n\n\n---\nName: text\nTitle: Extended text descriptions\n

\n Subscribers can explain sequences that follow simply by indenting your explanations with a\n space.\n

\n\n
 You can explain the sequences that follow\nsimply by indenting your explanations \nwith a space.\n\n   Alice->Bob: Wow!
\n\n---\nName: state\nPremium: true\nTemplate:\nstate over A: Initial state\n\nTitle: States\nDescription:\nA rounded box can be useful to show state information.\nThe syntax is identical to the note keyword,\nexcept that state is used.\n\n
participant Client\nparticipant Server\nparallel {\n    state over Server: LISTEN\n    state over Client: CLOSED\n}\nClient->Server: SYN\nparallel { \n    state over Client: SYN-SENT\n    state over Server: SYN_RECEIVED\n}\nServer->Client: ACK
\n\n\n---\nName: parallel\nPremium: true\nTemplate:\nparallel {\n A->B: signal 1\n B->C: signal2\n}\n\nTitle: Parallel sequences\nPremium: true\nDescription:\nYou can make different things happen at the same time using the parallel keyword.\n\n
parallel {\nClient->Proxy: Request\nProxy->Server: Forwarded Request\nnote right of Server: Web proxy in operation\n}\n\nServer->(3)Proxy: Reply\nparallel {\nClient->(3)Proxy: \nProxy->(3)Client: Crossed messages\n}\n
\n

\n Use the serial keyword within a parallel block to describe two parallel sequences of operations.\n

\n
parallel {\n    serial {\n        Alice->Bob: Hello\n        Bob->Alice: Hello    \n    }\n\n    serial {\n        Eve->Carol: Hello\n        Carol->Eve: Hello\n    }\n}   
\n\n\n---\nName:\\ footer\nPremium: true\nTemplate:\noption footer=bar\n\nTitle: Footer types\nDescription:\nChange the way the bottom of your diagram looks using  option footer=\n
option footer=none\nAlice->Alice:
\n
option footer=bar\nAlice->Alice:
\n\n\n---\nName: text\nTitle: Notes beside the diagram\nPremium: true\nTemplate: \n Add text to the side of the diagram by\n indenting it with a space.\n \nA->B: Wow!\nGoto: notes\n\n---\nName: include\nTitle: Include other diagrams\nPremium: true\nDescription:\nYou can refer to other diagrams that you have saved\nin your account without retyping the text.\nUse the word include followed by the filename\nin quotes.\n
title LTE Call Flow\n\ninclude \"LTE Attach procedure\"\ninclude \"LTE Call Setup\"\n
\n\n\n`;\n\n\nfunction readHelp(): Hint[] {\n let hints: Hint[] = [];\n let current: Hint | null = null;\n let havePremium = false;\n let reading = \"\";\n\n // split into lines.\n let lines = HINTS_TEXT.split(\"\\n\");\n for (let line of lines) {\n if (line.startsWith(\"---\")) {\n // begin a new one.\n if (current) {\n hints.push(current);\n }\n current = {\n name: \"\",\n title: \"\",\n template: \"\",\n example: \"\",\n description: \"\",\n premium: false\n };\n havePremium = false;\n reading = \"\";\n } else if (!current) {\n continue;\n } else if (line.startsWith(\"Name:\")) {\n current.name = line.substr(5).trim();\n } else if (line.startsWith(\"Title:\")) {\n current.title = line.substr(6).trim();\n } else if (line.startsWith(\"Premium:\")) {\n current.premium = true;\n havePremium = true;\n } else if (line.startsWith(\"Goto:\")) {\n let where = line.substr(5).trim();\n // find where to copy the old values from in the list.\n for (let hint of hints) {\n if (hint.name === where) {\n if (!current.template) current.template = hint.template;\n if (!current.example) current.example = hint.example;\n if (!current.description) current.description = hint.description;\n if (!current.title) current.title = hint.title;\n if (!havePremium) {\n current!.premium = hint.premium;\n havePremium = true;\n }\n break;\n }\n }\n } else if (line.startsWith(\"Template:\")) {\n reading = \"template\";\n } else if (line.startsWith(\"Description:\")) {\n reading = \"description\";\n } else if (line.startsWith(\"Example:\")) {\n reading = \"example\";\n } else if (reading === \"template\") {\n current.template += line + \"\\n\";\n } else if (reading === \"description\") {\n current.description += line + \"\\n\";\n } else if (reading === \"example\") {\n current.example += line + \"\\n\";\n }\n }\n if (current) hints.push(current);\n return hints;\n}\n\nexport let HELP = readHelp();","\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { log } from \"@/webshared/log\";\nimport { Wsd } from \"@/Wsd\";\nimport { Tracker } from \"@/webshared/Tracker\";\nimport { HELP, Hint } from \"@/hints\";\n\n@Component({\n components: {},\n})\nexport default class HintView extends Vue {\n public log = log.create(\"MyComponent\");\n public mounted() {\n this.log(\"Mounted\");\n }\n\n public beforeDestroy() {\n this.log(\"beforeDestroy()\");\n }\n\n HELP = HELP;\n\n subscribed() {\n return Wsd.subscribed();\n }\n\n onSignal(hint: Hint) {\n this.$emit(\"show-help\", hint);\n\n Tracker.event(\"template-\" + hint.name);\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { log } from \"@/webshared/log\";\nimport { Wsd, Paper, FileInfo } from \"@/Wsd\";\nimport Spinner from \"@/components/Spinner.vue\";\n\nconst enum LinkType {\n Image = \"image\",\n Page = \"page\",\n File = \"file\",\n UpdatingImage = \"updating-image\",\n}\n\nconst Options = {\n landscape: false,\n paper: \"none\",\n format: \"png\",\n linkType: LinkType.Image,\n};\n\ndeclare let $: any;\n\n@Component({\n components: {\n Spinner,\n },\n})\nexport default class ShareDialog extends Vue {\n public shown = true;\n public log = log.create(\"ShareDialog\");\n public error = \"\";\n public success = \"\";\n @Prop() public wsdstyle: string;\n @Prop() public text: string;\n @Prop() public mode: string; // download or share\n @Prop() public hmac: string;\n @Prop() public file: FileInfo;\n public link = \"\";\n public Wsd = Wsd;\n public activeMode: string = \"\"; // download or share\n\n public formats = [\n {\n text: \"PNG\",\n value: \"png\",\n },\n {\n text: \"High quality PNG\",\n value: \"png-high\",\n },\n {\n text: \"PDF\",\n value: \"pdf\",\n },\n {\n text: \"SVG\",\n value: \"svg\",\n },\n {\n text: \"IETF Compatible SVG\",\n value: \"ietf-svg\",\n },\n {\n text: \"Download as Text\",\n value: \"txt\",\n },\n ];\n\n public paperSizes = [\n { name: \"All on one page\", value: \"none\" },\n { name: \"Letter\", value: \"letter\" },\n { name: \"Legal\", value: \"legal\" },\n { name: \"Tabloid\", value: \"tabloid\" },\n { name: \"A0\", value: \"a0\" },\n { name: \"A1\", value: \"a1\" },\n { name: \"A2\", value: \"a2\" },\n { name: \"A3\", value: \"a3\" },\n { name: \"A4\", value: \"a4\" },\n ];\n\n public linkTypes = [\n {\n text: \"Permanent link to this image\",\n value: LinkType.Image,\n },\n {\n text: \"Auto-Updating link to this image\",\n value: LinkType.UpdatingImage,\n },\n {\n text: \"Permanent link to this text\",\n value: LinkType.Page,\n },\n {\n text: \"Link for owners to open this file\",\n value: LinkType.File,\n },\n ];\n\n public options = Options;\n\n get premium() {\n return (\n this.options.format !== \"png\" &&\n this.options.format !== \"txt\" &&\n this.options.format !== \"ietf-svg\" &&\n !Wsd.subscribed()\n );\n }\n\n public download() {\n let scale = 100;\n let format = this.options.format;\n this.error = \"\";\n let ietf = false;\n switch (format) {\n case \"png-high\":\n format = \"png\";\n scale = 200;\n break;\n case \"ietf-svg\":\n format = \"svg\";\n ietf = true;\n break;\n }\n\n Wsd.download({\n style: this.wsdstyle,\n text: this.text,\n format: format,\n filename: this.file.name + \".\" + format,\n ownFilename: this.file.name,\n scale: scale,\n paper: this.options.paper as Paper,\n landscape: this.options.landscape,\n ietf: ietf,\n }).then(\n () => {\n this.shown = false;\n },\n (error: Error) => {\n this.error = error.toString();\n }\n );\n }\n\n public onOK() {}\n\n @Watch(\"options.linkType\")\n public onLinkChanged() {\n if (this.activeMode !== \"share\") {\n return;\n }\n this.error = \"\";\n this.link = \"\";\n switch (this.options.linkType) {\n case LinkType.Image:\n case LinkType.Page:\n if (Wsd.getUser().userid) {\n Wsd.resolveIncludes(this.text, this.file.name).then(\n (response) => {\n this.link = Wsd.getWsdLink(\n this.options.linkType,\n response.data.text,\n this.wsdstyle,\n response.data.hmac\n );\n },\n (error) => {\n this.error = error.statusText;\n }\n );\n } else {\n this.link = Wsd.getWsdLink(\n this.options.linkType,\n this.text,\n this.wsdstyle,\n this.hmac\n );\n }\n break;\n case LinkType.File:\n if (this.file.fileid <= 0) {\n this.error = \"Save the file to obtain this type of link.\";\n } else {\n this.link = Wsd.prefixUrl(\"/#open=\" + this.file.fileid);\n }\n break;\n case LinkType.UpdatingImage:\n if (this.file.fileid <= 0) {\n this.error = \"Save the file to obtain this type of link.\";\n } else {\n Wsd.getLink(this.file.fileid).then(\n (response) => {\n this.link = response.data.url;\n },\n (error) => {\n this.error = error.toString();\n }\n );\n }\n break;\n default:\n throw new Error(\"Should not happen; bad linkType\");\n }\n }\n\n public hide() {\n $(this.$refs.dialog).modal(\"hide\");\n }\n\n @Watch(\"shown\")\n public onShownChanged() {\n this.log(\"onShownChanged\");\n if (this.shown === false) {\n //this.$emit('close');\n } else {\n this.mounted();\n }\n }\n\n public mounted() {\n this.log(\"Mounted\");\n this.error = \"\";\n this.activeMode = this.mode;\n\n $(this.$refs.dialog).modal({\n closeable: true,\n // detachable: false\n autofocus: false,\n onHidden: () => {\n console.log(\"onHidden\");\n this.$emit(\"close\");\n this.shown = false;\n },\n });\n\n $(this.$refs.dialog).modal(\"show\");\n\n $(\".mytabitem\").tab();\n this.onLinkChanged();\n }\n\n public beforeDestroy() {\n this.log(\"beforeDestroy()\");\n }\n\n updated() {\n $(\".paperselect\").toggleClass(\n \"disabled\",\n this.options.format !== \"pdf\"\n );\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HintView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HintView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HintView.vue?vue&type=template&id=98eee264&scoped=true&\"\nimport script from \"./HintView.vue?vue&type=script&lang=ts&\"\nexport * from \"./HintView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./HintView.vue?vue&type=style&index=0&id=98eee264&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"98eee264\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"dialog\",staticClass:\"ui small modal\",on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }return _vm.hide()}}},[_c('div',{staticClass:\"content\"},[_c('div',{staticClass:\"ui top attached tabular menu\"},[_c('a',{staticClass:\"item mytabitem\",class:{ active: _vm.activeMode == 'share' },attrs:{\"data-tab\":\"share\"},on:{\"click\":function($event){(_vm.activeMode = 'share'), (_vm.error = '')}}},[_c('i',{staticClass:\"share icon\"}),_vm._v(\"Share\\n \")]),_c('a',{staticClass:\"item mytabitem\",class:{ active: _vm.activeMode == 'download' },attrs:{\"data-tab\":\"download\"},on:{\"click\":function($event){(_vm.activeMode = 'download'), (_vm.error = '')}}},[_c('i',{staticClass:\"download icon\"}),_vm._v(\"Download\\n \")])]),_c('div',{staticClass:\"ui bottom attached tab segment\",class:{ active: _vm.activeMode == 'share' },attrs:{\"data-tab\":\"share\"}},[_vm._v(\"\\n Link type:\\n \"),_c('br'),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.options.linkType),expression:\"options.linkType\"}],staticClass:\"ui dropdown fluid\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.options, \"linkType\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.linkTypes),function(link){return _c('option',{key:link.value,domProps:{\"value\":link.value}},[_vm._v(\"\\n \"+_vm._s(link.text)+\"\\n \")])}),0),_c('br'),_vm._v(\"Link:\\n \"),_c('div',{staticClass:\"ui input fluid\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.link),expression:\"link\"}],attrs:{\"type\":\"text\",\"placeholder\":\"Link\",\"readonly\":\"\"},domProps:{\"value\":(_vm.link)},on:{\"click\":function($event){return $event.target.select()},\"input\":function($event){if($event.target.composing){ return; }_vm.link=$event.target.value}}})]),_c('br'),(_vm.options.linkType === 'image')?_c('div',[_vm._m(0),_vm._m(1),_vm._m(2),_vm._m(3)]):_vm._e(),(_vm.options.linkType === 'updating-image')?_c('div',[_vm._m(4),_vm._m(5),_vm._m(6),_vm._m(7)]):_vm._e(),(_vm.options.linkType === 'page')?_c('div',[_vm._m(8),_vm._m(9),_vm._m(10)]):_vm._e(),(_vm.options.linkType === 'file')?_c('div',[_vm._m(11),_vm._m(12),_vm._m(13)]):_vm._e()]),_c('div',{staticClass:\"ui bottom attached tab segment\",class:{ active: _vm.activeMode == 'download' },attrs:{\"data-tab\":\"download\"}},[_c('br'),_vm._v(\"Format\\n \"),_c('br'),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.options.format),expression:\"options.format\"}],staticClass:\"ui dropdown fluid\",on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.options, \"format\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.formats),function(format){return _c('option',{key:format.value,domProps:{\"value\":format.value}},[_vm._v(\"\\n \"+_vm._s(format.text)+\"\\n \")])}),0),_c('br'),_c('span',{class:{ disabled: _vm.options.format !== 'pdf' }},[_vm._v(\"PDF Paper Size\")]),_c('br'),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.options.paper),expression:\"options.paper\"}],staticClass:\"ui dropdown fluid paperselect\",attrs:{\"disabled\":_vm.options.format !== 'pdf'},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.$set(_vm.options, \"paper\", $event.target.multiple ? $$selectedVal : $$selectedVal[0])}}},_vm._l((_vm.paperSizes),function(size){return _c('option',{key:size.value,staticStyle:{\"text-transform\":\"capitalize\"},domProps:{\"value\":size.value}},[_vm._v(\"\\n \"+_vm._s(size.name)+\"\\n \")])}),0),_c('div',{staticClass:\"ui toggle checkbox\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.options.landscape),expression:\"options.landscape\"}],attrs:{\"type\":\"checkbox\",\"id\":\"landscapeinput\",\"disabled\":_vm.options.format !== 'pdf'},domProps:{\"checked\":Array.isArray(_vm.options.landscape)?_vm._i(_vm.options.landscape,null)>-1:(_vm.options.landscape)},on:{\"change\":function($event){var $$a=_vm.options.landscape,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.options, \"landscape\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.options, \"landscape\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.options, \"landscape\", $$c)}}}}),_c('label',{attrs:{\"for\":\"landscapeinput\"}},[_vm._v(\"Landscape\")])])]),(_vm.premium)?_c('div',{staticClass:\"info\"},[_vm._v(\"\\n This feature is available to subscribers.\\n \")]):_vm._e(),(_vm.error != '')?_c('div',{staticClass:\"error\"},[_vm._v(_vm._s(_vm.error))]):_vm._e(),(_vm.Wsd.busy)?_c('Spinner'):_vm._e(),_c('div',{staticClass:\"actions\"},[(_vm.activeMode == 'download')?_c('button',{staticClass:\"ui primary button\",class:{ disabled: _vm.premium },on:{\"click\":function($event){return _vm.download()}}},[_vm._v(\"\\n Download\\n \")]):_vm._e(),_c('button',{staticClass:\"ui button\",on:{\"click\":function($event){return _vm.hide()}}},[_vm._v(\"Done\")])])],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('i',{staticClass:\"green icon check\"}),_vm._v(\" Directly download the\\n image\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('i',{staticClass:\"green icon check\"}),_vm._v(\" Include as image in web\\n pages\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('i',{staticClass:\"yellow icon exclamation triangle\"}),_vm._v(\" Does\\n not update when you edit the text\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('i',{staticClass:\"yellow icon exclamation triangle\"}),_vm._v(\" Link\\n contains whole diagram and cannot be revoked\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('i',{staticClass:\"green icon check\"}),_vm._v(\" Directly download the\\n image\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('i',{staticClass:\"green icon check\"}),_vm._v(\" Include as image in web\\n pages\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('i',{staticClass:\"green icon check\"}),_vm._v(\" Updates when you edit\\n the text\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('i',{staticClass:\"green icon check\"}),_vm._v(\" Revoke it by deleting\\n the file\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('i',{staticClass:\"green icon check\"}),_vm._v(\" Open\\n websequencediagrams with this text\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('i',{staticClass:\"yellow icon exclamation triangle\"}),_vm._v(\" Does\\n not update when you save\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('i',{staticClass:\"yellow icon exclamation triangle\"}),_vm._v(\" Link\\n contains whole diagram and cannot be revoked\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('i',{staticClass:\"green icon check\"}),_vm._v(\" Goes to\\n websequencediagrams and immediately opens this file\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('i',{staticClass:\"green icon check\"}),_vm._v(\" Only works for people\\n who can already access the file.\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('i',{staticClass:\"green icon check\"}),_vm._v(\" Revoke it by deleting\\n the file\\n \")])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShareDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShareDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ShareDialog.vue?vue&type=template&id=679ee1af&scoped=true&\"\nimport script from \"./ShareDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ShareDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ShareDialog.vue?vue&type=style&index=0&id=679ee1af&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"679ee1af\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"dialog\",staticClass:\"ui modal\",on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();return _vm.hide()}}},[(_vm.h)?_c('div',{staticClass:\"header\"},[_vm._v(\"\\n \"+_vm._s(_vm.h.title)+\"\\n \")]):_vm._e(),(_vm.h)?_c('div',{staticClass:\"content\",staticStyle:{\"max-height\":\"60vh\",\"overflow-y\":\"scroll\"},domProps:{\"innerHTML\":_vm._s(_vm.h.description)},on:{\"!click\":function($event){return _vm.onFollowLink($event)}}}):_vm._e(),(_vm.h)?_c('div',{staticClass:\" actions\"},[(_vm.h.template && !_vm.h.premium || _vm.Wsd.subscribed())?_c('div',{staticClass:\"ui positive rightlabeled icon button\",on:{\"click\":function($event){return _vm.use()}}},[_vm._v(\"\\n Use\\n \")]):_vm._e(),(_vm.h.template && _vm.h.premium && !_vm.Wsd.subscribed())?_c('div',{staticClass:\"ui positive rightlabeled icon button\",on:{\"click\":function($event){return _vm.buy()}}},[_vm._v(\"\\n Upgrade to Premium\\n \")]):_vm._e(),_c('div',{staticClass:\"ui positive rightlabeled icon button\",on:{\"click\":function($event){return _vm.hide()}}},[_vm._v(\"\\n Done\\n \")])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator';\nimport { log } from '@/webshared/log';\nimport { Wsd } from \"@/Wsd\";\nimport { Hint, HELP } from '@/hints';\n\ndeclare let $: any;\n\n@Component({\n components: {\n\n },\n})\nexport default class HelpDialog extends Vue {\n public log = log.create('HelpDialog');\n public Wsd = Wsd;\n @Prop() public hint: Hint;\n public h: Hint = HELP[0];\n\n @Watch(\"hintIn\", { immediate: true })\n onHintInChanged() {\n if (this.hint) {\n this.h = this.hint;\n }\n }\n\n public mounted() {\n this.log('Mounted');\n\n $(this.$refs.dialog).modal({\n closeable: true,\n autofocus: false,\n onHidden: () => {\n this.$emit(\"close\");\n }\n });\n $(this.$refs.dialog).modal(\"show\");\n this.onupdated();\n }\n\n public hide() {\n $(this.$refs.dialog).modal(\"hide\");\n }\n\n public use() {\n this.$emit(\"template-clicked\", this.h.template);\n this.hide();\n }\n\n public buy() {\n this.$emit(\"upgrade\");\n }\n\n public updated() {\n this.onupdated();\n }\n\n public onupdated() {\n for (let item of this.$el.querySelectorAll(\".editor:not(.dummy)\")) {\n makeEditor(item as HTMLElement);\n }\n }\n\n public onFollowLink(e: Event) {\n let target = e.target as HTMLElement;\n if (target.tagName == \"A\") {\n let href = target.getAttribute(\"href\");\n if (href && href.startsWith(\"#\")) {\n e.preventDefault();\n // look for the help record with that name.\n let name = href.substr(1);\n for (let hint of HELP) {\n if (hint.name === name) {\n this.h = hint;\n return;\n }\n }\n }\n }\n }\n}\n\ndeclare let ace: any;\n\nfunction makeEditor(area: HTMLElement) {\n let editor = ace.edit(area);\n let img = document.createElement(\"img\");\n img.classList.add(\"example-image\");\n area.parentNode!.insertBefore(img, area.nextSibling);\n let text = editor.getValue();\n let lineCount = Math.max(5, text.split(\"\\n\").length);\n area.style.height = lineCount + 2 + \"em\";\n if (!area.classList.contains(\"premium\")) {\n img.src = \"https://www.websequencediagrams.com/cgi-bin/cdraw?s=modern-blue&m=\" + encodeURIComponent(text);\n editor.on(\"change\", () => {\n img.src = \"https://www.websequencediagrams.com/cgi-bin/cdraw?s=modern-blue&m=\" + encodeURIComponent(editor.getValue());\n });\n } else {\n editor.setReadOnly(true);\n img.src = \"https://www.websequencediagrams.com\" + area.getAttribute(\"wsd-link\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HelpDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HelpDialog.vue?vue&type=template&id=54ea5df4&scoped=true&\"\nimport script from \"./HelpDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./HelpDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./HelpDialog.vue?vue&type=style&index=0&id=54ea5df4&scoped=true&lang=less&\"\nimport style1 from \"./HelpDialog.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"54ea5df4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chooser\"},_vm._l((_vm.styles),function(s){return _c('div',{key:s.name,staticClass:\"holder\",on:{\"click\":function($event){return _vm.$emit('change', s.name)}}},[_c('img',{attrs:{\"src\":'style-'+s.name+'.png',\"draggable\":\"false\",\"title\":s.name}})])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch, Model } from 'vue-property-decorator';\nimport { log } from '@/webshared/log';\nimport {Wsd, StyleInfo} from \"@/Wsd\";\n\n@Component({\n components: {\n\n },\n})\nexport default class StyleComponent extends Vue {\n public log = log.create('StyleComponent');\n\n public styles:StyleInfo[] = [{name:\"default\"}];\n\n @Model('change') public wsdstyle: string;\n\n public mounted() {\n this.log('Mounted');\n Wsd.getStyles().then((styles:StyleInfo[]) => {\n this.styles = styles;\n });\n }\n\n public beforeDestroy() {\n this.log('beforeDestroy()');\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StyleComponent.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StyleComponent.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./StyleComponent.vue?vue&type=template&id=1c5f377f&scoped=true&\"\nimport script from \"./StyleComponent.vue?vue&type=script&lang=ts&\"\nexport * from \"./StyleComponent.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./StyleComponent.vue?vue&type=style&index=0&id=1c5f377f&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1c5f377f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex-col revisions\"},[_c('div',{staticClass:\"header flex-row\"},[_c('div',{staticClass:\"stretch\"},[_vm._v(\"Revisions\")]),_c('i',{staticClass:\"icon close\",on:{\"click\":function($event){return _vm.$emit('close')}}})]),_c('div',{staticClass:\"flex-col stretch\",staticStyle:{\"overflow-y\":\"auto\"}},[_c('div',{staticClass:\"revision\",class:{selected:_vm.selected==null},on:{\"click\":function($event){return _vm.select(null)}}},[_c('input',{attrs:{\"type\":\"radio\"},domProps:{\"checked\":_vm.selected==null}}),_c('span',[_vm._v(\"Current version\")])]),_vm._l((_vm.days),function(day){return _c('div',{key:day.header},[_c('h3',{staticClass:\"date\",domProps:{\"innerHTML\":_vm._s(day.heading)}}),_vm._l((day.items),function(item){return _c('div',{key:item.cid,staticClass:\"revision\",class:{selected:_vm.selected===item},on:{\"click\":function($event){return _vm.select(item)}}},[_c('input',{attrs:{\"type\":\"radio\"},domProps:{\"checked\":_vm.selected==item}}),_c('span',[_vm._v(_vm._s(item.date))])])})],2)})],2),(!_vm.Wsd.subscribed())?_c('div',{staticClass:\"upgrade\"},[_vm._v(\"\\n More history is available to premium subscribers.\\n \"),_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":function($event){return _vm.$emit('upgrade')}}},[_vm._v(\"Upgrade today.\")])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { log } from \"@/webshared/log\";\nimport { Wsd, FileInfo } from \"@/Wsd\";\nimport { Revision } from \"@/OpenFiles\";\nimport { Ago } from \"@/webshared/FriendlyDate\";\n\ninterface Item {\n cid: string;\n date: string;\n ts: number;\n}\n\ninterface Day {\n heading: string;\n items: Item[];\n}\n\n@Component({\n components: {}\n})\nexport default class RevisionView extends Vue {\n public log = log.create(\"RevisionDialog\");\n @Prop() public revisions: Revision[];\n days: Day[] = [];\n selected: Item | null = null;\n Wsd = Wsd;\n\n public mounted() {\n this.log(\"Mounted\");\n this.toDays();\n }\n\n public beforeDestroy() {\n this.log(\"beforeDestroy()\");\n }\n\n select(item: Item | null) {\n this.selected = item;\n this.$emit(\"revision\", item ? item.cid : \"head\");\n }\n\n @Watch(\"revisions\")\n toDays() {\n this.log(\"RREVISIONS CHANGED, len=%s\", this.revisions.length);\n let days: Day[] = [];\n let lastTs = \"\";\n // exclude head from the listing.\n for (let i = 0; i < this.revisions.length - 1; i++) {\n let revision = this.revisions[i];\n let date = new Date(revision.ts * 1000);\n if (date.toDateString() !== lastTs) {\n lastTs = date.toDateString();\n days.push({\n heading: `${date.toLocaleDateString()}
(${Ago(\n revision.ts\n )})`,\n items: []\n });\n }\n\n let day = days[days.length - 1];\n\n if (day.items.length && revision.ts - day.items[0].ts < 60) {\n day.items.shift();\n }\n\n day.items.unshift({\n date: date.toLocaleTimeString(),\n cid: revision.cid,\n ts: revision.ts\n });\n }\n days.reverse();\n\n if (!Wsd.subscribed() && days.length > 3) {\n days.length = 3;\n }\n\n this.days = days;\n console.log(JSON.stringify(this.revisions), JSON.stringify(days));\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RevisionView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RevisionView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RevisionView.vue?vue&type=template&id=758de7e2&scoped=true&\"\nimport script from \"./RevisionView.vue?vue&type=script&lang=ts&\"\nexport * from \"./RevisionView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RevisionView.vue?vue&type=style&index=0&id=758de7e2&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"758de7e2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"SearchBox flex-row pad\"},[_c('div',{staticClass:\"flex-col stretch\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchText),expression:\"searchText\"}],ref:\"search\",staticClass:\"margin-y\",attrs:{\"type\":\"text\",\"placeholder\":\"Find\"},domProps:{\"value\":(_vm.searchText)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.searchText=$event.target.value},function($event){return _vm.$emit('find', _vm.searchText)}]}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.replaceText),expression:\"replaceText\"}],attrs:{\"type\":\"text\",\"placeholder\":\"Replace\"},domProps:{\"value\":(_vm.replaceText)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.replaceText=$event.target.value}}})]),_c('div',{staticClass:\"flex-col\",staticStyle:{\"justify-content\":\"space-around\"}},[_c('div',{staticClass:\"margin-y flex-row align-centre\",staticStyle:{\"justify-content\":\"flex-end\"}},[_c('button',{staticClass:\"borderless\",attrs:{\"title\":\"Find next\"},on:{\"click\":function($event){return _vm.$emit('find-next', _vm.searchText)}}},[_c('i',{staticClass:\"angle down icon\"})]),_c('button',{staticClass:\"borderless\",attrs:{\"title\":\"Find previous\"},on:{\"click\":function($event){return _vm.$emit('find-previous', _vm.searchText)}}},[_c('i',{staticClass:\"angle up icon\"})]),_c('button',{staticClass:\"borderless\",attrs:{\"title\":\"Close\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('i',{staticClass:\"close icon\"})])]),_c('div',{staticClass:\"flex-row align-centre\"},[_c('button',{staticClass:\"borderless\",on:{\"click\":function($event){return _vm.$emit('replace', _vm.searchText, _vm.replaceText)}}},[_vm._v(\"Replace\")]),_c('button',{staticClass:\"borderless\",on:{\"click\":function($event){return _vm.$emit('replace-all', _vm.searchText, _vm.replaceText)}}},[_vm._v(\"Replace All\")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { log } from \"@/webshared/log\";\n\n@Component({\n components: {}\n})\nexport default class SearchBar extends Vue {\n public log = log.create(\"SearchBar\");\n public searchText = \"\";\n public replaceText = \"\";\n public mounted() {\n this.log(\"Mounted\");\n (this.$refs[\"search\"] as HTMLInputElement).focus();\n }\n\n public beforeDestroy() {\n this.log(\"beforeDestroy()\");\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchBar.vue?vue&type=template&id=045050a0&scoped=true&\"\nimport script from \"./SearchBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchBar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SearchBar.vue?vue&type=style&index=0&id=045050a0&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"045050a0\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { log } from \"@/webshared/log\";\nimport {\n Wsd,\n WsdApp,\n WsdSignInModel,\n WsdAccountModel,\n WsdFileModel,\n FileInfo,\n} from \"@/Wsd\";\nimport { FileStorage, FileViewer, SelectionRange, Revision } from \"@/OpenFiles\";\nimport { Destructor } from \"@/webshared/Destructor\";\nimport { Settings } from \"../Settings\";\nimport { Debounce } from \"@/webshared/Debounce\";\nimport DebugPanel from \"@/components/DebugPanel.vue\";\nimport AceEditor from \"@/components/AceEditor.vue\";\nimport Splitter from \"@/components/Splitter.vue\";\nimport ImageVue from \"@/components/ImageVue.vue\";\nimport Footer from \"@/components/Footer.vue\";\nimport ErrorListing from \"@/components/ErrorListing.vue\";\nimport SigninDialog from \"@/components/SigninDialog.vue\";\nimport AccountDialog from \"@/components/AccountDialog.vue\";\nimport MultipleSigninDialog from \"@/components/MultipleSigninDialog.vue\";\nimport FileTabs from \"@/components/FileTabsComponent.vue\";\nimport FileDialog from \"@/components/FileDialog.vue\";\nimport HintView from \"@/components/HintView.vue\";\nimport { Url } from \"@/webshared/Url\";\nimport ShareDialog from \"@/components/ShareDialog.vue\";\nimport HelpDialog from \"./HelpDialog.vue\";\nimport StyleComponent from \"@/components/StyleComponent.vue\";\nimport RevisionView from \"@/components/RevisionView.vue\";\nimport SearchBar from \"@/components/SearchBar.vue\";\nimport { SPECIAL_DEAL } from \"@/WsdProducts\";\nimport { Hint } from \"@/hints\";\ndeclare let $: any;\n\n@Component({\n components: {\n DebugPanel,\n AceEditor,\n Splitter,\n ImageVue,\n Footer,\n ErrorListing,\n SigninDialog,\n AccountDialog,\n FileTabs,\n FileDialog,\n HintView,\n ShareDialog,\n HelpDialog,\n StyleComponent,\n RevisionView,\n SearchBar,\n MultipleSigninDialog,\n },\n})\nexport default class WsdMain extends Vue {\n public log = log.create(\"WsdMain\");\n public debug = false;\n private destructor = new Destructor();\n\n Wsd = Wsd;\n @Prop() app!: WsdApp;\n signInModel = new WsdSignInModel(this.app);\n accountModel = new WsdAccountModel(this.app);\n fileModel = new WsdFileModel(this.app);\n files = this.app.getOpenFiles(this);\n activeFile: FileInfo | null = null;\n revisions: Revision[] = [];\n public text: string = \"\";\n public hmac = \"\";\n\n public settings = new Settings();\n\n public layout = \"vertical\";\n public hposition: number;\n public vposition: number;\n public errorPosition: number;\n public zoom: string = \"width\"; // page, width, actual\n public row = 0;\n public column = 0;\n public errors: string[] = [];\n public showErrors = false;\n public errorsHidden = false;\n public fullscreen = false;\n public showTemplates = true;\n\n public showSigninDialog = false;\n public signInMessage = \"\";\n public showAccountDialog = false;\n public showFileDialog = false;\n public browseFolderId = 0;\n public showShareDialog = false;\n public showHelpDialog = false;\n public hintTemplate: Hint | null = null; // for help dialog\n public showRevisions = false;\n public showSearch = false;\n public currentRevision = \"head\";\n public hideSigninError = false;\n public clipboardAllowed = \"ClipboardItem\" in window;\n debounceSave = new Debounce(Wsd.SAVE_TIMEOUT);\n\n get editor() {\n return this.$refs[\"editor\"] as AceEditor;\n }\n\n // when alt-key is depressed, this is set to underlined\n underline = {\n textDecoration: \"underline\",\n };\n\n onKeyUp(e: KeyboardEvent) {\n //this.log(\"%s: code=%s alt=%s\", e.type, e.keyCode, e.altKey);\n if (e.keyCode === 18) {\n this.underline.textDecoration = \"none\";\n e.preventDefault();\n this.log(\"alt-up\");\n }\n\n if (e.keyCode === 86 && e.altKey) {\n this.log(\"alt-v pressed\");\n e.preventDefault();\n }\n }\n\n onKeyDown(e: KeyboardEvent) {\n //this.log(\"%s: code=%s alt=%s\", e.type, e.keyCode, e.altKey);\n if (e.keyCode === 18) {\n this.underline.textDecoration = \"underline\";\n e.preventDefault();\n this.log(\"alt-down\");\n }\n\n if (e.keyCode === 70 && e.ctrlKey) {\n this.showSearch = !this.showSearch;\n e.preventDefault();\n }\n }\n\n get haveFiles() {\n return this.files.files.length > 0;\n }\n\n get style() {\n if (this.activeFile) {\n return this.activeFile.info.style;\n } else {\n return \"napkin\";\n }\n }\n\n set style(name: string) {\n if (this.activeFile) {\n this.files.setStyle(this.activeFile, name);\n }\n }\n\n public created() {\n this.log(\"created()\");\n this.settings.create(\"layout\", \"vertical\", (value: string) => {\n this.layout = value;\n });\n\n this.hposition = this.settings.create(\"hposition\", 100);\n this.vposition = this.settings.create(\"vposition\", 600);\n this.errorPosition = this.settings.create(\"errorPosition\", -200);\n this.showTemplates = this.settings.create(\"showTemplates\", true);\n\n this.settings.create(\"zoom\", \"zoom-width\", (value: string) => {\n this.log(\"Settings change: zoom=%s\", value);\n this.zoom = value;\n });\n\n this.app.on(\"sign-in\", (message: string) => {\n this.showSigninDialog = true;\n this.signInMessage = message;\n });\n\n this.destructor.addEventListener(\n window,\n \"hashchange\",\n (e: HashChangeEvent) => {\n // hash has changed...\n this.log(\"hashchange %s->%s\", e.oldURL, e.newURL);\n this.onHashChange(e.oldURL, e.newURL);\n }\n );\n\n this.destructor.addEventListener(window, \"beforeunload\", () => {\n this.onBeforeUnload();\n });\n }\n\n public mounted() {\n this.log(\"Mounted\");\n\n this.debug = \"debug\" in Url.hash();\n\n // semantic ui elements use sizing relative to this.\n document.querySelector(\"html\")!.style.fontSize = \"20px\";\n\n this.destructor.on(this.app, \"browse-files\", (folder: number) => {\n this.log(\"Got message browse-files(%s)\", folder);\n this.browseFiles(folder);\n });\n\n this.files.on(\"added\", (file: FileInfo, isOpen: boolean) => {\n this.log(\"File added: %s\", file.name);\n if (this.activeFile === null || isOpen) {\n this.setActiveFile(file);\n }\n });\n\n this.files.on(\"deleted\", (file: FileInfo) => {\n this.log(\"notification file was deleted\");\n this.onFileClosed(file);\n });\n\n this.files.on(\"closed\", (file: FileInfo) => {\n this.onFileClosed(file);\n });\n\n this.files.on(\"started\", () => {\n if (this.files.files.length === 0) {\n this.newFile();\n } else {\n let fileid = this.settings.get(\"activeFile\");\n let file = this.files.files[0];\n if (fileid) {\n for (let f of this.files.files) {\n if (f.fileid === fileid) {\n file = f;\n }\n }\n }\n this.setActiveFile(file);\n }\n });\n }\n\n private onBeforeUnload() {\n // window is about to be unloaded.\n this.debounceSave.now();\n }\n\n public toggleShowTemplates() {\n this.showTemplates = this.settings.set(\n \"showTemplates\",\n !this.showTemplates\n );\n }\n\n public updated() {\n Vue.nextTick(() => {\n $(\".ui.dropdown\").dropdown();\n });\n }\n\n public beforeDestroy() {\n this.log(\"beforeDestroy()\");\n this.destructor.destroy();\n }\n\n public onSplitterMoved(position: number) {\n if (this.layout === \"horizontal\") {\n this.hposition = this.settings.set(\"hposition\", position);\n } else {\n this.vposition = this.settings.set(\"vposition\", position);\n }\n }\n\n public onChangeCursor(row: number, column: number) {\n if (row !== this.row) {\n this.row = row;\n (this.$refs.imageVue as ImageVue).showLine(row);\n if (this.canEdit() && this.activeFile) {\n this.log(\"cursor line changed; calling addRevision()\");\n this.files.addRevision(this.activeFile, this.text);\n }\n }\n this.column = column;\n const sel = this.editor.getSelectionRange();\n this.log(\"Selection range: %s:%s\", sel.start, sel.length);\n }\n\n public onErrorSplitterMoved(position: number) {\n this.errorPosition = this.settings.set(\"errorPosition\", position);\n }\n\n buy(scrollToPrices: boolean) {\n let path = \"/about\";\n let hash = Url.hash();\n let pieces = [];\n if (scrollToPrices) {\n pieces.push(\"scroll\");\n }\n if (\"web\" in hash) {\n pieces.push(\"web\");\n }\n if (pieces.length) {\n path += \"#\" + pieces.join(\"&\");\n }\n window.location.href = path;\n }\n\n public onGotoLine(line: number) {\n this.log(\"onGotoLine(%s)\", line);\n this.editor.gotoLine(line);\n }\n\n public onUserZoomed() {\n this.log(\"OnUserZoomed\");\n this.zoom = \"zoom-custom\";\n }\n\n public closeSignIn() {\n $(\".login-dialog\").modal(\"hide\");\n }\n\n /** Called when the user clicks the sign in button, when\n * google sign in is not allowed.\n */\n public signInClicked() {\n if (Wsd.config.signInMethod === \"saml\") {\n Wsd.samlAuth(); // does not return\n return;\n }\n this.showSigninDialog = true;\n }\n\n public onGotDiagram(response: any) {\n this.log(\"onGotDiagram(%s errors)\", response.errors.length);\n this.errors = response.errors;\n if (!this.errorsHidden && this.errors.length) {\n this.showErrors = true;\n }\n this.hmac = response.hmac;\n }\n\n isActiveFile(file: FileInfo) {\n return (\n this.activeFile !== null &&\n file.fileid === this.activeFile.fileid &&\n this.currentRevision === \"head\"\n );\n }\n\n getFileText(file: FileInfo) {\n return this.text;\n }\n\n getFilename() {\n if (this.activeFile) {\n return this.activeFile.name;\n }\n return \"\";\n }\n\n getFileSelection(file: FileInfo) {\n if (this.editor) {\n let range = this.editor.getSelectionRange();\n return new SelectionRange(range.start, range.length);\n }\n return new SelectionRange(0, 0);\n }\n\n onTextChanged() {\n if (this.activeFile && this.canEdit()) {\n this.activeFile.dirty = true;\n\n if (this.activeFile.fileid <= 0) {\n this.setPageTitle();\n }\n }\n this.debounceSave.call(() => {\n if (this.canEdit() && this.activeFile) {\n this.log(\"text changed; calling addRevision()\");\n this.files.addRevision(this.activeFile, this.text);\n }\n });\n }\n\n saveFile() {\n if (this.activeFile) {\n if (this.activeFile.fileid < 0) {\n this.app.saveFile(this.activeFile);\n } else if (!this.activeFile.dirty) {\n this.app.prompt.open({\n title: \"Save file\",\n message: \"This diagram is being automatically saved.\",\n cancel: false,\n });\n } else {\n if (this.canEdit() && this.activeFile) {\n this.files.addRevision(this.activeFile, this.text);\n }\n }\n }\n }\n\n onTemplateClicked(text: string) {\n this.log(\"onTemplateClicked()\");\n if (this.canEdit()) {\n\n // count the number ofnewlines\n let lines = this.text.split(\"\\n\");\n this.onGotoLine(Math.max(0, lines.length - 1));\n\n this.text += text;\n this.onTextChanged();\n }\n }\n\n // Called when the user clicks on one of the hints. Tells which hint was clicked.\n onShowHelp(hint: Hint) {\n this.showHelpDialog = true;\n this.hintTemplate = hint;\n }\n\n setFileText(file: FileInfo, text: string, selection: SelectionRange) {\n this.text = text;\n Vue.nextTick(() => {\n this.editor.setSelectionRange(selection.start, selection.length);\n });\n this.revisions = this.files.getRevisions(file);\n }\n\n setActiveFile(file: FileInfo) {\n this.log(\"setActiveFile()\");\n\n if (!this.files.isOpen(file)) {\n return;\n }\n\n if (this.activeFile) {\n let range = this.getFileSelection(this.activeFile);\n this.files.setSelectionRange(this.activeFile, range);\n this.debounceSave.now();\n }\n this.log(\"Active file now %s\", file.name);\n this.settings.set(\"activeFile\", file.fileid);\n this.activeFile = file;\n\n // clear any mouse wheel scaling.\n if (this.$refs.imageVue) {\n (this.$refs.imageVue as ImageVue).resetUserZoom();\n }\n\n this.setFileText(\n this.activeFile,\n this.files.getHead(this.activeFile),\n this.files.getSelectionRange(this.activeFile)\n );\n\n this.revisions = this.files.getRevisions(file);\n this.setPageTitle();\n }\n\n create() {\n this.log(\"create()\");\n this.files.create(Wsd.DEFAULT_TITLE, \"File contents\", \"rose\");\n }\n\n close() {\n this.log(\"close()\");\n if (this.activeFile) {\n this.app.closeFile(this.activeFile);\n }\n }\n\n renameParticipant() {\n if (this.activeFile) {\n this.app.renameParticipant(this, this.activeFile);\n }\n }\n\n exportDiagram() {\n if (this.activeFile) {\n Wsd.download({\n text: this.text,\n format: \"pdf\",\n filename: \"Exported.pdf\",\n ownFilename: this.activeFile.name,\n });\n }\n }\n\n newFile() {\n this.log(\"newFile()\");\n this.files.create(\n \"Untitled\",\n \"title Untitled\\n\\nAlice->Bob: Authentication Request\\nnote right of Bob: Bob thinks about it\\nBob->Alice: Authentication Response\\n\",\n \"default\"\n );\n }\n\n onFileTabClicked(file: FileInfo) {\n this.log(\"onFileTabClick()\");\n this.setActiveFile(file);\n }\n\n onFileTabClose(file: FileInfo) {\n this.log(\"onFileTabClose()\");\n this.debounceSave.now();\n if (\n !file.dirty ||\n confirm(\"Are you sure you want to close this file without saving?\")\n ) {\n this.files.close(file);\n }\n }\n\n onFileClosed(file: FileInfo) {\n this.log(\"file closed: %s\", file.fileid);\n if (this.isActiveFile(file)) {\n this.log(\"File was active file.. choosing another.\");\n this.activeFile = null;\n if (this.files.files.length) {\n this.setActiveFile(this.files.files[0]);\n } else {\n // no more files???\n //this.newFile();\n this.setPageTitle();\n }\n }\n }\n\n onHashChange(old: string, newUrl: string) {\n let o = Url.hash(old);\n let n = Url.hash(newUrl);\n\n this.showFileDialog = \"browse\" in n;\n this.debug = \"debug\" in n;\n }\n\n browseFiles(folder = 0) {\n this.browseFolderId = folder;\n Url.replaceHashValue(\"browse\", \"\");\n this.showFileDialog = true;\n }\n\n closeFiles() {\n Url.deleteHashValue(\"browse\");\n }\n\n print() {\n Wsd.print(\n this.text,\n this.style,\n this.activeFile ? this.activeFile.name : \"Untitled\"\n );\n }\n\n canEdit() {\n return this.activeFile && this.currentRevision === \"head\";\n }\n\n canUndo() {\n if (this.canEdit() && this.activeFile) {\n return this.files.canUndo(this.activeFile);\n } else {\n return false;\n }\n }\n\n canRedo() {\n if (this.canEdit() && this.activeFile) {\n return this.files.canRedo(this.activeFile);\n } else {\n return false;\n }\n }\n\n undo() {\n if (this.canEdit() && this.activeFile) {\n this.files.addRevision(this.activeFile, this.text);\n this.files.undo(this.activeFile);\n }\n }\n\n redo() {\n if (this.canEdit() && this.activeFile) {\n this.files.addRevision(this.activeFile, this.text);\n this.files.redo(this.activeFile);\n }\n }\n\n setStyle(name: string) {\n this.style = name;\n }\n\n toggleRevisions() {\n this.showRevisions = !this.showRevisions;\n if (!this.showRevisions) {\n if (this.activeFile) {\n this.revisions = this.files.getRevisions(this.activeFile);\n }\n } else {\n this.onShowRevision(\"head\");\n }\n }\n\n onShowRevision(cid: string) {\n if (!this.activeFile) {\n return;\n }\n this.log(\"Show revision %s\", cid);\n if (cid !== \"head\") {\n // have to check up here because the save function\n // also checks the currentRevision.\n this.debounceSave.now();\n }\n this.currentRevision = cid;\n if (cid !== \"head\") {\n this.debounceSave.now();\n this.text = this.files.getRevision(this.activeFile, cid);\n } else {\n this.text = this.files.getHead(this.activeFile);\n }\n }\n\n setPageTitle() {\n let title = \"\";\n\n if (this.activeFile) {\n if (this.activeFile.fileid < 0) {\n this.activeFile.name = Wsd.extractTitle(this.text);\n }\n title = this.activeFile.name.replace(\"\\\\n\", \" \") + \" - \";\n }\n\n title += \"WebSequenceDiagrams\";\n\n // Set the page title, unless we are running inside of a crawler's browser.\n let el = document.querySelector(\"title\");\n if (el && !IsRunningInCrawler()) {\n el.innerText = title;\n }\n }\n\n @Watch(\"zoom\")\n public onZoomChange(newZoom: string) {\n this.log(\"Zoom changed to %s\", newZoom);\n this.settings.setSilently(\"zoom\", newZoom);\n }\n\n get hasGoogleSignin() {\n return Wsd.config.allowGoogleSignIn && !Wsd.googleError;\n }\n\n search(event: string, arg1: string, arg2: string) {\n switch (event) {\n case \"find\":\n this.editor.find(arg1);\n break;\n\n case \"find-next\":\n this.editor.findNext(arg1);\n break;\n case \"find-previous\":\n this.editor.findPrevious(arg1);\n break;\n case \"replace\":\n this.editor.replace(arg1, arg2);\n break;\n case \"replace-all\":\n this.editor.replaceAll(arg2);\n break;\n }\n }\n\n showSale() {\n return SPECIAL_DEAL;\n }\n\n showDeal() {\n // deal must be enabled,\n // must be subscribed monthly.\n // Must have subscribed less than three months ago.\n let months = 90 * 24 * 60 * 60;\n let now = new Date().getTime() / 1000;\n return SPECIAL_DEAL && Wsd.isSubscribedMonthly() &&\n (now - Wsd.user.subscribedSince) < months;\n }\n\n emailOffer() {\n this.app.prompt.open({\n title: \"Switch plan\",\n message: `Please email alice@websequencediagrams.com to switch to a yearly $89/year plan.`,\n cancel: false,\n });\n }\n\n copyImage() {\n let iv = this.$refs.imageVue as ImageVue;\n\n if (iv) {\n try {\n iv.copyImage().then(() => { }, (error: Error) => {\n this.app.prompt.open({\n title: \"Error copying image\",\n message: error.message,\n cancel: false,\n });\n });\n } catch (e) {\n //@ts-ignore\n alert(e.message);\n console.log(e);\n }\n }\n }\n}\n\n\nfunction IsRunningInCrawler() {\n let CrawlerRE = /bot|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|HeadlessChrome/i;\n return (\n typeof window !== \"undefined\" &&\n window.navigator &&\n window.navigator.userAgent &&\n CrawlerRE.test(window.navigator.userAgent)\n );\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WsdMain.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./WsdMain.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WsdMain.vue?vue&type=template&id=6b8b8890&scoped=true&\"\nimport script from \"./WsdMain.vue?vue&type=script&lang=ts&\"\nexport * from \"./WsdMain.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./WsdMain.vue?vue&type=style&index=0&id=6b8b8890&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6b8b8890\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"main\"},[_c('link',{attrs:{\"href\":\"https://fonts.googleapis.com/css?family=Titillium+Web:700&display=swap\",\"rel\":\"stylesheet\"}}),_c('link',{attrs:{\"href\":\"https://fonts.googleapis.com/css?family=Roboto&display=swap\",\"rel\":\"stylesheet\"}}),_c('div',{staticClass:\"dark\"},[_c('div',{staticClass:\"centrebox header flex-row centre wrap\"},[_vm._m(0),_c('nav',{staticClass:\"flex-row\"},[_c('a',{on:{\"click\":function($event){return _vm.goto('app')}}},[_vm._v(\"Use Now\")]),_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":function($event){return _vm.goto('pricing')}}},[_vm._v(\"Pricing\")]),_c('a',{attrs:{\"href\":\"https://docs.google.com/document/d/1SMk9ixDSQ1GMPRfZgOUPOLpr52Q6uKIGd1OdTfViDZU/edit?usp=sharing\"}},[_vm._v(\"Privacy\")]),_c('a',{staticClass:\"bordered-button\",attrs:{\"href\":\"mailto:support@websequencediagrams.com\",\"title\":\"support@websequencediagrams.com\"}},[_vm._v(\"Contact\")])])])]),_c('section',{staticClass:\"top dark\"},[_c('div',{staticClass:\"centrebox\"},[_c('div',{staticClass:\"heading\"},[_vm._v(\"Create sequence diagrams in seconds.\")]),_vm._m(1),_c('button',{staticClass:\"try-button\",on:{\"click\":function($event){return _vm.goto('app')}}},[_vm._v(\"USE NOW ›\")])])]),_vm._m(2),_vm._m(3),_c('section',{staticClass:\"pricing centrebox\"},[_c('a',{attrs:{\"name\":\"pricing\"}}),_vm._m(4),_c('div',{staticClass:\"grid\"},[_vm._m(5),_c('div',{staticClass:\"promo-background\"}),_c('div',{staticClass:\"basic-background\"}),_vm._m(6),_vm._m(7),_vm._m(8),_c('div',{staticClass:\"r3 c2 red\"},[_vm._v(\"✗\")]),_vm._m(9),_c('div',{staticClass:\"r4 c1\"},[_vm._v(\"Save your work\")]),_c('div',{staticClass:\"r4 c2 green\"},[_vm._v(\"✓\")]),_vm._m(10),_c('div',{staticClass:\"r5 c1\"},[_vm._v(\"Pro Diagram sizes\")]),_c('div',{staticClass:\"r5 c2 red\"},[_vm._v(\"✗\")]),_vm._m(11),_c('div',{staticClass:\"r6 c1\"},[_vm._v(\"Reusable Code\")]),_c('div',{staticClass:\"r6 c2 red\"},[_vm._v(\"✗\")]),_c('div',{staticClass:\"r6 c3\"},[_vm._v(\"Include other diagrams \")]),_c('div',{staticClass:\"r7 c1\"},[_vm._v(\"Pro Diagram Elements\")]),_c('div',{staticClass:\"r7 c2 red\"},[_vm._v(\"✗\")]),_c('div',{staticClass:\"r7 c3\"},[_vm._v(\"Parallel flows, states, autonumbering \")]),_c('div',{staticClass:\"r8 c1\"},[_vm._v(\"Share & Export\")]),_c('div',{staticClass:\"r8 c2 red\"},[_vm._v(\"✗\")]),_c('div',{staticClass:\"r8 c3\"},[_vm._v(\"More participants, quality PDF \")]),_c('div',{staticClass:\"r9 c3 buy-square big-font\"},[_vm._v(\"\\n Try WSD Pro\\n \"),_c('button',{on:{\"click\":function($event){return _vm.buy('monthly15')}}},[_vm._v(\"Subscribe for $15/month\")]),(!_vm.showDeal())?_c('button',{staticStyle:{\"font-weight\":\"bold\",\"background\":\"#d4954c\"},on:{\"click\":function($event){return _vm.buy('yearly120')}}},[_vm._v(\"Special deal:\\n $120/year*\")]):_vm._e(),(_vm.showDeal())?_c('button',{staticStyle:{\"font-weight\":\"bold\",\"background\":\"#ff0000\",\"color\":\"#fff\"},on:{\"click\":function($event){return _vm.buy('yearly89')}}},[_vm._v(\"Year-end sale:\\n \"),_c('span',{staticStyle:{\"text-decoration\":\"line-through\"}},[_vm._v(\"$120\")]),_vm._v(\" $89/year*\")]):_vm._e(),_c('br'),_c('div',{staticClass:\"fine-print\"},[_vm._v(\"Cancel payments ANY TIME with 1 click\")])]),_c('div',{staticClass:\"r10 c3 black pad\"},[_vm._v(\"\\n *pay annually and get 4 months for FREE!\\n \"),_c('br'),_vm._v(\"Buy blocks of 10 accounts and save:\\n \"),_c('a',{attrs:{\"href\":\"javascript:void(0)\"},on:{\"click\":function($event){return _vm.buy('team')}}},[_vm._v(\"$699/year/10\")])])])]),_vm._m(12),_c('section',{staticClass:\"footer dark\"},[_c('div',{staticClass:\"centrebox small\"},[_c('h1',{staticClass:\"blue-font big-font white-first-line\"},[_vm._v(\"\\n You should be able to write great documentation, even\\n if you\\n don't\\n have a lot of time.\\n \")]),_c('div',{staticClass:\"normal-font centre\"},[_vm._v(\"\\n Your clients and colleagues will be impressed if you can make large-scale changes as easily as\\n copying\\n and pasting text,\\n instead of spending hours moving lines around with a mouse.\\n \")]),_c('div',{staticClass:\"centre\"},[_c('button',{staticClass:\"try-button\",on:{\"click\":function($event){return _vm.goto('app')}}},[_vm._v(\"GO TO APP ›\")])])])]),(_vm.showSigninDialog)?_c('SigninDialog',{attrs:{\"model\":_vm.signInModel,\"message\":_vm.signInMessage},on:{\"close\":function($event){_vm.showSigninDialog = false}}}):_vm._e()],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex-row\",staticStyle:{\"margin-right\":\"auto\",\"align-items\":\"center\"}},[_c('img',{staticClass:\"logo\",attrs:{\"src\":\"logo.svg\",\"width\":\"40\"}}),_c('span',{staticClass:\"title\"},[_c('span',{staticClass:\"blue-font\"},[_vm._v(\"Web\")]),_c('span',{staticClass:\"white-font\"},[_vm._v(\"Sequence\")]),_c('span',{staticClass:\"grey-font\"},[_vm._v(\"Diagrams\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"subheading\"},[_c('span',{staticClass:\"blue-font\"},[_vm._v(\"Faster\")]),_vm._v(\" than a whiteboard.\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"benefits\"},[_c('div',{staticClass:\"benefit\"},[_c('img',{attrs:{\"src\":\"icon-gear.png\"}}),_c('div',[_c('h2',[_vm._v(\"Make beautiful documentation\")]),_c('div',[_vm._v(\"Sequence diagrams describe how systems communicate.\")])])]),_c('div',{staticClass:\"benefit\"},[_c('img',{attrs:{\"src\":\"icon-ideas.png\"}}),_c('div',[_c('h2',[_vm._v(\"No more mouse\")]),_c('div',[_vm._v(\"Make large scale changes by copying and pasting text\")])])]),_c('div',{staticClass:\"benefit\"},[_c('img',{attrs:{\"src\":\"icon-hands.png\"}}),_c('div',[_c('h2',[_vm._v(\"Design together\")]),_c('div',[_vm._v(\"Collaborate and share with your team.\")])])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"premium centrebox\",staticStyle:{\"margin-top\":\"50px\"}},[_c('h1',[_vm._v(\"\\n With a\\n \"),_c('span',{staticClass:\"blue-font\"},[_vm._v(\"premium account\")]),_vm._v(\" you will:\\n \")]),_c('div',{staticClass:\"flex-row wrap centre\"},[_c('div',{staticClass:\"feature\"},[_c('img',{attrs:{\"src\":\"icon-circlecheck.png\"}}),_c('div',[_vm._v(\"Unlock all of the premium features so you can use the right concepts to document your ideas.\\n \")])]),_c('div',{staticClass:\"feature\"},[_c('img',{attrs:{\"src\":\"icon-circlecheck.png\"}}),_c('div',[_vm._v(\"Include the text of other diagrams without re-typing them.\")])]),_c('div',{staticClass:\"feature\"},[_c('img',{attrs:{\"src\":\"icon-circlecheck.png\"}}),_c('div',[_vm._v(\"Create diagrams with more participants and more than 1200 pixels wide.\")])]),_c('div',{staticClass:\"feature\"},[_c('img',{attrs:{\"src\":\"icon-circlecheck.png\"}}),_c('div',[_vm._v(\"See past versions of your diagrams and their complete revision history.\")])]),_c('div',{staticClass:\"feature\"},[_c('img',{attrs:{\"src\":\"icon-circlecheck.png\"}}),_c('div',[_vm._v(\"Export to proof quality SVG or multipage PDF\")])]),_c('div',{staticClass:\"feature\"},[_c('img',{attrs:{\"src\":\"icon-circlecheck.png\"}}),_c('div',[_vm._v(\"Create diagrams without our logo at the bottom.\")])])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h1',[_vm._v(\"\\n Would you like to try\\n \"),_c('span',{staticClass:\"blue-font\"},[_vm._v(\"WSD Pro?\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"r1 c3\",staticStyle:{\"text-align\":\"center\"}},[_c('div',{staticClass:\"promo-deal big-font\"},[_vm._v(\"PROMO DEAL\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"r2 c2 big-font\"},[_c('div',{staticClass:\"prod-line\"},[_vm._v(\"WSD Basic\")]),_c('div',{staticClass:\"price-line\"},[_vm._v(\"FREE\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"r2 c3 big-font\"},[_c('div',{staticClass:\"prod-line\"},[_vm._v(\"WSD PRO\")]),_c('div',{staticClass:\"price-line big\"},[_vm._v(\"$15/month*\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"r3 c1\"},[_c('b',{staticStyle:{\"color\":\"#00cc00\"}},[_vm._v(\"Support the author\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"r3 c3\"},[_vm._v(\"Remove WSD branding, \"),_c('b',[_vm._v(\"feel warm and fuzzy\")]),_vm._v(\" & more\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"r4 c3\"},[_vm._v(\"Auto-save, \"),_c('b',[_vm._v(\"complete\")]),_vm._v(\" revision history \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"r5 c3\"},[_c('b',[_vm._v(\"Wider diagrams\")]),_vm._v(\", pro styles \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"logos centrebox\"},[_c('h1',{staticClass:\"blue-first-line centrebox small pad-top pad-bottom\"},[_vm._v(\"\\n Many of the largest telecommunications and\\n ecommerce companies\\n use WSD in their\\n organizations.\\n \")]),_c('div',{staticClass:\"flex-row wrap centre\"},[_c('img',{attrs:{\"src\":\"intel-logo.png\"}}),_c('img',{attrs:{\"src\":\"yahoo-logo.png\"}}),_c('img',{attrs:{\"src\":\"netflix-logo.png\"}}),_c('img',{attrs:{\"src\":\"att-logo.png\"}}),_c('img',{attrs:{\"src\":\"cisco-logo.png\"}}),_c('img',{attrs:{\"src\":\"northrop-logo.png\"}}),_c('img',{attrs:{\"src\":\"vmware-logo.png\"}})])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { log } from \"@/webshared/log\";\nimport { Products } from \"@/WsdProducts\";\nimport { Wsd, WsdApp, Payment, User, WsdSignInModel } from \"@/Wsd\";\nimport { Destructor } from \"../webshared/Destructor\";\nimport { Url } from \"@/webshared/Url\";\nimport SigninDialog from \"@/components/SigninDialog.vue\";\nimport { SPECIAL_DEAL } from \"@/WsdProducts\";\n\n@Component({\n components: {\n SigninDialog,\n },\n})\nexport default class AboutComponent extends Vue {\n public log = log.create(\"BuyPage\");\n @Prop() app!: WsdApp;\n signInModel = new WsdSignInModel(this.app);\n public showSigninDialog = false;\n signInMessage = \"\";\n destructor = new Destructor();\n SPECIAL_DEAL = SPECIAL_DEAL;\n Wsd = Wsd;\n\n public mounted() {\n this.log(\"Mounted\");\n window.addEventListener(\"hashchange\", function () {\n console.log(\"HASH CHANGE TO: %s\", window.location.hash);\n\n if (window.location.hash.indexOf(\"app\") !== -1) {\n Url.deleteHashValue(\"scroll\");\n console.log(\"reload\");\n window.location.reload();\n }\n });\n this.destructor.on(this.app, \"sign-in\", (message: string) => {\n this.signInMessage = message;\n this.showSigninDialog = true;\n });\n\n if (\"scroll\" in Url.hash()) {\n this.goto(\"pricing\");\n }\n }\n\n public beforeDestroy() {\n this.log(\"beforeDestroy()\");\n this.destructor.destroy();\n }\n\n showDeal() {\n return SPECIAL_DEAL && !Wsd.subscribed();\n }\n\n buy(what: string) {\n this.app.buy(Products[what]).then(() => {\n this.goto(\"app\");\n });\n }\n\n goto(what: string) {\n if (what === \"app\") {\n let href = \"/app\";\n if (window.location.hash.indexOf(\"web\") >= 0) {\n href = \"/app#web\";\n }\n window.location.href = href;\n } else {\n document.querySelector(`.${what}`)!.scrollIntoView();\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AboutComponent.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/ts-loader/index.js??ref--12-1!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AboutComponent.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AboutComponent.vue?vue&type=template&id=3cc6101e&scoped=true&\"\nimport script from \"./AboutComponent.vue?vue&type=script&lang=ts&\"\nexport * from \"./AboutComponent.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AboutComponent.vue?vue&type=style&index=0&id=3cc6101e&scoped=true&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3cc6101e\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\n//import Main from '@/components/Main.vue';\nimport BasicApp from \"@/components/BasicApp.vue\";\nimport WsdMain from \"@/components/WsdMain.vue\";\nimport AboutComponent from \"@/components/AboutComponent.vue\";\nimport PromptDialog from \"@/components/PromptDialog.vue\";\nimport { Wsd, WsdApp } from \"@/Wsd\";\nimport { Destructor } from \"@/webshared/Destructor\";\nimport { log } from \"@/webshared/log\";\n\n@Component({\n components: {\n // Main,\n BasicApp,\n WsdMain,\n AboutComponent,\n PromptDialog\n }\n})\nexport default class App extends Vue {\n prompter: PromptDialog;\n app: WsdApp;\n // updated in onhashchange and at startup when things are loaded.\n showMain = false;\n showAbout = false;\n destructor = new Destructor();\n public log = log.create(\"App\");\n\n beforeCreate() {\n log.enableConsole();\n }\n\n mounted() {\n this.log(\"created\");\n this.app = new WsdApp();\n this.prompter = this.$refs.prompter as PromptDialog;\n this.app.start(this.prompter);\n this.destructor.addEventListener(\n window,\n \"hashchange\",\n (e: HashChangeEvent) => {\n // hash has changed...\n this.log(\"hashchange %s->%s\", e.oldURL, e.newURL);\n this.onHashChange(e.oldURL, e.newURL);\n }\n );\n\n this.onHashChange(location.hash, location.hash);\n }\n\n onHashChange(oldURL: string, newURL: string) {\n this.showMain = Wsd.shouldStartInApp();\n this.showAbout = !this.showMain;\n }\n}\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/ts-loader/index.js??ref--12-1!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/ts-loader/index.js??ref--12-1!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=598cd14a&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=less&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\nimport App from './App.vue';\nimport 'babel-polyfill';\nimport \"@/../semantic/dist/semantic.min.css\";\nimport \"@/../semantic/dist/semantic.min.js\";\n\nVue.config.productionTip = false;\n\nnew Vue({\n render: (h) => h(App),\n}).$mount('#app');\n\nVue.directive('focus', {\n inserted(el) {\n Vue.nextTick(el.focus);\n },\n});\n(window as any).wsdok = true;\n\n//log.enableConsole();\nlet lastError = 0;\nwindow.addEventListener('error', function (e: ErrorEvent) {\n if (new Date().getTime() / 1000 - lastError < 10) {\n return;\n }\n lastError = new Date().getTime() / 1000;\n alert(`An error occurred at ${e.filename}:${e.lineno}:${e.colno}: ` + (e.message || e.toString()));\n});\n","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleSigninDialog.vue?vue&type=style&index=0&id=e57dc0da&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleSigninDialog.vue?vue&type=style&index=0&id=e57dc0da&scoped=true&lang=less&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShareDialog.vue?vue&type=style&index=0&id=679ee1af&scoped=true&lang=less&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShareDialog.vue?vue&type=style&index=0&id=679ee1af&scoped=true&lang=less&\""," /*\n * # Semantic UI - 2.4.2\n * https://github.com/Semantic-Org/Semantic-UI\n * http://www.semantic-ui.com/\n *\n * Copyright 2014 Contributors\n * Released under the MIT license\n * http://opensource.org/licenses/MIT\n *\n */\n!function(p,h,v,b){p.site=p.fn.site=function(e){var s,l,i=(new Date).getTime(),o=[],t=e,n=\"string\"==typeof t,c=[].slice.call(arguments,1),u=p.isPlainObject(e)?p.extend(!0,{},p.site.settings,e):p.extend({},p.site.settings),a=u.namespace,d=u.error,r=\"module-\"+a,f=p(v),m=this,g=f.data(r);return s={initialize:function(){s.instantiate()},instantiate:function(){s.verbose(\"Storing instance of site\",s),g=s,f.data(r,s)},normalize:function(){s.fix.console(),s.fix.requestAnimationFrame()},fix:{console:function(){s.debug(\"Normalizing window.console\"),console!==b&&console.log!==b||(s.verbose(\"Console not available, normalizing events\"),s.disable.console()),void 0!==console.group&&void 0!==console.groupEnd&&void 0!==console.groupCollapsed||(s.verbose(\"Console group not available, normalizing events\"),h.console.group=function(){},h.console.groupEnd=function(){},h.console.groupCollapsed=function(){}),void 0===console.markTimeline&&(s.verbose(\"Mark timeline not available, normalizing events\"),h.console.markTimeline=function(){})},consoleClear:function(){s.debug(\"Disabling programmatic console clearing\"),h.console.clear=function(){}},requestAnimationFrame:function(){s.debug(\"Normalizing requestAnimationFrame\"),h.requestAnimationFrame===b&&(s.debug(\"RequestAnimationFrame not available, normalizing event\"),h.requestAnimationFrame=h.requestAnimationFrame||h.mozRequestAnimationFrame||h.webkitRequestAnimationFrame||h.msRequestAnimationFrame||function(e){setTimeout(e,0)})}},moduleExists:function(e){return p.fn[e]!==b&&p.fn[e].settings!==b},enabled:{modules:function(e){var n=[];return e=e||u.modules,p.each(e,function(e,t){s.moduleExists(t)&&n.push(t)}),n}},disabled:{modules:function(e){var n=[];return e=e||u.modules,p.each(e,function(e,t){s.moduleExists(t)||n.push(t)}),n}},change:{setting:function(o,a,e,r){e=\"string\"==typeof e?\"all\"===e?u.modules:[e]:e||u.modules,r=r===b||r,p.each(e,function(e,t){var n,i=!s.moduleExists(t)||(p.fn[t].settings.namespace||!1);s.moduleExists(t)&&(s.verbose(\"Changing default setting\",o,a,t),p.fn[t].settings[o]=a,r&&i&&0<(n=p(\":data(module-\"+i+\")\")).length&&(s.verbose(\"Modifying existing settings\",n),n[t](\"setting\",o,a)))})},settings:function(i,e,o){e=\"string\"==typeof e?[e]:e||u.modules,o=o===b||o,p.each(e,function(e,t){var n;s.moduleExists(t)&&(s.verbose(\"Changing default setting\",i,t),p.extend(!0,p.fn[t].settings,i),o&&a&&0<(n=p(\":data(module-\"+a+\")\")).length&&(s.verbose(\"Modifying existing settings\",n),n[t](\"setting\",i)))})}},enable:{console:function(){s.console(!0)},debug:function(e,t){e=e||u.modules,s.debug(\"Enabling debug for modules\",e),s.change.setting(\"debug\",!0,e,t)},verbose:function(e,t){e=e||u.modules,s.debug(\"Enabling verbose debug for modules\",e),s.change.setting(\"verbose\",!0,e,t)}},disable:{console:function(){s.console(!1)},debug:function(e,t){e=e||u.modules,s.debug(\"Disabling debug for modules\",e),s.change.setting(\"debug\",!1,e,t)},verbose:function(e,t){e=e||u.modules,s.debug(\"Disabling verbose debug for modules\",e),s.change.setting(\"verbose\",!1,e,t)}},console:function(e){if(e){if(g.cache.console===b)return void s.error(d.console);s.debug(\"Restoring console function\"),h.console=g.cache.console}else s.debug(\"Disabling console function\"),g.cache.console=h.console,h.console={clear:function(){},error:function(){},group:function(){},groupCollapsed:function(){},groupEnd:function(){},info:function(){},log:function(){},markTimeline:function(){},warn:function(){}}},destroy:function(){s.verbose(\"Destroying previous site for\",f),f.removeData(r)},cache:{},setting:function(e,t){if(p.isPlainObject(e))p.extend(!0,u,e);else{if(t===b)return u[e];u[e]=t}},internal:function(e,t){if(p.isPlainObject(e))p.extend(!0,s,e);else{if(t===b)return s[e];s[e]=t}},debug:function(){u.debug&&(u.performance?s.performance.log(arguments):(s.debug=Function.prototype.bind.call(console.info,console,u.name+\":\"),s.debug.apply(console,arguments)))},verbose:function(){u.verbose&&u.debug&&(u.performance?s.performance.log(arguments):(s.verbose=Function.prototype.bind.call(console.info,console,u.name+\":\"),s.verbose.apply(console,arguments)))},error:function(){s.error=Function.prototype.bind.call(console.error,console,u.name+\":\"),s.error.apply(console,arguments)},performance:{log:function(e){var t,n;u.performance&&(n=(t=(new Date).getTime())-(i||t),i=t,o.push({Element:m,Name:e[0],Arguments:[].slice.call(e,1)||\"\",\"Execution Time\":n})),clearTimeout(s.performance.timer),s.performance.timer=setTimeout(s.performance.display,500)},display:function(){var e=u.name+\":\",n=0;i=!1,clearTimeout(s.performance.timer),p.each(o,function(e,t){n+=t[\"Execution Time\"]}),e+=\" \"+n+\"ms\",(console.group!==b||console.table!==b)&&0\")},fields:function(e){var n=F();return F.each(e,function(e,t){n=n.add(h.get.field(t))}),n},validation:function(n){var i,o;return!!c&&(F.each(c,function(e,t){o=t.identifier||e,h.get.field(o)[0]==n[0]&&(t.identifier=o,i=t)}),i||!1)},value:function(e){var t=[];return t.push(e),h.get.values.call(v,t)[e]},values:function(e){var t=F.isArray(e)?h.get.fields(e):n,c={};return t.each(function(e,t){var n=F(t),i=(n.prop(\"type\"),n.prop(\"name\")),o=n.val(),a=n.is(f.checkbox),r=n.is(f.radio),s=-1!==i.indexOf(\"[]\"),l=!!a&&n.is(\":checked\");i&&(s?(i=i.replace(\"[]\",\"\"),c[i]||(c[i]=[]),a?l?c[i].push(o||!0):c[i].push(!1):c[i].push(o)):r?c[i]!==D&&0!=c[i]||(c[i]=!!l&&(o||!0)):c[i]=a?!!l&&(o||!0):o)}),c}},has:{field:function(e){return h.verbose(\"Checking for existence of a field with identifier\",e),\"string\"!=typeof(e=h.escape.string(e))&&h.error(s.identifier,e),0\"+t+\"\"}),F(n+=\"\")},prompt:function(e){return F(\"
\").addClass(\"ui basic red pointing prompt label\").html(e[0])}},rules:{empty:function(e){return!(e===D||\"\"===e||F.isArray(e)&&0===e.length)},checked:function(){return 0=t},length:function(e,t){return e!==D&&e.length>=t},exactLength:function(e,t){return e!==D&&e.length==t},maxLength:function(e,t){return e!==D&&e.length<=t},match:function(e,t){var n;F(this);return 0=t)},exactCount:function(e,t){return 0==t?\"\"===e:1==t?\"\"!==e&&-1===e.search(\",\"):e.split(\",\").length==t},maxCount:function(e,t){return 0!=t&&(1==t?-1===e.search(\",\"):e.split(\",\").length<=t)}}}}(jQuery,window,document),function(S,k,T){\"use strict\";k=void 0!==k&&k.Math==Math?k:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),S.fn.accordion=function(a){var v,r=S(this),b=(new Date).getTime(),y=[],x=a,C=\"string\"==typeof x,w=[].slice.call(arguments,1);k.requestAnimationFrame||k.mozRequestAnimationFrame||k.webkitRequestAnimationFrame||k.msRequestAnimationFrame;return r.each(function(){var e,c,u=S.isPlainObject(a)?S.extend(!0,{},S.fn.accordion.settings,a):S.extend({},S.fn.accordion.settings),d=u.className,t=u.namespace,f=u.selector,s=u.error,n=\".\"+t,i=\"module-\"+t,o=r.selector||\"\",m=S(this),g=m.find(f.title),p=m.find(f.content),l=this,h=m.data(i);c={initialize:function(){c.debug(\"Initializing\",m),c.bind.events(),u.observeChanges&&c.observeChanges(),c.instantiate()},instantiate:function(){h=c,m.data(i,c)},destroy:function(){c.debug(\"Destroying previous instance\",m),m.off(n).removeData(i)},refresh:function(){g=m.find(f.title),p=m.find(f.content)},observeChanges:function(){\"MutationObserver\"in k&&((e=new MutationObserver(function(e){c.debug(\"DOM tree modified, updating selector cache\"),c.refresh()})).observe(l,{childList:!0,subtree:!0}),c.debug(\"Setting up mutation observer\",e))},bind:{events:function(){c.debug(\"Binding delegated events\"),m.on(u.on+n,f.trigger,c.event.click)}},event:{click:function(){c.toggle.call(this)}},toggle:function(e){var t=e!==T?\"number\"==typeof e?g.eq(e):S(e).closest(f.title):S(this).closest(f.title),n=t.next(p),i=n.hasClass(d.animating),o=n.hasClass(d.active),a=o&&!i,r=!o&&i;c.debug(\"Toggling visibility of content\",t),a||r?u.collapsible?c.close.call(t):c.debug(\"Cannot close accordion content collapsing is disabled\"):c.open.call(t)},open:function(e){var t=e!==T?\"number\"==typeof e?g.eq(e):S(e).closest(f.title):S(this).closest(f.title),n=t.next(p),i=n.hasClass(d.animating);n.hasClass(d.active)||i?c.debug(\"Accordion already open, skipping\",n):(c.debug(\"Opening accordion content\",t),u.onOpening.call(n),u.onChanging.call(n),u.exclusive&&c.closeOthers.call(t),t.addClass(d.active),n.stop(!0,!0).addClass(d.animating),u.animateChildren&&(S.fn.transition!==T&&m.transition(\"is supported\")?n.children().transition({animation:\"fade in\",queue:!1,useFailSafe:!0,debug:u.debug,verbose:u.verbose,duration:u.duration}):n.children().stop(!0,!0).animate({opacity:1},u.duration,c.resetOpacity)),n.slideDown(u.duration,u.easing,function(){n.removeClass(d.animating).addClass(d.active),c.reset.display.call(this),u.onOpen.call(this),u.onChange.call(this)}))},close:function(e){var t=e!==T?\"number\"==typeof e?g.eq(e):S(e).closest(f.title):S(this).closest(f.title),n=t.next(p),i=n.hasClass(d.animating),o=n.hasClass(d.active);!o&&!(!o&&i)||o&&i||(c.debug(\"Closing accordion content\",n),u.onClosing.call(n),u.onChanging.call(n),t.removeClass(d.active),n.stop(!0,!0).addClass(d.animating),u.animateChildren&&(S.fn.transition!==T&&m.transition(\"is supported\")?n.children().transition({animation:\"fade out\",queue:!1,useFailSafe:!0,debug:u.debug,verbose:u.verbose,duration:u.duration}):n.children().stop(!0,!0).animate({opacity:0},u.duration,c.resetOpacity)),n.slideUp(u.duration,u.easing,function(){n.removeClass(d.animating).removeClass(d.active),c.reset.display.call(this),u.onClose.call(this),u.onChange.call(this)}))},closeOthers:function(e){var t,n,i,o=e!==T?g.eq(e):S(this).closest(f.title),a=o.parents(f.content).prev(f.title),r=o.closest(f.accordion),s=f.title+\".\"+d.active+\":visible\",l=f.content+\".\"+d.active+\":visible\";i=u.closeNested?(t=r.find(s).not(a)).next(p):(t=r.find(s).not(a),n=r.find(l).find(s).not(a),(t=t.not(n)).next(p)),0 adjusting invoked element\"),c=c.closest(o.checkbox),s.refresh())}},setup:function(){s.set.initialLoad(),s.is.indeterminate()?(s.debug(\"Initial value is indeterminate\"),s.indeterminate()):s.is.checked()?(s.debug(\"Initial value is checked\"),s.check()):(s.debug(\"Initial value is unchecked\"),s.uncheck()),s.remove.initialLoad()},refresh:function(){u=c.children(o.label),d=c.children(o.input),f=d[0]},hide:{input:function(){s.verbose(\"Modifying z-index to be unselectable\"),d.addClass(t.hidden)}},show:{input:function(){s.verbose(\"Modifying z-index to be selectable\"),d.removeClass(t.hidden)}},observeChanges:function(){\"MutationObserver\"in A&&((e=new MutationObserver(function(e){s.debug(\"DOM tree modified, updating selector cache\"),s.refresh()})).observe(h,{childList:!0,subtree:!0}),s.debug(\"Setting up mutation observer\",e))},attachEvents:function(e,t){var n=T(e);t=T.isFunction(s[t])?s[t]:s.toggle,0\").insertAfter(d),s.debug(\"Creating label\",u))}},has:{label:function(){return 0 .ui.dimmer\",content:\".ui.dimmer > .content, .ui.dimmer > .content > .center\"},template:{dimmer:function(){return S(\"
\").attr(\"class\",\"ui dimmer\")}}}}(jQuery,window,document),function(Y,Z,K,J){\"use strict\";Z=void 0!==Z&&Z.Math==Math?Z:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")(),Y.fn.dropdown=function(M){var L,V=Y(this),N=Y(K),H=V.selector||\"\",U=\"ontouchstart\"in K.documentElement,W=(new Date).getTime(),B=[],Q=M,X=\"string\"==typeof Q,$=[].slice.call(arguments,1);return V.each(function(n){var e,t,i,o,a,r,s,g,p=Y.isPlainObject(M)?Y.extend(!0,{},Y.fn.dropdown.settings,M):Y.extend({},Y.fn.dropdown.settings),h=p.className,c=p.message,l=p.fields,v=p.keys,b=p.metadata,u=p.namespace,d=p.regExp,y=p.selector,f=p.error,m=p.templates,x=\".\"+u,C=\"module-\"+u,w=Y(this),S=Y(p.context),k=w.find(y.text),T=w.find(y.search),A=w.find(y.sizer),R=w.find(y.input),P=w.find(y.icon),E=0\").html(o).attr(\"data-\"+b.value,t).attr(\"data-\"+b.text,t).addClass(h.addition).addClass(h.item),p.hideAdditions&&i.addClass(h.hidden),n=n===J?i:n.add(i),g.verbose(\"Creating user choices for value\",t,i))}),n)},userLabels:function(e){var t=g.get.userValues();t&&(g.debug(\"Adding user labels\",t),Y.each(t,function(e,t){g.verbose(\"Adding custom user value\"),g.add.label(t,t)}))},menu:function(){F=Y(\"
\").addClass(h.menu).appendTo(w)},sizer:function(){A=Y(\"\").addClass(h.sizer).insertAfter(T)}},search:function(e){e=e!==J?e:g.get.query(),g.verbose(\"Searching for query\",e),g.has.minCharacters(e)?g.filter(e):g.hide()},select:{firstUnfiltered:function(){g.verbose(\"Selecting first non-filtered element\"),g.remove.selectedItem(),O.not(y.unselectable).not(y.addition+y.hidden).eq(0).addClass(h.selected)},nextAvailable:function(e){var t=(e=e.eq(0)).nextAll(y.item).not(y.unselectable).eq(0),n=e.prevAll(y.item).not(y.unselectable).eq(0);0\").addClass(h.search).prop(\"autocomplete\",\"off\").insertBefore(k)),g.is.multiple()&&g.is.searchSelection()&&!g.has.sizer()&&g.create.sizer(),p.allowTab&&g.set.tabbable()},select:function(){var e=g.get.selectValues();g.debug(\"Dropdown initialized on a select\",e),w.is(\"select\")&&(R=w),0\").attr(\"class\",R.attr(\"class\")).addClass(h.selection).addClass(h.dropdown).html(m.dropdown(e)).insertBefore(R),R.hasClass(h.multiple)&&!1===R.prop(\"multiple\")&&(g.error(f.missingMultiple),R.prop(\"multiple\",!0)),R.is(\"[multiple]\")&&g.set.multiple(),R.prop(\"disabled\")&&(g.debug(\"Disabling dropdown\"),w.addClass(h.disabled)),R.removeAttr(\"class\").detach().prependTo(w)),g.refresh()},menu:function(e){F.html(m.menu(e,l)),O=F.find(y.item)},reference:function(){g.debug(\"Dropdown behavior was called on select, replacing with closest dropdown\"),w=w.parent(y.dropdown),I=w.data(C),z=w.get(0),g.refresh(),g.setup.returnedObject()},returnedObject:function(){var e=V.slice(0,n),t=V.slice(n+1);V=e.add(w).add(t)}},refresh:function(){g.refreshSelectors(),g.refreshData()},refreshItems:function(){O=F.find(y.item)},refreshSelectors:function(){g.verbose(\"Refreshing selector cache\"),k=w.find(y.text),T=w.find(y.search),R=w.find(y.input),P=w.find(y.icon),E=0 modified, recreating menu\");var n=!1;Y.each(e,function(e,t){if(Y(t.target).is(\"select\")||Y(t.addedNodes).is(\"select\"))return n=!0}),n&&(g.disconnect.selectObserver(),g.refresh(),g.setup.select(),g.set.selected(),g.observe.select())}},menu:{mutation:function(e){var t=e[0],n=t.addedNodes?Y(t.addedNodes[0]):Y(!1),i=t.removedNodes?Y(t.removedNodes[0]):Y(!1),o=n.add(i),a=o.is(y.addition)||0t.name?1:-1}),g.debug(\"Retrieved and sorted values from select\",o)):g.debug(\"Retrieved values from select\",o),o},activeItem:function(){return O.filter(\".\"+h.active)},selectedItem:function(){var e=O.not(y.unselectable).filter(\".\"+h.selected);return 0=p.maxSelections?(g.debug(\"Maximum selection count reached\"),p.useLabels&&(O.addClass(h.filtered),g.add.message(c.maxSelections)),!0):(g.verbose(\"No longer at maximum selection count\"),g.remove.message(),g.remove.filteredItem(),g.is.searchSelection()&&g.filterItems(),!1))}},restore:{defaults:function(){g.clear(),g.restore.defaultText(),g.restore.defaultValue()},defaultText:function(){var e=g.get.defaultText();e===g.get.placeholderText?(g.debug(\"Restoring default placeholder text\",e),g.set.placeholderText(e)):(g.debug(\"Restoring default text\",e),g.set.text(e))},placeholderText:function(){g.set.placeholderText()},defaultValue:function(){var e=g.get.defaultValue();e!==J&&(g.debug(\"Restoring default value\",e),\"\"!==e?(g.set.value(e),g.set.selected()):(g.remove.activeItem(),g.remove.selectedItem()))},labels:function(){p.allowAdditions&&(p.useLabels||(g.error(f.labels),p.useLabels=!0),g.debug(\"Restoring selected values\"),g.create.userLabels()),g.check.maxSelections()},selected:function(){g.restore.values(),g.is.multiple()?(g.debug(\"Restoring previously selected values and labels\"),g.restore.labels()):g.debug(\"Restoring previously selected values\")},values:function(){g.set.initialLoad(),p.apiSettings&&p.saveRemoteData&&g.get.remoteValues()?g.restore.remoteValues():g.set.selected(),g.remove.initialLoad()},remoteValues:function(){var e=g.get.remoteValues();g.debug(\"Recreating selected from session data\",e),e&&(g.is.single()?Y.each(e,function(e,t){g.set.text(t)}):Y.each(e,function(e,t){g.add.label(e,t)}))}},read:{remoteData:function(e){var t;if(Z.Storage!==J)return(t=sessionStorage.getItem(e))!==J&&t;g.error(f.noStorage)}},save:{defaults:function(){g.save.defaultText(),g.save.placeholderText(),g.save.defaultValue()},defaultValue:function(){var e=g.get.value();g.verbose(\"Saving default value as\",e),w.data(b.defaultValue,e)},defaultText:function(){var e=g.get.text();g.verbose(\"Saving default text as\",e),w.data(b.defaultText,e)},placeholderText:function(){var e;!1!==p.placeholder&&k.hasClass(h.placeholder)&&(e=g.get.text(),g.verbose(\"Saving placeholder text as\",e),w.data(b.placeholderText,e))},remoteData:function(e,t){Z.Storage!==J?(g.verbose(\"Saving remote data to session storage\",t,e),sessionStorage.setItem(t,e)):g.error(f.noStorage)}},clear:function(){g.is.multiple()&&p.useLabels?g.remove.labels():(g.remove.activeItem(),g.remove.selectedItem()),g.set.placeholderText(),g.clearValue()},clearValue:function(){g.set.value(\"\")},scrollPage:function(e,t){var n,i,o=t||g.get.selectedItem(),a=o.closest(y.menu),r=a.outerHeight(),s=a.scrollTop(),l=O.eq(0).outerHeight(),c=Math.floor(r/l),u=(a.prop(\"scrollHeight\"),\"up\"==e?s-l*c:s+l*c),d=O.not(y.unselectable);i=\"up\"==e?d.index(o)-c:d.index(o)+c,0<(n=(\"up\"==e?0<=i:i\").addClass(h.label).attr(\"data-\"+b.value,a).html(m.label(a,t)),i=p.onLabelCreate.call(i,a,t),g.has.label(e)?g.debug(\"User selection already exists, skipping\",a):(p.label.variation&&i.addClass(p.label.variation),!0===n?(g.debug(\"Animating in label\",i),i.addClass(h.hidden).insertBefore(o).transition(p.label.transition,p.label.duration)):(g.debug(\"Adding selection label\",i),i.insertBefore(o)))},message:function(e){var t=F.children(y.message),n=p.templates.message(g.add.variables(e));0\").html(n).addClass(h.message).appendTo(F)},optionValue:function(e){var t=g.escape.value(e);0\").prop(\"value\",t).addClass(h.addition).html(e).appendTo(R),g.verbose(\"Adding user addition as an