{"version":3,"mappings":"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,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAC1B,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACvE,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IACxD,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACtF,OAAU,IAAM,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IAAK,OAAU,IACtF,OAAU,IAAM,OAAU,IAC1B,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACzC,OAAU,IAAM,OAAU,IAAK,OAAU,IACz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BA,SAhBhKY,qBClMC,IAAMC,GAAb,MAAM,0DAAOA,gEA/CTC,KACAC,KACAC,KACA9B,EACAE,GACAE,GACA2B,KACAC,MACAC,KACAC,MACAlB,MACAmB,MACAC,MACAC,MACAC,MACA1B,GACA2B,MACAC,MACAC,KACAC,MACAvB,GACAF,MACA0B,KACAC,MACAC,MACAC,MACAC,MACAC,MACAC,MACAC,MACAhC,MACAiC,MACAC,MACA/B,GACAgC,KACAC,MACA9B,GACAC,GACA8B,MACAC,MACAC,MACA/B,GACAgC,MACA3C,KACAZ,QAGSwB,IAAb,kDC/FO,IAAKgC,EAQX,MARD,OAAYA,QAAyB,KACjCA,kBACAA,mCACAA,yBACAA,qCACAA,iCACAA,uBACAA,qCAPQA,EAAZ,IAAYA,GAQX,GAEM,MAAMC,EAAmC,CAC5C,CAAE5kV,IAAK2kV,EAA0BtP,KAAMp1U,MAAO,QAC9C,CAAED,IAAK2kV,EAA0BE,aAAc5kV,MAAO,oBACtD,CAAED,IAAK2kV,EAA0BG,QAAS7kV,MAAO,cACjD,CAAED,IAAK2kV,EAA0BI,cAAe9kV,MAAO,mBACvD,CAAED,IAAK2kV,EAA0BK,YAAa/kV,MAAO,iBACrD,CAAED,IAAK2kV,EAA0BM,OAAQhlV,MAAO,aAChD,CAAED,IAAK2kV,EAA0BO,cAAejlV,MAAO,gGCjBrD,SAmBA,SAaA,QAANN,cAEIE,YAAuB,IAIrB,8FC9BA,SAoDC,IAAKmzE,EAsMX,MAtMD,OAAYA,QAAW,KACrBA,6CACAA,yCACAA,+DACAA,mDACAA,uEACAA,mFACAA,qDAEAA,iDACAA,2DACAA,qEAEAA,iCACAA,iCACAA,+BACAA,iCACAA,mDACAA,iCACAA,iCACAA,6CACAA,6CACAA,6CACAA,mCACAA,iCACAA,mCACAA,uCACAA,iEACAA,iEACAA,iEACAA,iEACAA,+CACAA,qDACAA,qDACAA,iCACAA,6CACAA,+DACAA,qFACAA,uFACAA,uFACAA,mDACAA,mDACAA,mDACAA,qDACAA,mDACAA,6CACAA,+DACAA,6DACAA,6CACAA,qCACAA,qDACAA,uDACAA,2CACAA,mCACAA,6CACAA,qEACAA,2DACAA,qEACAA,iDACAA,+CACAA,+DACAA,2CACAA,mFACAA,qDACAA,2CACAA,qCACAA,6EACAA,mDACAA,6DACAA,uDACAA,iCACAA,mCACAA,uCACAA,iDACAA,6CACAA,qCACAA,+CACAA,2CACAA,iDACAA,6EACAA,mEACAA,mEACAA,6DACAA,6DACAA,yCACAA,+CACAA,yDACAA,yEACAA,+DACAA,+DACAA,yEAEAA,mDACAA,yDACAA,uDACAA,uDACAA,uDACAA,+CACAA,mDACAA,yCACAA,qDACAA,iDACAA,mCACAA,uCACAA,qCACAA,uCAEAA,6DACAA,6DACAA,2DACAA,2CACAA,2CACAA,2CACAA,qDACAA,qDACAA,qDACAA,uDACAA,uDACAA,uDACAA,+DACAA,2DACAA,yDACAA,2DACAA,6DACAA,6DACAA,uCACAA,uCACAA,mDACAA,uCACAA,yDACAA,yDACAA,6DACAA,yDACAA,uCACAA,2CAEAA,mFACAA,qEACAA,mFACAA,6EAEAA,uDACAA,uDACAA,uDACAA,yDACAA,6DACAA,iEACAA,qEACAA,qDACAA,qDACAA,iEACAA,6EACAA,iEACAA,qEACAA,+DACAA,mEACAA,iEACAA,2DACAA,+DACAA,yEACAA,yDACAA,+CACAA,qEACAA,+CACAA,uDACAA,+DACAA,uEACAA,uDACAA,uEAEAA,8DACAA,kEACAA,sCACAA,4BACAA,wDACAA,8CACAA,8CACAA,8CACAA,kDACAA,gCACAA,8DACAA,gDACAA,wDACAA,8DACAA,4DACAA,wDACAA,wCACAA,sFACAA,oCACAA,wDACAA,kDACAA,sDACAA,sDACAA,gDACAA,0EACAA,sDACAA,sDACAA,0EArMUA,EAAZ,IAAYA,GAsMX,GAWK,SAOC,IAAKmyQ,EASX,MATD,OAAYA,QAAkB,KAC5BA,eACAA,mBACAA,uBACAA,qBACAA,uBACAA,qCACAA,2BACAA,qBARUA,EAAZ,IAAYA,GASX,GAqJWryB,EAIX,MAJD,OAAYA,QAAW,KACrBA,eACAA,qCACAA,yCAHUA,EAAZ,IAAYA,GAIX,gECjbM,IAAMsyB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","names":["name","SDK_VERSION","version","constructor","domStorage_","this","prefix_","set","key","value","removeItem","prefixedName_","setItem","stringify","get","storedVal","getItem","jsonEval","remove","toString","cache_","isInMemoryStorage","contains","createStoragefor","domStorageName","window","domStorage","DOMStorageWrapper","e","MemoryStorage","PersistentStorage","SessionStorage","logClient","Logger","LUIDGenerator","id","sha1","str","utf8Bytes","stringToByteArray","Sha1","update","sha1Bytes","digest","base64","buildLogMessage_","varArgs","message","i","length","arg","Array","isArray","apply","logger","firstLog_","enableLogging$1","logger_","persistent","assert","logLevel","LogLevel","log","bind","logWrapper","prefix","error","fatal","Error","warn","isInvalidJSONNumber","data","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","MIN_NAME","MAX_NAME","nameCompare","a","b","aAsInt","tryParseInt","bAsInt","stringCompare","requireKey","obj","ObjectToUniqueKey","keys","k","push","sort","splitStringBySize","segsize","len","dataSegs","c","substring","fn","hasOwnProperty","doubleToIEEE754String","v","bias","s","f","ln","Math","abs","pow","min","floor","LN2","round","bits","reverse","join","hexByteString","hexByte","parseInt","substr","toLowerCase","INTEGER_REGEXP_","RegExp","INTEGER_32_MIN","INTEGER_32_MAX","test","intVal","exceptionGuard","setTimeout","stack","setTimeoutNonBlocking","time","timeout","unref","appName_","appCheckProvider","appCheck","getImmediate","optional","then","getToken","forceRefresh","Promise","resolve","reject","addTokenChangeListener","listener","_a","addTokenListener","notifyForInvalidToken","firebaseOptions_","authProvider_","auth_","onInit","auth","catch","code","addAuthTokenListener","removeTokenChangeListener","removeAuthTokenListener","errorMessage","EmulatorTokenProvider","accessToken","OWNER","FORGE_DOMAIN_RE","WEBSOCKET","LONG_POLLING","host","secure","namespace","webSocketOnly","nodeAdmin","persistenceKey","includeNamespaceInQueryParams","_host","_domain","indexOf","internalHost","isCacheableHost","isCustomHost","newHost","toURLString","repoInfo","type","params","connURL","repoInfoNeedsQueryParam","ns","pairs","each","counters_","incrementCounter","amount","deepCopy","collections","reporters","hashString","StatsCollection","onMessage_","pendingResponses","currentResponseNum","closeAfterResponse","onClose","closeAfter","responseNum","callback","handleResponse","requestNum","toProcess","connId","applicationId","appCheckToken","authToken","transportSessionId","lastSessionId","bytesSent","bytesReceived","everConnected_","log_","stats_","statsManagerGetCollection","urlFn","APP_CHECK_TOKEN_PARAM","repoInfoConnectionURL","open","onMessage","onDisconnect","curSegmentNum","onDisconnect_","myPacketOrderer","PacketReceiver","isClosed_","connectTimeoutTimer_","onClosed_","isNodeSdk","document","readyState","called","wrappedFn","body","addEventListener","attachEvent","executeWhenDOMReady","scriptTagHolder","FirebaseIFrameScriptHolder","args","command","arg1","arg2","arg3","arg4","incrementIncomingBytes_","clearTimeout","password","sendNewPolls","pN","urlParams","FIREBASE_LONGPOLL_SERIAL_PARAM","random","uniqueCallbackIdentifier","FIREBASE_LONGPOLL_CALLBACK_ID_PARAM","VERSION_PARAM","TRANSPORT_SESSION_PARAM","LAST_SESSION_PARAM","APPLICATION_ID_PARAM","location","hostname","REFERER_PARAM","connectURL","addTag","start","startLongPoll","addDisconnectPingFrame","BrowserPollConnection","forceAllow_","forceDisallow_","createElement","chrome","extension","href","Windows","UI","markConnectionHealthy","shutdown_","close","myDisconnFrame","removeChild","send","dataStr","base64data","base64Encode","MAX_URL_DATA_SIZE","enqueueSegment","pw","FIREBASE_LONGPOLL_ID_PARAM","FIREBASE_LONGPOLL_PW_PARAM","src","style","display","appendChild","commandCB","onMessageCB","outstandingRequests","Set","pendingSegs","currentSerial","myIFrame","createIFrame_","script","domain","iframeContents","doc","write","iframe","contentWindow","contentDocument","d","alive","innerHTML","myID","myPW","newRequest_","size","theURL","curDataString","theSeg","shift","seg","ts","addLongPollTag_","segnum","totalsegs","url","serial","add","doNewRequest","delete","keepaliveTimeout","loadCB","doNodeLongPoll","newScript","async","onload","onreadystatechange","rstate","parentNode","onerror","WebSocketImpl","MozWebSocket","WebSocket","WebSocketConnection","keepaliveTimer","frames","totalFrames","connectionURL_","options","headers","process","platform","Authorization","env","proxy","HTTPS_PROXY","https_proxy","HTTP_PROXY","http_proxy","origin","mySock","onopen","onclose","onmessage","m","handleIncomingFrame","static","isOldAndroid","navigator","userAgent","oldAndroidMatch","match","parseFloat","appendFrame_","fullMess","jsonMess","handleNewFrameCount_","frameCount","extractFrameCount_","isNaN","mess","resetKeepAlive","remainingData","sendString_","String","clearInterval","setInterval","responsesRequiredToBeHealthy","healthyTimeout","initTransports_","ALL_TRANSPORTS","isWebSocketsAvailable","isAvailable","isSkipPollConnection","previouslyFailed","transports_","transports","transport","TransportManager","initialTransport","upgradeTransport","repoInfo_","applicationId_","appCheckToken_","authToken_","onReady_","onKill_","connectionCount","pendingDataMessages","state_","transportManager_","start_","conn","conn_","nextTransportId_","primaryResponsesRequired_","onMessageReceived","connReceiver_","onConnectionLost","disconnReceiver_","tx_","rx_","secondaryConn_","isHealthy_","healthyTimeoutMS","healthyTimeout_","everConnected","onConnectionLost_","onSecondaryConnectionLost_","onPrimaryMessageReceived_","onSecondaryMessageReceived_","sendRequest","dataMsg","sendData_","t","tryCleanupConnection","onSecondaryControl_","controlData","cmd","MESSAGE_TYPE","upgradeIfSecondaryHealthy_","u","secondaryResponsesRequired_","parsedData","layer","proceedWithUpgrade_","onControl_","onDataMessage_","onPrimaryResponse_","payload","MESSAGE_DATA","onHandshake_","onConnectionShutdown_","onReset_","sendPingOnPrimaryIfNecessary_","handshake","timestamp","h","sessionId","onConnectionEstablished_","tryStartUpgrade_","startUpgrade_","closeConnections_","reason","put","pathString","onComplete","hash","merge","refreshAuthToken","token","refreshAppCheckToken","onDisconnectPut","onDisconnectMerge","onDisconnectCancel","reportStats","stats","allowedEvents_","listeners_","trigger","eventType","listeners","context","on","validateEventType_","eventData","getInitialEvent","off","splice","find","et","EventEmitter","super","online_","isMobileCordova","OnlineMonitor","currentlyOnline","pathOrString","pieceNum","pieces_","split","copyTo","pieceNum_","Path","path","begin","slice","pieces","childPathObj","childPieces","outerPath","innerPath","outer","pathGetFront","inner","newRelativePath","pathPopFront","left","right","leftKeys","pathSlice","rightKeys","cmp","other","pathGetLength","j","errorPrefix_","parts_","byteLength_","max","stringLength","validationPathCheckValid","validationPath","validationPathToErrorString","hidden","visibilityChange","mozHidden","msHidden","webkitHidden","visible_","visible","VisibilityMonitor","RECONNECT_MIN_DELAY","__EMPTY_NODE","PersistentConnection","ServerActions","onDataUpdate_","onConnectStatus_","onServerInfoUpdate_","authTokenProvider_","appCheckTokenProvider_","authOverride_","nextPersistentConnectionId_","interruptReasons_","listens","Map","outstandingPuts_","outstandingGets_","outstandingPutCount_","outstandingGetCount_","onDisconnectRequestQueue_","connected_","reconnectDelay_","maxReconnectDelay_","securityDebugCallback_","establishConnectionTimer_","requestCBHash_","requestNumber_","realtime_","forceTokenRefresh_","invalidAuthTokenCount_","invalidAppCheckTokenCount_","firstConnection_","lastConnectionAttemptTime_","lastConnectionEstablishedTime_","getInstance","onVisible_","onOnline_","action","onResponse","curReqNum","msg","r","query","initConnection_","deferred","Deferred","request","p","_path","q","_queryObject","outstandingGet","index","undefined","sendGet_","promise","listen","currentHashFn","tag","queryId","_queryIdentifier","has","_queryParams","isDefault","loadsAllData","listenSpec","hashFn","sendListen_","req","status","warnOnListenWarnings_","removeListen_","warnings","safeGet","indexSpec","getIndex","indexPath","tryAuth","reduceReconnectDelayIfAdminCredential_","credential","isAdmin","tryAppCheck","authMethod","isValidFormat","requestData","cred","noauth","authvar","res","onAuthRevoked_","onAppCheckRevoked_","unlisten","sendUnlisten_","queryObj","sendOnDisconnect_","response","putInternal","sendPut_","queued","result","reqNum","onDataPush_","onListenRevoked_","onSecurityDebugPacket_","Date","getTime","handleTimestamp_","sendConnectStats_","restoreState_","scheduleConnect_","establishConnection_","online","onRealtimeDisconnect_","cancelSentTransactions_","shouldReconnect_","timeSinceLastConnectAttempt","reconnectDelay","onDataMessage","onReady","nextConnectionId_","canceled","connection","closeFn","all","Connection","interrupt","resume","isEmpty","delta","serverTimeOffset","map","normalizedPathString","statusCode","explanation","console","replace","queries","values","clientName","isReactNative","node","NamedNode","getCompare","compare","indexedValueChanged","oldNode","newNode","oldWrapped","newWrapped","minPost","MIN","Index","val","isDefinedOn","assertionError","maxPost","makePost","indexValue","KEY_INDEX","KeyIndex","startKey","comparator","isReverse_","resultGenerator_","nodeStack_","getNext","pop","hasNext","peek","MAX_NODE$2","LLRBNode","color","RED","SortedMap","EMPTY_NODE","copy","count","inorderTraversal","reverseTraversal","min_","minKey","maxKey","insert","n","me","fixUp_","removeMin_","isRed_","moveRedLeft_","smallest","rotateRight_","moveRedRight_","rotateLeft_","colorFlip_","nl","nr","checkMaxDepth_","blackDepth","check_","BLACK","comparator_","root_","getPredecessorKey","rightParent","getIterator","resultGenerator","SortedMapIterator","getIteratorFrom","getReverseIteratorFrom","getReverseIterator","priorityHashText","priority","validatePriorityNode","priorityNode","isLeafNode","getPriority","__childrenNodeConstructor","nodeFromJSON$1","MAX_NODE$1","LeafNode","value_","priorityNode_","lazyHash_","updatePriority","newPriorityNode","getImmediateChild","childName","getChild","pathIsEmpty","hasChild","getPredecessorChildName","childNode","updateImmediateChild","newChildNode","updateChild","front","numChildren","forEachChild","exportFormat","getValue","toHash","compareTo","compareToLeafNode_","otherLeaf","otherLeafType","thisLeafType","otherIndex","VALUE_TYPE_ORDER","thisIndex","withIndex","isIndexed","equals","PRIORITY_INDEX","aPriority","bPriority","indexCmp","LOG_2","current_","mask","bitMask","bits_","nextBitIsOne","buildChildSet","childList","keyFn","mapSortFn","buildBalancedTree","low","high","namedNode","middle","root","base12","buildPennant","chunkSize","childTree","attachPennant","pennant","isOne","buildFrom12Array","Base12Num","_defaultIndexMap","fallbackObject","indexes_","indexSet_","Default","IndexMap","indexKey","sortedMap","hasIndex","indexDefinition","addIndex","existingChildren","sawIndexedValue","iter","Wrap","newIndex","next","indexName","newIndexSet","Object","assign","newIndexes","addToIndexes","indexedChildren","existingSnap","newChildren","removeFromIndexes","ChildrenNode","children_","indexMap_","NAME_COMPARATOR","child","newIndexMap","newPriority","newImmediateChild","numKeys","allIntegerKeys","array","childHash","idx","resolveIndex_","predecessor","getFirstChildName","getFirstChild","getLastChildName","getLastChild","wrappedNode","startPost","iterator","endPost","MAX_NODE","otherChildrenNode","thisIter","otherIter","thisCurrent","otherCurrent","json","nodeFromJSON","childData","children","childrenHavePriority","childSet","NAME_ONLY_COMPARATOR","sortedChildSet","defineProperties","MAX","setNodeFromJSON","indexPath_","extractChild","snap","aChild","bChild","valueNode","VALUE_INDEX","PUSH_CHARS","nextPushId","lastPushTime","lastRandChars","now","duplicateTime","timeStampChars","charAt","successor","keyAsInt","sourcePlusOne","repeat","snapshotNode","oldSnap","index_","newChild","affectedPath","source","optChangeAccumulator","oldChild","trackChildChange","changeChildRemoved","changeChildAdded","changeChildChanged","updateFullNode","newSnap","filtersNodes","getIndexedFilter","indexedFilter_","IndexedFilter","startPost_","RangedFilter","getStartPost_","endPost_","getEndPost_","getStartPost","getEndPost","matches","filtered","self","hasStart","startName","getIndexStartName","getIndexStartValue","hasEnd","endName","getIndexEndName","getIndexEndValue","rangedFilter_","limit_","getLimit","reverse_","isViewFromLeft","fullLimitUpdateChild_","inRange","indexCompare","foundStartPost","ki","childKey","childSnap","changeAccumulator","oldEventCache","newChildNamedNode","windowBoundary","oldChildSnap","nextChild","getChildAfterChild","compareNext","newEventCache","limitSet_","startSet_","startNameSet_","startAfterSet_","endSet_","endNameSet_","endBeforeSet_","viewFrom_","indexStartValue_","indexStartName_","indexEndValue_","indexEndName_","hasStartAfter","hasEndBefore","hasLimit","hasAnchoredLimit","QueryParams","queryParams","newParams","qs","orderBy","PathIndex","startAt","endAt","limitToFirst","limitToLast","sp","sn","ep","en","l","viewFrom","vf","listens_","listenId","ReadonlyRestClient","getListenId_","thisListen","queryStringParameters","queryParamsToRestQueryStringParameters","restRequest_","Gn","Xt","format","ac","querystring","xhr","XMLHttpRequest","responseText","rootNode_","getNode","updateSnapshot","newSnapshotNode","sparseSnapshotTree","clear","newSparseSnapshotTree","sparseSnapshotTreeRemember","tree","sparseSnapshotTreeForget","prefixPath","func","forEach","sparseSnapshotTreeForEachChild","sparseSnapshotTreeForEachTree","collection_","last_","newStats","stat","collection","server_","statsToReport_","statsListener_","StatsListener","FIRST_STATS_MAX_TIME","reportStats_","reportedStats","haveStatsToReport","OperationType","OVERWRITE","MERGE","ACK_USER_WRITE","LISTEN_COMPLETE","fromUser","fromServer","tagged","affectedTree","revert","operationForChild","subtree","AckUserWrite","newEmptyPath","ListenComplete","Overwrite","Merge","node_","fullyInitialized_","filtered_","isFullyInitialized","isFiltered","isCompleteForPath","isCompleteForChild","query_","eventGenerator","events","changes","registrations","eventCache","filteredChanges","filter","change","aWrapped","bWrapped","eventGeneratorCompareChanges","materializedChange","prevName","eventGeneratorMaterializeSingleChange","registration","respondsTo","createEvent","serverCache","viewCache","eventSnap","complete","newViewCache","CacheNode","serverSnap","emptyChildrenSingleton","EmptyChildren","ImmutableTree","childPath","findRootMostMatchingPathAndValue","relativePath","predicate","childExistingPathAndValue","pathChild","findRootMostValueAndPath","toSet","setTree","newTree","fold","fold_","pathSoFar","accum","findOnPath","findOnPath_","pathToFollow","foreachOnPath","foreachOnPath_","currentRelativePath","foreach","foreach_","foreachChild","writeTree_","CompoundWrite","compoundWrite","rootmost","rootMostPath","newWriteTree","updates","newWrite","compoundWriteAddWrite","empty","compoundWriteGetCompleteNode","shadowingNode","applySubtreeWrite","writeTree","priorityWrite","newWriteTreeRef","writeRecord","pathContains","writes","treeRoot","writePath","compoundWriteAddWrites","deepNode","treePath","completeServerCache","writeIdsToExclude","includeHiddenWrites","compoundWriteChildCompoundWrite","visibleWrites","compoundWriteIsEmpty","compoundWriteHasCompleteWrite","compoundWriteApply","writeTreeLayerTree_","allWrites","writeId","subMerge","writeTreeRef","writeTreeCalcCompleteEventCache","completeServerChildren","completeChildren","topLevelSet","compoundWriteGetCompleteChildren","writeTreeCalcCompleteEventChildren","existingEventSnap","existingServerSnap","childMerge","writeTreeCalcEventCacheAfterServerOverwrite","writeTreeShadowingWrite","existingServerCache","writeTreeCalcCompleteChild","changeMap","oldChange","oldType","getChanges","from","NO_COMPLETE_CHILD_SOURCE","getCompleteChild","writes_","viewCache_","optCompleteServerCache_","serverNode","writeTreeRefCalcCompleteChild","completeServerData","viewCacheGetCompleteServerSnap","nodes","toIterate","writeTreeCalcIndexedSlice","writeTreeRefCalcIndexedSlice","viewProcessor","changePath","writesCache","accumulator","oldEventSnap","writeTreeRefShadowingWrite","completeEventChildren","writeTreeRefCalcCompleteEventChildren","completeNode","writeTreeRefCalcCompleteEventCache","oldEventNode","updatedPriority","writeTreeRefCalcEventCacheAfterServerOverwrite","childChangePath","newEventChild","eventChildUpdate","viewCacheUpdateEventSnap","oldViewCache","changedSnap","completeCache","filterServerNode","oldServerSnap","newServerCache","serverFilter","newServerNode","viewCacheUpdateServerSnap","viewProcessorGenerateEventCacheAfterServerEvent","WriteTreeCompleteChildSource","ca","pathParent","changedChildren","viewMergeTree","curViewCache","viewProcessorApplyMerge","viewProcessorApplyServerOverwrite","childMergeTree","isUnknownDeepMerge","initialViewCache","eventRegistrations_","indexFilter","LimitedFilter","queryParamsGetNodeFilter","processor_","newViewProcessor","initialServerCache","initialEventCache","eventGenerator_","EventGenerator","view","cache","eventRegistration","cancelError","cancelEvents","maybeEvent","createCancelEvent","remaining","existing","hasAnyCallback","concat","operation","viewCacheGetCompleteEventSnap","ChildChangeAccumulator","overwrite","viewProcessorApplyUserOverwrite","viewProcessorCacheHasChild","viewProcessorApplyUserMerge","viewProcessorApplyServerMerge","ackUserWrite","serverChildren","viewProcessorRevertUserWrite","ackPath","mergePath","serverCachePath","viewProcessorAckUserWrite","oldServerNode","viewProcessorListenComplete","viewProcessorMaybeAddValueEvent","isLeafOrEmpty","oldCompleteSnap","changeValue","viewProcessorApplyOperation","viewProcessorAssertIndexed","viewGenerateEventsForChanges_","eventRegistrations","moves","changeChildMoved","eventGeneratorGenerateEventsForType","eventGeneratorGenerateEventsForChanges","referenceConstructor$1","referenceConstructor","views","syncPoint","optCompleteServerCache","viewApplyOperation","serverCacheComplete","eventCacheComplete","B","View","viewGetCompleteServerCache","syncPointGetCompleteView","syncPointViewForQuery","syncTreeNextQueryTag_","listenProvider_","syncPointTree_","pendingWriteTree_","lastWriteId","tagToQueryMap","queryToTagMap","syncTree","newData","writeTreeAddOverwrite","syncTreeApplyOperationToSyncPoints_","record","writeTreeGetWrite","findIndex","writeToRemove","removedWriteWasVisible","removedWriteOverlapsWithOtherWrites","currentWrite","writeTreeRecordContainsPath_","writeTreeDefaultFilter_","writeTreeResetTree_","compoundWriteRemoveWrite","writeTreeRemoveWrite","maybeSyncPoint","syncPointViewExistsForQuery","removedAndEvents","removed","hadCompleteView","syncPointHasCompleteView","viewQueryId","entries","viewRemoveEventRegistration","viewIsEmpty","_repo","syncPointRemoveEventRegistration","syncPointIsEmpty","removingDefault","covered","parentSyncPoint","newViews","maybeChildSyncPoint","childMap","syncPointGetQueryViews","_key","childViews","syncTreeCollectDistinctViewsForSubTree_","newQuery","syncTreeCreateListenerForView_","startListening","syncTreeQueryForListening_","syncTreeTagForQuery_","defaultTag","stopListening","queryToRemove","tagToRemove","syncTreeMakeQueryKey_","removedQuery","removedQueryKey","removedQueryTag","syncTreeRemoveTags_","foundAncestorDefaultView","pathToSyncPoint","syncPointGetCompleteServerCache","SyncPoint","childSyncPoint","viewAlreadyExists","queryKey","syncPointGetView","viewAddEventRegistration","initialChanges","eventNode","viewGetInitialEvents","syncPointAddEventRegistration","writeTreeChildWrites","queriesToStop","childQueries","queryToStop","syncTreeSetupListener_","syncTreeApplyOperationHelper_","syncPointTree","syncTreeApplyOperationDescendantsHelper_","childOperation","childServerCache","childWritesCache","writeTreeRefChild","syncPointApplyOperation","viewGetServerCache","syncTreeQueryKeyForTag_","syncTreeParseQueryKey_","queryPath","syncTreeApplyTaggedOperation_","newOperationSourceServerTaggedQuery","syncTreeApplyTaggedListenComplete","syncTreeApplyListenComplete","toUpperCase","errorForServerCode","syncTreeRemoveEventRegistration","splitIndex","ExistingValueProvider","syncTree_","path_","DeferredValueProvider","syncTreeCalcCompleteEventCache","resolveDeferredLeafValue","existingVal","serverValues","resolveScalarDeferredValue","resolveComplexDeferredValue","JSON","op","unused","increment","existingNode","leaf","resolveDeferredValueTree","resolveDeferredValue","resolveDeferredValueSnapshot","rawPri","leafNode","childrenNode","parent","childCount","pathObj","Tree","treeUpdateParents","includeSelf","childrenFirst","treeForEachChild","treeForEachDescendant","treeGetPath","childEmpty","treeGetValue","treeHasChildren","treeIsEmpty","childExists","treeUpdateChild","INVALID_KEY_REGEX_","INVALID_PATH_REGEX_","MAX_LEAF_SIZE_","isValidKey","isValidPathString","isValidPriority","validateFirebaseDataArg","fnName","validateFirebaseData","errorPrefix","ValidationPath","hasDotValue","hasActualChild","validationPathPush","last","validationPathPop","validateFirebaseMergeDataArg","errorPrefix$1","mergePaths","curPath","pathGetBack","pathCompare","prevPath","validateFirebaseMergePaths","validatePriority","validateKey","argumentName","validatePathString","validateWritablePath","validateUrl","parsedUrl","isValidRootPathString","eventLists_","recursionDepth_","eventQueue","eventDataList","currList","getPath","pathEquals","eventQueueQueueEvents","eventQueueRaiseQueuedEventsMatchingPredicate","eventPath","changedPath","sentAll","eventList","eventListRaise","eventFn","getEventRunner","INTERRUPT_REASON","forceRestClient_","appCheckProvider_","dataUpdateCount","eventQueue_","EventQueue","nextWriteId_","interceptServerDataCallback_","transactionQueueTree_","persistentConnection_","repo","offset","offsetNode","infoData_","generateWithValues","repoServerTime","isMerge","taggedChildren","raw","changeTree","fromObject","syncTreeApplyTaggedQueryMerge","serverSyncTree_","taggedSnap","syncTreeApplyTaggedQueryOverwrite","syncTreeApplyServerMerge","syncTreeApplyServerOverwrite","repoRerunTransactions","eventQueueRaiseEventsForChangedPath","connectStatus","repoUpdateInfo","repoLog","repoGenerateServerValues","resolvedOnDisconnectTree","resolved","repoAbortTransactions","repoRunOnDisconnectEvents","infoSyncTree_","newVal","newNodeUnresolved","repoGetNextWriteId","syncTreeApplyUserOverwrite","errorReason","success","clearEvents","syncTreeAckUserWrite","repoCallOnCompleteCallback","eventQueueRaiseEventsAtPath","excludeSets","repoPruneCompletedTransactionsBelowNode","queue","repoBuildTransactionQueue","every","transaction","setsToIgnore","txn","currentWriteId","latestState","repoGetLatestState","snapToSend","latestHash","retryCount","currentOutputSnapshotRaw","dataToSend","pathToSend","callbacks","currentOutputSnapshotResolved","unwatcher","treeSubTree","repoSendReadyTransactions","abortReason","repoSendTransactionQueue","rootMostTransactionNode","repoGetAncestorTransactionNode","repoRerunTransactionQueue","abortTransaction","currentNode","currentInputSnapshot","newDataNode","oldWriteId","newNodeResolved","applyLocally","transactionNode","transactionQueue","repoAggregateTransactionQueuesForNode","order","nodeQueue","to","treeSetValue","treeForEachAncestor","repoAbortTransactionsOnNode","lastSent","parseRepoInfo","dataURL","parseDatabaseURL","protocol","RepoInfo","scheme","subdomain","port","colonInd","slashInd","questionMarkInd","pathStringDecoded","piece","decodeURIComponent","decodePath","queryString","results","segment","kv","decodeQuery","hostWithoutPort","dotInd","snapshot","ref","getEventType","exportVal","snapshotCallback","cancelCallback","onValue","expDataSnapshot","previousChildName","call","onCancel","hasCancelCallback","userCallback","cancel","repoOnDisconnectCancel","wrapCallback","repoOnDisconnectSet","setWithPriority","repoOnDisconnectSetWithPriority","repoOnDisconnectUpdate","childrenToMerge","_orderByCalled","ReferenceImpl","queryParamsGetQueryObject","isEqual","getModularInstance","QueryImpl","sameRepo","samePath","toJSON","encodeURIComponent","pathToUrlEncodedString","startNode","endNode","tooManyArgsError","wrongArgTypeError","parentPath","_node","_index","childRef","DataSnapshot","exists","hasChildren","db","_checkNotDeleted","_root","parsedURL","wo","repoSetWithPriority","repoUpdate","changedKey","changedValue","writeTreeAddMerge","syncTreeApplyUserMerge","cached","serverCacheNode","viewGetCompleteNode","syncTreeGetServerValue","err","repoGetValue","callbackContext","DataEvent","CancelEvent","ValueEventRegistration","eventToCheck","ChildEventRegistration","cancelCallbackOrListenOptions","onlyOnce","onceCallback","dataSnapshot","repoRemoveEventCallbackForQuery","container","CallbackContext","repoAddEventCallbackForQuery","syncTreeAddEventRegistration","expCallback","QueryConstraint","_value","_apply","queryParamsEndAt","validateLimit","validateQueryEndpoints","queryParamsEndBefore","queryParamsStartAt","queryParamsStartAfter","_limit","newLimit","queryParamsLimitToFirst","queryParamsLimitToLast","validateNoPreviousOrderByCall","parsedPath","queryParamsOrderBy","QueryEndAtConstraint","QueryStartAtConstraint","queryConstraints","queryImpl","constraint","syncPointSetReferenceConstructor","syncTreeSetReferenceConstructor","repos","app","authProvider","dbUrl","databaseURL","projectId","isEmulator","dbEmulatorHost","FIREBASE_DATABASE_EMULATOR_HOST_VAR","authTokenProvider","FirebaseAuthTokenProvider","appRepos","Repo","repoManagerCreateRepo","AppCheckTokenProvider","Database","_repoInternal","_instanceStarted","appId","authOverride","search","repoOnDataUpdate","repoOnConnectStatus","repoOnServerInfoUpdate","statsReporter_","creatorFunction","statsManagerGetOrCreateReporter","StatsReporter","SnapshotHolder","SyncTree","infoEvents","repoStart","databaseAuthVariableOverride","_rootInternal","_delete","appName","repoInterrupt","repoManagerDeleteRepo","apiName","committed","prototype","simpleListen","echo","onEcho","setSDKVersion","SDK_VERSION$1","_registerComponent","Component","instanceIdentifier","repoManagerDatabaseFromApp","getProvider","setMultipleInstances","registerVersion","registerDatabase","_delegate","validateArgCount","arguments","validateCallback","objectToMerge","newObjectToMerge","_database","_validatePathString","getRef","Reference","database","cancelCallbackOrContext","ret","Query","getCancelAndContextArgs_","valueCallback","expSnapshot","onChildAdded","onChildRemoved","onChildChanged","onChildMoved","validateEventType","validateContextObject","once","failureCallbackOrContext","limit","QueryLimitToFirstConstraint","QueryLimitToLastConstraint","orderByChild","QueryOrderByChildConstraint","orderByKey","QueryOrderByKeyConstraint","orderByPriority","QueryOrderByPriorityConstraint","orderByValue","QueryOrderByValueConstraint","startAfter","QueryStartAfterConstraint","endBefore","QueryEndBeforeConstraint","equalTo","QueryEqualToValueConstraint","cancelOrContext","_ReferenceImpl","_QueryImpl","_QueryParams","getKey","getParent","getRoot","_validateWritablePath","transactionUpdate","bool","validateBoolean","repoStartTransaction","currentState","queueNode","priorityForNode","TransactionResult","runTransaction","transactionResult","setPriority","expPromise","thennablePushRef","pushRef","expRef","OnDisconnect","OnDisconnect$1","INTERNAL","useEmulator","tokenProvider","mockUserToken","createMockUserToken","repoManagerApplyEmulatorSettings","connectDatabaseEmulator","refFromURL","goOffline","goOnline","repoResume","ServerValue","TIMESTAMP","freeze","__proto__","initStandalone","customAuthImpl","_setSDKVersion","Provider","ComponentContainer","setComponent","instance","_repoManagerDatabaseFromApp","registerComponent","databaseExp","identifier","setServiceProps","Ed","pl","enableLogging","Bo","firebase","innerObservable","resultSelector","isFunction","switchMap","APP_CHECK_STATES","DEFAULT_STATE","activated","tokenObservers","DEBUG_STATE","initialized","enabled","state","retryPolicy","getWaitDuration","lowerBound","upperBound","pending","nextErrorWaitInterval","stop","isRunning","hasSucceeded","ms","sleep","getNextRun","currentErrorWaitInterval","ERROR_FACTORY","ErrorFactory","throttled","getState","create","exchangeToken","platformLoggerProvider","platformLogger","getPlatformInfoString","method","responseBody","fetch","originalError","originalErrorMessage","httpStatus","ttl","timeToLiveAsNumber","attestationToken","expireTimeMillis","issuedAtTimeMillis","debugToken","apiKey","debug_token","STORE_NAME","dbPromise","indexedDB","onsuccess","event","target","onupgradeneeded","oldVersion","createObjectStore","keyPath","getDBPromise","store","objectStore","compositeKey","_event","isIndexedDBAvailable","computeKey","writeTokenToIndexedDB","debugState","getDebugState","defaultTokenErrorData","tokenErrorData","getToken$2","ensureActivated","cachedToken","cachedTokenPromise","isValid","interopTokenResult","shouldCallListeners","isDebugMode","exchangeTokenPromise","getExchangeDebugTokenRequest","getDebugToken","tokenFromDebugExchange","writeTokenToStorage","setState","provider","makeDummyTokenResult","notifyTokenListeners","newObservers","tokenObserver","tokenRefresher","refresher","Refresher","R","nextRefreshTimeMillis","createTokenRefresher","isTokenAutoRefreshEnabled","observers","observer","formatDummyToken","removeTokenListener","APP_CHECK_NAME_INTERNAL","AppCheckService","factory","setInstantiationMode","setInstanceCreatedCallback","_identifier","_appcheckService","initialize","onError","validToken","initTokenRefresher","internalFactory","ɵgetAllInstancesOf","USE_EMULATOR","InjectionToken","SETTINGS","TENANT_ID","LANGUAGE_CODE","USE_DEVICE_LANGUAGE","PERSISTENCE","ɵauthFactory","zone","tenantId","languageCode","useDeviceLanguage","settings","persistence","ɵcacheInstance","runOutsideAngular","setPersistence","AngularFireAuth","platformId","schedulers","_appCheckInstances","logins","Subject","of","pipe","observeOn","outsideAngular","ɵfirebaseAppFactory","shareReplay","bufferSize","refCount","isPlatformServer","authState","user","idToken","idTokenResult","first","subscribe","redirectResult","getRedirectResult","it","keepUnstableUntilFirst","authStateChanged","Observable","sub","unsubscribe","onAuthStateChanged","idTokenChanged","onIdTokenChanged","switchMapTo","subscribeOn","insideAngular","getIdToken","getIdTokenResult","ɵlazySDKProxy","spy","_","startsWith","ɵfac","i0","FIREBASE_OPTIONS","FIREBASE_APP_NAME","PLATFORM_ID","i1","i2","ɵprov","pathRef","isFirebaseRef","item","cases","isString","stringCase","firebaseCase","isFirebaseDataSnapshot","snapshotCase","listenType","scheduler","asyncScheduler","subscriber","prevKey","schedule","share","current","currentKeyPosition","positionFor","afterPreviousKeyPosition","isNil","positionAfter","previous","x","fromRef","snapshotAction","childEvent$","scan","buildView","distinctUntilChanged","listChanges","validateEventsArray","checkOperationCases","URL","AngularFireDatabase","_useEmulator","useAuthEmulator","authSettings","list","pathOrRef","queryFn","ngZone","afDatabase","outsideAngularScheduler","refInZone","run","createDataOperationMethod","createRemoveMethod","snapshotChanges","stateChanges","auditTrail","action$","lastKeyToLoad","loaded$","inputs","project","popResultSelector","operate","otherValues","hasValue","ready","innerFrom","OperatorSubscriber","identity","noop","withLatestFrom","loaded","actions","loadedKeys","taking","meta","waitForLoaded","valueChanges","idField","createListReference","object","createObjectSnapshotChanges","snapshotChanges$","createObjectReference","createPushId","USE_EMULATOR$1","i3","AngularFireDatabaseModule","VERSION","ɵmod","ɵinj","noopFunctions","klass","observable","Proxy","toPromise","mod","ɵapplyMixins","derivedCtor","constructors","baseCtor","getOwnPropertyNames","defineProperty","getOwnPropertyDescriptor","nameOrConfig","config","existingApp","log$1","module","hot","FirebaseApp","level","isDevMode","FIREBASE_APP_PROVIDER","provide","useFactory","deps","NgZone","Optional","AngularFireModule","VERSION$1","ngModule","providers","useValue","cacheKey","moduleName","cachedDeps","globalThis","ɵAngularfireInstanceCache","matchDep","IS_HMR","is","was","newInstance","PACKAGE_VERSION","INTERNAL_AUTH_VERSION","FirebaseError","includes","requestStatus","expiresIn","getExpiresInFromResponseExpiresIn","creationTime","getErrorFromResponse","requestName","errorData","serverCode","serverMessage","serverStatus","Headers","Accept","appConfig","refreshToken","getHeaders","append","getAuthorizationHeader","retryIfServerError","responseExpiresIn","createInstallationRequest","fid","endpoint","getInstallationsEndpoint","authVersion","sdkVersion","ok","responseValue","registrationStatus","extractAuthTokenInfoFromResponse","VALID_FID_PATTERN","fidByteArray","Uint8Array","crypto","msCrypto","getRandomValues","btoa","fromCharCode","b64String","encode","INVALID_FID","fidChangeCallbacks","callFidChangeCallbacks","channel","broadcastChannel","BroadcastChannel","postMessage","broadcastFidChange","OBJECT_STORE_NAME","openDb","upgradeDB","tx","getDbPromise","oldValue","fidChanged","updateFn","newValue","getInstallationEntry","registrationPromise","installationEntry","oldEntry","updateOrCreateInstallationEntry","entryWithPromise","triggerRegistrationIfNecessary","clearTimedOutRequest","generateFid","onLine","inProgressEntry","registrationTime","registerInstallation","waitUntilFidRegistration","registeredInstallationEntry","isServerError","customData","entry","updateInstallationRequest","hasInstallationRequestTimedOut","generateAuthTokenRequest","getGenerateAuthTokenEndpoint","getHeadersWithAuth","installation","installations","tokenPromise","isEntryRegistered","oldAuthToken","isAuthTokenValid","waitUntilAuthTokenRequest","makeAuthTokenRequestInProgressEntry","fetchAuthTokenFromServer","updateAuthTokenRequest","requestTime","hasAuthTokenRequestTimedOut","updatedInstallationEntry","isAuthTokenExpired","inProgressAuthToken","installationsImpl","completeInstallationRegistration","valueName","INSTALLATIONS_NAME","getMissingValueError","configKeys","keyName","extractAppConfig","_getProvider","getId","client","storage","storageCache","isCachedDataFresh","cacheMaxAgeMillis","lastSuccessfulFetchTimestampMillis","debug","cacheAgeMillis","lastSuccessfulFetchResponse","getLastSuccessfulFetchTimestampMillis","getLastSuccessfulFetchResponse","eTag","storageOperations","setLastSuccessfulFetchTimestampMillis","setLastSuccessfulFetchResponse","navigatorLanguage","languages","language","firebaseInstallations","installationId","installationToken","FIREBASE_REMOTE_CONFIG_URL_BASE","requestBody","sdk_version","app_instance_id","app_instance_id_token","app_id","language_code","getUserLanguage","fetchPromise","timeoutPromise","_resolve","signal","race","errorCode","responseEtag","Ba","throttleMetadata","getThrottleMetadata","backoffCount","throttleEndTimeMillis","attemptFetch","backoffMillis","setAbortableTimeout","yi","deleteThrottleMetadata","isRetriableError","calculateBackoffMillis","setThrottleMetadata","_client","_storageCache","_storage","_logger","_isInitializationComplete","fetchTimeoutMillis","minimumFetchIntervalMillis","defaultConfig","fetchTimeMillis","lastFetchStatus","getLastFetchStatus","APP_NAMESPACE_STORE","openDbPromise","toFirebaseError","openDatabase","setLastFetchStatus","getActiveConfig","setActiveConfig","getActiveConfigEtag","setActiveConfigEtag","etag","metadata","createCompositeKey","zn","activeConfig","loadFromStorage","lastFetchStatusPromise","ye","lastSuccessfulFetchTimestampMillisPromise","activeConfigPromise","timestampMillis","validateIndexedDBOpenable","Storage","StorageCache","restClient","RestClient","retryingClient","RetryingClient","cachingClient","CachingClient","remoteConfigInstance","RemoteConfig","ensureInitialized","remoteConfig","rc","_initializePromise","DEFAULT_SW_PATH","DEFAULT_SW_SCOPE","DEFAULT_VAPID_KEY","CONSOLE_CAMPAIGN_ID","CONSOLE_CAMPAIGN_NAME","CONSOLE_CAMPAIGN_TIME","CONSOLE_CAMPAIGN_ANALYTICS_ENABLED","MessageType","PUSH_RECEIVED","NOTIFICATION_CLICKED","uint8Array","base64String","rawData","atob","outputArray","charCodeAt","OLD_DB_NAME","OLD_OBJECT_STORE_NAME","migrateOldDatabase","senderId","databases","tokenDetails","objectStoreNames","oldDetails","p256dh","fcmToken","createTime","subscriptionOptions","swScope","vapidKey","arrayToBase64","deleteDb","checkTokenDetails","upgradeDb","dbGet","firebaseDependencies","oldTokenDetails","dbSet","dbRemove","requestGetToken","getBody","subscribeOptions","responseData","getEndpoint","errorInfo","requestUpdateToken","updateOptions","requestDeleteToken","unsubscribeOptions","web","applicationPubKey","TOKEN_EXPIRATION_MS","getTokenInternal","messaging","pushSubscription","getPushSubscription","swRegistration","scope","isTokenValid","updateToken","getNewToken","deleteTokenInternal","pushManager","getSubscription","updatedToken","updatedTokenDetails","userVisibleOnly","applicationServerKey","base64ToArray","dbOptions","currentOptions","internalPayload","collapseKey","collapse_key","messageId","fcmMessageId","propagateNotificationPayload","messagePayloadInternal","notification","title","image","propagateDataPayload","fcmOptions","link","analyticsLabel","analytics_label","propagateFcmOptions","s1","s2","resultArray","_mergeStrings","analyticsProvider","deliveryMetricsExportedToBigQueryEnabled","onBackgroundMessageHandler","onMessageHandler","logEvents","isLogServiceStarted","messagingSenderId","registerDefaultSw","serviceWorker","register","browserErrorMessage","updateSwReg","ServiceWorkerRegistration","updateVapidKey","Notification","permission","requestPermission","serviceWorkerRegistration","logToScion","messageType","logEvent","message_id","message_name","message_time","message_device_time","isFirebaseMessaging","externalizePayload","dataPayload","isConsoleMessage","areCookiesEnabled","PushSubscription","MessagingService","messageEventListener","getToken$1","ANALYTICS_TYPE","GA_FID_KEY","DYNAMIC_CONFIG_URL","GTAG_URL","promises","dataLayerName","measurementId","head","gtagOnConfig","gtagCore","initializationPromisesMap","dynamicConfigPromisesList","measurementIdToAppId","gtagParams","correspondingAppId","foundConfig","promiseAllSettled","gtagOnEvent","initializationPromisesToWaitFor","send_to","gaSendToList","dynamicConfigResults","sendToId","initializationPromise","scriptTags","getElementsByTagName","defaultRetryData","intervalMillis","fetchDynamicConfig","appFields","appUrl","jsonResponse","_ignored","responseMessage","fetchDynamicConfigWithRetry","retryData","timeoutMillis","AnalyticsAbortSignal","abort","attemptFetchDynamicConfigWithRetry","dynamicConfigPromise","fidPromise","validateIndexedDB","envIsValid","dynamicConfig","findGtagScriptOnPage","insertScriptTag","configProperties","ORIGIN_KEY","gtagCoreFunction","wrappedGtagFunction","globalInitDone","mismatchedEnvMessages","isBrowserExtension","details","warnOnBrowserContextMismatch","dataLayer","getOrCreateDataLayer","wrappedGtag","gtagFunctionName","_args","idOrNameOrParams","wrapGtag","wrapOrCreateGtag","_initializeAnalytics","AnalyticsService","gtagFunction","eventName","eventParams","global","analyticsOptions","analytics","analyticsInstance","logEvent$1","queueScheduler","AsyncScheduler","AsyncAction","work","delay","flush","execute","closed","_execute","requestAsyncId","Version","isAnalyticsSupportedPromiseSymbol","isRemoteConfigSupportedPromiseSymbol","isMessagingSupportedPromiseSymbol","provided","defaultApp","providedUsingDefaultApp","isSupported","isAnalyticsSupportedValueSymbol","isSupported$1","isMessagingSupportedValueSymbol","isSupported$2","isRemoteConfigSupportedValueSymbol","apps","getApps","instances","delegate","targetZone","runGuarded","task","unscheduleTask","Zone","scheduleMacroTask","tap","invoke","ɵAngularFireSchedulers","ɵZoneScheduler","ɵAngularFireScheduler","obs$","getSchedulers","lift","BlockUntilFirstOperator","ɵkeepUnstableUntilFirstFactory","assertion","stringToByteArray$1","out","rn","byteToCharMap_","charToByteMap_","byteToCharMapWebSafe_","charToByteMapWebSafe_","ENCODED_VALS_BASE","ENCODED_VALS","ENCODED_VALS_WEBSAFE","HAS_NATIVE_SUPPORT","encodeByteArray","input","webSafe","init_","byteToCharMap","output","byte1","haveByte2","byte2","haveByte3","byte3","outByte3","outByte4","encodeString","decodeString","bytes","pos","c1","c2","c3","byteArrayToString","decodeStringToByteArray","charToByteMap","byte4","haveByte4","base64urlEncodeWithoutPadding","base64Decode","deepExtend","prop","uid","iat","user_id","iss","aud","exp","auth_time","sign_in_provider","identities","alg","cordova","phonegap","PhoneGap","getUA","runtime","browser","product","ua","CONSTANTS","preExist","DB_CHECK_NAME","deleteDatabase","cookieEnabled","setPrototypeOf","captureStackTrace","service","serviceName","errors","fullCode","template","PATTERN","replaceTemplate","parse","decode","header","claims","signature","parts","admin","contextObj","aKeys","bKeys","aProp","bProp","isObject","deepEqual","thing","querystringParams","arrayVal","tokens","queryStart","fragmentStart","chain_","buf_","W_","pad_","inbuf_","total_","blockSize","reset","compress_","buf","W","Ie","lengthMinusBlock","inbuf","totalBits","executor","onNoObservers","ObserverProxy","unsubscribes","observerCount","finalized","forEachObserver","nextOrObserver","methods","implementsAnyMethods","unsub","unsubscribeOne","finalError","sendOne","minCount","maxCount","argCount","argError","ri","argName","backoffFactor","currBaseValue","randomWait","exports","apiCall","__ls","api","init","trackID","getSessionURL","identify","invalidateSession","newPageView","setOptions","setCustomParams","optOut","track","properties","rest","snippet_1","require","api_1","sdkOptionsDefaults","devMode","scriptURL","defaultScriptURL","opts","isLoaded","getApiMethod","objectAPI","default","safeCall","apiMethod","safeCallManyArgs","sdkOptions","wnd","w","ls","charset","crossOrigin","DIFF_DELETE","text1","text2","cursor_pos","cleanup","_fix_unicode","editdiff","oldText","newText","oldRange","newRange","oldLength","newLength","oldCursor","oldBefore","oldAfter","maybeNewCursor","newCursor","newBefore","newAfter","prefixLength","oldPrefix","newPrefix","make_edit_splice","cursor","suffixLength","oldSuffix","newSuffix","find_cursor_edit_diff","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","longtext","shorttext","hm","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","best_common","text1_a","text1_b","text2_a","text2_b","hm1","diff_halfMatchI_","ceil","hm2","kt","diff_halfMatch_","mid_common","diffs_a","diff_main","diffs_b","text1_length","text2_length","max_d","v_offset","v_length","v1","v2","k1start","k1end","k2start","k2end","k1","k1_offset","y1","x1","k2_offset","x2","diff_bisectSplit_","k2","y2","diff_bisect_","diff_compute_","unshift","diff_cleanupMerge","equalities","equalitiesLength","lastequality","pointer","length_insertions1","length_deletions1","length_insertions2","length_deletions2","one","two","char1","char2","nonAlphaNumeric1","nonAlphaNumericRegex_","nonAlphaNumeric2","whitespace1","whitespaceRegex_","whitespace2","lineBreak1","linebreakRegex_","lineBreak2","blankLine1","blanklineEndRegex_","blankLine2","blanklineStartRegex_","equality1","edit","equality2","commonOffset","commonString","bestEquality1","bestEdit","bestEquality2","bestScore","diff_cleanupSemanticScore_","score","diff_cleanupSemanticLossless","deletion","insertion","overlap_length1","diff_commonOverlap_","overlap_length2","diff_cleanupSemantic","y","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","is_surrogate_pair_start","text_length","best","pattern","found","pointerend","is_surrogate_pair_end","fix_unicode","count_delete","count_insert","text_delete","text_insert","previous_equality","ends_with_pair_start","stray","starts_with_pair_end","charCode","before","oldMiddle","newMiddle","after","tuples","remove_empty_tuples","diff","INSERT","DELETE","EQUAL","xe","A","debugErrorMap","prodErrorMap","_DEFAULT_AUTH_ERROR_FACTORY","authOrCode","createErrorInternal","errorMap","_fail","_errorWithCustomMessage","fullParams","_errorFactory","failure","_logError","debugFail","instanceCache","cls","debugAssert","Function","_getCurrentScheme","shortDelay","longDelay","isMobile","_isHttpOrHttps","emulator","fetchImpl","headersImpl","responseImpl","Response","SERVER_ERROR_MAP","CREDENTIAL_MISMATCH","MISSING_CUSTOM_TOKEN","INVALID_IDENTIFIER","MISSING_CONTINUE_URI","INVALID_PASSWORD","MISSING_PASSWORD","EMAIL_EXISTS","PASSWORD_LOGIN_DISABLED","INVALID_IDP_RESPONSE","INVALID_PENDING_TOKEN","FEDERATED_USER_ID_ALREADY_LINKED","MISSING_REQ_TYPE","EMAIL_NOT_FOUND","RESET_PASSWORD_EXCEED_LIMIT","EXPIRED_OOB_CODE","INVALID_OOB_CODE","MISSING_OOB_CODE","CREDENTIAL_TOO_OLD_LOGIN_AGAIN","INVALID_ID_TOKEN","TOKEN_EXPIRED","USER_NOT_FOUND","TOO_MANY_ATTEMPTS_TRY_LATER","INVALID_CODE","INVALID_SESSION_INFO","INVALID_TEMPORARY_PROOF","MISSING_SESSION_INFO","SESSION_EXPIRED","MISSING_ANDROID_PACKAGE_NAME","UNAUTHORIZED_DOMAIN","INVALID_OAUTH_CLIENT_ID","ADMIN_ONLY_OPERATION","INVALID_MFA_PENDING_CREDENTIAL","MFA_ENROLLMENT_NOT_FOUND","MISSING_MFA_ENROLLMENT_ID","MISSING_MFA_PENDING_CREDENTIAL","SECOND_FACTOR_EXISTS","SECOND_FACTOR_LIMIT_EXCEEDED","BLOCKING_FUNCTION_ERROR_RESPONSE","DEFAULT_API_TIMEOUT_MS","Delay","_performApiRequest","customErrorMap","_performFetchWithErrorHandling","_getAdditionalHeaders","FetchProvider","_getFinalTarget","apiHost","referrerPolicy","fetchFn","_canInitEmulator","networkTimeout","NetworkTimeout","clearNetworkTimeout","_makeTaggedError","serverErrorCode","serverErrorMessage","authError","_performSignInRequest","serverResponse","_serverResponse","base","_emulatorUrl","apiScheme","timer","_createError","errorParams","email","phoneNumber","_tokenResponse","deleteLinkedAccounts","getAccountInfo","utcTimestamp","date","toUTCString","userInternal","_parseToken","_assert","signInProvider","authTime","utcTimestampToDateString","secondsStringToMilliseconds","issuedAtTime","expirationTime","signInSecondFactor","sign_in_second_factor","seconds","algorithm","decoded","_logoutIfInvalidated","bypassAuthState","isUserInvalidated","currentUser","signOut","timerId","errorBackoff","_start","_stop","getInterval","wasError","interval","stsTokenManager","iteration","createdAt","lastLoginAt","_initializeTime","lastSignInTime","_copy","_reloadWithoutSaving","users","coreAccount","_notifyReloadListener","newProviderData","providerUserInfo","extractProviderData","providerData","mergeProviderData","isAnonymous","passwordHash","localId","displayName","photoURL","photoUrl","emailVerified","UserMetadata","_persistUserIfCurrent","_notifyListenersIfCurrent","original","o","some","providerId","__rest","rawId","grant_type","refresh_token","tokenApiHost","access_token","expires_in","isExpired","updateFromServerResponse","parsedToken","_tokenExpiresIn","updateTokensAndExpiration","Rt","refresh","clearRefreshToken","oldToken","requestStsToken","expiresInSec","manager","StsTokenManager","_assign","_clone","_performRefresh","opt","proactiveRefresh","ProactiveRefresh","reloadUserInfo","reloadListener","reload","userInfo","UserImpl","_onReload","_startProactiveRefresh","_stopProactiveRefresh","_updateTokensIfNecessary","tokensRefreshed","deleteAccount","_redirectEventId","_b","_c","_d","_e","_f","_g","_h","plainObjectTokenManager","fromJSON","assertStringOrUndefined","idTokenResponse","inMemoryPersistence","InMemoryPersistence","_isAvailable","_set","_get","_remove","_addListener","_listener","_removeListener","userKey","fullUserKey","_persistenceKeyName","fullPersistenceKey","boundEventHandler","_onStorageEvent","setCurrentUser","getCurrentUser","blob","_fromJSON","removeCurrentUser","savePersistenceForRedirect","newPersistence","persistenceHierarchy","PersistenceUserManager","_getInstance","availablePersistences","selectedPersistence","userToMigrate","migrationHierarchy","_shouldAllowMigration","_isIEMobile","_isFirefox","_isBlackBerry","_isWebOS","_isSafari","_isChromeIOS","_isAndroid","_isIOS","clientPlatform","frameworks","reportedPlatform","_getBrowserName","reportedFrameworks","emulatorConfig","operations","authStateSubscription","Subscription","idTokenSubscription","redirectUser","isProactiveRefreshEnabled","_isInitialized","_deleted","_initializationPromise","_popupRedirectResolver","lastNotifiedUid","appVerificationDisabledForTesting","clientVersion","sdkClientVersion","_initializeWithPersistence","popupRedirectResolver","persistenceManager","_shouldInitProactively","_initialize","initializeCurrentUser","assertedPersistence","_currentUser","_updateCurrentUser","storedUser","authDomain","getOrInitRedirectPersistenceManager","redirectUserEventId","storedUserEventId","tryRedirectSignIn","directlySetCurrentUser","reloadAndSetCurrentUserOrClear","redirectResolver","_completeRedirectFn","_setRedirectUser","_getUserLanguage","updateCurrentUser","userExtern","notifyAuthListeners","redirectPersistenceManager","_getPersistence","_updateErrorMap","completed","registerStateListener","redirectManager","resolver","_redirectPersistence","_redirectUserForId","currentUid","subscription","cb","addObserver","_logFramework","framework","_getClientVersion","_getFrameworks","createSubscribe","protocolEnd","portStr","signInMethod","_getIdTokenResponse","_auth","_linkToIdToken","_idToken","_getReauthenticationResolver","resetPassword","_addTidIfNecessary","updateEmailPassword","applyActionCode$1","sendOobCode","sendEmailVerification$1","sendPasswordResetEmail$1","sendSignInLinkToEmail$1","verifyAndChangeEmail","AuthCredential","_email","_password","_tenantId","EmailAuthCredential","oobCode","_fromEmailAndPassword","_fromEmailAndCode","signInWithPassword","returnSecureToken","signInWithEmailLink$1","signInWithEmailLinkForLinking","signInWithIdp","pendingToken","OAuthCredential","nonce","oauthToken","oauthTokenSecret","secret","buildRequest","autoCreate","requestUri","postBody","id_token","oauth_token_secret","sendPhoneVerificationCode","temporaryProof","VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_","verificationId","verificationCode","PhoneAuthCredential","signInWithPhoneNumber$1","_makeVerificationRequest","linkWithPhoneNumber$1","verifyPhoneNumberForExisting","sessionInfo","actionLink","searchParams","querystringDecode","extractQuerystring","mode","parseMode","continueUrl","doubleDeepLink","deep_link_id","iOSDeepLink","parseDeepLink","ActionCodeURL","EmailAuthProvider","PROVIDER_ID","emailLink","actionCodeUrl","parseLink","EMAIL_PASSWORD_SIGN_IN_METHOD","EMAIL_LINK_SIGN_IN_METHOD","defaultLanguageCode","customParameters","setDefaultLanguage","setCustomParameters","customOAuthParameters","getCustomParameters","FederatedAuthProvider","scopes","addScope","getScopes","BaseOAuthProvider","_fromParams","_credential","rawNonce","userCredential","OAuthProvider","oauthCredentialFromTaggedObject","tokenResponse","oauthIdToken","oauthAccessToken","FacebookAuthProvider","FACEBOOK_SIGN_IN_METHOD","credentialFromTaggedObject","GoogleAuthProvider","GOOGLE_SIGN_IN_METHOD","GithubAuthProvider","GITHUB_SIGN_IN_METHOD","SAMLAuthCredential","SAMLAuthProvider","samlCredentialFromTaggedObject","_create","TwitterAuthProvider","TWITTER_SIGN_IN_METHOD","signUp","operationType","_fromIdTokenResponse","providerIdForResponse","UserCredentialImpl","authInternal","_castAuth","MultiFactorError","_fromErrorAndOperation","pid","_assertLinkedStatus","deleteProvider","providersLeft","providerDataAsNames","pd","_link$1","_forOperation","expected","_reauthenticate","_processCredentialSavingMfaContextIfNecessary","parsed","_signInWithCredential","signInWithCredential","linkWithCredential","reauthenticateWithCredential","signInWithCustomToken$1","customToken","factorId","mfaEnrollmentId","enrollmentTime","enrolledAt","enrollment","PhoneMultiFactorInfoImpl","_fromServerResponse","MultiFactorInfoImpl","phoneInfo","actionCodeSettings","dynamicLinkDomain","canHandleCodeInApp","handleCodeInApp","iOS","bundleId","iOSBundleId","android","packageName","androidInstallApp","installApp","androidMinimumVersionCode","minimumVersion","androidPackageName","authModular","requestType","_setActionCodeSettingsOnRequest","newPassword","checkActionCode","newEmail","mfaInfo","multiFactorInfo","previousEmail","credentialWithLink","_getCurrentUrl","createAuthUri","continueUri","signinMethods","updateProfile$1","profileRequest","passwordProvider","updateEmailOrPassword","isNewUser","profile","GenericAdditionalUserInfo","username","FederatedAdditionalUserInfoWithUsername","login","screenName","rawUserInfo","kind","FacebookAdditionalUserInfo","GithubAdditionalUserInfo","GoogleAdditionalUserInfo","TwitterAdditionalUserInfo","MultiFactorSessionImpl","mfaPendingCredential","multiFactorSession","pendingCredential","_fromMfaPendingCredential","_fromIdtoken","session","hints","signInResolver","authExtern","MultiFactorResolverImpl","mfaResponse","_process","resolveSignIn","assertionExtern","enrolledFactors","MultiFactorUserImpl","getSession","enroll","finalizeMfaResponse","unenroll","infoOrUid","withdrawMfa","multiFactorUserCache","WeakMap","STORAGE_AVAILABLE_KEY","storageRetriever","browserLocalPersistence","BrowserLocalPersistence","BrowserPersistenceClass","localStorage","poll","onStorageEvent","localCache","pollTimer","safariLocalStorageNotSynced","_iframeCannotSyncWebStorage","top","_isIframe","fallbackToPolling","_isMobileBrowser","forAllChangedKeys","_oldValue","notifyListeners","detachListener","stopPolling","storedValue","triggerListeners","isIE","documentMode","startPolling","StorageEvent","attachListener","removeEventListener","Qe","browserSessionPersistence","BrowserSessionPersistence","sessionStorage","Receiver","eventTarget","handlersMap","handleEvent","existingInstance","receivers","receiver","isListeningto","messageEvent","eventId","handlers","ports","handler","fulfilled","_allSettled","_subscribe","eventHandler","_unsubscribe","digits","removeMessageHandler","messageChannel","port1","_send","MessageChannel","completionTimer","_generateEventId","ackTimer","port2","finally","_window","WorkerGlobalScope","importScripts","active","DB_NAME","DB_OBJECTSTORE_NAME","DB_DATA_KEYPATH","isReadWrite","DBPromise","_deleteDatabase","_openDatabase","_putObject","getObjectStore","indexedDBLocalPersistence","IndexedDBLocalPersistence","pendingWrites","sender","serviceWorkerReceiverAvailable","activeServiceWorker","_workerInitializationPromise","initializeServiceWorkerMessaging","_openDb","_withRetries","numAttempts","_isWorker","initializeReceiver","initializeSender","_origin","keyProcessed","_poll","_data","_getActiveServiceWorker","Sender","notifyServiceWorker","controller","_getServiceWorkerController","_deleteObject","_withPendingWrite","getObject","getAllRequest","getAll","keysInResult","fbase_key","localKey","recaptchaSiteKey","el","setAttribute","getScriptParentElement","_WIDGET_ID_START","counter","_widgets","render","parameters","MockWidget","optWidgetId","getResponse","containerOrId","deleted","responseToken","clickHandler","getElementById","isVisible","checkIfDeleted","chars","allowedChars","generateRandomAlphaNumericString","expiredCallback","_JSLOAD_CALLBACK","_generateCallbackName","NETWORK_TIMEOUT_DELAY","hostLanguage","librarySeparatelyLoaded","grecaptcha","load","hl","shouldResolveImmediately","recaptcha","widgetId","_loadJS","clearedOneInstance","MockReCaptcha","RECAPTCHA_VERIFIER_TYPE","DEFAULT_PARAMS","theme","destroyed","tokenChangeListeners","renderPromise","isInvisible","makeTokenCallback","_recaptchaLoader","MockReCaptchaLoaderImpl","ReCaptchaLoaderImpl","validateStartingState","verify","assertNotDestroyed","getAssertedRecaptcha","tokenChange","makeRenderPromise","_reset","childNodes","sitekey","hasChildNodes","globalFunc","guaranteedEmpty","domReady","siteKey","getRecaptchaParams","onConfirmation","confirm","authCredential","_fromVerification","appVerifier","_verifyPhoneNumber","ConfirmationResultImpl","verifier","recaptchaToken","phoneInfoOptions","startEnrollPhoneMfa","phoneEnrollmentInfo","phoneSessionInfo","multiFactorHint","multiFactorUid","startSignInPhoneMfa","phoneSignInInfo","phoneResponseInfo","PhoneAuthProvider","verifyPhoneNumber","phoneOptions","applicationVerifier","_fromTokenResponse","PHONE_SIGN_IN_METHOD","resolverOverride","_buildIdpRequest","returnIdpCredential","IdpCredential","_link","pendingPromise","eventManager","onExecution","registerConsumer","onAuthEvent","urlResponse","getIdpTask","_signIn","_reauth","unregisterAndCleanUp","unregisterConsumer","cleanUp","_POLL_WINDOW_CLOSE_TIMEOUT","_assertInstanceOf","resolverInternal","_withDefaultResolver","PopupOperation","executeNotNull","AbstractPopupRedirectOperation","authWindow","pollId","currentPopupAction","_openPopup","associatedEvent","_originValidation","_isIframeWebStorageSupported","pollUserCancellation","redirectOutcomeMap","readyOutcome","_getAndClearPendingRedirectStatus","pendingRedirectKey","resolverPersistence","hasPendingRedirect","_setPendingRedirectStatus","_openRedirect","prepareUserForRedirect","_getRedirectResult","resolverExtern","RedirectAction","cachedEventUids","consumers","queuedRedirectEvent","hasHandledPotentialRedirect","lastProcessedEventTime","authEventConsumer","isEventForConsumer","sendToConsumer","saveEventToCache","onEvent","hasEventBeenHandled","handled","consumer","isNullRedirectEvent","isRedirectEvent","eventIdMatches","eventUid","_getProjectConfig","IP_ADDRESS_REGEX","HTTP_REGEX","authorizedDomains","matchDomain","currentUrl","ceUrl","escapedDomainPattern","NETWORK_TIMEOUT","beacon","___jsl","H","hint","L","CP","cachedGApiLoader","resetUnloadedGapiModules","gapi","iframes","getContext","ontimeout","Iframe","cbName","loadGapiIframe","loadGapi","PING_TIMEOUT","IFRAME_ATTRIBUTES","position","width","height","tabindex","EID_FROM_APIHOST","eid","fw","_loadGapi","where","getIframeUrl","messageHandlersFilter","CROSS_ORIGIN_IFRAMES_FILTER","attributes","dontclear","restyle","setHideOnLeave","networkError","networkErrorTimer","ping","clearTimerAndResolve","BASE_POPUP_OPTIONS","resizable","statusbar","toolbar","authType","redirectUrl","additionalParams","tid","paramsDict","getHandlerBase","WEB_STORAGE_SUPPORT_KEY","_finalizeEnroll","_finalizeSignIn","PhoneMultiFactorAssertionImpl","finalizeEnrollPhoneMfa","phoneVerificationInfo","finalizeSignInPhoneMfa","PhoneMultiFactorGenerator","_fromCredential","FACTOR_ID","internalListeners","getUid","assertAuthConfigured","updateProactiveRefresh","BuildInfo","_cordovaWindow","sessionDigest","computeSha256","ibi","tr","apn","appDisplayName","_getRedirectUrl","iosBundleId","eventListener","iabRef","onCloseTimer","closeBrowserTab","plugins","browsertab","visibilityState","resumed","addPassiveListener","authEventSeen","visibilityChanged","removePassiveListener","stringToArrayBuffer","subtle","arr","num","padStart","TextEncoder","buff","ArrayBuffer","authInstance","AuthImpl","_initializeAuthInstance","hierarchy","_instanceIdentifier","_instance","AuthInterop","getVersionForPlatform","AuthEventManager","passiveListeners","initPromise","resolveInialized","resetRedirect","_getAndRemoveEvent","_isEdge","_isLocalStorageNotSynchronized","_isAndroidOrIosCordovaScheme","isNode","_isWebStorageSupported","_isLikelyCordova","timeoutId","Persistence","LOCAL","NONE","SESSION","_assert$3","PERSISTENCE_KEY","_savePersistenceForRedirect","getSessionStorageIfAvailable","_assert$2","browserResolver","eventManagers","originValidationPromises","screen","availHeight","availWidth","scrollbars","optionsString","reduce","standalone","_isIOSStandalone","openAsNewWindowIOS","click","initMouseEvent","dispatchEvent","AuthPopup","newWin","focus","_open","initAndGetManager","_openIframe","iframeEvent","authEvent","_validateOrigin","cordovaResolver","CordovaAuthEventManager","attachCallbackListeners","_j","_k","win","universalLinks","missingPlugin","openUrl","InAppBrowser","_checkCordovaConfiguration","generateSessionId","_generateNewEvent","_savePartialEvent","_generateHandlerUrl","handlerUrl","browserTabIsAvailable","_isIOS7Or8","_performRedirect","_waitForAppResume","_cb","handleOpenURL","noEventTimeout","generateNoEvent","universalLinksCb","partialEvent","finalEvent","callbackUrl","searchParamsOrEmpty","iOSDoubleDeepLink","_getDeepLinkFromCallback","errorObject","firebaseError","parseJsonOrNull","_eventFromPartialAndUrl","existingHandleOpenURL","packagePrefix","underlyingResolver","selectUnderlyingResolver","assertedUnderlyingResolver","isCordova","_isCordova","unwrap","credentialFromObject","credentialFromError","credentialFromResult","credentialPromise","MultiFactorResolver","errorInternal","_fromError","credErr","attachExtraErrorFields","credentialFromResponse","additionalUserInfo","User","getOrCreate","convertConfirmationResult","confirmationResultPromise","confirmationResultExp","convertCredential","wrapped","multiFactor","userModular","_fromUser","USER_MAP","linkAndRetrieveDataWithCredential","linkWithPhoneNumber","linkWithPopup","CompatPopupRedirectResolver","linkWithRedirect","_linkWithRedirect","reauthenticateAndRetrieveDataWithCredential","reauthenticateWithPhoneNumber","reauthenticateWithPopup","reauthenticateWithRedirect","_reauthenticateWithRedirect","sendEmailVerification","unlink","updateEmail","updatePassword","updatePhoneNumber","phoneCredential","updateProfile","verifyBeforeUpdateEmail","_assert$1","Auth","isInitialized","linkUnderlyingAuth","buildPersistenceHierarchy","disableWarnings","extractProtocol","authority","exec","hostAndPort","bracketedIPv6","parsePort","extractHostAndPort","sty","innerText","backgroundColor","border","bottom","margin","zIndex","textAlign","classList","info","attachBanner","emitEmulatorWarning","applyActionCode","confirmPasswordReset","createUserWithEmailAndPassword","fetchProvidersForEmail","fetchSignInMethodsForEmail","isSignInWithEmailLink","_isPopupRedirectSupported","addFrameworkForLogging","errorFn","wrapObservers","sendSignInLinkToEmail","sendPasswordResetEmail","converted","_validatePersistenceArgument","signInAndRetrieveDataWithCredential","signInAnonymously","signInWithCustomToken","signInWithEmailAndPassword","signInWithEmailLink","signInWithPhoneNumber","signInWithPopup","signInWithRedirect","_signInWithRedirect","verifyPasswordResetCode","oldNext","persistences","_getPersistencesFromRedirect","ActionCodeInfo","Operation","EMAIL_SIGNIN","PASSWORD_RESET","RECOVER_EMAIL","REVERT_SECOND_FACTOR_ADDITION","VERIFY_AND_CHANGE_EMAIL","VERIFY_EMAIL","RecaptchaVerifier","registerAuthCompat","promisifyRequest","promisifyRequestCall","Cursor","ProxyClass","targetProp","Constructor","promisifyCursorRequestCall","_cursor","_request","_store","idbTransaction","_tx","oncomplete","onabort","_db","Transaction","proxyProperties","proxyRequestMethods","IDBIndex","proxyCursorRequestMethods","IDBCursor","methodName","ObjectStore","createIndex","IDBObjectStore","proxyMethods","IDBTransaction","UpgradeDB","IDBDatabase","DB","funcName","toArray","nativeObject","items","iterateCursor","continue","upgradeCallback","HASH_UNDEFINED","MAX_SAFE_INTEGER","argsTag","boolTag","dateTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reFlags","reIsHostCtor","reIsUint","cloneableTags","freeGlobal","freeSelf","freeExports","Q","nodeType","freeModule","moduleExports","pair","iteratee","initAccum","transform","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","IE_PROTO","funcToString","objectToString","reIsNative","Buffer","Symbol","getPrototype","overArg","getPrototypeOf","objectCreate","propertyIsEnumerable","nativeGetSymbols","getOwnPropertySymbols","nativeIsBuffer","isBuffer","nativeKeys","DataView","getNative","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","valueOf","__data__","ListCache","objValue","eq","isDeep","isFull","customizer","isArr","initCloneArray","copyArray","getTag","isFunc","buffer","cloneBuffer","isHostObject","isPrototype","proto","baseCreate","initCloneObject","copyObject","getSymbols","copySymbols","baseAssign","cloneFunc","Ctor","cloneArrayBuffer","dataView","byteOffset","byteLength","cloneDataView","typedArray","cloneTypedArray","arrayReduce","mapToArray","addMapEntry","cloneMap","regexp","lastIndex","cloneRegExp","setToArray","addSetEntry","cloneSet","symbol","cloneSymbol","initCloneByTag","baseClone","Stack","stacked","props","keysFunc","symbolsFunc","arrayPush","baseGetAllKeys","getAllKeys","arrayEach","subValue","assignValue","arrayBuffer","isKeyable","isMasked","baseIsNative","Hash","assocIndexOf","MapCache","string","getMapData","LARGE_ARRAY_SIZE","ctorString","isLength","isArrayLike","inherited","isObjectLike","isArrayLikeObject","isArguments","baseTimes","skipIndexes","isIndex","arrayLikeKeys","baseKeys","arrayTag","errorTag","typedArrayTags","freeProcess","nodeUtil","binding","nodeIsTypedArray","isTypedArray","nativeObjectToString","symToStringTag","toStringTag","isOwn","unmasked","getRawTag","baseGetTag","bitmask","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","isPartial","objProps","objLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsEqual","arrLength","othLength","seen","SetCache","arrValue","arraySome","othIndex","cacheHas","resIndex","arrayFilter","baseIsArguments","baseUnary","isArg","isBuff","isType","FUNC_ERROR_TEXT","PLACEHOLDER","WRAP_PARTIAL_FLAG","WRAP_ARY_FLAG","INFINITY","MAX_ARRAY_LENGTH","wrapFlags","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reIsBadHex","reIsBinary","reIsOctal","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsModifier","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","stringEscapes","freeParseFloat","freeParseInt","types","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","thisArg","setter","baseIndexOf","asciiSize","baseProperty","eachFunc","fromIndex","fromRight","strictIndexOf","baseFindIndex","baseIsNaN","baseSum","trimmedEndIndex","arrayMap","strSymbols","chrSymbols","placeholder","deburrLetter","basePropertyOf","escapeHtmlChar","chr","hasUnicode","unicodeSize","unicodeToArray","asciiToArray","unescapeHtmlChar","defaults","pick","TypeError","idCounter","objectCtorString","oldDash","allocUnsafe","spreadableSymbol","isConcatSpreadable","symIterator","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeIsFinite","isFinite","nativeJoin","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","metaMap","realNames","symbolToString","LazyWrapper","LodashWrapper","wrapperClone","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","baseRandom","shuffleSelf","baseClamp","baseAssignValue","baseEach","configurable","enumerable","writable","paths","skip","number","lower","upper","isFlat","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","Np","getAllKeysIn","wait","arrayIncludes","isCommon","valuesLength","arrayIncludesWith","computed","valuesIndex","lodash","templateSettings","escape","evaluate","interpolate","variable","imports","baseLodash","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","isSymbol","depth","isStrict","isFlattenable","baseFlatten","baseFor","createBaseFor","baseForRight","castPath","toKey","arrays","caches","maxLength","Infinity","objStacked","othStacked","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseMatchesProperty","baseMatches","property","getMatchData","matchesStrictComparable","baseIsMatch","isKey","isStrictComparable","hasIn","srcIndex","mergeFunc","assignMergeValue","isTyped","ur","Tr","isPlainObject","Nd","toPlainObject","baseMergeDeep","baseMerge","iteratees","orders","baseGet","getIteratee","comparer","objCriteria","criteria","othCriteria","ordersLength","compareAscending","compareMultiple","baseSortBy","baseMap","baseSet","baseIndexOfWith","indexes","baseUnset","setToString","overRest","arraySample","nested","baseSetData","Gr","baseSetToString","qt","constant","end","retHighest","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","Si","baseToString","createSet","seenIndex","updater","isDrop","baseSlice","baseUniq","baseDifference","assignFunc","valsLength","stringToPath","castRest","baseRest","valIsDefined","valIsReflexive","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","holdersIndex","rightIndex","rightLength","isNew","initializer","arrayAggregator","baseAggregator","assigner","sources","guard","isIterateeCall","iterable","stringToArray","trailing","castSlice","words","deburr","thisBinding","findIndexFunc","flatRest","funcs","prereq","thru","wrapper","getFuncName","getData","isLaziable","plant","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","WRAP_CURRY_FLAG","isFlip","createCtor","getHolder","holdersCount","countHolders","composeArgs","composeArgsRight","newHolders","replaceHolders","createRecurry","createHybrid","di","reorder","toIteratee","baseInverter","operator","defaultValue","baseToNumber","arrayFunc","charsLength","baseRepeat","stringSize","step","toFinite","baseRange","toNumber","wrapFunc","isCurry","setData","setWrapToString","precision","toInteger","Vo","setToPairs","baseToPairs","srcBitmask","newBitmask","WRAP_BIND_FLAG","mergeData","createCurry","createPartial","createBind","customDefaultsMerge","arrStacked","flatten","otherFunc","baseIteratee","stubArray","hasFunc","isMaskable","stubFalse","otherArgs","oldArray","shortOut","reference","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","memoize","quote","subString","clone","difference","differenceBy","differenceWith","intersection","mapped","castArrayLikeObject","baseIntersection","intersectionBy","intersectionWith","pull","pullAll","basePullAll","pullAt","baseAt","basePullAt","union","unionBy","unionWith","group","unzip","without","xor","baseXor","xorBy","xorWith","zip","zipWith","unzipWith","interceptor","wrapperAt","countBy","createAggregator","createFind","findLast","findLastIndex","arrayEachRight","groupBy","invokeMap","baseInvoke","keyBy","partition","sortBy","baseOrderBy","createWrap","bindKey","lastArgs","lastThis","maxWait","lastCallTime","lastInvokeTime","leading","maxing","timerExpired","invokeFunc","timeSinceLastCall","shouldInvoke","trailingEdge","timeWaiting","remainingWait","isInvoking","leadingEdge","debounced","defer","baseDelay","memoized","Cache","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","createRelationalOperation","baseGt","gte","lt","baseLt","lte","done","iteratorToArray","remainder","baseTrim","isBinary","createAssigner","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","hasPath","baseHasIn","invert","createInverter","invertBy","nativeKeysIn","isProto","baseKeysIn","omit","CLONE_DEEP_FLAG","customOmitClone","basePickBy","basePick","toPairs","createToPairs","toPairsIn","baseValues","camelCase","createCompounder","word","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","createCaseFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","isError","bindAll","methodNames","flow","createFlow","flowRight","methodOf","baseFunctions","chain","over","createOver","overEvery","arrayEvery","overSome","basePropertyDeep","range","createRange","rangeRight","createMathOperation","augend","addend","createRound","divide","dividend","divisor","multiply","multiplier","multiplicand","subtract","minuend","subtrahend","castArray","chunk","compact","cond","conforms","baseConformsTo","baseConforms","curry","curryRight","debounce","drop","dropRight","dropRightWhile","baseWhile","dropWhile","fill","toLength","baseFill","baseFilter","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matchesProperty","mixin","negate","nthArg","baseNth","omitBy","pickBy","propertyOf","pullAllBy","pullAllWith","sampleSize","arraySampleSize","baseSampleSize","setWith","shuffle","arrayShuffle","baseShuffle","sortedUniq","baseSortedUniq","sortedUniqBy","separator","spread","tail","take","takeRight","takeRightWhile","takeWhile","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","baseUpdate","castFunction","updateWith","valuesIn","wrap","zipObject","baseZipObject","zipObjectDeep","entriesIn","extend","extendWith","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","escapeRegExp","baseEvery","findKey","baseFindKey","findLastKey","forEachRight","forIn","forInRight","forOwn","forOwnRight","baseHas","wt","baseInRange","isBoolean","isElement","isEqualWith","isInteger","isMatch","isMatchWith","isNumber","isNative","isNull","isSafeInteger","isUndefined","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","baseExtremum","maxBy","mean","baseMean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","createPadding","padEnd","radix","floating","temp","baseReduce","reduceRight","arrayReduceRight","runInContext","sample","baseSample","baseSome","sortedIndex","baseSortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sum","sumBy","customDefaultsAssignIn","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","escapeStringChar","times","toLower","toSafeInteger","toUpper","trim","charsStartIndex","charsEndIndex","trimEnd","trimStart","truncate","omission","newEnd","unescape","uniqueId","eachRight","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","getView","iterLength","takeCount","baseWrapperValue","iterIndex","commit","define","Gt","_c0","createEventBus","pdfJsViewer","globalEventBus","EventBus","attachDOMEventsToEventBus","eventBus","initCustomEvent","evt","pageNumber","cssTransform","div","textLayerDiv","initEvent","pagesCount","scale","presetValue","phraseSearch","caseSensitive","highlightAll","findPrevious","attachmentsCount","outerContainer","pdfViewer","switchInProgress","outlineCount","PdfViewerComponent_1","isSSR","PDFJS","VerbosityLevel","RenderTextMode","DISABLED","ENABLED","ENHANCED","PdfViewerComponent","element","_cMapsUrl","_renderText","_renderTextMode","_stickToPage","_originalSize","_page","_zoom","_zoomScale","_rotation","_showAll","_canAutoResize","_fitToPage","_externalLinkTarget","_showBorders","afterLoadComplete","pageRendered","pageInitialized","textLayerRendered","onProgress","pageChange","pdfWorkerSrc","GlobalWorkerOptions","cMapsUrl","page","originalPage","_pdf","getValidPageNumber","emit","renderText","renderTextMode","originalSize","showAll","stickToPage","zoom","zoomScale","rotation","externalLinkTarget","autoresize","Boolean","fitToPage","showBorders","LinkTarget","ngAfterViewChecked","pdfViewerContainer","nativeElement","offsetParent","ngOnInit","ngOnChanges","setupMultiPageViewer","setupSinglePageViewer","ngOnDestroy","onPageResize","resizeTimeout","updateSize","pdfLinkService","pdfMultiPageLinkService","pdfSinglePageLinkService","getCurrentViewer","pdfFindController","pdfMultiPageFindController","pdfSinglePageFindController","loadPDF","textLayerMode","resetPdfDocument","currentValue","_latestScrolledPage","scrollPageIntoView","currentViewer","getPage","currentPageNumber","rotate","viewportWidth","getViewport","CSS_UNITS","clientWidth","viewPort","getScale","_setScale","loadingTask","destroy","pdfMultiPageViewer","setDocument","pdfSinglePageViewer","getPDFLinkServiceConfig","pdfLinkServiceConfig","linkTarget","getLinkTarget","PDFJSViewer","pageScrollTimeout","PDFLinkService","PDFFindController","linkService","pdfOptions","querySelector","removePageBorders","findController","PDFViewer","setViewer","PDFSinglePageViewer","_currentPageNumber","numPages","getDocumentParams","srcType","cMapUrl","cMapPacked","lastLoaded","getDocument","progressData","pdf","pagesRotation","viewportHeight","borderSize","BORDER_WIDTH","pdfContainerWidth","pdfContainerHeight","clientHeight","ratio","ɵngcc0","ɵcmp","selectors","viewQuery","rf","ctx","_t","hostBindings","outputs","features","decls","vars","consts","styles","ctorParameters","ElementRef","__decorate","ViewChild","Output","Input","HostListener","PdfViewerModule","_c1","a0","a1","a2","a3","a4","sm","md","lg","in","_c2","PopoverPlacement","Bottom","BottomLeft","BottomRight","Left","Right","Top","TopLeft","TopRight","PopoverContentComponent","cdr","renderer","placement","animation","closeOnClickOutside","closeOnMouseOutside","appendToBody","onCloseFromOutside","isIn","opacity","transitionEnabled","windowWidth","innerWidth","windowHeight","innerHeight","onDocumentMouseDown","popover","getElement","ngAfterViewInit","listenClickFunc","listenMouseFunc","listenTouchFunc","show","detectChanges","onResize","updatePosition","positionElements","popoverDiv","hide","hideFromPopover","hostEl","targetEl","positionStr","positionStrParts","pos0","pos1","hostElPos","targetElWidth","offsetWidth","targetElHeight","offsetHeight","effectivePlacement","getEffectivePlacement","shiftWidth","center","topOrBottomRight","topOrBottomLeft","shiftHeight","targetElPos","nativeEl","offsetParentBCR","elBCR","offsetParentEl","parentOffsetEl","clientTop","scrollTop","clientLeft","scrollLeft","boundingClientRect","getBoundingClientRect","pageYOffset","documentElement","pageXOffset","getStyle","cssProp","currentStyle","getComputedStyle","isStaticPositioned","hostElement","targetElement","hostElBoundingRect","desiredPlacement","overflows","$event","content","parentClass","ngContentSelectors","directives","ɵngcc1","encapsulation","PopoverDirective","viewContainerRef","appRef","injector","popoverContentComponent","popoverOnHover","popoverDismissTimeout","onShown","onHidden","showOrHideOnClick","popoverDisabled","stopImmediatePropagation","toggle","showOrHideOnTouch","showOnHover","hideOnHover","popoverCloseOnMouseOutside","createComponent","component","resolveComponentFactory","componentRef","attachView","hostView","rootNodes","removeComponent","detachView","popoverPlacement","popoverAnimation","popoverTitle","popoverCloseOnClickOutside","popoverSize","ɵdir","exportAs","PopoverModule","CommonModule","modules","installedModules","moduleId","__w_pdfjs_require__","getter","__esModule","_display_utils","addLinkAttributes","getFilenameFromUrl","loadScript","PDFDateString","RenderingCancelledException","_api","build","LoopbackPort","PDFDataRangeTransport","PDFWorker","_util","CMapCompressionType","createObjectURL","createPromiseCapability","createValidAbsoluteUrl","InvalidPDFException","MissingPDFException","OPS","PasswordResponses","PermissionFlag","removeNullCharacters","shadow","UnexpectedResponseException","UNSUPPORTED_FEATURES","Util","_annotation_layer","AnnotationLayer","_api_compatibility","apiCompatibilityParams","_worker_options","_text_layer","renderTextLayer","_svg","SVGGraphics","isNodeJS","PDFNodeStream","setPDFNetworkStreamFactory","PDFFetchStream","PDFNetworkStream","isFetchSupported","isValidFetchUrl","_ref7","rel","_ref7$enabled","urlNullRemoved","onclick","targetStr","SELF","BLANK","PARENT","TOP","DEFAULT_LINK_REL","anchor","deprecated","StatTimer","DOMSVGFactory","DOMCMapReaderFactory","DOMCanvasFactory","PageViewport","_regenerator","allowArrayLike","minLen","_arrayLikeToArray","_unsupportedIterableToArray","F","normalCompletion","didErr","_e2","return","arr2","_typeof","_setPrototypeOf","ReferenceError","_assertThisInitialized","_getPrototypeOf","gen","_next","_throw","asyncGeneratorStep","descriptor","protoProps","staticProps","_defineProperties","SVG_NS","_classCallCheck","_createClass","canvas","canvasAndContext","_ref","_ref$baseUrl","baseUrl","_ref$isCompressed","isCompressed","_fetch","_x","_ref3","_asyncToGenerator","mark","_ref2","compressionType","_this","_context2","prev","BINARY","baseURI","abrupt","_ref4","cMapData","_context","statusText","t0","t1","sent","t2","stringToBytes","text","t3","_callee","_x3","responseType","DONE","_callee2","_x2","svg","createElementNS","_ref5","viewBox","_ref5$offsetX","offsetX","_ref5$offsetY","offsetY","_ref5$dontFlip","dontFlip","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","centerX","centerY","_ref6","_ref6$scale","_ref6$rotation","_ref6$offsetX","_ref6$offsetY","_ref6$dontFlip","applyTransform","rect","topLeft","bottomRight","applyInverseTransform","_BaseException","subClass","superClass","_inherits","_super","Derived","hasNativeReflectConstruct","Reflect","construct","sham","_isNativeReflectConstruct","Super","NewTarget","_possibleConstructorReturn","_createSuper","_this2","BaseException","started","_step","outBuf","longest","_iterator","_createForOfIteratorHelper","_step2","_iterator2","_time","duration","ReadableStream","ex","pdfDateStringRegex","year","month","day","hour","minute","second","universalTimeRelation","offsetHour","offsetMinute","ct","UTC","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","generator","Generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","tryCatch","GenStateSuspendedYield","makeInvokeMethod","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","PromiseImpl","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","completion","pushTryEntry","iteratorMethod","GeneratorFunction","isGeneratorFunction","genFun","ctor","awrap","defineIteratorMethods","AsyncIterator","skipTempReset","resetTryEntry","rootRecord","rval","exception","loc","caught","handle","hasCatch","hasFinally","finallyEntry","st","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","webpackPolyfill","deprecate","arrayByteLength","arraysToBytes","resultLength","_i","itemLength","bytesToString","strBuf","chunkEnd","subarray","capability","isSettled","getVerbosityLevel","verbosity","INFOS","isArrayEqual","arr1","isBool","isEmptyObj","isNum","isSameOrigin","otherUrl","absoluteUrl","_isValidProtocol","NullCharactersRegExp","setVerbosityLevel","string32","stringToPDFString","_i2","_i3","PDFStringTranslateTable","stringToUTF8String","utf8StringToString","unreachable","IsEvalSupportedCached","IsLittleEndianCached","FormatError","UnknownErrorException","TextRenderingMode","StreamType","PasswordException","AbortException","ImageKind","FontType","AnnotationType","AnnotationStateModelType","AnnotationReviewState","AnnotationReplyType","AnnotationMarkedState","AnnotationFlag","AnnotationFieldFlag","AnnotationBorderStyleType","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","PRINT","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","MARKED","REVIEW","UNMARKED","ACCEPTED","REJECTED","CANCELLED","COMPLETED","GROUP","REPLY","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","SOLID","DASHED","BEVELED","INSET","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","TYPE1","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","ERRORS","WARNINGS","STREAM","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","unknown","forms","javaScript","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorOperatorList","errorFontToUnicode","errorFontLoadNative","errorFontGetPath","NEED_PASSWORD","INCORRECT_PASSWORD","_BaseException2","_super2","_BaseException3","_super3","_BaseException4","_super4","_BaseException5","_super5","_this3","_BaseException6","_super6","_BaseException7","_super7","buffer8","Uint32Array","isEvalSupported","rgbBuf","g","m1","m2","p1","p2","p3","p4","transpose","sqrt","sy","rect1","rect2","orderedX","orderedY","normalizeRect","contentType","forceDataSchema","Blob","ii","b1","b2","b3","d1","d2","d3","d4","_is_node","_pdfjsCompatibilityChecked","hasDOM","Element","OriginalDOMTokenListAdd","DOMTokenList","OriginalDOMTokenListRemove","_len","_tokens","_len2","_key2","_tokens2","force","OriginalPushState","history","pushState","OriginalReplaceState","replaceState","log2","allSettled","isReadableStreamSupported","WeakSet","codePointAt","fromCodePoint","versions","nw","electron","$","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","noTargetGet","forced","check","DESCRIPTORS","propertyIsEnumerableModule","createPropertyDescriptor","toIndexedObject","toPrimitive","IE8_DOM_DEFINE","nativeGetOwnPropertyDescriptor","O","P","fails","nativePropertyIsEnumerable","NASHORN_BUG","V","bitmap","IndexedObject","requireObjectCoercible","classof","PREFERRED_STRING","EXISTS","definePropertyModule","anObject","nativeDefineProperty","Attributes","inspectSource","InternalStateModule","getInternalState","enforceInternalState","enforce","TEMPLATE","unsafe","simple","functionToString","SHARED","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","wmget","wmhas","wmset","STATE","getterFor","TYPE","shared","IS_PURE","copyright","postfix","ownKeys","getOwnPropertyDescriptorModule","getBuiltIn","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","aFunction","internalObjectKeys","names","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","argument","integer","replacement","feature","detection","normalize","POLYFILL","NATIVE","entryUnbind","notARegExp","correctIsRegExpLogic","nativeStartsWith","CORRECT_IS_REGEXP_LOGIC","searchString","that","MATCH","wellKnownSymbol","NATIVE_SYMBOL","USE_SYMBOL_AS_UID","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","METHOD_NAME","CONSTRUCTOR","METHOD","nativeEndsWith","endPosition","$includes","addToUnscopables","arrayMethodUsesToLength","ACCESSORS","UNSCOPABLES","ArrayPrototype","activeXDocument","enumBugKeys","html","documentCreateElement","PROTOTYPE","SCRIPT","EmptyConstructor","scriptTag","LT","NullProtoObject","ActiveXObject","parentWindow","NullProtoObjectViaActiveX","iframeDocument","NullProtoObjectViaIFrame","Properties","objectKeys","thrower","argument0","argument1","defineIterator","STRING_ITERATOR","setInternalState","iterated","point","CONVERT_TO_STRING","S","codeAt","createIteratorConstructor","setToStringTag","Iterators","IteratorsCore","BUGGY_SAFARI_ITERATORS","ITERATOR","KEYS","VALUES","ENTRIES","returnThis","Iterable","NAME","IteratorConstructor","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","TO_STRING_TAG","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","PrototypeOfArrayIteratorPrototype","arrayIterator","toObject","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","TAG","aPossiblePrototype","CORRECT_SETTER","checkCorrectnessOfIteration","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIteratorMethod","arrayLike","C","argumentsLength","mapfn","mapping","returnMethod","propertyKey","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","callee","SAFE_CLOSING","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","nativeAssign","alphabet","T","ArrayBufferViewCore","speciesConstructor","aTypedArray","aTypedArrayConstructor","$slice","exportTypedArrayMethod","Int8Array","NATIVE_ARRAY_BUFFER","Int8ArrayPrototype","Uint8ClampedArray","Uint8ClampedArrayPrototype","TypedArray","TypedArrayPrototype","isPrototypeOf","TYPED_ARRAY_TAG","NATIVE_ARRAY_BUFFER_VIEWS","opera","TYPED_ARRAY_TAG_REQIRED","TypedArrayConstructorsList","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","ARRAY","TypedArrayConstructor","exportTypedArrayStaticMethod","isView","SPECIES","defaultConstructor","DOMIterables","ArrayIteratorMethods","ArrayValues","COLLECTION_NAME","Collection","CollectionPrototype","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","ARRAY_ITERATOR","Arguments","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","NativePromise","redefineAll","setSpecies","anInstance","iterate","microtask","promiseResolve","hostReportErrors","newPromiseCapabilityModule","perform","V8_VERSION","PROMISE","getInternalPromiseState","PromiseConstructor","$fetch","newPromiseCapability","newGenericPromiseCapability","IS_NODE","DISPATCH_EVENT","UNHANDLED_REJECTION","PromiseRejectionEvent","FakePromise","INCORRECT_ITERATION","isThenable","notify","isReject","notified","reactions","exited","reaction","fail","rejection","onHandleUnhandled","enter","exit","onUnhandled","isUnhandled","internalReject","internalResolve","onFulfilled","onRejected","$promiseResolve","alreadyCalled","CONSTRUCTOR_NAME","Result","stopped","AS_ENTRIES","IS_ITERATOR","iterFn","boundFunction","IS_IOS","setImmediate","clearImmediate","Dispatch","ONREADYSTATECHANGE","runner","post","nextTick","z","macrotask","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","createTextNode","observe","characterData","M","promiseCapability","PromiseCapability","$$resolve","$$reject","v8","real","onFinally","EOF","USE_NATIVE_URL","arrayFrom","toASCII","URLSearchParamsModule","NativeURL","URLSearchParams","getInternalSearchParamsState","getInternalURLState","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseHost","codePoints","parseIPv6","isSpecial","parseIPv4","percentEncode","C0ControlPercentEncodeSet","partsLength","numbers","part","ipv4","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","compress","char","serializeHost","ignore0","ipv6","maxIndex","currStart","currLength","findLongestZeroSequence","Ci","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","specialSchemes","ftp","file","http","https","ws","wss","includesCredentials","cannotHaveUsernamePasswordPort","cannotBeABaseURL","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","third","shortenURLsPath","pathSize","isSingleDot","isDoubleDot","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","parseURL","stateOverride","bufferCodePoints","seenAt","seenBracket","seenPasswordToken","fragment","Je","ue","codePoint","encodedCodePoints","Wt","URLConstructor","baseState","urlString","searchParamsState","updateSearchParams","updateURL","serializeURL","getOrigin","getProtocol","getUsername","getPassword","getHost","getHostname","getPort","pathname","getPathname","getSearch","getSearchParams","getHash","URLPrototype","accessorDescriptor","nativeCreateObjectURL","nativeRevokeObjectURL","revokeObjectURL","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","stringFromCharCode","digitToBasic","digit","adapt","numPoints","firstTime","baseMinusTMin","extra","ucs2decode","inputLength","basicLength","handledCPCount","handledCPCountPlusOne","RangeError","qMinusT","baseMinusT","label","encoded","labels","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","getInternalIteratorState","plus","sequences","percentSequence","percentDecode","sequence","deserialize","replacer","serialize","parseSearchParams","attribute","validateArgumentsLength","passed","required","URLSearchParamsIterator","URLSearchParamsConstructor","entryIterator","entryNext","URLSearchParamsPrototype","entriesIndex","sliceIndex","SymbolPolyfill","description","NumberIsNaN","rethrowAssertionErrorRejection","elements","dest","destOffset","srcOffset","IsNonNegativeNumber","underlyingObject","algoArgCount","extraArgs","PromiseCall","fullArgs","promiseResolvedWith","Call","promiseRejectedWith","highWaterMark","originalPromise","originalPromiseThen","originalPromiseResolve","originalPromiseReject","PerformPromiseThen","uponPromise","fulfillmentHandler","rejectionHandler","SimpleQueue","_size","_front","_elements","_back","oldBack","newBack","QUEUE_MAX_ARRAY_SIZE","oldFront","newFront","forAuthorCode","reader","stream","_forAuthorCode","_ownerReadableStream","_reader","xt","_state","defaultReaderClosedPromiseInitialize","defaultReaderClosedPromiseResolve","defaultReaderClosedPromiseInitializeAsResolved","defaultReaderClosedPromiseInitializeAsRejected","_storedError","ReadableStreamCancel","defaultReaderClosedPromiseReject","defaultReaderClosedPromiseResetToRejected","_closedPromise","newPromise","_closedPromise_resolve","_closedPromise_reject","setPromiseIsHandledToTrue","CancelSteps","PullSteps","ReadableStreamDefaultReader","_readRequests","_reject","ReadableStreamCreateReadResult","IsReadableStreamDefaultReader","AsyncIteratorPrototype","IsReadableStream","IsReadableStreamLocked","ReadableStreamReaderGenericInitialize","defaultReaderBrandCheckException","readerLockException","ReadableStreamReaderGenericCancel","read","ReadableStreamDefaultReaderRead","releaseLock","ReadableStreamReaderGenericRelease","typeIsObject","_disturbed","_readableStreamController","ReadableStreamAsyncIteratorPrototype","IsReadableStreamAsyncIterator","streamAsyncIteratorBrandCheckException","_asyncIteratorReader","transformPromiseWith","_preventCancel","_queue","_queueTotalSize","IsFiniteNonNegativeNumber","AbortSteps","ErrorSteps","WritableStream","underlyingSink","strategy","InitializeWritableStream","sizeAlgorithm","MakeSizeAlgorithmFromSizeFunction","WritableStreamDefaultController","InvokeOrNoop","writeAlgorithm","CreateAlgorithmFromUnderlyingMethod","closeAlgorithm","abortAlgorithm","SetUpWritableStreamDefaultController","startAlgorithm","SetUpWritableStreamDefaultControllerFromUnderlyingSink","ValidateAndNormalizeHighWaterMark","IsWritableStream","streamBrandCheckException","IsWritableStreamLocked","WritableStreamAbort","WritableStreamCloseQueuedOrInFlight","WritableStreamClose","getWriter","AcquireWritableStreamDefaultWriter","WritableStreamDefaultWriter","_writer","_writableStreamController","_writeRequests","_inFlightWriteRequest","_closeRequest","_inFlightCloseRequest","_pendingAbortRequest","_backpressure","_promise","wasAlreadyErroring","_reason","_wasAlreadyErroring","WritableStreamStartErroring","writer","defaultWriterReadyPromiseResolve","EnqueueValueWithSize","WritableStreamDefaultControllerAdvanceQueueIfNeeded","WritableStreamDefaultControllerClose","WritableStreamFinishErroring","WritableStreamDefaultWriterEnsureReadyPromiseRejected","WritableStreamHasOperationMarkedInFlight","_started","storedError","writeRequest","abortRequest","WritableStreamRejectCloseAndClosedPromiseIfNeeded","defaultWriterClosedPromiseReject","backpressure","defaultWriterReadyPromiseInitialize","defaultWriterReadyPromiseReset","_ownerWritableStream","defaultWriterReadyPromiseInitializeAsResolved","defaultWriterClosedPromiseInitialize","defaultWriterReadyPromiseInitializeAsRejected","defaultWriterClosedPromiseResolve","defaultWriterClosedPromiseInitializeAsResolved","defaultWriterClosedPromiseInitializeAsRejected","IsWritableStreamDefaultWriter","defaultWriterBrandCheckException","defaultWriterLockException","WritableStreamDefaultControllerGetDesiredSize","WritableStreamDefaultWriterGetDesiredSize","_readyPromise","WritableStreamDefaultWriterAbort","WritableStreamDefaultWriterClose","WritableStreamDefaultWriterRelease","WritableStreamDefaultWriterWrite","_closedPromiseState","defaultWriterClosedPromiseResetToRejected","_readyPromiseState","defaultWriterReadyPromiseReject","defaultWriterReadyPromiseResetToRejected","releasedError","WritableStreamDefaultWriterEnsureClosedPromiseRejected","_strategySizeAlgorithm","chunkSizeE","WritableStreamDefaultControllerErrorIfNeeded","WritableStreamDefaultControllerGetChunkSize","WritableStreamAddWriteRequest","WritableStreamDefaultControllerWrite","enqueueE","_controlledWritableStream","WritableStreamUpdateBackpressure","WritableStreamDefaultControllerGetBackpressure","IsWritableStreamDefaultController","WritableStreamDefaultControllerError","_abortAlgorithm","WritableStreamDefaultControllerClearAlgorithms","ResetQueue","_strategyHWM","_writeAlgorithm","_closeAlgorithm","WritableStreamDealWithRejection","PeekQueueValue","WritableStreamMarkCloseRequestInFlight","DequeueValue","sinkClosePromise","WritableStreamFinishInFlightClose","WritableStreamFinishInFlightCloseWithError","WritableStreamDefaultControllerProcessClose","WritableStreamMarkFirstWriteRequestInFlight","WritableStreamFinishInFlightWrite","WritableStreamFinishInFlightWriteWithError","WritableStreamDefaultControllerProcessWrite","_readyPromise_resolve","_readyPromise_reject","aborted","NativeDOMException","DOMException","DOMException$1","isDOMExceptionConstructor","preventClose","preventAbort","preventCancel","AcquireReadableStreamDefaultReader","shuttingDown","shutdownWithAction","isOrBecomesErrored","shutdown","WritableStreamDefaultWriterCloseWithErrorPropagation","uponFulfillment","destClosed_1","oldCurrentWrite","waitForWritesToFinish","uponRejection","originalIsError","finalize","newError","doTheRest","fo","resolveLoop","rejectLoop","ReadableStreamDefaultController","IsReadableStreamDefaultController","defaultControllerBrandCheckException","ReadableStreamDefaultControllerGetDesiredSize","ReadableStreamDefaultControllerCanCloseOrEnqueue","ReadableStreamDefaultControllerClose","enqueue","ReadableStreamDefaultControllerEnqueue","ReadableStreamDefaultControllerError","_cancelAlgorithm","ReadableStreamDefaultControllerClearAlgorithms","_controlledReadableStream","_closeRequested","ReadableStreamClose","ReadableStreamDefaultControllerCallPullIfNeeded","ReadableStreamAddReadRequest","ReadableStreamDefaultControllerShouldCallPull","_pulling","_pullAgain","_pullAlgorithm","ReadableStreamGetNumReadRequests","ReadableStreamFulfillReadRequest","ReadableStreamError","pullAlgorithm","cancelAlgorithm","NumberIsInteger","ReadableStreamBYOBRequest","IsReadableStreamBYOBRequest","byobRequestBrandCheckException","_view","respond","bytesWritten","_associatedReadableByteStreamController","ReadableByteStreamControllerRespondInternal","ReadableByteStreamControllerRespond","respondWithNewView","firstDescriptor","_pendingPullIntos","bytesFilled","ReadableByteStreamControllerRespondWithNewView","ReadableByteStreamController","IsReadableByteStreamController","byteStreamControllerBrandCheckException","_byobRequest","byobRequest","SetUpReadableStreamBYOBRequest","ReadableByteStreamControllerGetDesiredSize","_controlledReadableByteStream","ReadableByteStreamControllerError","ReadableByteStreamControllerClearAlgorithms","ReadableByteStreamControllerClose","transferredBuffer","ReadableStreamHasDefaultReader","ReadableByteStreamControllerEnqueueChunkToQueue","ReadableStreamHasBYOBReader","ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue","ReadableByteStreamControllerCallPullIfNeeded","ReadableByteStreamControllerEnqueue","ReadableByteStreamControllerHandleQueueDrain","viewE","autoAllocateChunkSize","_autoAllocateChunkSize","bufferE","pullIntoDescriptor","elementSize","readerType","ReadableStreamGetNumReadIntoRequests","ReadableByteStreamControllerShouldCallPull","filledView","ReadableByteStreamControllerConvertPullIntoDescriptor","_readIntoRequests","ReadableStreamFulfillReadIntoRequest","currentAlignedBytes","maxBytesToCopy","maxBytesFilled","maxAlignedBytes","totalBytesToCopyRemaining","headOfQueue","bytesToCopy","ArrayBufferCopy","mn","ReadableByteStreamControllerFillHeadPullIntoDescriptor","ReadableByteStreamControllerInvalidateBYOBRequest","ReadableByteStreamControllerFillPullIntoDescriptorFromQueue","ReadableByteStreamControllerShiftPendingPullInto","ReadableByteStreamControllerCommitPullIntoDescriptor","ReadableByteStreamControllerRespondInClosedState","remainderSize","ReadableByteStreamControllerRespondInReadableState","ReadableByteStreamControllerClearPendingPullIntos","underlyingByteSource","SetUpReadableByteStreamController","IsReadableStreamBYOBReader","ReadableStreamBYOBReader","byobReaderBrandCheckException","BYTES_PER_ELEMENT","ReadableStreamAddReadIntoRequest","ReadableByteStreamControllerPullInto","ReadableStreamBYOBReaderRead","underlyingSource","InitializeReadableStream","SetUpReadableByteStreamControllerFromUnderlyingSource","SetUpReadableStreamDefaultController","SetUpReadableStreamDefaultControllerFromUnderlyingSource","streamBrandCheckException$1","getReader","AcquireReadableStreamBYOBReader","pipeThrough","readable","isAbortSignal","ReadableStreamPipeTo","pipeTo","tee","createArrayFromList","cloneForBranch2","reason1","reason2","branch1","branch2","resolveCancelPromise","reading","canceled1","canceled2","cancelPromise","value2","CreateReadableStream","compositeReason","cancelResult","ReadableStreamTee","AcquireReadableStreamAsyncIterator","readRequest","readIntoRequest","ByteLengthQueuingStrategy","CountQueuingStrategy","TransformStream","transformer","writableStrategy","readableStrategy","writableSizeFunction","writableHighWaterMark","readableSizeFunction","readableHighWaterMark","writableType","writableSizeAlgorithm","readableType","startPromise_resolve","readableSizeAlgorithm","startPromise","_transformStreamController","_backpressureChangePromise","_writable","TransformStreamDefaultControllerPerformTransform","TransformStreamDefaultSinkWriteAlgorithm","TransformStreamError","TransformStreamDefaultSinkAbortAlgorithm","_readable","flushPromise","_flushAlgorithm","TransformStreamDefaultControllerClearAlgorithms","readableController","TransformStreamDefaultSinkCloseAlgorithm","TransformStreamSetBackpressure","TransformStreamDefaultSourcePullAlgorithm","TransformStreamErrorWritableAndUnblockWrite","CreateWritableStream","_backpressureChangePromise_resolve","InitializeTransformStream","TransformStreamDefaultController","transformAlgorithm","TransformStreamDefaultControllerEnqueue","transformResultE","transformMethod","flushAlgorithm","_controlledTransformStream","_transformAlgorithm","SetUpTransformStreamDefaultController","SetUpTransformStreamDefaultControllerFromTransformer","startResult","IsTransformStream","streamBrandCheckException$2","IsTransformStreamDefaultController","defaultControllerBrandCheckException$1","TransformStreamDefaultControllerError","terminate","TransformStreamDefaultControllerTerminate","ReadableStreamDefaultControllerHasBackpressure","collectionStrong","InternalMetadataModule","inheritIfRequired","common","IS_MAP","IS_WEAK","ADDER","NativeConstructor","NativePrototype","exported","fixMethod","nativeMethod","getConstructor","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","setStrong","FREEZING","METADATA","isExtensible","setMetadata","objectID","weakData","fastKey","getWeakData","onFreeze","preventExtensions","Wrapper","NewTargetPrototype","internalStateGetterFor","getEntry","ot","callbackfn","ITERATOR_NAME","getInternalCollectionState","InternalWeakMap","collectionWeak","enforceIternalState","IS_IE11","$WeakMap","WeakMapPrototype","nativeDelete","nativeHas","nativeGet","nativeSet","frozen","ArrayIterationModule","$has","uncaughtFrozenStore","UncaughtFrozenStore","findUncaughtFrozen","arraySpeciesCreate","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","specificCreate","originalArray","nativeFromCodePoint","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","MAXIMUM_ALLOWED_INDEX_EXCEEDED","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","spreadable","E","foo","nativeObjectCreate","getOwnPropertyNamesExternal","wrappedWellKnownSymbolModule","defineWellKnownSymbol","$forEach","SYMBOL","TO_PRIMITIVE","$stringify","nativeGetOwnPropertyNames","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","QObject","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","$defineProperty","$defineProperties","$getOwnPropertySymbols","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","IS_OBJECT_PROTOTYPE","for","keyFor","sym","useSetter","useSimple","space","$replacer","windowNames","getWindowNames","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","native","desc","$padStart","IS_END","fillString","fillLen","stringFiller","fillStr","intMaxLength","$padEnd","$values","TO_ENTRIES","PDFPageProxy","PDFDocumentProxy","_interopRequireDefault","_font_loader","_canvas","_message_handler","_metadata","_transport_stream","_webgl","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_e3","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_arr","_n","_s","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","createPDFNetworkStream","pdfNetworkStreamFactory","PDFDocumentLoadingTask","rangeTransport","worker","pdfBytes","rangeChunkSize","CMapReaderFactory","ignoreErrors","stopAtErrors","fontExtraProperties","pdfBug","maxImageSize","disableFontFace","disableRange","disableStream","disableAutoFetch","workerParams","workerPort","fromPort","_worker","docId","workerIdPromise","_fetchDocument","networkStreamPromise","networkStream","PDFDataTransportStream","initialData","progressiveDone","httpHeaders","withCredentials","_slicedToArray","workerId","messageHandler","MessageHandler","postMessageTransfers","WorkerTransport","_transport","_capability","pdfDataRangeTransport","sendWithPromise","apiVersion","docBaseUrl","nextDocumentId","onPassword","onUnsupportedFeature","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","total","_step3","_iterator3","_this4","_step4","_iterator4","pdfInfo","_pdfInfo","getPageIndex","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","openAction","getAttachments","getJavaScript","getOutline","getPermissions","getMetadata","downloadInfoCapability","getStats","startCleanup","fingerprint","loadingParams","pageIndex","pageInfo","_pageIndex","_pageInfo","_stats","_pdfBug","commonObjs","objs","PDFObjects","cleanupAfterRender","pendingCleanup","intentStates","_ref3$rotation","_ref3$offsetX","_ref3$offsetY","_ref3$dontFlip","_ref4$intent","intent","annotationsPromise","annotationsIntent","getAnnotations","_this5","canvasContext","viewport","_ref5$intent","_ref5$enableWebGL","enableWebGL","_ref5$renderInteracti","renderInteractiveForms","_ref5$transform","_ref5$imageLayer","imageLayer","_ref5$canvasFactory","canvasFactory","_ref5$background","background","renderingIntent","intentState","streamReaderCancelTimeout","canvasFactoryInstance","webGLContext","WebGLContext","enable","displayReadyCapability","operatorList","fnArray","argsArray","lastChunk","_pumpOperatorList","renderTasks","internalRenderTask","_tryCleanup","_abortOperatorList","timeEnd","InternalRenderTask","useRequestAnimationFrame","renderTask","transparency","initializeGraphics","operatorListChanged","opListTask","opListReadCapability","_ref6$normalizeWhites","normalizeWhitespace","_ref6$disableCombineT","disableCombineTextItems","TEXT_CONTENT_CHUNK_SIZE","sendWithStream","combineTextItems","textContent","readableStream","streamTextContent","_textContent$items","_toConsumableArray","pump","_this6","pageCache","waitOn","renderCompleted","resetStats","_this7","operatorListChunk","_this8","streamReader","_ref8","_renderPageChunk","_ref9","_this9","_ref9$force","userUnit","_listeners","_defer","_deferred","transfers","_this10","cloned","cloneValue","pdfWorkerPorts","isWorkerDisabled","fallbackWorkerSrc","nextFakeWorkerId","fakeWorkerCapability","pdfjsFilePath","currentScript","workerSrc","mainWorkerMessageHandler","pdfjsWorker","WorkerMessageHandler","loader","_ref10","getMainThreadWorkerMessageHandler","eval","_getWorkerSrc","_ref11","_ref11$name","_ref11$port","_ref11$verbosity","_port","_webWorker","_messageHandler","_initializeFromPort","_this11","Worker","createCDNWrapper","terminateEarly","onWorkerError","_setupFakeWorker","supportTransfers","sendTest","testObj","_this12","setupFakeWorkerGlobal","workerHandler","setup","fontLoader","FontLoader","_onUnsupportedFeature","_params","destroyCapability","_passwordCapability","_networkStream","_fullReader","_lastProgress","pagePromises","setupMessageHandler","_this13","_destroy","terminated","cancelAllRequests","_this14","sink","getFullReader","onPull","_ref12","headersCapability","fullReader","headersReady","isStreamingSupported","isRangeSupported","contentLength","rangeReader","getRangeReader","_ref13","_ref14","_numPages","_startRenderPage","exportedData","exportedError","fontRegistry","FontInspector","registerFont","fontAdded","FontFaceObject","_data2","imageData","pageProxy","fetched","builtInCMap","_ref15","featureId","_this15","_this16","Metadata","contentDispositionFilename","filename","_this17","_objs","objId","_ensureObj","RenderTask","_internalRenderTask","onContinue","canvasInRendering","_ref16","_ref16$useRequestAnim","_ref16$pdfBug","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","StepperManager","stepper","nextBreakPoint","getNextBreakPoint","_this$params","gfx","CanvasGraphics","beginDrawing","endDrawing","updateOperatorList","_this18","requestAnimationFrame","_next2","executeOperatorList","BaseFontLoader","nativeFontFaces","styleElement","nativeFontFace","fonts","rule","styleSheet","sheet","insertRule","cssRules","_bind","attached","missingFile","isFontLoadingAPISupported","createNativeFontFace","addNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","rules","fontsToLoad","supported","_BaseFontLoader","GenericFontLoader","loadingContext","requests","nextRequestId","loadTestFontId","otherRequest","_loadTestFont","XXXX_VALUE","checksum","int32","spliceString","loadedName","visibility","span","fontFamily","fillText","getImageData","isFontReady","translatedData","_ref2$isEvalSupported","_ref2$disableFontFace","_ref2$ignoreErrors","_ref2$onUnsupportedFe","_ref2$fontRegistry","compiledGlyphs","FontFace","mimetype","character","cmds","js","_ii","compatibilityParams","_pattern_helper","MAX_GROUP_SIZE","FULL_CHUNK_HEIGHT","mozCurrentTransform","_originalSave","_originalRestore","_originalRotate","_originalScale","_originalTranslate","translate","_originalTransform","_originalSetTransform","setTransform","_transformMatrix","_transformStack","ad_bc","bc_ad","old","angle","cosValue","cos","sinValue","sin","CachedCanvases","getCanvas","trackTransform","canvasEntry","addContextCurrentTransform","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","fillColor","strokeColor","patternFill","fillAlpha","strokeAlpha","lineWidth","activeSMask","resumeSMaskCtx","setCurrentPoint","canvasCtx","stateStack","pendingClip","pendingEOFill","xobjs","groupStack","processingType3","baseTransform","baseTransformStack","groupLevel","smaskStack","smaskCounter","tempSMask","cachedCanvases","_cachedGetSinglePixelWidth","imgData","ImageData","putImageData","destPos","thisChunkHeight","elemsInThisChunk","partialChunkHeight","fullChunks","totalChunks","chunkImgData","createImageData","srcPos","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","srcDiff","kEnd","kEndUnrolled","srcByte","elem","sourceCtx","destCtx","setLineDash","getLineDash","lineDashOffset","strokeStyle","fillStyle","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","r0","g0","b0","alpha","alpha_","maskData","layerData","transferMap","layerCtx","maskCtx","scaleX","scaleY","backdrop","isEnabled","composed","composeSMask","subtype","drawImage","composeFn","hasBackdrop","composeSMaskLuminosity","composeSMaskAlpha","row","chunkHeight","composeSMaskBackdrop","genericComposeSMask","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","_ref$transparency","_ref$background","fillRect","transparentCanvas","compositeCtx","resetCtxToDefault","beginLayout","executionStartIdx","continueCallback","argsArrayLen","fnId","chunkOperations","endTime","steps","breakIt","depObjId","objsPool","endSMaskGroup","endLayout","dashArray","dashPhase","flatness","states","suspendSMaskGroup","beginSMaskGroup","scratchCanvas","currentCtx","currentTransform","groupCtx","startTransformInverse","mozCurrentTransformInverse","copyCtxState","deltaTransform","clearRect","resumeSMaskGroup","ops","getSinglePixelWidth","xw","yh","bezierCurveTo","consumePath","singularValueDecompose2dScale","getPattern","needRestore","pendingTextPaths","beginPath","addToPath","spacing","fontRefName","fontObj","fontDirection","isType3Font","bold","italic","typeface","fallbackName","browserFontSize","rise","paintChar","patternTransform","fillStrokeMode","isAddToPathSet","getPathGenerator","zt","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","glyph","scaledX","scaledY","vmetric","vx","restoreNeeded","isSpace","fontChar","accent","remeasure","measuredWidth","measureText","characterScaleX","isInFont","spacingLength","charProcOperatorList","operatorListId","transformed","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","IR","TilingPattern","createCanvasGraphics","getShadingPatternFromIR","makeCssRgb","patternIR","inv","bl","br","ul","x0","y0","matrix","bbox","isolated","knockout","bounds","getAxialAlignedBoundingBox","intersect","drawnWidth","drawnHeight","cacheId","imageSmoothingEnabled","mozImageSmoothingEnabled","img","isPatternFill","compiled","j0","width1","points","POINT_TYPES","lineSize","data0","outlines","pp","coords","p0","kk","ll","compileType3Glyph","maskCanvas","putBinaryImageMask","positions","images","imgToPaint","tmpCanvas","widthScale","heightScale","HTMLElement","tmpCtx","putBinaryImageData","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","getCanvasPosition","appendImage","inverse","shadingIR","ShadingIRs","fromIR","Path2D","region","RadialAxial","colorStops","r1","grad","applyBoundingBox","createLinearGradient","createRadialGradient","addColorStop","createMeshCanvas","tmp","colors","rowSize","x3","y3","xa","car","cag","cab","xb","cbr","cbg","cbb","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","_k2","Z","$t","x1_","x2_","figure","ps","cs","verticesPerRow","rows","cols","drawTriangle","combinesScale","figures","boundsWidth","boundsHeight","paddedWidth","BORDER_SIZE","paddedHeight","drawFigures","drawFigure","Mesh","owner","matrixScale","temporaryPatternCanvas","createPattern","Dummy","canvasGraphicsFactory","xstep","ystep","paintType","tilingType","createPatternCanvas","curMatrixScale","combinedScale","dimx","getSizeAndScale","dimy","graphics","setFillAndStrokeStyleToContext","clipBbox","realOutputSize","maxSize","cssColor","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","_processStreamMessage","wrapReason","cbSourceName","cbTargetName","_createStreamSink","actionName","ah","_postMessage","queueingStrategy","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pullCapability","cancelCapability","streamSink","isCancelled","lastDesiredSize","sinkCapability","_deleteStreamController","_deleteStreamController2","_xml_parser","_repair","xmlDocument","SimpleXMLParser","parseFromString","_metadataMap","_parse","codes","rdf","nodeName","firstChild","nextSibling","jj","_step$value","_superPropBase","ch","XMLParserBase","entity","onResolveEntity","isWhitespace","skipWs","attrValue","attrName","attrEndChar","attrEndIndex","_resolveEntities","attrStart","ch2","onEndElement","pi","_parseProcessingInstruction","onPi","onComment","onCdata","q2","complexDoctype","doctypeContent","onDoctype","_parseContent","onBeginElement","onText","SimpleDOMNode","nodeValue","_XMLParserBase","_currentFragment","_stack","_errorCode","parseXml","isWhitespaceString","lastElement","_queuedChunks","_progressiveDone","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","addRangeListener","_onReceiveData","addProgressListener","_onProgress","addProgressiveReadListener","addProgressiveDoneListener","_onProgressiveDone","transportReady","_enqueue","_begin","firstReader","queuedChunks","PDFDataTransportStreamReader","_progressiveDataLength","PDFDataTransportStreamRangeReader","requestDataRange","_loaded","_stream","_done","_filename","_requests","_headersReady","_read","requestCapability","_end","_queuedChunk","_removeRangeReader","_read2","_ref$enable","_enabled","WebGLUtils","tryInitGL","gl","shaderType","shader","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","errorMsg","getShaderInfoLog","loadShader","VERTEX_SHADER","FRAGMENT_SHADER","shaders","program","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","textureId","activeTexture","texture","createTexture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MIN_FILTER","NEAREST","TEXTURE_MAG_FILTER","texImage2D","RGBA","UNSIGNED_BYTE","currentGL","currentCanvas","premultipliedalpha","smaskCache","figuresCache","generateGL","createVertexShader","createFragmentShader","useProgram","resolutionLocation","getUniformLocation","positionLocation","getAttribLocation","backdropLocation","subtypeLocation","texCoordLocation","texLayerLocation","texMaskLocation","texCoordBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","STATIC_DRAW","enableVertexAttribArray","vertexAttribPointer","FLOAT","uniform1i","initSmaskGL","drawingBufferWidth","drawingBufferHeight","uniform2f","X","uniform4f","TEXTURE0","maskTexture","TEXTURE1","clearColor","BLEND","blendFunc","ONE","ONE_MINUS_SRC_ALPHA","COLOR_BUFFER_BIT","drawArrays","TRIANGLES","deleteTexture","deleteBuffer","scaleLocation","offsetLocation","colorLocation","initFiguresGL","coordsMap","colorsMap","pIndex","cIndex","col","coordsBuffer","colorsBuffer","AnnotationElementFactory","annotationType","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","downloadManager","imageResourcesPath","svgFactory","_createContainer","transformOrigin","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","popup","PopupElement","modificationDate","contents","hideWrapper","_AnnotationElement","className","newWindow","externalLinkRel","externalLinkEnabled","_bindNamedAction","_bindLink","destination","getDestinationHash","navigateTo","getAnchorUrl","executeNamedAction","_AnnotationElement2","hasPopup","alt","dataset","l10nId","l10nArgs","_createPopup","_AnnotationElement3","_WidgetAnnotationElem","hasAppearance","fieldValue","multiLine","disabled","readOnly","fieldName","maxLen","comb","combWidth","letterSpacing","verticalAlign","_setTextStyle","textAlignment","direction","fontWeight","fontStyle","_WidgetAnnotationElem2","_WidgetAnnotationElem3","buttonValue","_LinkAnnotationElemen","_WidgetAnnotationElem4","_super8","selectElement","combo","multiSelect","multiple","option","optionElement","displayValue","exportValue","_AnnotationElement4","_super9","parentType","selector","parentId","parentElement","parentLeft","parentWidth","pinned","hideElement","dateObject","toDateObject","toLocaleDateString","toLocaleTimeString","_formatContents","_toggle","_show","_hide","lines","pin","hasAttribute","removeAttribute","unpin","_AnnotationElement5","_super10","_AnnotationElement6","_super11","line","lineCoordinates","_AnnotationElement7","_super12","square","_AnnotationElement8","_super13","circle","_AnnotationElement9","_super14","containerClassName","svgElementName","vertices","coordinate","polyline","_PolylineAnnotationEl","_super15","_AnnotationElement10","_super16","_AnnotationElement11","_super17","inkLists","_AnnotationElement12","_super18","_AnnotationElement13","_super19","_AnnotationElement14","_super20","_AnnotationElement15","_super21","_AnnotationElement16","_super22","_AnnotationElement17","_super23","_this6$data$file","dispatch","_download","downloadData","_step5","sortedAnnotations","popupAnnotations","_iterator5","annotations","_sortedAnnotations","_step6","_iterator6","NonWhitespaceRegexp","geom","textDiv","textDivProperties","canvasWidth","originalTransform","paddingBottom","paddingLeft","paddingRight","paddingTop","_textDivs","isAllWhitespace","_textDivProperties","_viewport","atan2","fontName","PI","fontHeight","fontAscent","ascent","descent","_fontInspectorEnabled","shouldScaleText","absScaleX","absScaleY","_textContentStream","_layoutText","_enhanceTextSelection","angleCos","angleSin","divWidth","divHeight","_bounds","_canceled","textDivs","textDivsLength","_renderingDone","horizon","boundary","x1New","x2New","horizonPart","affectedBoundary","maxXNew","xNew","changedHorizon","lastBoundary","useBoundary","used","textContentStream","textContentItemsStr","enhanceTextSelection","_textContent","_container","_textContentItemsStr","_layoutTextLastFontSize","_layoutTextLastFontFamily","_layoutTextCtx","_renderTimer","TextLayerRenderTask","_processItems","styleCache","appendText","_textDiv$style","_render","mozOpaque","expandTextDivs","expandDivs","expanded","boxes","box","expandBoundsLTR","expandBounds","divProperties","boxScale","findPositiveMin","expand","transformBuf","paddingBuf","divProps","U","padding","renderParameters","pf","toFixed","pm","acos","SVG_DEFAULTS","convertImgDataToPng","PNG_HEADER","crcTable","crc","crc32","literals","maxBlockLength","deflateBlocks","idat","adler","adler32","isMask","bitDepth","colorType","offsetLiterals","offsetBytes","_y","ihdr","deflateSyncUncompressed","deflateSync","CHUNK_WRAPPER_SIZE","writePngChunk","SVGExtraState","dependencies","activeClipUrl","clipGroup","maskId","clipCount","maskCount","shadingCount","transformMatrix","transformStack","extraStack","embedFonts","embeddedFonts","cssStyle","_operatorIdMapping","tgrp","executeOpTree","_loop","svgElement","loadDependencies","convertOpList","operatorIdMapping","opList","opTree","opListElement","opListToTree","opTreeElement","lineMatrix","xcoords","ycoords","tspan","setAttributeNS","txtElement","txtgrp","charWidth","Tt","_setStrokeAttributes","_ensureTransformGroup","defs","addFontStyle","_makeColorN_Pattern","inverseTransform","_makeShadingPattern","_makeTilingPattern","_args$","tilingId","_Util$applyTransform2","tx0","ty0","_Util$applyTransform4","tx1","ty1","_Util$singularValueDe2","txstep","tystep","tiling","gradient","shadingId","point0","point1","focalPoint","circlePoint","focalRadius","circleRadius","colorStop","getAttributeNS","clipId","clipPath","clipElement","cloneNode","_step7","_iterator7","_step7$value","setStrokeAlpha","setFillAlpha","lineWidthScale","imgSrc","cliprect","imgEl","definitions","rootGroup","_ensureClipGroup","_network_utils","fs","fileUriRegex","sourceUrl","parseUrl","isHttp","isFsUrl","_rangeRequestReaders","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_url","_disableRange","_rangeChunkSize","_readableStream","_readCapability","_headersCapability","_error","BaseRangeReader","_BaseFullReader","_setReadableStream","getResponseHeader","_validateRangeRequest","validateRangeRequestCapabilities","suggestedLength","allowRangeRequests","extractFilenameFromHeader","createRequestOptions","_BaseRangeReader","_httpHeaders","Range","K","_BaseFullReader2","lstat","createReadStream","_BaseRangeReader2","createResponseStatusError","contentDisposition","_content_disposition","getFilenameFromContentDispositionHeader","returnValues","validateResponseStatus","needsEncodingFixup","toParamRegExp","rfc2616unquote","fixupEncoding","rfc2047decode","rfc5987decode","contentDispositionStr","_match2","quot","_n2","_matches$_n","_quot","_part","rfc2231getparam","_filename2","attributePattern","flags","encoding","decoder","TextDecoder","textdecode","quotindex","extvalue","encodingend","hex","NetworkManager","getXhr","currXhrId","pendingRequests","xhrId","pendingRequest","setRequestHeader","expectedStatus","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","getArrayBuffer","rangeHeader","_source","_manager","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","_onRangeRequestReaderClosed","_onHeadersReceived","_onDone","_onError","_fullRequestId","requestFull","_headersReceivedCapability","_cachedChunks","fullRequestXhrId","fullRequestXhr","getRequestXhr","lengthComputable","isPendingRequest","_requestId","requestRange","_close","abortController","credentials","redirect","PDFFetchStreamReader","PDFFetchStreamRangeReader","_withCredentials","AbortController","_abortController","_headers","createHeaders","createFetchOptions","_yield$this$_reader$r","_yield$this$_reader$r2","_annotation_layer_builder","AnnotationLayerBuilder","DefaultAnnotationLayerFactory","_text_layer_builder","DefaultTextLayerFactory","TextLayerBuilder","_ui_utils","NullL10n","ProgressBar","_pdf_link_service","SimpleLinkService","_download_manager","DownloadManager","_genericl10n","GenericL10n","_pdf_find_controller","_pdf_history","PDFHistory","_pdf_page_view","PDFPageView","_pdf_single_page_viewer","_pdf_viewer","_pdfjsLib","pageDiv","pdfPage","_ref$imageResourcesPa","_ref$renderInteractiv","_ref$l10n","l10n","_cancelled","pdfjsLib","isValidRotation","isValidScrollMode","ScrollMode","isValidSpreadMode","SpreadMode","isPortraitOrientation","getPDFFileNameFromURL","defaultFilename","isDataSchema","reFilename","splitURI","suggestedFilename","noContextMenuHandler","preventDefault","parseQueryString","param","backtrackBeforeAllVisibleElements","getVisibleElements","scrollEl","sortByVisibility","horizontal","offsetTop","offsetLeft","numViews","firstVisibleElementInd","binarySearchFirstItem","isElementRightAfterViewLeft","isElementBottomAfterViewTop","lastEdge","currentWidth","currentHeight","viewWidth","viewHeight","viewRight","viewBottom","hiddenHeight","hiddenWidth","percent","pc","roundToDivide","getPageSizeInches","changeOrientation","approximateFraction","xinv","x_","getOutputScale","pixelRatio","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","sx","scaled","scrollIntoView","spot","skipOverflowHiddenElements","scrollHeight","scrollWidth","overflow","_scaleY","_scaleX","watchScroll","viewAreaElement","debounceScroll","rAF","currentX","lastX","currentY","lastY","down","_eventHandler","normalizeWheelEventDelta","deltaX","deltaY","deltaMode","MOUSE_PIXELS_PER_LINE","waitOnEventOrTimeout","_ref2$delay","_off","WaitOnType","EVENT","_on","timeoutHandler","TIMEOUT","moveToEndOfArray","condition","moved","animationStarted","TextLayerMode","RendererType","PresentationModeState","VERTICAL_PADDING","SCROLLBAR_PADDING","MAX_AUTO_SCALE","UNKNOWN_SCALE","MAX_SCALE","MIN_SCALE","DEFAULT_SCALE","DEFAULT_SCALE_VALUE","AutoPrintRegExp","NORMAL","CHANGING","FULLSCREEN","CANVAS","SVG","DISABLE","ENABLE","ENABLE_ENHANCE","VERTICAL","HORIZONTAL","WRAPPED","ODD","EVEN","minIndex","currentIndex","elt","pageTop","getLanguage","getDirection","fallback","_context3","formatL10nValue","_callee3","_context4","_callee4","external","eventListeners","externalListeners","units","bar","_indeterminate","_percent","viewer","scrollbarWidth","_updateBar","_ref$externalLinkTarg","_ref$externalLinkRel","_ref$externalLinkEnab","_ref$ignoreDestinatio","ignoreDestinationZoom","_ignoreDestinationZoom","pdfDocument","pdfHistory","_pagesRefCache","goToDestination","namedDest","explicitDest","destRef","_cachedPageNumber","cachePageRef","pushCurrentPosition","destArray","phrase","zoomArgs","zoomArg","zoomArgNumber","allowNegativeOffset","pagemode","nameddest","destLength","allowNull","isValidExplicitDestination","back","forward","pageNum","pageRef","refStr","isPageVisible","_ref$findController","_ref$enhanceTextSelec","renderingDone","pageIdx","textLayerRenderTask","_onUpdateTextLayerMatches","_bindMouse","endOfContent","numTextDivs","textLayerFrag","createDocumentFragment","_finishRendering","_updateMatches","matchesLength","iIndex","queryLen","mm","matchIdx","divIdx","D","isSelectedPage","selected","selectedMatchIdx","prevEnd","infinity","isSelected","highlightSuffix","scrollMatchIntoView","matchIndex","appendTextToDiv","n0","n1","fromOffset","toOffset","clearedUntilDivIdx","highlightMatches","_convertMatches","pageMatches","pageMatchesLength","_renderMatches","expandDivsTimer","adjustTop","getPropertyValue","divBounds","pageY","DISABLE_CREATE_OBJECT_URL","viewerCompatibilityParams","disableCreateObjectURL","blobUrl","download","_ref$disableCreateObj","msSaveBlob","downloadUrl","maxTouchPoints","isAndroid","isIOS","isIOSChrome","maxCanvasPixels","webL10n","lang","_lang","_ready","setLanguage","_getLanguage","_getDirection","_translate","_x4","gL10nData","gTextData","gTextProp","gLanguage","gMacros","gReadyState","onSuccess","onFailure","overrideMimeType","successCallback","failureCallback","baseURL","xhrLoadText","parsedPropertiesCallback","dictionary","reBlank","reComment","reSection","reImport","reSplit","rawText","extendedSyntax","parsedRawLinesCallback","currentLang","genericLang","skipLang","loadImport","nextEntry","evalString","parseRawLines","parseProperties","langLinks","querySelectorAll","langCount","onResourceLoaded","gResourceCount","L10nResourceLink","dict","getL10nDictionary","locales","default_locale","defaultLocale","anyCaseLang","parseResource","rv","substArguments","substIndexes","reMatch","macroName","paramName","Mt","macro","matched_text","getAttribute","getL10nAttributes","getL10nData","childElementCount","getChildElementCount","textNode","insertBefore","plural","_pluralRules","pluralRules","isBetween","af","ak","am","ar","asa","az","be","bem","bez","bg","bh","bm","bn","bo","brx","bs","cgg","cy","da","de","dv","dz","ee","eo","es","eu","fa","ff","fi","fil","fr","fur","fy","ga","gd","gsw","gu","guw","gv","ha","haw","he","hi","hr","hu","ig","iu","ja","jmc","jv","ka","kab","kaj","kcg","kde","kea","kl","km","kn","ko","ksb","ksh","ku","kw","lag","lb","lo","lv","mas","mg","mk","ml","mo","mr","mt","my","nah","naq","nb","nd","ne","nn","no","nso","ny","nyn","om","or","pa","pap","pt","rm","ro","rof","ru","rwk","sah","saq","se","seh","ses","sg","sh","shi","sk","sl","sma","smi","smj","smn","sms","so","sq","sr","ss","ssy","sv","sw","syr","ta","te","teo","th","ti","tig","tk","tl","tn","tzm","uk","ve","vi","vun","wa","wae","xh","xog","yo","zh","zu","getPluralRules","fallbackString","getText","loadLocale","shortCode","getTranslatableChildren","elementCount","translateElement","getReadyState","FindState","_pdf_find_utils","FOUND","NOT_FOUND","PENDING","CHARACTERS_TO_NORMALIZE","normalizationRegex","_linkService","_eventBus","_onFindBarClose","_pdfDocument","_firstPageCapability","_shouldDirtyMatch","_dirtyMatch","_updateUIState","_extractText","findbarClosed","_highlightMatches","pendingTimeout","_findTimeout","_nextMatch","_updateAllPages","_ref2$element","_ref2$pageIndex","_ref2$matchIndex","_scrollMatches","_selected","_pageMatches","_pageMatchesLength","_offset","_extractTextPromises","_pageContents","_matchesCountTotal","_pagesToSearch","_pendingFindMatches","_resumePageIdx","matchesWithLength","currentElem","skipped","prevElem","matchLength","isSubTerm","startIdx","getCharacterType","endIdx","pageContent","entireWord","_isEntireWord","queryArray","subquery","subqueryLen","_prepareMatches","_query","_this$_state","_calculatePhraseMatch","_calculateWordMatch","_updatePage","_nextPageMatch","pageMatchesCount","_updateUIResultsCount","extractTextCapability","getTextContent","textItems","currentPageIndex","_calculateMatch","_updateMatch","_advanceOffsetPage","numMatches","_matchesReady","previousPage","_this$_selected","matchesCount","_requestMatchesCount","_rawQuery","_normalizedQuery","isAlphabeticalScript","isAscii","isAsciiSpace","CharacterType","SPACE","isAsciiAlpha","isAsciiDigit","ALPHA_LETTER","PUNCT","isThai","THAI_LETTER","isHan","HAN_LETTER","isKatakana","KATAKANA_LETTER","isHiragana","HIRAGANA_LETTER","isHalfwidthKatakana","HALFWIDTH_KATAKANA_LETTER","isDestHashesEqual","isDestArraysEqual","_initialized","_fingerprint","_boundEvents","_isViewerInPresentationMode","_isPagesLoaded","onPagesLoaded","_ref2$resetHistory","resetHistory","_ref2$updateUrl","updateUrl","reInitialized","_updateUrl","_bindEvents","_popStateInProgress","_blockHashChange","_currentHash","getCurrentHash","_numPositionUpdates","_uid","_maxUid","_destination","_position","_isValidState","_this$_parseCurrentHa","_parseCurrentHash","_pushOrReplaceState","_updateInternalState","_initialRotation","_initialBookmark","_pageHide","_unbindEvents","_updateViewareaTimeout","_ref3$namedDest","forceReplace","_tryPushCurrentPosition","newUrl","shouldReplace","newState","temporary","perfEntry","performance","getEntriesByType","removeTemporary","checkNameddest","pdfOpenParams","newHash","hashChanged","jt","setHash","_this$_parseCurrentHa2","updateViewarea","_updateViewarea","popState","_popState","pageHide","destHash","pushHash","firstDest","secondDest","isEntryEqual","_pdf_rendering_queue","MAX_CANVAS_PIXELS","defaultViewport","renderingId","pageLabel","pdfPageRotate","hasRestrictedScaling","useOnlyCssZoom","renderingQueue","textLayerFactory","annotationLayerFactory","paintTask","paintedViewportMap","renderingState","RenderingStates","INITIAL","annotationLayer","textLayer","zoomLayer","removeFromDOM","zoomLayerCanvas","keepZoomLayer","keepAnnotations","cancelRendering","currentZoomLayerNode","currentAnnotationNode","_resetZoomLayer","loadingIconDiv","isScalingRestricted","outputScale","redrawAnnotations","relativeRotation","absRotation","textLayerViewport","textAbsRotation","transX","transY","convertToPdfPoint","FINISHED","RUNNING","canvasWrapper","createTextLayerBuilder","renderContinueCallback","cont","isHighestPriority","PAUSED","finishPaintTask","paintOnSvg","paintOnCanvas","onRenderContinue","resultPromise","setTextContentStream","createAnnotationLayerBuilder","renderCapability","isCanvasHidden","showCanvas","actualSizeViewport","maxScale","sfx","sfy","ensureNotCancelled","getOperatorList","getSVG","PDFRenderingQueue","pdfThumbnailViewer","onIdle","highestPriorityPage","idleTimeout","printing","isThumbnailViewEnabled","currentlyVisiblePages","forceRendering","scrolledDown","visibleViews","numVisible","isViewFinished","nextPageIndex","previousPageIndex","draw","renderHighestPriority","_base_viewer","_BaseViewer","_ensurePageViewVisible","_previousPageNumber","_shadowViewer","_updateScrollDown","pageView","_pages","previousPageView","viewerNodes","_ref$pageSpot","pageSpot","_ref$pageNumber","_setCurrentPageNumber","scroll","_getCurrentVisiblePage","visiblePages","BaseViewer","resize","newSize","pagesToKeep","pageIdsToKeep","iMax","oldScale","newScale","_name","firstElementChild","enablePrintAutoRotate","defaultRenderingQueue","_scrollUpdate","presentationModeState","_onBeforeDraw","_onAfterDraw","_resetView","resetCurrentPageView","_resetCurrentPageView","_pageLabels","_getVisiblePages","_onePageRenderedCapability","_cancelRendering","firstPagePromise","_pagesCapability","_buffer","settled","firstPdfPage","currentScale","_viewerElement","firstPageView","setPdfPage","_spreadMode","_updateSpreadMode","_onePageRenderedOrForceFetch","getPagesLeft","_pageNum","setPageLabel","_currentScale","_currentScaleValue","PDFPageViewBuffer","_location","_pagesRotation","_pagesRequests","_scrollMode","_updateScrollMode","noScroll","preset","isSameScale","isInPresentationMode","isChangingPresentationMode","_setScaleUpdatePages","currentPage","noPadding","hPadding","vPadding","_isScrollModeHorizontal","pageWidthScale","pageHeightScale","horizontalScale","_scrollIntoView","_ref3$destArray","_ref3$allowNegativeOf","_ref3$ignoreDestinati","pageWidth","pageHeight","currentScaleValue","boundingRect","convertToViewportPoint","firstPage","normalizedScaleValue","getPagePoint","intLeft","intTop","numVisiblePages","newCacheSize","_updateHelper","_updateLocation","getHighestPriority","_ensurePdfPageLoaded","renderView","pagesOverview","isFirstPagePortrait","scrollMode","pages","parity","_iMax","_this$container","currentId","stillFullyVisible","__WEBPACK_EXTERNAL_MODULE__0__","parentHotUpdateCallback","webpackHotUpdatequillBetterTable","chunkId","moreModules","hotAvailableFilesMap","hotRequestedFilesMap","hotUpdate","hotWaitingFiles","hotChunksLoading","hotUpdateDownloaded","hotAddUpdateChunk","hotCurrentChildModule","hotApplyOnUpdate","hotCurrentHash","hotCurrentModuleData","hotCurrentParents","hotCurrentParentsTemp","__webpack_require__","parents","ObjectFactory","hotStatus","hotSetStatus","finishChunkLoading","hotWaitingFilesMap","hotEnsureUpdateChunk","_acceptedDependencies","_declinedDependencies","_selfAccepted","_selfDeclined","_disposeHandlers","_main","accept","dep","decline","dispose","addDisposeHandler","removeDisposeHandler","hotCheck","hotApply","hotStatusHandlers","addStatusHandler","removeStatusHandler","newStatus","hotDeferred","hotUpdateNewHash","requestTimeout","requestPath","hotDownloadManifest","hotDownloadUpdateChunk","outdatedModules","toModuleId","updateModuleId","outdatedDependencies","queueItem","addAllToSet","appliedUpdate","warnUnexpectedRequire","abortError","doApply","doDispose","chainInfo","getAffectedStuff","onDeclined","ignoreDeclined","onUnaccepted","ignoreUnaccepted","onAccepted","onDisposed","moduleOutdatedDependencies","outdatedSelfAcceptedModules","errorHandler","installedChunks","hotDisposeChunk","disposeHandlers","onErrored","dependencyId","ignoreErrored","err2","hotCreateModule","hotCreateRequire","__webpack_exports__","external_commonjs_quill_commonjs2_quill_amd_quill_root_Quill_","external_commonjs_quill_commonjs2_quill_amd_quill_root_Quill_default","domNode","targetRect","containerRect","uselessKeys","acc","composedPath","table","quill","initColTool","tableViewRect","updateToolCells","css","createToolCell","toolCell","resizeHolder","tableContainer","CellsInFirstRow","tableCols","colGroup","cellsNumber","cell","cellColspan","formats","colspan","existCells","colWidth","statics","blotName","Vn","addColCellHolderHandler","$holder","dragging","width0","tableRect","cellRect","$helpLine","handleDrag","clientX","Bi","handleMouseup","colIndex","colBlot","updateTableWidth","tableSelection","getModule","clearSelection","colToolCells","Block","import","CELL_IDENTITY_KEYS","CELL_ATTRIBUTES","tagName","rowspan","header_Header","Xe","replaceWith","TableCellLine","optimize","TableCell","enforceAllowedChildren","uiNode","defaultChild","Break","table_Block","Container","COL_ATTRIBUTES","COL_DEFAULT","CELL_DEFAULT","identityMaker","table_rowId","table_cellId","rowId","cellBg","requiredContainer","tableCell","checkMerge","thisHead","thisTail","nextHead","nextTail","cellOffset","toggleAttribute","formatChildren","Ue","rowOffset","TableRow","moveChildren","TableBody","TableCol","outerHTML","TableColGroup","table_TableContainer","tableWidth","sumWidth","cells","column","deleteColumns","compareRect","delIndexes","editorWrapper","descendants","tableCells","removedCells","modifiedCells","getRelativeRect","tableDestroy","delIndex","deleteRow","tableRows","fallCells","removedRows","rowRect","removedRowsLength","nextRow","refCell","cellsInNextRow","compareCell","cellRowspan","tableModule","hideTableTools","USER","insertCell","tableRow","rId","cellLine","insertColumn","tableColGroup","addAsideCells","affectedCells","cellFormats","tableCol","colRef","cellA","cellB","insertRow","isDown","newRow","addBelowCells","sortFunc","cId","refRow","mergeCells","mergingCells","mergedCell","cellId","unmergeCells","unmergingCells","refInNextRow","table_TableViewWrapper","columnTool","selectedTds","repositionHelpLines","allowedChildren","LINE_POSITIONS","selectingHandler","mouseDownHandler","clearSelectionHandler","helpLinesInitial","button","closest","mouseMoveHandler","mouseUpHandler","startTd","startTdRect","endTd","endTdRect","computeBoundaryFromRects","correctBoundary","computeSelectedTds","blur","selectedCells","tableViewScrollLeft","refreshHelpLinesPosition","startRect","endRect","setSelection","icon_operation_1","icon_operation_1_default","icon_operation_2","icon_operation_2_default","icon_operation_3","icon_operation_3_default","icon_operation_4","icon_operation_4_default","icon_operation_5","icon_operation_5_default","icon_operation_6","icon_operation_6_default","icon_operation_7","icon_operation_7_default","icon_operation_8","icon_operation_8_default","icon_operation_9","DEFAULT_CELL_COLORS","MENU_ITEMS_DEFAULT","insertColumnRight","iconSrc","getColToolCellIndexByBoundary","columnToolCells","newColumn","tableColumnTool","SILENT","insertColumnLeft","insertRowUp","insertRowDown","deleteColumn","colIndexes","conditionFn","findIndexes","getColToolCellIndexesByBoundary","deleteTable","betterTableModule","menuItems","destroyHandler","colorSubTitle","cellColors","menuInitial","mount","menuItemCreator","dividingCreator","dividing","subTitle","subTitleCreator","colorsItemCreator","colorBox","colorBoxCreator","iconSpan","textSpan","Delta","newDelta","insertStr","tailStr","_omit","rgb","aNum","numHex","convertToHex","newColDelta","topRow","maxCellsNumber","cellsInTopRow","colsNumber","lastNumber","finalDelta","Module","quill_better_table_Delta","getEventComposedPath","tableNode","showTableTools","rowNode","cellNode","isTargetCellSelected","tableOperationMenu","table_operation_menu_TableOperationMenu","pageX","operationMenu","keyboard","addBinding","getLength","getLine","bindings","Backspace","clipboard","addMatcher","matchTableCell","matchTableHeader","matchTable","matchers","matcher","getTable","getSelection","insertTable","columns","currentBlot","getLeaf","retain","isInTableCell","memo","tableRowId","updateContents","API","table_column_tool_TableColumnTool","table_selection_TableSelection","up","collapsed","targetRow","targetCell","totalColspanOfTargetCell","cur","totalColspanOfCur","targetLine","blot","isTableCell","quill_better_table_BetterTable","keyboardBindings","suffix","shiftKey","selection","composing","Scope","parchment","deleteAt","lineFormats","BLOCK","insertText","makeTableArrowHandler","AttributeMap","compose","keepNull","attrs","attr","baseInverted","AttributeMap_1","Op_1","OpIterator_1","NULL_CHARACTER","getEmbedTypeAndData","embedType","newOp","lastOp","chop","failed","initialValue","changeLength","nextOp","firstOther","firstLeft","peekType","peekLength","thisOp","otherOp","thisData","otherData","getHandler","strings","retDelta","diffResult","opLength","eachLine","newline","inverted","baseIndex","baseOp","opData","baseOpData","transformPosition","transformedData","nextType","OpIterator","retOp","emitter","EE","_events","_eventsCount","Events","eventNames","listenerCount","a5","removeListener","addListener","clearEvent","removeAllListeners","prefixed","_opts$out","loose","SyntaxError","written","_opts$pad","base16Encoding","base32Encoding","base32HexEncoding","base64Encoding","base64UrlEncoding","base16","base32","base32hex","base64url","codec","hasError","thrownError","_throwIfClosed","observerOrNext","Subscriber","isObserver","isSubscription","isSubscriber","SafeSubscriber","errorContext","_trySubscribe","promiseCtor","getPromiseCtor","Symbol_observable","pipeFromArray","_bufferSize","_windowTime","_timestampProvider","dateTimestampProvider","_infiniteTimeWindow","isStopped","_trimBuffer","_innerSubscribe","_checkFinalizedStatuses","adjustedBufferSize","ObjectUnsubscribedError","createErrorClass","subject","AnonymousSubject","observed","EMPTY_SUBSCRIPTION","arrRemove","asObservable","COMPLETE_NOTIFICATION","createNotification","EMPTY_OBSERVER","handleStoppedNotification","_complete","wrapForErrorHandling","defaultErrorHandler","captureError","reportUnhandledError","onStoppedNotification","timeoutProvider","UnsubscriptionError","initialTeardown","_parentage","_teardowns","teardown","execTeardown","_hasParent","_addParent","_removeParent","EMPTY","onUnhandledError","useDeprecatedSynchronousErrorHandling","useDeprecatedNextContext","popScheduler","observables","argsArgArrayOrObject","combineLatestInit","createObject","mapOneOrManyArgs","valueTransform","maybeSchedule","remainingFirstValues","hasFirstValue","executeSchedule","mergeAll","concatAll","observableFactory","remainingCompletions","remainingEmissions","sourceIndex","isInteropObservable","scheduleObservable","scheduleArray","isPromise","schedulePromise","isAsyncIterable","scheduleAsyncIterable","isIterable","Symbol_iterator","scheduleIterable","isReadableStreamLike","readableStreamLikeToAsyncGenerator","scheduleReadableStreamLike","createInvalidObservableTypeError","scheduled","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","fromEvent","isEventTarget","isNodeStyleEventEmitter","toCommonHandlerRegistry","isJQueryStyleEventEmitter","mergeMap","subTarget","obs","fromInteropObservable","fromArrayLike","fromPromise","fromAsyncIterable","fromIterable","fromReadableStreamLike","asyncIterable","asyncIterable_1","asyncIterable_1_1","e_1","__awaiter","__asyncValues","e_1_1","concurrent","popNumber","errorOrErrorFactory","errorFactory","dueTime","intervalOrScheduler","intervalDuration","isScheduler","due","isValidDate","onNext","onFinalize","handledResult","innerSub","syncUnsub","catchError","activeTask","lastValue","lastTime","targetTime","emitWhenIdle","delayDurationSelector","subscriptionDelay","delayWhen","mapTo","keySelector","defaultCompare","previousKey","currentKey","hasDefaultValue","defaultIfEmpty","throwIfEmpty","EmptyError","onBeforeNext","innerSubScheduler","additionalTeardown","isComplete","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","mergeInternals","hasSeed","emitOnNext","emitBeforeComplete","hasState","scanInternals","connector","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","handleReset","configOrBufferSize","windowTime","ReplaySubject","innerSubscriber","innerIndex","outerIndex","notifier","tapObserver","isUnsub","defaultErrorFactory","intervalProvider","Action","recycleAsyncId","_id","_scheduler","_delay","errorValue","errored","schedulerActionCtor","Scheduler","SchedulerAction","_active","_scheduled","animationFrameProvider","cancelAnimationFrame","animationFrameScheduler","nextHandle","activeHandles","Immediate","findAndClearHandle","immediateProvider","asapScheduler","getKeys","isPOJO","createImpl","ctorFunc","isRoot","errorThrown","parentSubscription","scheduleSubscription","__asyncGenerator","hasLift","liftedSource","callOrApply","fns","ctx_r8","oxw","ctx_r10","ctx_r13","ctx_r14","ctx_r17","PropertySearchComponent","propertySearchService","isAssetViewClosed","clearSearch","unselectProperty","clicked","clickedInside","clickedOut","selectedProperty","propertyAddressFragment","onPaste","propertyAddressFragmentChanged","showNoPropertyFoundMessage","searchTimeout","propertySearch","Ht","loadingProperties","searchProperties","Re","selectProperty","propertySelected","AssetDetailWithBackdropComponent","assetService","eventService","AssetStatusCategories","relevantEvents","goBack","closeAssetDetails","ctx_r11","AssetListViewComponent","getSelectedAssetCategoryByPropery","listenToAssetActionEvent","selectedAssetCategory","assetStatus","assetDetailList","isAssetLoading","pageSize","selectedPropertyId","totalPage","le","totalRowCount","actionEventList","getPaginatedResult","assetId","isAssetView","selectedAssetId","selectAsset","assetDetailListTemp","asset","maintenanceCycleLabel","maintenanceCycle","PropertyAssetComponent","router","tabClicked","closeResult","closeFilteredAssetsByProperty","ViewPropertyDetails","propertyId","navigate","ctx_r5","ctx_r15","AssetDashboardComponent","getAssetCounts","onPropertySelect","isGetAssetCountByCatergoryLoading","assetCategoryCount","getAssetCategoryCount","viewAction","assetCategory","dismiss","ctx_r7","AssetDetailCompareComponent","assetDataID","getDuplicateAssetDetails","onDuplicateChange","selectedDuplicate","openEditDrawer","openAssetEditDrawer","closeEditAssetDrawer","assetDuplicateIds","assetWithDuplicates","duplicatedAssets","ButtonAction","AssetCacheService","newContext","currentVersion","SentToTenantAssetComponent","bottomsheet","tosterService","showData","sentToTenantAsset","isLoading","MAT_BOTTOM_SHEET_DATA","ctx_r3","ActionButtonsComponent","toaster","bottomSheet","jobAssetService","SendTenatToAssetLinkEmail","parties","TenantTypes","getTenantType","buttonClicked","approve","approveAsset","DeleteAasetComponent","sendToTenant","getSelectedTenantInvitationType","allTenantsComplete","selectedParties","sendSRequestTenantsToUploadAssets","party","sendEmailToTenant","tenantType","sendTenatToAssetLinkEmail","tenantInvitationType","sendTenatToAssetLink","inviteTenat","BottomConfirmationMessageComponent","isInviteTenant","afterDismissed","closeDrawer","isAnyTenantSelected","drawer","updateAllCompleteSendLink","setAllSendLink","someCompleteSendLink","openDrawer","resetCheckboxes","isAIGenerated","updateCheckboxes","isAiGenerated","selectedTenantType","ctx_r16","ctx_r18","AssetDetailComponent","route","uiContext","assetIdFromParent","paramMap","isWizard","setAssetTags","assetData","getAssetDetails","displayAtTop","showDuplicatedTag","ut","isResponseLoading","isVacantProperty","isShowSendToTenant","onActionButtonClick","refreshAssetList","category","showNeedToBeApprovedTag","showSendToTenantTag","showTenantCompletedTag","EmailInboxType","AssetGuard","userGroupService","clientSettingsService","canActivate","isUserLeadOrgAdmin","AppSettings","returnUrl","AuthGuard","userSession","isAuthenticated","ClientSettingsService","oidcSecurityService","local","clientId","getConfiguration","JobTypesService","masterDataSvc","localStorageService","getJopTypes","getAllJopTypes","mapJobTypes","getActiveJobTypeVersion","uri","getJobTypesJson","jobTypeJson$","filterByCountryId","allJobTypes","toJobType","primaryJobTypes","secondaryJobTypes","toJobTypes","preferedCountryId","COUNTRY_ID","CountryId","Id","Name","ParentJobTypeId","jobTypes","subTypes","primaryJobType","LocalStorageService","toLocaleLowerCase","SessionStorageService","NotificationService","BaseService","angularFireDb","httpClient","jobActivityService","propertyActivityService","showOrganizationEmailSubject","emailCount","checkForNewNotifications","userId","getPayloadFromIdToken","notificationData","raiseEventForTimelineReportDownload","notificationMessage","dataNotification","secondaryId","getEmailNotificationCount","getEmailNotificationCountById","updateEmailNotificationCount","Updates","checkForNewNotificationsOnPropertyTimeLine","primaryId","getOrganizationEmailNotificationCount","chageEmailNotificationCountBySettings","setEmailCount","PropertySearchService","searchPropertiesByAddress","FractionOfAddress","agencyManagementBaseUrl","getPropertyUsersForNoteTags","searchTerm","searchKey","AssetService","cacheService","environment","BehaviorSubject","editedAssetSubject$","addAIAsset","urlPrefix","saveSelection","assets","selectedAssets","patch","currentAssetId","deleteAsset","summeryUrlPrefix","getSelectedAssetCategory","propertyAssetInvitationModel","getAssetInvitationStatus","editedAssetDetails","assetDetail","saveScannedAssets","hasLinkToAnyOpenJobs","updateAIAssetState","OrganizationService","getSettings","getStartupSettings","getList","getUsers","exportPDF","getBlob","inviteUsers","userList","getUserDetails","updateCustomInvitationNote","customUserId","userType","note","syncTradeeSelected","urlPrefixFortradee","UserId","IsSync","isSync","getSMSPlan","PropertyService","getOwners","getPayers","includeAll","includeInactivePayers","payers","getPayer","payerRoleType","filteredPayers","payer","getPropertyRelatedDataByPropertyUser","userEmail","searchProperty","advancedSearchProperty","includeDeactivated","getPropertyUsersByPropertyId","getPayersListByPropertyId","getPropertyUsersDetail","isIncludeIfCurrentPM","getPropertyUser","payerId","getByPropertyId","getByExtreanalRef","externalRef","getStrataDetailsOfProperty","getPropertyExpenditureSummary","getPropertyExpenditureByJobType","getPropertyLocation","getPropertySummary","GetAllPropertyUsers","getPropertyAttachments","updateOwnerApprovalPercentage","ownerApprovalPercentage","updateOwnerThreshold","ownerThreshold","updateRealtyAssistThreshold","realtyAssistThreshold","getPropertyTimeline","timelineRequest","pageNo","filterType","printPropertyTimeLine","jobNumber","getCampaignAgentData","getAssignProperyMangersByPropertyId","getProperyOwnerValidationByPropertyId","saveDefaultPayer","applicationUserId","getResolvedJobByTenant","SettingsManagementService","communicationPreferences","updateCommunicationPreferences","notificationSettingsViewModel","workCalendar","updateWorkCalendar","workCalendarBaseViewmodel","holidayShedule","updateHolidayShedule","companyHolidayBaseViewmodel","disclaimerAndTerms","updateDisclaimer","disclaimerNote","updateDisclaimerForAfterBusinessHours","disclaimerForAfterBusinessHoursNote","updateTermsAndConditions","termsAndConditionNotes","updateDisclaimerForEmergencyJobs","emailTemplate","UpdateEmailTemplate","emailTemplateViewModel","getEnabledIntegrations","integrate","enabledIntegrations","getPropertyTreeSettings","updatePropertyTreeSettings","propertyTreeSettings","getReapitSettings","updateReapitSettings","reapitSettings","getPropertyMeSettings","updatePropertyMeSettings","propertyMeSettings","getPalaceSettings","updatePalaceSettings","palaceSettings","getPaymentSettings","resp","addCard","setAsDefaultCard","removeCard","setDefaultAddOn","getConsoleCouldSettings","updateConsoleCouldSettings","propertyManagerSettings","updatePropertyManagerSettings","getLeadOrgAdminSettings","updateLeadOrgAdminSettings","leadOrgAdmins","getSmsPackageDetails","addSmsPackages","SettingsService","getBudget","getUrgency","getBudgetOptions","getIsNotifyOwnerEnabled","generalSettings","generalSettings$","clearGeneralSettingsCache","updateGeneralSettings","ownerSettings","updateOwnerSettings","tenantSettings","updateTenantSettings","tradeSettings","updateTradeSettings","getJobSortType","updateJobSortTypes","sortType","AuthrizeRealtyUrl","JobAttachmentsService","upload","_jobAttachmentUploadUrl","editImage","imageDetails","isFromJobEdit","_jobImageEditUploadUrl","jobId","cloneAttachments","attachments","_jobAttachmentCloneUrl","endpointUrl","getAttachmentFromBlobURL","getNew","handleError","postTest","throwError","paramsObj","removeEmptyParams","HttpParams","CacheService","userSessionService","invalidateCacheWhenTargetDataSourceHasChanged","invalidateCacheWhenAuthenticatedUserHasChanged","invalidateCache","userHasChanged$","changed","whenToRefresh","saveInvalidationRules","createNewCacheSlot","notifyAllObservers","fallbacksToRefresh","FallbackState","whenToInvalidate","invalidationRules","scopesToInvalidate","clearCache","processFallbackAndRefreshCache","canProcess","processing","exclusiveLock","holdLock","lockExpiry","setMilliseconds","getMilliseconds","timeToHoldLockInMilliSecs","isLockExpired","EventService","hideJobPostOnInspectionManager","setHideJobPostOnInspectionManager","LoggerService","loggerEnabled","optionalParams","EmailLogService","getEmailListByJobId","getEmailThread","emailId","sendEmail","jobDetailEmail","replyEmail","forwardEmail","getUsersFromAgency","_userListAgencyUrl","getUsersFromAgencyForJobs","JobId","updateEmailReadStatus","emailModel","updateEmailReadOrUnreadStatus","updateEmailArchiveOrUnAchiveStatus","EmailId","Status","getEmailSignature","_emailSignatureUrl","getOwnerApprovalDisclaimer","_ownerApprovalDisclaimerUrl","getEmailTemplates","addEmailTemplate","updateEmailTemplate","deleteEmailTemplate","templateId","scanEmail","getEmailListByUserIds","userIds","getSelectedTeam","updateSelectedTeam","selectedTeam","JobAssetService","getJobsForAssetByPropertyId","getJobsForAsset","getAssetsForPropertyJob","addAutoAsset","getScannedAssetData","imageUrls","JobSearchService","searchJobsByJobNumber","fragmentOfJobNumber","maintenanceBaseUrl","searchOpenJobsByProperty","queryDto","searchClosedJobsByProperty","searchRecurringJobsByProperty","searchOpenJobsByTrade","searchClosedJobsByTrade","searchRecurringJobsByTrade","getAdvancedSearchData","JobService","jobPost","changePayer","getOverview","currentJobId","getReviewPending","getRelatedJobs","relatedJobs$","getRelatedPayments","getHasRelatedPayments","getSugesstedTags","countryId","Title","Description","sugesstedTagsParam","sugesstedTags$","getAccessContact","getWorkOrderHTML","isQuoteRequest","assignTrades","relatedJobUpdate","updateRecurringJob","removeRecurringJob","getWorkOrderPDF","getGoogleMapLink","job","Job","JobDetailsMode","tenant","secondaryJobType","keyCollectionType","budget","jobBudget","issueReportedType","recurrence","trades","tradees","defultTimeZoneDiffMinutes","maintenanceType","isTenantNotRequired","isChildRecurringJob","isStrataMasterEnabled","accessContact","notifyTrade","reasonNotToNotifyTrade","specialNoteToTrade","customKeyCollectionValue","workflowStatusId","thirdPartyName","thirdPartyEmailAddress","jobWarningNotes","outboundPartnerId","targetTadeeOption","targetTardeOption","AssignTradeOptions","suburbId","secondaryJobTypeId","selectedTrades","primaryJobTypeId","assetsForJob","ownerOverrideUpdate","updateJobDeactivateStatus","jobDeactivateModel","anotherJob","combineJobs","jobs","cloneRequest","defaultPayer","owners","assignPms","updateJobPriority","getRecurringJobs","recurringJobsRequest","getIsLastRecurringJob","getJobTroubleShootGuide","getPartnerJobType","getReview","bidId","jobExternalComplete","jobExternalCompleteModel","moveToPendingInvoice","getCombinedJobs","getAttachmentData","fileUrl","moveToInProgress","convertJob","getJobDescriptionSummary","getJobdescriptiontimelonenotes","JobSummaryPredictionReq","checkWaranteeJobAvilability","PrimaryJobTypeId","getAppSettings","getUserData","MasterDataService","activeJobTypeVersion$","_activeJobTypeVersionUrl","TradeSearchService","searchTradesByNameAndEmail","FractionOfTrade","_urlPrefix","TradeeService","getProfile","organizationId","assignToAccount","getAssignTrades","includeAllSuburbs","includePendingInvitationTrades","selectBNATrades","selectAgencyPreferredTrades","selectPMPreferredTrades","searchText","trade","tradeeMiniProfile","tradeeId","EMPTY_GUID","getOnDemandTrades","getTradeeGeneralProfile","getTradeeSuburbs","getTradeeServiceTypes","checkTradeExistence","companyName","hasUnregisteredTrades","tradeIds","validateLicenceInsurance","tradeIdList","TradeId","getTradeePaymentSettings","searchExternalTrades","getAssignAllTrades","getAssignAllTradesWithoutPaginations","isFromRule","tradeList$","saveExternalTradee","updatePreferences","getNoteTagTrades","addServiceTypeForFurureJobs","tradeId","primaryServiceType","SecondaryServiceType","getTradesToInviteForJob","InviteTradesOptions","bnATrades","TosterService","_snackBar","verticalPosition","horizontalPosition","panelClass","warning","delayTime","AssignTradeMode","PropertyKeyCollectType","JobsListTypes","JobTypesDisplayList","None","PendingApprovalJobs","PendingOwnerApprovalJobs","DraftedJobs","OwnerApprovedJobs","QuotedJobs","PostedJobs","UnscheduledJobs","PendingScheduleApproval","ScheduledJobs","InProgressJobs","OverdueJobs","PostedJobForThirdParty","RecurringJobs","VariationAvailableJobs","PendingInvoiceJobs","PendingReviewJobs","CompletedJobs","InactiveJobs","OwnerRejectedJobs","RejectedJobs","TradePosted","InspectionDraftedJobs","LabelColors","AccountingType","PropertyType","RecurranceType","WorkflowStates","UrgencyType","JobAction","ServiceStatus","OwnerApprovalStatus","ChannelType","QuoteTypes","RecurringJobsState","IssueReportedTypeLabel","IssueReportedType","PropertyKeyCollectTypeLabel","StrataPropertyKeyCollectTypeLabel","StrataPropertyKeyCollectType","JobBudgetOptionsLabel","JobBudgetOptions","JobPostSteps","MaintenanceType","JobRecurranceType","JobRecurranceCustomType","JobPriority","JobPriorityTextMapping","Emergency","Urgent","Normal","TargetTradeOption","PayerTypeEnum","JobPostMode","OutboundPartnerIdType","totalTradesCount","externalTrade","ExternalTrade","quoteLimt","selectAllTrades","tabClick","isAllAgencyRegisteredTradeView","Y","_targetTardeOption","isJobIdMust","canAssignTrade","setInitialTargetTradeOption","isPrivateNote","isOwnerAttending","isHideTenantDetailsToOwner","isOwnerApprovalRequested","targetTradeeOption","selectOnDemandTrades","selectedTradees","tradee","initialPayment","quoteLimit","notifyOwner","getOutboundPartnerId","notifyTenantViaSMS","notifyTradeViaSMS","doNotNotifyTrade","setExcludeNotifyParties","excludedNotifyParties","isSelectedOnRequestQuotesFromHipages","isHomeERTrade","setServiceType","currentStep","Tenant","tenantOptions","Property","Payer","JobType","Budget","prevBudget","Recurrence","Priority","jobNote","Note","tradeNote","AssignTrades","drafteJob","$isStrataEnabledProperty","$targetTradeeOption","isUrgencyPriorityChange","isCloneWithJobNotes","aiAssets","selectedaiAssets","payerChanged","Pt","issueReportedTypeLabel","nextStepOnReportedViaEmail","nextStepOnReportedViaCall","nextStepOnReportedViaInvoiceOnly","afterUploadReceivedEmail","offerJobToPreviouslyDoneJobTrade","backStepOnReportedViaEmail","backStepOnReportedViaCall","backStepOnReportedViaInvoiceOnly","isInvoiceOnlyJob","noDataFetchFromEmail","keyCollectionOptionLabel","propertyType","clearWarrantyJobSelection","switchToWarantyJob","getMinDate","numberOfDays","isEmergencyType","minDate","dateVariant","setDate","getDate","setHours","dueDate","getMaintanaceTypeLabel","getNumberOfDaysInDateRange","startDate","endDate","diffInTime","oneDay","isTenantNotRequiredOrVacant","tenantNotRequired","firstRecurrenceDueDate","daysToNotify","noOfRecurrences","isUnlimited","isPrivate","maxAmount","JobCacheService","JobActivityService","receivedDownloadTimelineReportRequest","JobDetailService","tradeSvc","settingSvc","jobService","actionableJobSubject$","getPropertyId","setJobId","invalidate","getCurrentJobId","getCurrentJobType","jobType","getMappedRecurrenceJobs","recurringJobs","statusDisplay","getStatusDisplay","scheduleStartDate","addHours","defaultTimeZoneDiffMinutes","scheduleEndDate","hours","getHours","numberOfQuotes","isPendingPayment","readyForMonthlyPayment","licence","isJobPostFlow","allowTradeeForLitePm","jobOverviewResult","isLitePmAndTradeVerificationEnabled","paymentSettings","isPremiumPackageEnabled","addOnTradeVerificationservice","addonList","isAllowedToPlaceQuote","filterRecurrenceTypeForRecurrenceEndDateVisibility","jobRecurrencyType","CdkStepperModule","BidiModule","CdkTableModule","ScrollingModule","CdkTreeModule","MatStepperIntl","optionalLabel","completedLabel","editableLabel","MAT_STEPPER_INTL_PROVIDER","SkipSelf","parentIntl","MatStepperModule","ErrorStateMatcher","MatCommonModule","PortalModule","MatButtonModule","MatIconModule","MatRippleModule","MatGridListModule","MatLineModule","MatSliderModule","MatSortHeaderIntl","MAT_SORT_HEADER_INTL_PROVIDER","MatSortModule","MatTableModule","MatTreeModule","MaterialComponentsModule","A11yModule","CdkAccordionModule","ClipboardModule","DragDropModule","MatAutocompleteModule","MatBadgeModule","MatBottomSheetModule","MatButtonToggleModule","MatCardModule","MatCheckboxModule","MatChipsModule","MatDatepickerModule","MatDialogModule","MatDividerModule","MatExpansionModule","MatInputModule","MatListModule","MatMenuModule","MatNativeDateModule","MatPaginatorModule","MatProgressBarModule","MatProgressSpinnerModule","MatRadioModule","MatSelectModule","MatSidenavModule","MatSlideToggleModule","MatSnackBarModule","MatTabsModule","MatToolbarModule","MatTooltipModule","OverlayModule","AssetMaintenanceCycleType","AssetMaintenanceCycleTypeOptions","LessThanWeek","InMonth","InThreeMonths","InSixMonths","InYear","WithinTwoYeas","MessagesFilterType","PropertyDashboardService","UserGroupService","isUserOrgAdmin","userGroup","isUserPropertyManagerOnly","toasterService","hasOpenJobs","EditAssetComponent","datePipe","AssetModel","assetDetails","SetImageConfig","GetPropertyAssetDetails","dismissEditAssetDrawer","addUploadedAttachments","assetsToCheck","isSaving","usefulLife","dateOfPurchase","privourAssetModel","assetName","isDuplicated","isSucceeded","FileUploadConfig","files","comment","supportedExtensions","ctx_r6","ctx_r9","confirmationMessage","isInviteTradee","closeBottomSheet","CommonLoaderComponent","OrdinalDatePipe","dateValue","getMonth","getFullYear","pure","DeadLineComponent","generateProgressBar","displayingValue","getLocalizeDate","localizedPostedDate","postedDate","localizedDueDate","getTodayWithTimeZoneDiff","today","isOverdueJob","progressPercentage","getProgressPercentage","totalDays","milliSecondsPerDay","getUTCMonth","getUTCDate","getUTCHours","diffMinutes","FileDeleteConfirmComponent","bottomSheetRef","fileService","pendingInvoiceEvent","QRConvertToWOEvent","WOConvertToQREvent","AcceptJobAsInProgressEvent","fileDeleteEvent","getMessage","ctx_r21","SwiperCore","Navigation","Pagination","Scrollbar","A11y","Virtual","Zoom","Autoplay","Thumbs","Controller","ImageGalleryComponent","sanitizer","setThumbsSwiper","swiper","thumbsSwiper","initialSlide","imageList","fileId","selectedImage","sanitizedComment","bypassSecurityTrustHtml","closeEvent","ctx_r24","ctx_r39","ctx_r43","ctx_r47","ctx_r51","ctx_r55","ctx_r61","ctx_r66","ctx_r69","ctx_r72","ctx_r75","FileListViewerComponent","AttachmentType","fileList","processFiles","loadFiles","getFileExtension","getFileType","AttachmentFileTypes","isImage","isVideo","isOther","isPdf","isCsv","isMsg","isEml","isTiff","openPdf","att","fileSelected","isOpenPdfDrawer","viewVideo","isOpenVideoDrawer","viewImage","attDetails","isOpenImageDrawer","isImageEditor","closeImageDrawer","closePdfDrawer","closeVideoDrawer","isShowAsQuoteAttachment","isAfter","jobListType","deleteFile","removeFile","getOriginalImageAttachment","attachment","attFile","AttachmentFile","fileName","blobName","attachmentType","attachmentDetail","Ne","ctx_r23","ctx_r26","ctx_r29","ctx_r32","ctx_r35","ctx_r44","ctx_r49","ctx_r52","ctx_r54","UploadedFilePreviewComponent","showImageEditor","_showImageEditor","previewFile","getExtension","getType","ext","getScannedImageType","imageScanExtensions","detailsRequiredToDrawer","openImageEditorDrawer","fileToPreview","drawerOpened","isPreviewOnly","extention","AttachmentFileTypesEnum","Images","Pdf","changeAssetToggle","isScanForAsset","scanForAsset","DragAndDropDirective","onDragOver","stopPropagation","fileOver","onDragLeave","ondrop","dataTransfer","fileDropped","ctx_r2","ctx_r4","FileUploadComponent","jobAttachmentService","toster","fileUpload","fileAddEvent","St","ht","addSavedFiles","setSavedFileStatus","onFileDropped","prepareFilesList","fileBrowseHandler","validate","convertToFilesList","fileData","File","excelFileOnly","IsExcelFile","emitFileForScan","markFileUplodingInProgress","appendFile","createUploadedFile","updateFileWithBolbFileName","markFileUploadAsSuccess","emitUploadedAttachments","removeFileOnEror","uploadedFileCount","formData","FormData","uploadResponse","Attachment","uploadedFiles","increaseUploadedFileCountByOne","getBlobName","isUploading","emitResult","isTradeeAttachment","emitDeletedAttachment","DeletededAttachments","deletedFile","isEnableScan","ScannedAttachments","UploadedAttachments","scanRequired","FileForScan","errorFile","reduceFilesReadyToUploadCountByOne","reduceUploadedFileCountByOne","filesToValidate","canUploadMultipleFiles","isEmailOnly","isAllowedFileType","emailOnly","allowdFileTypes","EmailFileExtentions","getFileExtention","resetFiles","fileUploader","ImageEditorComponent","EditImage","imgJobId","ImageDetails","imageEditor","pixie","Pixie","openImageDialog","ui","allowEditorClose","allowZoom","hideOpenButton","hideCloseButton","urls","onSave","ImageURL","block","b64Data","sliceSize","byteCharacters","byteArrays","byteNumbers","byteArray","b64toBlob","appendFileAndSubmit","saveImage","clickedImage","resetEditor","updateComment","ImageViewerComponent","ListLoaderComponent","downloadPDF","Embed","Quill","Event","MentionBlot","mounted","denotationChar","isMentionBlotData","setDataValues","attach","getClickHandler","hoverHandler","getHoverHandler","detach","buildEvent","MentionEvent","bubbles","cancelable","dataAttributes","mention","isOpen","itemIndex","suspendMouseEnter","mentionContainer","mentionContainerClass","cssText","onmousemove","onContainerMouseMove","fixMentionsToQuill","mentionList","mentionListClass","onTextChange","onSelectionChange","selectHandler","Keys","selectKey","selectKeys","escapeHandler","upHandler","downHandler","existingSourceExecutionToken","selectItem","abandoned","hideMentionList","prevItem","nextItem","showMentionList","positioningStrategy","setMentionContainerPosition","setIsOpen","onBeforeClose","highlightItem","scrollItemInView","elementAtItemIndex","itemHeight","itemPos","containerTop","containerBottom","onSelect","asyncData","programmaticInsert","overriddenOptions","insertItem","mentionCharPos","cursorPos","Gi","insertAtPos","showDenotationChar","deleteText","insertEmbed","Mention","DEFAULTS","spaceAfterInsert","onItemMouseEnter","onDisabledItemMouseEnter","onItemClick","currentTarget","onItemMouseDown","renderLoading","renderedLoading","getElementsByClassName","loadingDiv","setInnerContent","removeLoading","renderList","mentionChar","initialSelection","li","listItemClass","renderItem","onmouseenter","onmouseup","onmousedown","attachDataValues","decrement","containerBottomIsNotVisible","topPos","containerPos","scrollY","containerRightIsNotVisible","leftPos","scrollX","onOpen","setMentionContainerPosition_Fixed","setMentionContainerPosition_Normal","getBounds","containerHeight","defaultMenuOrientation","overMentionCharPos","relativeToPos","availableSpaceTop","availableSpaceBottom","fitsBottom","fitsTop","Ut","getTextBeforeCursor","startPos","maxChars","onSomethingChange","textBeforeCursor","textOffset","textPrefix","mentionCharIndex","mentionDenotationChars","isolateChar","allowInlineMentionChar","regex","lastMatch","getMentionCharIndex","isolateCharacter","mentionPrefix","hasValidMentionCharIndex","textAfter","minChars","hasValidChars","getAllowedCharsRegex","sourceRequestToken","oldContent","openMenu","QuillEditorComponent","propertyService","tradeService","undo","redo","backgroundImageUrl","quillTableWrapper","setStyle","convertHTML","setContents","NoteByUniqueName","isNoteByUniqueName","noteHtmlContent","IsPreviewOnly","QuillBetterTable","loadTextEditor","IsLoadTagUsers","PropertyId","QuillUniqueName","TaggingUserList","setToolBar","Undo","Redo","profileImageUrl","replaceAll","endIndex","getContents","propUser","subUser","forkJoin","firstName","lastName","dangerouslyPasteHTML","IsPreventCopyPaste","quillEditorContentPasted","hideSpecificAnchorTags","QuillEditorChange","anchors","clearEditorContent","setText","isEnableMinimumTools","indent","align","TableDataLoaderComponent","VideoViewerComponent","AppEnabledOrganizationId","Theme","AgencySelectionPopedUp","IsStrataMasterEnabled","IsCreditCardActivatedOrg","IsAssetRegisterViewEnabled","ConfidenceLevel","SHOWORGANIZATIONEMAILCOUNT","StylePaginatorDirective","matPag","vr","ren","_curPageObj","_rangeStart","_rangeEnd","_showTotalPages","initPageRange","showTotalPages","inc","numOfPages","getNumberOfPages","lastPageIndex","buildPageNumbers","actionContainer","nextPageNode","_buttons","createButton","linkBtn","addClass","pagingTxt","_pageGapTxt","createText","switchPage","middleIndex","calcRangeStart","calcRangeEnd","_emitPageEvent","TargetIdDirective","appTargetId","attributeValue","intercomAttribute","JobRuleTriggerType","JobTypeEnum","ActivationStatus","isApply","selectedJobIdentification","posted_Start","posted_End","deadLine_Start","deadLine_end","selectedStatus","tradeesChips","propertyChips","serviceTypesChips","selectedUrgency","urgencyTypes","selectedJobType","scrolledTop","isSnoozedJob","AdvancedSearch","excludeEmails","isInvoice","_title","icon","_icon","_supportedExtensions","FileService","SharedModule","FormsModule","ReactiveFormsModule","NgxMatDatetimePickerModule","NgxMatNativeDateModule","SwiperModule","AutosizeModule","production","baseUrlVersion","idp","iframe_integration","origins","destinations","agencyMgmt","agencyDefaultLocation","maintenance","tradeMgmt","ruleEngine","pam","storageBucket","intercom","livesession","trackId","isEnable","invoiceProcessor","keyAutomate","dataIntercomAttribute","autoRefreshJobDashboard","stripe","publishableKey","campaignAgent","scriptUrl","preventSysEmail","defaultEmail","textToSpeech","rate","pitch","volume","voice","alexAgent","agentId","ctx_r12","SwitchOrganizationComponent","organizationService","modalData","dialogRef","settingsService","modalPopup","organizations","isAuthenticated$","selectedOrganizationId","switch","switching","switchOrganization","closeDialog","isCurrentOrganization","org","MAT_DIALOG_DATA","SwitchOrganizationPopupComponent","dialog","isIntegration","openDialog","isOpened","markAsOpened","maxWidth","maxHeight","disableClose","afterClosed","SignInComponent","activatedRoute","sessionStorageService","integrationType","oe","signing","getReturnUrl","redirectToSignInPageIfNotSignedIn","redirectToDefaultPageAfterSignedIn","subscriptions","whenSignedInCompleted","identifyAuthenticatedUserForLiveSession","appEnableValidityCheckPassed","redirectToDefaultPage","yes","signIn","rememberPropertySearch","userClaims","countryCode","country","phone","liveSession","isAppEnabledForCurrentOrganization","isCurrentOrganizationIsActive","configurationCheckPassed","newPmAppEnabled","rememberAppEnabledOrganization","isOrganizationNotActivated","isCreditCardActivatedOrg","isAssetRegisterViewEnabled","enabledOrganizationId","SignOutComponent","clientSettingService","ctx_r27","ctx_r30","ctx_r33","ctx_r37","ctx_r42","ctx_r50","AdvancedSearchComponent","jobTypeSvc","tradeSearchService","jobSearchService","dateAdapter","ENTER","COMMA","FormControl","setLocale","getServiceTypes","searchModel","initialLoadJobStatus","serviceTypes$","ServiceTypeControl","startWith","filterServiceTypes","setPostedStartEndDate","getTeamUsers","updateSnoozedJobsCheckboxVisibility","serviceTypes","loadingServiceType","SetDefaultValues","deactivatedPropertyInput","snoozedJobsInput","statuses","openJobStatus","closedJobStatus","f1","f2","setWorkOrderOption","TradeNameFragment","tradeeInput","ServiceTypeFragment","serviceTypeInput","PropertyFragment","propertyInput","checked","includeDeactivatedProperties","selectedTeamUsers","filterValue","filteredServiceType","serviceType","OnTradeNameFragmentChanged","TradeSearch","OnServiceTypeFragmentChanged","OnPropertyFragmentChanged","PropertySearch","loadingTradees","tradees$","properties$","includeDeactivatedPropertiesCheck","snoozedJobsCheck","jobDashBoard","onJobTypeChange","jobtype","removeAllFilterFromJobType","isAnyJobType","isOpenJobType","isClosedJobType","isRecurringJobType","removeAllFilterFromStatus","onStatusChange","OnRemoveServiceTypeChip","servType","OnAddServiceTypeChip","chipInput","OnSelectedServiceType","selectedChip","Wi","OnSelectedTradee","fullNameDisplay","OnRemoveTradeeChip","tradeeChip","OnAddTradeeChip","OnSelectedProperty","OnRemovePropertyChip","propertyChip","OnAddPropertyChip","OnApplySearchCriterias","requestDto","jobNameOrNumber","removeDuplicate","jobStatus","urgencyTypeId","ei","propertyIds","postedFromDate","postedToDate","dueFromDate","dueToDate","selectedTeamBusinessUserIds","businessUserId","ORGANIZATION_VIEW_ID","jobList","resultEmit","OnReset","teamUsers","createOrganizationView","onChangeTeamUser","SelectedTeamResult","requestDtoEvent","isOpenType","snoozedJobsCheckboxVisible","AdvancedSearchFilteredJobsDisplayComponent","jobDetailService","rowClicked","clickRow","advanceSearch","scrollTo","behavior","getJobDueDate","isRecurrenceParentJob","jobRecurrenceType","isEnabledUnlimitedRecurrence","jobRecurrenceEndDate","getJobDueDateDescription","splitAssignedPM","assignedPM","showAssignSP","tradeOption","targetTradeOptionEnum","QuoteRequest","OnDemand","workflowStatesEnum","JobQuoteAccepted","showInvitedSP","AdvancedSearchJobsComponent","advancedSearchComponent","requestDtoChanged","filteredJobList","isLoad","pageChangeEvent","onNumberOfResultsPerPageChange","isUserInput","onclickRow","isFromAdvancedSearch","SignInCheckComponent","CreditCardGuard","settingsManagementService","AccountInReviewComponent","backToSignIn","routes","pathMatch","redirectTo","loadChildren","JobModule","PropertyModule","InsightModule","TradeeModule","SettingsModule","CommunicationsModule","InspectionManagerModule","StaticPagesModule","AssetModule","AppRoutingModule","RouterModule","paramsInheritanceStrategy","enableTracing","SideNavComponent","notificationService","loadStartupSettings","invoiceAutomateUrl","addSessionQueryParams","keyAutomateUrl","emailCount$","unreadEmailCount","hideInspectionManagerIcon","invoiceProcessorEnabled","newInvoiceAutomateAppEnabled","keyAutomateEnabled","isKeyAutomateEnabled","isEnabledPowerBiQnA","displayUnreadEmailNotificationCount","hiddenUnreadEmailCount","UserProfileMenuComponent","image404ErrorHandler","EmailNotificationService","getEmailNotificationData","setNotificationActionAsClick","notificationId","EmailNotificationsComponent","emailNotifySvc","emailLogSvc","firebaseSvc","EmailNotificationResult","getEmailNotifications","getCurrentUserEmailNotificationCount","subs","getEmailListbyUserIds","organizationPmUserIds","getEmailListCurrentUser","setEmailNotificationAsReadOrUnread","notifications","emailNotifications","isActionClicked","optionalValue","openEmail","setNotificationAsRead","isUnread","userEmailNotificationCount","getNotificationsPaginatedResult","isEmailListLoading","emailList","pageTotal","isActionDisable","HeaderComponent","hideJobPostOnInspectionManager$","refreshEmailCount$","emailNotificationCount","showEmailNotifications","isOpenEmailDrawer","bodyTag","getOrganizationEmailCount","getCurrentUserEmailCount","pmUserIdList","minsub","AppComponent","iframeCommService","authClient","elementRef","appTheme","_appTheme","initLiveSession","connectToIntercom","loadAppSettings","subscribeForMaintenanceRequests","connectToAlexGeminiModels","dfMessenger","startNewSession","retainHistory","loadCampaignAgentScript","rootHostname","external_property_id","openNewJobPostByPropertyId","openExistingJobByJobNumber","external_maintenance_request_id","isNewMaintenance","updateShowOrganizationEmailsettings","isShowChatBot","isEnabledAlexAgentChatBot","cdpSyncUserReferenceId","quillEditor","encodedContent","Intercom","alignment","horizontal_padding","vertical_padding","custom_attributes","editorContent","styleCode","setttings","showOrganizationEmailNotifications","queryParameters","setQueryParameters","onClickOutside","chatbotElement","closeChat","HttpErrorInterceptor","intercept","qps","isInspectionManager","statusCodeIsForbidden","statusUnauthorized","isShowBnAIntroWhenImUnauthorized","isPathIsSession","displayErrorMessage","ErrorEvent","ApiVersionInterceptor","isSameDestination","addVersion","targetURL","setHeaders","CoreModule","HTTP_INTERCEPTORS","useClass","multi","AuthInterceptor","HttpClientModule","LayoutModule","MatDialogRef","AppModule","bootstrap","DatePipe","MAT_DATE_LOCALE","BrowserModule","BrowserAnimationsModule","BnaServicesAuthClientModule","authConfig","configId","postLogoutRedirectUri","silentRenew","silentRenewTimeoutInSeconds","useRefreshToken","enableIdTokenExpiredValidationInRenew","renewTimeBeforeTokenExpiresInSeconds","tokenRefreshInSeconds","autoUserInfo","secureRoutes","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","It","dt","_addComponent","automaticDataCollectionEnabled","checkDestroyed","removeApp","deleteApp","_getService","_DEFAULT_ENTRY_NAME","getComponent","instantiationMode","_removeServiceInstance","clearInstance","_addOrOverwriteComponent","firebase$1","firebaseAppImpl","initializeApp","rawConfig","modularAPIs","appCompat","setLogLevel","onLog","componentName","componentNameWithoutCompat","serviceNamespace","appArg","serviceProps","multipleInstances","useAsService","App","createFirebaseNamespaceCore","FirebaseAppImpl","createFirebaseNamespace","extendNamespace","isBrowser","variant","getProviders","isVersionServiceProvider","library","logString","name$o","version$1","DEFAULT_ENTRY_NAME","PLATFORM_LOG_STRING","_apps","_components","addComponent","addOrOverwriteComponent","_isDeleted","_options","_config","_automaticDataCollectionEnabled","isDeleted","newApp","libraryKeyOrName","libraryMismatch","versionMismatch","logCallback","setUserLogHandler","setLogLevel$1","PlatformLoggerServiceImpl","instanceFactory","onInstanceCreated","instancesDeferred","instancesOptions","onInitCallbacks","normalizedIdentifier","normalizeInstanceIdentifier","shouldAutoInitialize","getOrInitializeService","instanceDeferred","services","isComponentSet","getOptions","existingCallbacks","invokeOnInitCallbacks","DEBUG","VERBOSE","INFO","WARN","ERROR","levelStringToEnum","verbose","silent","defaultLogLevel","ConsoleMethod","defaultLogHandler","logType","toISOString","_logLevel","_logHandler","_userLogHandler","logHandler","userLogHandler","inst","customLogLevel","ignored","Se","Ot","Nt","Pr","_r","Pi","qi","Bn","Go","Jo","yr","At","dn","Jn","fc","rt","Or","Dr","Fa","Ja","Le","Vi","yt","Scope2","LEVEL","ATTRIBUTE","BLOT","INLINE","BLOCK_BLOT","INLINE_BLOT","BLOCK_ATTRIBUTE","INLINE_ATTRIBUTE","ANY","whitelist","canAdd","Registry","_Registry","classes","tags","bubble","blots","match2","ParchmentError","blotClass","Node","TEXT_NODE","Text","inline","definition","isBlot","isAttr","ClassAttributor$1","Attributor","StyleAttributor$1","camelize","AttributorStore$1","move","_ShadowBlot","rawValue","isolate","formatAt","insertAt","def","_force","_mutations","ShadowBlot","_LeafBlot","_domNode","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","_inclusive","LeafBlot$1","refNode","curNode","inclusive","forEachAt","curIndex","curLength","Yt","replaceChild","ParentBlot$1","_ParentBlot","attachUI","uiClass","LinkedList","makeAttachedBlot","childLength","descendant","MAX_VALUE","lengthLeft","childIndex","splitAfter","childBlot","refBlot","refDomNode","targetParent","_length","mutations","addedNodes","removedNodes","mutation","DOCUMENT_POSITION_FOLLOWING","_InlineBlot","obj1","obj2","InlineBlot$1","_BlockBlot","BlockBlot$1","_ContainerBlot","ContainerBlot$1","EmbedBlot$1","_scroll","OBSERVER_CONFIG","characterDataOldValue","_ScrollBlot","registry","disconnect","mutationsMap","records","takeRecords","markParent","previousSibling","grandChild","ScrollBlot$1","_TextBlot","splitText","TextBlot$1","oc","mc","Aa","yu","xu","Gc","qd","Cd","Mc","xl","wl","pu","Ks","bp","Fo","$r","Ss","EmbedBlot","TextBlot","entityMap","InlineBlot","selfIndex","Inline","Sd","BlockBlot","blockDelta","lineIndex","AttributorStore","blocks","LeafBlot","bubbleFormats","BlockEmbed","CONTENTS","savedLength","getNativeRange","lastChild","prevTextBlot","prevTextLength","nextTextBlot","nextText","mergedTextBlot","newTextNode","remapOffset","startOffset","endOffset","Jl","levels","newLevel","handleDOM","domListeners","_len3","_key3","listenDOM","Ff","EDITOR_CHANGE","SCROLL_BEFORE_UPDATE","SCROLL_BLOT_MOUNT","SCROLL_BLOT_UNMOUNT","SCROLL_OPTIMIZE","SCROLL_UPDATE","SCROLL_EMBED_UPDATE","SELECTION_CHANGE","TEXT_CHANGE","COMPOSITION_BEFORE_START","COMPOSITION_START","COMPOSITION_BEFORE_END","COMPOSITION_END","Emitter","ASCII","lastIndent","endTag","getListType","convertListHTML","escapeText","ParentBlot","combined","merged","combinedValue","normalizedDelta","Yh","gh","contentNode","leftGuard","rightGuard","prevLength","rp","addModule","ModuleClass","Er","themes","getParentElement","getRootNode","getElementRect","paddingValueToInt","getScrollDistance","targetStart","targetEnd","scrollStart","scrollEnd","scrollPaddingStart","scrollPaddingEnd","CORE_FORMATS","globalRegistry","Parchment","containerOrSelector","resolveSelector","quillModuleDefaults","quillDefaults","themeModuleDefaults","themeDefaults","userModuleOptions","expandModuleConfig","ds","omitUndefinedValuesFromOptions","sourceRegistry","coreBlot","iterations","createRegistryWithFormats","modulesWithDefaults","moduleClass","expandConfig","addContainer","scrollBlotName","ScrollBlot","editor","getDelta","applyDelta","scrollLength","batchStart","normalizeDelta","deleteDelta","normalizedOps","splitOpLines","isImplicitNewlinePrepended","isImplicitNewlineAppended","isInlineEmbed","updateEmbedAt","prependedLength","addedLength","batchEnd","formatLine","formatText","getFormat","leaves","leafFormats","combineFormats","getHTML","lineOffset","lineLength","isWithinLine","insertContents","embed","isBlank","removeFormat","selectionInfo","oldDelta","textBlot","CursorBlot","relativeSelectionInfo","shiftRange","diffDelta","mouseDown","savedRange","lastRange","lastNative","handleComposition","handleDragging","hasFocus","setNativeRange","triggeredByTyping","preventScroll","setRange","nativeRange","setStart","setEnd","side","rangeCount","getRangeAt","normalizeNative","getRange","isConnected","normalizedToRange","activeElement","startContainer","endContainer","rangeToNative","getPosition","leafOffset","removeAllRanges","addRange","composition","isComposing","setupListeners","handleCompositionStart","handleCompositionEnd","uploader","modify","disable","allowReadOnlyEdits","overload","editReadOnly","modifier","scrollSelectionIntoView","containerBounds","getLines","getSemanticHTML","scrollRectIntoView","ownerDocument","isDocumentBody","bounding","visualViewport","scrollDistanceX","scrollPaddingLeft","scrollPaddingRight","scrollDistanceY","scrollPaddingTop","scrollPaddingBottom","defaultView","scrollBy","scrolledLeft","delete1","applied","delete2","fromEntries","lengthOrSource","Qi","ContainerBlot","updateContent","batch","handleDragStart","emitMount","emitUnmount","emitEmbedUpdate","renderBlocks","deltaToRenderBlocks","shouldInsertNewlineChar","insertInlineContents","newlineCharLength","lineEndIndex","refBlotOffset","renderBlock","createBlock","blockEmbed","isLine","blotIndex","blotLength","isUpdatable","currentBlockDelta","splitted","inlineContents","td","Scroll","AlignAttribute","AlignClass","ClassAttributor","AlignStyle","StyleAttributor","ColorClass","ColorStyle","ColorAttributor","BackgroundClass","BackgroundStyle","CodeBlockContainer","TAB","dc","Code","CodeBlock","DirectionAttribute","DirectionClass","DirectionStyle","FontClass","FontStyle","SizeClass","SizeStyle","SHORTKEY","which","handleEnter","metaKey","ctrlKey","altKey","handleBackspace","handleDelete","handleDeleteRange","keyBinding","shortKey","singleBinding","defaultPrevented","keyCode","Keyboard","leafStart","offsetStart","leafEnd","offsetEnd","prefixText","suffixText","curContext","curFormats","prevFormats","formatDelta","nextFormats","deleteRange","defaultOptions","makeFormatHandler","underline","outdent","makeCodeBlockHandler","tab","cutoff","_table","tableSide","blockquote","numLines","makeEmbedArrowHandler","firstFormats","lastFormats","normalWeightRegexp","blockTagNames","isBlockElement","ignoreRegexp","idRegexp","indentRegexp","NORMALIZERS","msoList","others","listItems","idMatch","indentMatch","typeRegexp","typeMatch","parseListItem","childListItems","nextElementSibling","listItem","normalizeListItem","normalizeFontWeight","previousElementSibling","normalizeEmptyLines","CLIPBOARD_CONFIG","isPre","isBetweenInlineElements","collapse","replaced","matchNewline","deltaEndsWith","ELEMENT_NODE","applyFormat","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","textDecoration","strike","textIndent","checkedAttr","createMatchAlias","onCaptureCopy","onCapturePaste","normalizeHTML","normalizeExternalHTML","DOMParser","nodeMatches","elementMatchers","textMatchers","prepareMatching","traverse","paste","isCut","onCopy","clipboardData","normalizeURIList","urlList","pastedDelta","Eh","preNodes","childrenDelta","reducedDelta","HTMLParagraphElement","lastRecorded","ignoreChange","currentRange","userOnly","transformRange","inputType","inverseDelta","restoreSelection","changeDelta","undoDelta","undoRange","maxStack","stackItem","deleteLength","changeIndex","endsWithNewlineChange","getLastChangeIndex","remoteDelta","oldItem","Ih","Uploader","caretRangeFromPoint","clientY","caretPositionFromPoint","uploads","mimetypes","FileReader","readAsDataURL","INSERT_TYPES","isMac","Clipboard","History","handleBeforeInput","replaceText","staticRange","getTargetRanges","getPlainTextFromInputEvent","isListening","selectionChangeDeadline","handleArrowKeys","handleNavigationShortcuts","isRTL","canMoveCaretBeforeUINode","ensureListeningToSelectionChange","handleSelectionChange","setStartAfter","setEndAfter","uc","normalizedValue","rd","Blockquote","Header","ListContainer","ListItem","listEventHandler","np","Bold","Lr","Italic","sanitize","PROTOCOL_WHITELIST","SANITIZED_URL","protocols","ya","xf","Script","Bh","Strike","Bd","Underline","katex","throwOnError","errorColor","formula","Ud","Formula","ATTRIBUTES","Fp","Image","Link","video","Bp","Video","TokenAttributor","CodeToken","SyntaxCodeBlockContainer","forceNext","SyntaxCodeBlock","highlight","cachedText","codeBlock","BreakBlot","hljs","highlightBlot","initListener","initTimer","select","lib","versionString","majorVersion","nodeText","Syntax","tableId","childFormats","Ct","TableContainer","balanceCells","maxColumns","Toolbar","groups","controls","control","addButton","addSelect","addControls","addHandler","selectedIndex","prompt","isActive","clean","codeIcon","justify","rtl","bullet","ordered","optionsCounter","buildPicker","togglePicker","toggleAriaAttribute","buildItem","tabIndex","buildLabel","buildOptions","ug","Picker","colorLabel","Ng","icons","defaultItem","gg","boundsContainer","overflowY","isScrollable","marginTop","rootBounds","ALIGNS","COLORS","FONTS","HEADERS","SIZES","tooltip","textbox","pickers","picker","extendToolbar","buildButtons","buttons","buildPickers","selects","fillSelect","IconPicker","ColorPicker","BaseTheme","fileInput","Tooltip","restoreFocus","preview","linkRange","extractVideoUrl","TOOLBAR_CONFIG","BaseTooltip","lastLine","indexBounds","arrow","marginLeft","jh","BubbleTooltip","BubbleTheme","LinkBlot","SnowTooltip","_range","SnowTheme","Indent","List","InlineCode","listenBalanceCells","balanceTables","insertRowAbove","insertRowBelow","Icons","ssrDocument","importNode","ssrWindow","go","CustomEvent","matchMedia","makeReactive","arrayFlat","getWindow","Dom7","toCreate","tempParent","qsa","uniqueArray","arrayUnique","noTrigger","shortcut","Methods","classNames","removeClass","hasClass","toggleClass","removeAttr","transition","transitionDuration","targetSelector","capture","dom7EventData","dom7LiveListeners","proxyListener","handleLiveEvent","dom7Listeners","dom7proxy","detail","dataIndex","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","outerHeight","compareWith","webkitMatchesSelector","msMatchesSelector","returnIndex","els","tempDiv","prepend","nextAll","nextEls","prevAll","prevEls","foundElements","axis","curTransform","curStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","noExtend","nextSource","keysArray","nextIndex","nextKey","Zt","__swiper__","varName","varValue","setProperty","targetPosition","startPosition","startTime","speed","wrapperEl","scrollSnapType","cssModeFrameID","isOutOfBound","animate","progress","easeProgress","currentPosition","support","deviceCached","smoothScroll","touch","DocumentTouch","passiveListener","supportsPassive","gestures","calcSupport","runCallbacks","activeIndex","previousIndex","we","touchEventsData","touches","animating","preventInteractionOnTransition","cssMode","loop","loopFix","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","isTouched","isMoved","noSwipingClass","shadowRoot","noSwipingSelector","noSwiping","assignedSlot","__closestFrom","closestElement","allowClick","swipeHandler","targetTouches","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","threshold","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchStart","rtlTranslate","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","maxTranslate","minTranslate","diffX","diffY","touchAngle","isHorizontal","touchMoveStopPropagation","startTranslate","getTranslate","setTransition","$wrapperEl","allowMomentumBounce","grabCursor","allowSlideNext","allowSlidePrev","setGrabCursor","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","pn","resistance","followFinger","watchSlidesProgress","updateActiveIndex","updateSlidesClasses","onTouchMove","updateProgress","setTranslate","slidesGrid","touchEndTime","timeDiff","pathTree","updateClickedSlide","lastClickTime","currentPos","onTouchEnd","stopIndex","groupSize","slidesSizesGrid","slidesPerGroupSkip","slidesPerGroup","rewindFirstIndex","rewindLastIndex","rewind","isBeginning","virtual","slides","isEnd","longSwipesMs","longSwipes","slideTo","longSwipesRatio","In","shortSwipes","navigation","nextEl","prevEl","breakpoints","setBreakpoint","snapGrid","updateSlides","slidesPerView","centeredSlides","autoplay","paused","watchOverflow","checkOverflow","preventClicks","preventClicksPropagation","newProgress","previousTranslate","Lt","translatesDiff","dummyEventAttached","touchEvents","device","domMethod","swiperMethod","passive","onClick","onScroll","updateOnWindowResize","ios","isGridEnabled","grid","resizeObserver","createElements","autoHeight","setWrapperSize","virtualTranslate","effect","breakpointsBase","spaceBetween","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","simulateTouch","uniqueNavElements","slideToClickedSlide","preloadImages","updateOnImagesReady","loopAdditionalSlides","loopedSlides","loopedSlidesLimit","loopFillGroupWithBlank","loopPreventsSlide","maxBackfaceHiddenSlides","containerModifierClass","slideClass","slideBlankClass","slideActiveClass","slideDuplicateActiveClass","slideVisibleClass","slideDuplicateClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","allModulesParams","moduleParamName","moduleParams","auto","prototypes","eventsEmitter","eventsListeners","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","$el","marginRight","getDirectionLabel","swiperSize","wrongRTL","isVirtual","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","Ye","marginBottom","setCSSProperty","gridEnabled","slideSize","initSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentWebKitTransform","getDirectionPropertyValue","boxSizing","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","slideIndex","allSlidesSize","slideSizeValue","maxSnap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","getSlideByIndex","visibleSlides","swiperSlideOffset","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","wasBeginning","wasEnd","realIndex","activeSlide","nextSlide","prevSlide","tt","emitSlidesClasses","newActiveIndex","previousRealIndex","previousSnapIndex","slideFound","clickedSlide","clickedIndex","byController","Ee","translateTo","translateBounds","internal","newTranslate","isH","animateCSSModeScroll","onTranslateToWrapperTransitionEnd","transitionStart","transitionEmit","indexAsNumber","normalizedTranslate","normalizedGrid","normalizedGridNext","je","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","slideNext","perGroup","slidesPerViewDynamic","_clientLeft","slidePrev","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","slideReset","slideToClosest","currentSnap","slideToIndex","loopCreate","$selector","blankSlidesNum","blankNode","prependSlides","appendSlides","loopDestroy","moving","isLocked","unsetGrabCursor","attachEvents","dummyEventListener","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","changeDirection","pe","containerEl","minRatio","wasLocked","lastSlideIndex","addClasses","suffixes","resultClasses","prepareClasses","autoheight","centered","removeClasses","loadImage","imageEl","srcset","sizes","checkForComplete","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","swipers","Swiper","overrides","getSupport","_temp","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","isSafari","isWebView","calcBrowser","__modules__","extendParams","moduleExtendParams","swiperParams","passedParams","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","getSlideClasses","slideEl","exact","spv","breakLoop","slideInView","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","getWrapperSelector","getWrapper","Bt","deleteInstance","cleanStyles","deleteProps","newDefaults","installModule","prototypeGroup","protoMethod","use","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","contentBoxSize","contentRect","inlineSize","unobserve","WebkitMutationObserver","observerUpdate","observeParents","observeSlideChildren","containerParents","cssModeTimeout","$slideEl","renderSlide","addSlidesBefore","addSlidesAfter","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","slidesAfter","slidesBefore","lazy","renderExternal","slidesToRender","renderExternalUpdate","onRendered","prependIndexes","appendIndexes","appendSlide","prependSlide","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","removeSlide","slidesIndexes","removeAllSlides","checkProps","disabledClass","lockClass","$nextEl","$prevEl","toggleEl","createElementIfNotDefined","getEl","onNextClick","onPrevClick","hideOnClick","hiddenClass","navigationDisabledClass","pagination","clickable","isHidden","pfx","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","bulletSize","dynamicBulletIndex","$bulletEl","isPaginationDisabled","paginationType","firstIndex","midIndex","$bullet","bulletIndex","setSideBullets","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","classesToSelector","progressbarDirection","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","$dragEl","newPos","co","positionRatio","getPointerPosition","setDragPosition","returnValue","snapOnRelease","activeListener","eventMethod","onDragStart","onDragMove","onDragEnd","$swiperEl","dragClass","dragEl","draggable","scrollbarDisabledClass","maxRatio","containerClass","zoomedSlideClass","gesturesEnabled","fakeGestureTouched","fakeGestureMoved","isScaling","gesture","slideWidth","slideHeight","$imageEl","$imageWrapEl","minX","maxX","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","scaleStart","getDistanceBetweenTouches","scaleMove","onGestureStart","scaledWidth","scaledHeight","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","touchAction","zoomOut","zoomIn","activeListenerWithCapture","getListeners","slideSelector","getSlideSelector","onGestureChange","onGestureEnd","toggleGestures","enableGestures","disableGestures","momentumDurationX","momentumDurationY","newPositionX","newPositionY","momentumDuration","zoomToggle","onTransitionEnd","binarySearch","guess","spline","by","removeSpline","controlled","controlledTranslate","LinearSpline","getInterpolateFunction","setControlledTranslate","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","liveRegion","role","hasPagination","initNavEl","wrapperId","makeElFocusable","addElRole","onEnterOrSpaceKey","addElLabel","addElControls","handleFocus","addElRoleDescription","$containerEl","getRandomNumber","live","addElId","addElLive","hasClickablePagination","disableEl","makeElNotFocusable","enableEl","updateNavigation","bulletEl","Ri","updatePagination","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","waitForTransition","pause","disableOnInteraction","pauseOnMouseEnter","onVisibilityChange","onMouseEnter","onMouseLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","thumbsParams","SwiperClass","thumbsSwiperParams","onThumbClick","thumbsToActivate","thumbActiveClass","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","sticky","minimumVelocity","lastMoveEvent","velocityEvent","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","nt","_cellClicked","activeDate","_dateSelected","_userSelected","_monthSelectedInYearView","_goToDateInView","_yearSelectedInMultiYearView","formatInput","Ze","toggleMeridian","datepicker","NGX_MAT_DATE_FORMATS","ariaLabel","cssClasses","compareValue","NgxMatCalendarBody","_elementRef","_ngZone","numCols","activeCell","isRange","cellAspectRatio","previewStart","previewEnd","selectedValueChange","previewChange","_enterHandler","_skipNextFocus","_getCellFromElement","_leaveHandler","_isSelected","startValue","endValue","columnChanges","_firstRowOffset","_cellPadding","_cellWidth","_isActiveCell","rowIndex","cellNumber","_focusActiveCell","movePreview","onStable","_isRangeStart","isStart","_isRangeEnd","_isInRange","isInRange","_isComparisonStart","comparisonStart","comparisonEnd","_isComparisonBridgeStart","previousCell","previousRow","_isComparisonBridgeEnd","_isComparisonEnd","nextCell","_isInComparisonRange","_isPreviewStart","_isPreviewEnd","_isInPreview","rangeEnabled","DateAdapter","isSameTime","getHour","getMinute","getSecond","copyTime","toDate","fromDate","setHour","setMinute","setSecond","compareDateWithTime","showSeconds","compareDate","setTimeByDefaultValues","defaultTime","NGX_MAT_DATE_RANGE_SELECTION_STRATEGY","DefaultNgxMatCalendarRangeStrategy","_dateAdapter","selectionFinished","jn","DateRange","createPreview","NgxMatDateAdapter","LIMIT_TIMES","minHour","maxHour","minMinute","maxMinute","minSecond","maxSecond","meridian","NUMERIC_REGEX","PATTERN_INPUT_HOUR","PATTERN_INPUT_MINUTE","PATTERN_INPUT_SECOND","txt","NgxMatMonthView","_changeDetectorRef","_dateFormats","_dir","_rangeStrategy","_rerenderSubscription","selectedChange","_userSelection","activeDateChange","createMissingDateImplError","_activeDate","oldActiveDate","validDate","_getValidDateOrNull","clampDate","maxDate","_hasSameMonthAndYear","_init","_setRanges","_minDate","_maxDate","ngAfterContentInit","localeChanges","selectedYear","getYear","selectedMonth","selectedDate","createDate","rangeStartDate","rangeEndDate","_getDateInCurrentMonth","_handleCalendarBodyKeydown","isRtl","_isRtl","LEFT_ARROW","addCalendarDays","RIGHT_ARROW","UP_ARROW","DOWN_ARROW","HOME","END","getNumDaysInMonth","PAGE_UP","addCalendarYears","addCalendarMonths","PAGE_DOWN","dateFilter","ESCAPE","_previewEnd","_previewStart","_todayDate","_getCellCompareValue","_monthLabel","getMonthNames","toLocaleUpperCase","firstOfMonth","_firstWeekOffset","getDayOfWeek","getFirstDayOfWeek","_initWeekdays","_createWeekCells","markForCheck","_matCalendarBody","_previewChanged","previewRange","firstDayOfWeek","narrowWeekdays","getDayOfWeekNames","weekdays","long","narrow","_weekdays","daysInMonth","dateNames","getDateNames","_weeks","_shouldEnableDate","dateA11yLabel","cellClasses","dateClass","NgxMatCalendarCell","isDateInstance","selectedValue","_isRange","_comparisonRangeStart","_comparisonRangeEnd","NgxMatMultiYearView","yearSelected","isSameMultiYearView","_setSelectedYear","_todayYear","minYearOfPage","activeYear","getActiveOffset","_years","_createCellForYear","_yearSelected","yearsPerPage","_getActiveCell","yearName","getYearName","_shouldEnableYear","_selectedYear","date1","date2","year1","year2","startingYear","getStartingYear","euclideanModulo","NgxMatYearView","monthSelected","_setSelectedMonth","_monthSelected","normalizedDate","_todayMonth","_getMonthInCurrentYear","_yearLabel","monthNames","_months","_createCellForMonth","monthName","monthYearA11yLabel","_shouldEnableMonth","_isYearAndMonthAfterMaxDate","_isYearAndMonthBeforeMinDate","maxYear","maxMonth","minYear","minMonth","_selectedMonth","NgxMatCalendarHeader","_intl","calendar","changeDetectorRef","periodButtonText","currentView","monthYearLabel","maxYearOfPage","formatYearRange","periodButtonLabel","switchToMultiYearViewLabel","switchToMonthViewLabel","prevButtonLabel","prevMonthLabel","prevYearLabel","prevMultiYearLabel","nextButtonLabel","nextMonthLabel","nextYearLabel","nextMultiYearLabel","currentPeriodClicked","previousClicked","nextClicked","previousEnabled","_isSameView","nextEnabled","i1$1","forwardRef","NgxMatCalendar","_moveFocusOnNextTick","startView","_intlChanges","_startAt","_clampedActiveDate","_currentView","_calendarHeaderPortal","ComponentPortal","headerComponent","focusActiveCell","firstChange","_getCurrentViewComponent","updateTodaysDate","monthView","yearView","multiYearView","sameDate","normalizedYear","normalizedMonth","i7","NgxMatTimepickerComponent","cd","formBuilder","showSpinners","stepHour","stepMinute","stepSecond","disableMinute","enableMeridian","_onChange","_onTouched","_destroyed","form","Validators","valid","takeUntil","debounceTime","_updateModel","_setDisableStates","writeValue","_model","_updateHourMinuteSecond","registerOnChange","registerOnTouched","setDisabledState","isDisabled","_disabled","_getNextValueByProp","setValue","formatTwoDigitTimeValue","onlySelf","emitEvent","_hour","_minute","_second","keyProp","i2$1","NG_VALUE_ACCESSOR","useExisting","i2$2","i7$1","i4","datepickerUid","_MatDatetimepickerContentBase","mixinColor","NgxMatDatetimeContent","_viewContainerRef","hideTime","_timePicker","isViewMonth","_calendar","_customIcon","_templateCustomIconPortal","TemplatePortal","matDatepickerAnimations","changeDetection","NgxMatDatetimePicker","_dialog","_overlay","scrollStrategy","_document","_defaultColor","_touchUi","_hideTime","openedStream","closedStream","_opened","_showSpinners","_showSeconds","_stepHour","_stepMinute","_stepSecond","_enableMeridian","_hasBackdrop","_validSelected","_focusedElementBeforeOpen","_inputSubscription","_selectedChanged","_minValidator","matDatetimePickerMin","actual","_maxValidator","matDatetimePickerMax","_scrollStrategy","datepickerInput","defaultColor","_color","_getThemePalette","touchUi","coerceBooleanProperty","opened","_disableMinute","_defaultTime","minValidators","maxValidators","_dateFilter","_popupRef","_popupComponentRef","_selectYear","_selectMonth","_rawValue","_registerInput","_valueChange","_openAsDialog","_openAsPopup","hasAttached","_dialogRef","_calendarPortal","isAttached","completeClose","componentInstance","_setColor","overlayConfig","OverlayConfig","positionStrategy","_createPopupPositionStrategy","backdropClass","overlayElement","backdropClick","detachments","keydownEvents","flexibleConnectedTo","getConnectedOverlayOrigin","withTransformOriginOn","withFlexibleDimensions","withViewportMargin","withLockedPosition","withPositions","originX","originY","overlayX","overlayY","i8","i9","MAT_DATEPICKER_SCROLL_STRATEGY","DOCUMENT","TemplateRef","MAT_DATEPICKER_VALUE_ACCESSOR","NgxMatDatetimeInput","MAT_DATEPICKER_VALIDATORS","NG_VALIDATORS","SUPPORTS_INTL_API","_formField","dateChange","dateInput","_cvaOnChange","_validatorOnChange","_datepickerSubscription","_localeSubscription","_parseValidator","_lastValueValid","matDatetimePickerParse","controlValue","_datepicker","_filterValidator","matDatetimePickerFilter","_validator","ngxMatDatetimePicker","MatDatetimePickerInputEvent","ngxMatDatetimePickerFilter","oldDate","_formatValue","_min","_max","registerOnValidatorChange","getPopupConnectionElementRef","_onKeydown","_onInput","lastValueWasValid","_onBlur","_onFocus","MAT_INPUT_VALUE_ACCESSOR","NgxMatTimepickerModule","MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER","Intl","DEFAULT_MONTH_NAMES","short","DEFAULT_DATE_NAMES","DEFAULT_DAY_OF_WEEK_NAMES","ISO_8601_REGEX","valueFunction","valuesArray","NgxMatNativeDateAdapter","matDateLocale","useUtcForDisplay","TRIDENT","_clampDate","EDGE","getDay","dtf","DateTimeFormat","locale","timeZone","_stripDirectionalityCharacters","_format","weekday","_createDateWithOverflow","displayFormat","setFullYear","toDateString","years","months","newDate","days","toIso8601","getUTCFullYear","_2digit","invalid","NaN","getMinutes","getSeconds","setMinutes","setSeconds","setUTCFullYear","setUTCHours","i1$2","DEFAULT_DATE_INPUT","hour12","NGX_MAT_NATIVE_DATE_FORMATS","NgxNativeDateModule","PlatformModule","AUTO_STYLE","timings","stateChangeExpr","expr","_onDoneFns","_onStartFns","_onDestroyFns","_finished","parentPlayer","totalTime","_onFinish","onStart","onDestroy","hasStarted","play","_onStart","triggerMicrotask","scheduleMicroTask","restart","setPosition","triggerCallback","phaseName","_players","players","doneCount","destroyCount","startCount","player","_onDestroy","timeAtPosition","longestPlayer","longestSoFar","newPlayerIsLongest","beforeDestroy","ɵPRE_STYLE","MESSAGES_CONTAINER_ID","CDK_DESCRIBEDBY_ID_PREFIX","CDK_DESCRIBEDBY_HOST_ATTRIBUTE","nextId","messageRegistry","messagesContainer","AriaDescriber","describe","_canBeDescribed","setMessageId","messageElement","referenceCount","_createMessageElement","_isElementDescribedByMessage","_addMessageReference","removeDescription","_isElementNode","_removeMessageReference","registeredMessage","_deleteMessageElement","_deleteMessagesContainer","describedElements","_removeCdkDescribedByReferenceIds","_createMessagesContainer","preExistingContainer","originalReferenceIds","getAriaReferenceIds","ids","existingId","addAriaReferencedId","filteredIds","removeAriaReferencedId","referenceIds","trimmedMessage","_items","_activeItemIndex","_activeItem","_wrap","_letterKeyStream","_typeaheadSubscription","_vertical","_allowedModifierKeys","_homeAndEnd","_skipPredicateFn","_pressedLetters","tabOut","QueryList","newItems","itemArray","skipPredicate","withWrap","shouldWrap","withVerticalOrientation","withHorizontalOrientation","_horizontal","withAllowedModifierKeys","withTypeAhead","debounceInterval","letter","inputString","_getItemsArray","getLabel","setActiveItem","withHomeAndEnd","previousActiveItem","updateActiveItem","onKeydown","isModifierAllowed","modifiers","setNextItemActive","setPreviousItemActive","setFirstItemActive","setLastItemActive","hasModifierKey","ZERO","NINE","activeItemIndex","activeItem","isTyping","_setActiveItemByIndex","_setActiveItemByDelta","_setActiveInWrapMode","_setActiveInDefaultMode","fallbackDelta","ListKeyManager","setInactiveStyles","setActiveStyles","setFocusOrigin","InteractivityChecker","_platform","getClientRects","hasGeometry","isTabbable","frameElement","getFrameElement","getTabIndexValue","tabIndexValue","WEBKIT","IOS","isPotentiallyTabbableIOS","FIREFOX","isFocusable","isInputElement","isHiddenInput","isNativeFormElement","isAnchorElement","isAnchorWithHref","hasValidTabIndex","isPotentiallyFocusable","ignoreVisibility","_element","_checker","deferAnchors","_hasAttached","startAnchorListener","focusLastTabbableElement","endAnchorListener","focusFirstTabbableElement","attachAnchors","_startAnchor","_endAnchor","_toggleAnchorTabIndex","startAnchor","endAnchor","_createAnchor","focusInitialElementWhenReady","_executeOnStable","focusInitialElement","focusFirstTabbableElementWhenReady","focusLastTabbableElementWhenReady","_getRegionBoundary","bound","markers","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","focusableChild","tabbableChild","toggleAnchors","isStable","FocusTrapFactory","deferCaptureElements","FocusTrap","CdkTrapFocus","_focusTrapFactory","_previouslyFocusedElement","focusTrap","autoCapture","_autoCapture","_captureFocus","ngDoCheck","autoCaptureChange","_getFocusedElementPierceShadowDom","radiusX","radiusY","INPUT_MODALITY_DETECTOR_OPTIONS","INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS","ignoreKeys","ALT","CONTROL","MAC_META","META","SHIFT","modalityEventListenerOptions","normalizePassiveListenerOptions","InputModalityDetector","_mostRecentTarget","_modality","_lastTouchMs","_getEventTarget","_onMousedown","isFakeMousedownFromScreenReader","_onTouchstart","isFakeTouchstartFromScreenReader","modalityDetected","modalityChanged","mostRecentModality","LIVE_ANNOUNCER_ELEMENT_TOKEN","providedIn","LIVE_ANNOUNCER_DEFAULT_OPTIONS","LiveAnnouncer","elementToken","_defaultOptions","_liveElement","_createLiveElement","announce","politeness","_previousTimeout","Ft","elementClass","previousElements","liveEl","CdkAriaLive","_liveAnnouncer","_contentObserver","_politeness","_subscription","elementText","_previousAnnouncedText","FOCUS_MONITOR_DEFAULT_OPTIONS","captureEventListenerOptions","FocusMonitor","_inputModalityDetector","_windowFocused","_originFromTouchInteraction","_elementInfo","_monitoredElementCount","_rootNodeFocusListenerCount","_windowFocusListener","_windowFocusTimeoutId","_stopInputModalityDetector","_rootNodeFocusAndBlurListener","_detectionMode","detectionMode","monitor","checkChildren","coerceElement","rootNode","_getShadowRoot","_getDocument","cachedInfo","_registerGlobalListeners","stopMonitoring","elementInfo","_setClasses","_removeGlobalListeners","focusVia","_getClosestElementsInfo","currentElement","_originChanged","_setOrigin","_info","_getWindow","_getFocusOrigin","focusEventTarget","_shouldBeAttributedToTouch","_lastFocusOrigin","isFromInteraction","_originTimeoutId","relatedTarget","_emitOrigin","rootNodeFocusListeners","modality","CdkMonitorFocus","_focusMonitor","cdkFocusChange","_monitorSubscription","BLACK_ON_WHITE_CSS_CLASS","WHITE_ON_BLACK_CSS_CLASS","HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS","HighContrastModeDetector","getHighContrastMode","testElement","documentWindow","computedStyle","computedColor","_applyBodyHighContrastModeCssClasses","_hasCheckedHighContrastMode","bodyClasses","highContrastModeDetector","ObserversModule","nextId$1","CDK_ACCORDION","CdkAccordion","_stateChanges","_openCloseAllActions","_multi","openAll","closeAll","CdkAccordionItem","accordion","_expansionDispatcher","_openCloseAllSubscription","expandedChange","_expanded","_removeUniqueSelectionListener","accordionId","_subscribeToOpenCloseAllActions","DIR_DOCUMENT","inject","Directionality","htmlDir","textarea","_textarea","successful","currentFocus","setSelectionRange","execCommand","pendingCopy","beginCopy","PendingCopy","CDK_COPY_TO_CLIPBOARD_CONFIG","CdkCopyToClipboard","_clipboard","attempts","copied","_pending","remainingAttempts","_currentTimeout","fallbackValue","_isNumberValue","elementOrRef","sourceValues","sourceValue","trimmedString","connect","applyChanges","itemContextFactory","itemValueResolver","itemViewChanged","forEachOperation","adjustedPreviousIndex","insertContext","createEmbeddedView","templateRef","viewCacheSize","_viewCache","_insertView","_detachAndCacheView","_moveView","viewArgsFactory","cachedView","_insertViewFromCache","$implicit","viewArgs","detachedView","_maybeCacheView","_multiple","initiallySelectedValues","_emitChanges","_selection","_deselectedToEmit","_selectedToEmit","_markSelected","_verifyValueAssignment","_emitChangeEvent","deselect","_unmarkSelected","_unmarkAll","isMultipleSelection","added","UniqueSelectionDispatcher","registered","_VIEW_REPEATER_STRATEGY","importantProperties","removeProperty","userSelect","extendStyles","initialTransform","clientRect","pointerX","pointerY","xThreshold","yThreshold","_viewportRuler","scrollPosition","getViewportScrollPosition","getMutableClientRect","handleScroll","cachedPosition","newTop","newLeft","viewportScrollPosition","topDifference","leftDifference","adjustClientRect","descendantsWithId","transferCanvasData","transferInputData","transferData","descendantElements","cloneElements","cloneUniqueId","passiveEventListenerOptions","activeEventListenerOptions","dragImportantProperties","_dragDropRegistry","_passiveTransform","_activeTransform","_hasStartedDragging","_moveEvents","_pointerMoveSubscription","_pointerUpSubscription","_scrollSubscription","_resizeSubscription","_boundaryElement","_nativeInteractionsEnabled","_handles","_disabledHandles","_direction","dragStartDelay","beforeStarted","released","ended","entered","dropped","_pointerDown","targetHandle","_initializeDragSequence","_rootElement","_pointerMove","pointerPosition","_getPointerPositionOnPage","_pickupPositionOnPage","dragStartThreshold","isDelayElapsed","_dragStartTime","_getDragStartDelay","_dropContainer","_endDragSequence","isDragging","isReceiving","_startDragSequence","_previewRect","_preview","constrainedPointerPosition","_getConstrainedPointerPosition","_hasMoved","_lastKnownPointerPosition","_updatePointerDirectionDelta","_updateActiveDropContainer","activeTransform","_applyRootElementTransform","distance","_getDragDistance","_pointerDirectionDelta","_pointerUp","withRootElement","withParent","parentDragRef","_parentPositions","ParentPositionTracker","registerDragItem","_toggleNativeDragInteractions","toggleNativeDragInteractions","getPlaceholderElement","_placeholder","getRootElement","getVisibleElement","withHandles","handles","disabledHandles","withPreviewTemplate","_previewTemplate","withPlaceholderTemplate","_placeholderTemplate","rootElement","_removeRootElementListeners","_initialTransform","SVGElement","_ownerSVGElement","ownerSVGElement","withBoundaryElement","boundaryElement","_containInsideBoundaryOnResize","_parentDragRef","_anchor","re","_destroyPreview","_destroyPlaceholder","removeDragItem","_removeSubscriptions","disableHandle","enableHandle","withDirection","_withDropContainer","getFreeDragPosition","setFreeDragPosition","withPreviewContainer","_previewContainer","_sortFromLastPointerPosition","_previewRef","_placeholderRef","stopDragging","webkitTapHighlightColor","_rootElementTapHighlight","_stopScrolling","_animatePreviewToPlaceholder","_cleanupDragArtifacts","_cleanupCachedDimensions","dropPoint","_lastTouchEventTime","dropContainer","_createPlaceholderElement","createComment","_createPreviewElement","toggleVisibility","_getPreviewInsertionPoint","_initialContainer","_initialIndex","getItemIndex","getScrollableParents","referenceElement","isTouchSequence","isAuxiliaryMouseButton","isSyntheticEvent","isFakeEvent","rootStyles","pointerMove","pointerUp","scrolled","scrollEvent","_updateOnScroll","_boundaryRect","previewTemplate","_pickupPositionInElement","matchSize","_getPointerPositionInElement","_pointerPositionAtLastDirectionChange","startDragging","isPointerOverContainer","_isOverContainer","previousContainer","rawX","rawY","newContainer","_getSiblingContainerFromPosition","sortingDisabled","_startScrollingIfNecessary","_sortItem","_applyPreviewTransform","previewConfig","previewClass","rootRect","viewRef","viewContainer","matchElementSize","getTransform","deepCloneNode","placeholderRect","transitionedProperties","parseCssPropertyValue","propertyIndex","rawDurations","rawDelays","parseCssTimeUnitsToMs","getTransformTransitionDurationInMs","propertyName","placeholderConfig","placeholderTemplate","elementRect","handleElement","referenceRect","_getViewportScrollPosition","svgMatrix","getScreenCTM","svgPoint","createSVGPoint","matrixTransform","dropContainerLock","lockAxis","constrainPosition","pickupX","pickupY","boundaryRect","previewRect","clamp$1","pointerPositionOnPage","positionSinceLastChange","changeX","changeY","pointerDirectionChangeThreshold","shouldEnable","combineTransforms","pickupPosition","leftOverflow","rightOverflow","topOverflow","bottomOverflow","mouse","scrollDifference","_cachedShadowRoot","initialParent","previewContainer","documentRef","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","sourceRect","autoScrollDisabled","autoScrollStep","enterPredicate","sortPredicate","sorted","_isDragging","_itemPositions","_previousSwap","drag","overlaps","_draggables","_siblings","_orientation","_activeSiblings","_viewportScrollSubscription","_verticalScrollDirection","_horizontalScrollDirection","_stopScrollTimers","_startScrollInterval","period","_scrollNode","scrollStep","withScrollableParents","registerDropContainer","removeDropContainer","_draggingStarted","_notifyReceivingSiblings","_getItemIndexFromPointerPosition","activeDraggables","_activeDraggables","newPositionReference","_shouldEnterAsFirstChild","_cacheItemPositions","_cacheParentPositions","withItems","previousItems","draggedItems","_cacheItems","connectedTo","withOrientation","orientation","_scrollableElements","currentItem","pointerDelta","_clientRect","isPointerNearClientRect","siblings","siblingAtNewPosition","itemOffset","_getItemOffsetPx","siblingOffset","_getSiblingOffsetPx","oldOrder","toIndex","moveItemInArray","sibling","isDraggedItem","elementToOffset","isInsideClientRect","scrollNode","verticalScrollDirection","horizontalScrollDirection","computedVertical","getVerticalScrollDirection","computedHorizontal","getHorizontalScrollDirection","getElementScrollDirections","getViewportSize","_initialScrollSnap","msScrollSnapType","_listenToScrollEvents","elementToMeasure","_stopReceiving","immediateSibling","itemPositions","lastItemRect","firstItemRect","_canReceive","elementFromPoint","_startReceiving","activeSiblings","activeCapturingEventOptions","DragDropRegistry","_dropInstances","_dragInstances","_activeDragInstances","_globalListeners","_draggingPredicate","_preventDefaultWhileDragging","_persistentTouchmoveListener","_clearGlobalListeners","streams","DEFAULT_CONFIG","DragDrop","createDrag","DragRef","createDropList","DropListRef","CDK_DRAG_PARENT","CDK_DRAG_CONFIG","CDK_DROP_LIST","CDK_DRAG_HANDLE","CDK_DRAG_PLACEHOLDER","CDK_DRAG_PREVIEW","CdkDrag","dragDrop","_selfHandle","_parentDrag","_dragRef","movedEvent","_assignDefaults","_dropListRef","addItem","_syncInputs","_handleEvents","_updateRootElement","_setupHandlesListener","freeDragPosition","rootSelectorChange","rootElementSelector","positionChange","_getBoundaryElement","coerceNumberProperty","draggingDisabled","childHandleElements","handleInstance","dragRef","Ae","He","CdkScrollableModule","BACKSPACE","mediaQueriesForWebkitCompatibility","mediaQueryStyleNode","MediaMatcher","_matchMedia","noopMatchMedia","BLINK","createEmptyStyleRule","media","BreakpointObserver","_mediaMatcher","_zone","_queries","_destroySubject","isMatched","coerceArray","mediaQuery","_registerQuery","mql","splitQueries","stateObservable","combineLatest","breakpointStates","Breakpoints","XSmall","Small","Medium","Large","XLarge","Handset","Tablet","Web","HandsetPortrait","TabletPortrait","WebPortrait","HandsetLandscape","TabletLandscape","WebLandscape","MutationObserverFactory","ContentObserver","_mutationObserverFactory","_observedElements","_cleanupObserver","_observeElement","_unobserveElement","CdkObserveContent","_currentSubscription","_debounce","scrollBehaviorSupported","supportsScrollBehavior","_previousHTMLStyles","_isEnabled","_canBeEnabled","_previousScrollPosition","coerceCssPixelValue","htmlStyle","bodyStyle","previousHtmlScrollBehavior","scrollBehavior","previousBodyScrollBehavior","_scrollDispatcher","_detach","_overlayRef","overlayRef","_initialScrollPosition","scrollContainers","scrollContainerRect","scrollThrottle","autoClose","overlayRect","isElementScrolledOutsideView","ScrollStrategyOptions","NoopScrollStrategy","CloseScrollStrategy","BlockScrollStrategy","reposition","RepositionScrollStrategy","disposeOnNavigation","connectionPair","scrollableViewProperties","BaseOverlayDispatcher","_attachedOverlays","OverlayKeyboardDispatcher","_keydownListener","overlays","_keydownEvents","_isAttached","OverlayOutsideClickDispatcher","_cursorStyleIsSet","_pointerDownListener","_pointerDownEventTarget","_clickListener","_outsidePointerEvents","_cursorOriginalValue","OverlayContainer","_containerElement","getContainerElement","_isTestEnvironment","oppositePlatformContainers","_portalOutlet","_pane","_keyboardDispatcher","_outsideClickDispatcher","_backdropElement","_backdropClick","_attachments","_detachments","_locationChanges","_backdropClickHandler","_positionStrategy","backdropElement","portal","attachResult","_previousHostParent","_updateStackingOrder","_updateElementSize","_updateElementDirection","_togglePointerEvents","_attachBackdrop","_toggleClasses","detachBackdrop","detachmentResult","_detachContentWhenStable","_disposeScrollStrategy","_disposeBackdrop","outsidePointerEvents","getConfig","updatePositionStrategy","sizeConfig","setDirection","addPanelClass","removePanelClass","updateScrollStrategy","minWidth","minHeight","enablePointer","pointerEvents","showingClass","backdropToDetach","finishDetach","isAdd","boundingBoxClass","cssUnitPattern","_overlayContainer","_lastBoundingBoxSize","_isPushed","_canPush","_growAfterOpen","_hasFlexibleDimensions","_positionLocked","_viewportMargin","_scrollables","_preferredPositions","_positionChanges","_offsetX","_offsetY","_appliedPanelClasses","positionChanges","setOrigin","_validatePositions","_boundingBox","_isDisposed","_isInitialRender","_lastPosition","reapplyLastPosition","_clearPanelClasses","_resetOverlayElementStyles","_resetBoundingBoxStyles","_viewportRect","_getNarrowedViewportRect","_originRect","_getOriginRect","_overlayRect","originRect","viewportRect","flexibleFits","originPoint","_getOriginPoint","overlayPoint","_getOverlayPoint","overlayFit","_getOverlayFit","isCompletelyWithinViewport","_applyPosition","_canFitWithFlexibleDimensions","boundingBoxRect","_calculateBoundingBoxRect","visibleArea","bestFit","fit","weight","_previousPushAmount","alignItems","justifyContent","lastPosition","withScrollableContainers","scrollables","flexibleDimensions","withGrowAfterOpen","growAfterOpen","withPush","canPush","withDefaultOffsetX","withDefaultOffsetY","_transformOriginSelector","endX","overlayStartX","overlayStartY","rawOverlayRect","overlay","getRoundedBoundingClientRect","_getOffset","visibleWidth","_subtractOverflows","visibleHeight","fitsInViewportVertically","fitsInViewportHorizontally","availableHeight","availableWidth","getPixelValue","horizontalFit","_pushOverlayOnScreen","overflowRight","overflowBottom","overflowTop","overflowLeft","pushX","pushY","ie","_setTransformOrigin","_setOverlayElementStyles","_setBoundingBoxStyles","_addPanelClasses","_getScrollVisibility","changeEvent","ConnectedOverlayPositionChange","xOrigin","yOrigin","smallestDistanceToViewportEdge","previousHeight","previousWidth","_hasExactPosition","hasExactPosition","hasFlexibleDimensions","_getExactOverlayY","_getExactOverlayX","transformString","virtualKeyboardOffset","horizontalStyleProperty","originBounds","overlayBounds","scrollContainerBounds","scrollable","getElementRef","isOriginClipped","isElementClippedByScrolling","isOriginOutsideView","isOverlayClipped","isOverlayOutsideView","currentOverflow","cssClass","_cssPosition","_topOffset","_bottomOffset","_leftOffset","_rightOffset","_alignItems","_justifyContent","_width","_height","centerHorizontally","centerVertically","parentStyles","shouldBeFlushHorizontally","shouldBeFlushVertically","OverlayPositionBuilder","GlobalPositionStrategy","FlexibleConnectedPositionStrategy","nextUniqueId","Overlay","scrollStrategies","_componentFactoryResolver","_positionBuilder","_injector","_directionality","_createHostElement","pane","_createPaneElement","portalOutlet","_createPortalOutlet","OverlayRef","_appRef","ApplicationRef","DomPortalOutlet","i5","i6","defaultPositionList","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY","CdkOverlayOrigin","CdkConnectedOverlay","scrollStrategyFactory","_lockPosition","_flexibleDimensions","_push","_backdropSubscription","_attachSubscription","_detachSubscription","_positionSubscription","viewportMargin","overlayKeydown","overlayOutsideClick","_templatePortal","_scrollStrategyFactory","_updatePositionStrategy","lockPosition","_attachOverlay","_detachOverlay","_createOverlay","_buildConfig","_createPositionStrategy","_getFlexibleConnectedPositionStrategyOrigin","transformOriginSelector","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER","hasV8BreakIterator","v8BreakIterator","supportedInputTypes","Platform","_platformId","isPlatformBrowser","CSS","ANDROID","SAFARI","candidateInputTypes","featureTestInput","supportsPassiveEvents","rtlScrollAxisType","shadowDomIsSupported","supportsPassiveEventListeners","scrollToFunction","scrollContainer","containerStyle","contentStyle","createShadowRoot","attachShadow","_supportsShadowDom","ShadowRoot","newActiveElement","__karma__","jasmine","jest","Mocha","_attachedHost","setAttachedHost","Portal","componentFactoryResolver","attachDomPortal","_attachedPortal","attachComponentPortal","attachTemplatePortal","DomPortal","_invokeDisposeFn","setDisposeFn","_disposeFn","BasePortalOutlet","outletElement","_defaultInjector","anchorNode","componentFactory","_getComponentRootNode","CdkPortalOutlet","_getRootNode","attachedRef","_attachedRef","durationSelector","durationSubscriber","endDuration","cleanupDuration","audit","ScrollDispatcher","_scrolled","_globalSubscription","_scrolledCount","elementScrolled","deregister","scrollableReference","auditTimeInMs","_addGlobalListener","auditTime","_removeGlobalListener","ancestorScrolled","elementOrElementRef","ancestors","getAncestorScrollContainers","scrollingContainers","_scrollableContainsElement","scrollableElement","CdkScrollable","scrollDispatcher","_elementScrolled","getRtlScrollAxisType","_applyScrollToOptions","measureScrollOffset","LEFT","ViewportRuler","_change","_changeListener","_viewportSize","_updateViewportSize","getViewportRect","documentRect","throttleTime","_DOM","adapter","PlatformLocation","historyGo","relativePosition","ɵɵinject","BrowserPlatformLocation","LOCATION_INITIALIZED","_doc","_history","getBaseHrefFromDOM","getDOM","getBaseHref","onPopState","getGlobalEventTarget","onHashChange","newPath","supportsState","slashes","pathEndIdx","LocationStrategy","platformLocation","PathLocationStrategy","provideLocationStrategy","APP_BASE_HREF","_platformLocation","_removeListenerFns","_baseHref","prepareExternalUrl","joinWithSlash","includeHash","normalizeQueryParams","externalUrl","HashLocationStrategy","Location","platformStrategy","_subject","_urlChangeListeners","_platformStrategy","browserBaseHref","stripTrailingSlash","_stripIndexHtml","ev","isCurrentPathEqualTo","baseHref","_stripBaseHref","_notifyUrlChangeListeners","onUrlChange","_urlChangeSubscription","onThrow","onReturn","CURRENCIES_EN","ADP","AFN","ALL","AMD","AOA","ARS","AUD","AZN","BAM","BBD","BDT","BHD","BIF","BMD","BND","BOB","BRL","BSD","BWP","BYN","BYR","BZD","CAD","CHF","CLF","CLP","CNY","COP","CRC","CUC","CUP","CZK","DJF","DKK","DOP","EGP","ESP","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GNF","GTQ","GYD","HKD","HNL","HRK","HUF","IDR","ILS","INR","IQD","IRR","ISK","ITL","JMD","JOD","JPY","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LTL","LUF","LVL","LYD","MGA","MGF","MMK","MNT","MRO","MUR","MXN","MYR","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PHP","PKR","PLN","PYG","RON","RSD","RUB","RUR","RWF","SBD","SEK","SGD","SHP","SLL","SOS","SRD","SSP","STD","STN","SYP","THB","TMM","TND","TRL","TRY","TTD","TWD","TZS","UAH","UGX","USD","UYI","UYU","UYW","UZS","VEF","VND","VUV","XAF","XCD","XOF","XPF","XXX","YER","ZAR","ZMK","ZMW","ZWD","NumberFormatStyle","Decimal","Percent","Currency","Scientific","Plural","Zero","One","Two","Few","Many","Other","FormStyle","Format","Standalone","TranslationWidth","Narrow","Abbreviated","Wide","Short","FormatWidth","Long","Full","NumberSymbol","Group","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","TimeSeparator","CurrencyDecimal","CurrencyGroup","getLastDefinedValue","ɵfindLocaleData","ɵLocaleDataIndex","getLocalePluralCase","ɵgetLocalePluralCase","minutes","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","ShortGMT","Extended","DateType","FullYear","Month","Hours","Minutes","Seconds","FractionalSeconds","Day","TranslationType","DayPeriods","Days","Months","Eras","timezone","parsedNb","tzHour","tzMin","dateSetter","timeSetter","isoStringToDate","getNamedFormat","dateTimezoneOffset","getTimezoneOffset","timezoneToOffset","addDateMinutes","convertTimezoneToLocal","dateFormatter","DATE_FORMATS","formatter","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","getDateFormatter","localeId","getLocaleId","formatValue","getLocaleDateFormat","getLocaleTimeFormat","shortTime","shortDate","formatDateTime","getLocaleDateTimeFormat","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","minusSign","negWrap","neg","strNum","getDatePart","milliseconds","strMs","formatFractionalSeconds","localeMinus","getLocaleNumberSymbol","padNumber","extended","formStyle","getLocaleMonthNames","getLocaleDayNames","currentHours","currentMinutes","checkFullData","extractTime","getLocaleExtraDayPeriodRules","dayPeriods","getLocaleExtraDayPeriods","afterFrom","beforeTo","amPm","getLocaleDayPeriods","getLocaleEraNames","getDateTranslation","datetime","monthBased","nbDaysBefore1stDayOfMonth","thisThurs","getThursdayThisWeek","firstThurs","firstDayOfYear","THURSDAY","getFirstThursdayOfYear","requestedTimezoneOffset","NUMBER_FORMAT_REGEXP","groupSymbol","decimalSymbol","digitsInfo","isPercent","formattedText","isZero","parsedNumber","integerLen","zeros","numStr","exponent","MAX_DIGITS","parseNumber","fractionLen","toPercent","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","fractionSize","roundAt","dropTrailingZeros","carry","roundNumber","decimals","lgSize","gSize","negPre","negSuf","posPre","posSuf","patternParts","positive","negative","positiveParts","fraction","ho","trunkLen","NgLocaleLocalization","NgLocalization","getPluralCategory","LOCALE_ID","cookieStr","cookie","eqIndex","cookieName","cookieValue","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_renderer","_iterableDiffer","_keyValueDiffer","_initialClasses","_rawClass","_removeClasses","_applyClasses","ngClass","ɵisListLikeIterable","iterableChanges","_applyIterableChanges","keyValueChanges","_applyKeyValueChanges","forEachAddedItem","_toggleClass","forEachChangedItem","forEachRemovedItem","previousValue","ɵstringify","rawClassVal","ngForOf","even","odd","NgForOf","_viewContainer","_template","_differs","_ngForOf","_ngForOfDirty","_differ","ngForTrackBy","_trackByFn","ngForTemplate","getTypeName","_applyChanges","insertTuples","NgForOfContext","tuple","RecordViewTuple","_perViewChange","ilen","forEachIdentityChange","NgIf","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","_updateView","ngIfThen","assertTemplate","ngIfElse","_templateRef","_created","enforceState","created","NgSwitch","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","ngSwitch","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_defaultViews","_matchCase","matched","useDefault","NgSwitchCase","SwitchView","ngSwitchCase","NgSwitchDefault","NgStyle","_ngStyle","ngStyle","_setStyle","nameAndUnit","unit","removeStyle","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","createSubscription","updateLatestValue","_promiseStrategy","PromiseStrategy","_subscribableStrategy","SubscribableStrategy","AsyncPipe","_latestValue","_obj","_strategy","_dispose","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","invalidPipeArgumentError","ɵpipe","DATE_PIPE_DEFAULT_TIMEZONE","defaultTimezone","formatDate","KeyValuePipe","differs","keyValues","compareFn","defaultComparator","differ","differChanges","compareFnChanged","forEachItem","makeKeyValuePair","keyValueA","keyValueB","aString","bString","DecimalPipe","_locale","isValue","formatNumberToLocaleString","parseNumberFormat","getLocaleNumberFormat","formatNumber","strToNumber","CurrencyPipe","_defaultCurrencyCode","currencyCode","currency","getLocaleCurrencies","symbolNarrow","getCurrencySymbol","getNumberOfCurrencyDigits","formatCurrency","DEFAULT_CURRENCY_CODE","SlicePipe","supports","PLATFORM_BROWSER_ID","ViewportScroller","ɵɵdefineInjectable","BrowserViewportScroller","setOffset","getScrollPosition","supportsScrolling","scrollToPosition","scrollToAnchor","elSelected","documentResult","getElementsByName","createTreeWalker","treeWalker","NodeFilter","SHOW_ELEMENT","nextNode","findAnchorFromDocument","scrollToElement","attemptFocus","setHistoryScrollRestoration","scrollRestoration","supportScrollRestoration","focusTarget","scrollRestorationDescriptor","getScrollRestorationProperty","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","lcName","HttpHeaders","copyFrom","applyUpdate","toDelete","encodeKey","standardEncoding","encodeValue","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","cloneFrom","encoder","HttpUrlEncodingCodec","fromString","rawParams","eqIdx","paramParser","appendAll","eKey","valueToString","fourth","reportProgress","HttpContext","urlWithParams","qIdx","serializeBody","isBlob","isFormData","detectContentTypeHeader","setParams","HttpRequest","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","defaultStatus","defaultStatusText","HttpResponseBase","HttpHeaderResponse","HttpResponse","HttpClient","events$","concatMap","res$","jsonp","callbackParam","addBody","HttpHandler","NoopInterceptor","XSSI_PREFIX","HttpXhrBackend","xhrFactory","detectedType","reqBody","headerResponse","partialFromXhr","getAllResponseHeaders","responseURL","getResponseUrl","onLoad","originalBody","HttpErrorResponse","sentHeaders","onDownProgress","progressEvent","partialText","onUpProgress","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfCookieExtractor","lastCookieString","lastToken","parseCount","cookieString","ɵparseCookieValue","HttpXsrfInterceptor","tokenService","headerName","lcUrl","HttpXsrfTokenExtractor","HttpInterceptingHandler","backend","interceptors","HttpInterceptorHandler","HttpBackend","HttpClientXsrfModule","withOptions","objWithPropertyToExtract","getClosureSafeProperty","overriddenName","newLineIndex","__forward_ref__","forwardRefFn","isForwardRef","formatRuntimeError","renderStringify","injectorName","injectorDetails","RuntimeError","stringifyForError","comparison","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","field","NG_INJ_DEF","NG_INJECTOR_DEF","ngInjectableDef","ngInjectorDef","InjectFlags","Host","Self","_injectImplementation","impl","notFoundValue","injectableDef","getInjectableDef","throwProviderNotFoundError","ChangeDetectionStrategy","OnPush","ViewEncapsulation$1","ViewEncapsulation","Emulated","ShadowDom","__globalThis","__window","__self","_global","EMPTY_OBJ","EMPTY_ARRAY","NG_COMP_DEF","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_FACTORY_DEF","NG_ELEMENT_ID","__NG_ELEMENT_ID__","_renderCompCount$1","componentDefinition","noSideEffects","declaredInputs","providersResolver","hostVars","hostAttrs","contentQueries","onPush","directiveDefs","pipeDefs","setInput","schemas","tView","directiveTypes","pipeTypes","pipes","invertObject","extractDirectiveDef","extractPipeDef","getComponentDef","getDirectiveDef","getPipeDef$1","autoRegisterModuleById","declarations","transitiveCompileScopes","ngModuleDef","getNgModuleDef","secondary","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","ɵɵdefineComponent","pipeDef","throwNotFound","tNode","isFirstChange","NgOnChangesFeatureImpl","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","SIMPLE_CHANGES_STORE","setSimpleChangesStore","previousChange","SimpleChange","ɵɵNgOnChangesFeature","ngInherit","SVG_NAMESPACE","domRendererFactory3","createRenderer","rendererType","lView","unwrapRNode","nodeIndex","slotValue","isLView","lContainer","viewOrContainer","instructionState","lFrame","createLFrame","bindingsEnabled","isInCheckNoChangesMode","viewToRestore","contextLView","currentTNode","getCurrentTNodePlaceholderOk","isParent","bindingRootIndex","bindingStartIndex","bindingIndex","currentDirectiveIndex","setCurrentDirectiveIndex","tData","currentQueryIndex","declTNode","parentTNode","parentLView","getDeclarationTNode","allocLFrame","newView","newLFrame","inI18n","currentLFrame","childLFrame","elementDepthCount","currentNamespace","oldLFrame","leaveDI","leaveViewLight","getTNode","directiveStart","directiveEnd","lifecycleHooks","directiveDef","ngAfterContentChecked","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","hooks","callHooks","initPhase","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","isInitHook","hook","directive","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","isProc","isProceduralRenderer","namespaceURI","attrVal","isAnimationProp","marker","dst","srcMarker","mergeHostAttribute","key1","key2","markerInsertPosition","dstValue","parentLocation","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","nextNgElementId","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","hasParentInjector","parentIndex","getParentInjectorIndex","getParentInjectorView","parentData","footer","declarationViewOffset","lViewCursor","tViewType","J","bloomHash","bloomAdd","moduleInjector","previousInjectImplementation","setInjectImplementation","injectRootLimpMode","notFoundValueOrThrow","tokenId","createNodeInjector","bloomHashBitOrFactory","enterDI","lookupTokenUsingModuleInjector","previousTView","hostTElementNode","Jt","shouldSearchParent","bloomHasToken","searchTokensOnInjector","NodeInjector","getCurrentTNode","getLView","currentTView","injectableIdx","locateDirectiveOrProvider","isComponentHost","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","providerTokenOrDef","dirDef","isComponentDef","NodeInjectorFactory","isFactory","throwCyclicDependencyError","previousIncludeViewProviders","setIncludeViewProviders","directiveIndex","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","registerPreOrderHooks","injectorView","isFirstHostTNode","_tNode","_lView","getOrCreateInjectable","ownConstructor","ownFactory","getFactoryOf","objectPrototype","resolveForwardRef","getFactoryDef","attrNameToInject","attrsLength","isNameOnlyAttributeMarker","injectAttributeImpl","PARAMETERS","PROP_METADATA","propName","metaCtor","makeMetadataCtor","ParamDecoratorFactory","annotationInstance","ParamDecorator","annotation","unusedKey","ngMetadataName","annotationCls","additionalProcessing","PropDecoratorFactory","decoratorInstance","_desc","ANALYZE_FOR_ENTRY_COMPONENTS","makePropDecorator","isViewQuery","deepForEach","keyValueArray","keyValueArrayIndexOf","value1","arrayInsert2","_arrayIndexOfSorted","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","USE_VALUE$2","_currentInjector","former","injectInjectorOnly","flag","getInjectFlag","decorator","injectorErrorName","tokenPath","formatError","NG_TOKEN_PATH","Inject","attachInjectFlag","makeParamDecorator","policy$1","policy","getPolicy$1","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","getPolicy","changingThisBreaksApplicationSecurity","SafeValueImpl","actualType","getSanitizationBypassType","trustedHtml","SafeHtmlImpl","trustedStyle","SafeStyleImpl","trustedScript","SafeScriptImpl","trustedUrl","SafeUrlImpl","trustedResourceUrl","SafeResourceUrlImpl","inertDocumentHelper","getInertBodyElement","trustedHTMLFromString","defaultDoc","inertDocument","implementation","createHTMLDocument","inertHtml","inertBodyElement","templateEl","inertBody","stripCustomNsAttrs","elAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","sets","VOID_ELEMENTS","tagSet","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","SRCSET_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","sanitizedSomething","sanitizeChildren","traverseContent","startElement","endElement","checkClobberedElement","elAttr","_sanitizeUrl","encodeEntities","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","unsafeHtmlInput","InertDocumentHelper","isDOMParserAvailable","DOMParserHelper","getInertBodyHelper","unsafeHtml","mXSSAttempts","parsedHtml","SanitizingHtmlSerializer","getTemplateContent","safeHtml","isTemplateElement","SecurityContext","HTML","STYLE","RESOURCE_URL","getSanitizer","trustedHTMLFromStringBypass","allowSanitizationBypassAndThrow","unwrapSafeValue","_sanitizeHtml","unsafeUrl","unsafeResourceUrl","trustedScriptURLFromStringBypass","MONKEY_PATCH_KEY_NAME","readPatchedData","ERROR_ORIGINAL_ERROR","_console","_findOriginalError","_findContext","errorLogger","ERROR_LOGGER","defaultErrorLogger","ERROR_DEBUG_CONTEXT","getOriginalError","defaultScheduler","RendererStyleFlags2","Important","DashCase","tIcuContainerNode","_icuContainerIterate","isLContainer","getNearestLContainer","lNodeToHandle","beforeNode","isComponent","rNode","nativeAppendChild","nativeInsertBefore","isHostElement","nativeParent","nativeParentNode","nativeRemoveChild","nativeRemoveNode","destroyNode","parentRElement","applyToElementOrContainer","applyView","applyContainer","declarationContainer","movedViews","declarationViewIndex","insertionLContainer","updateTransplantedViewCount","removeIndex","indexInContainer","viewToDetach","declarationLContainer","detachMovedView","removedLView","removeFromArray","removeViewFromContainer","lQueries","rootView","lViewOrLContainer","cleanUpView","firstView","destroyViewTree","toCall","callContext","executeOnDestroys","tCleanup","lCleanup","lastLCleanupIndex","idxOrTargetGetter","useCaptureOrSubIdx","processCleanups","getNativeByTNode","getClosestRElement","isMove","_getInsertInFrontOfRNodeWithI18n","childRNode","childTNode","parentRNode","getParentRElement","getInsertInFrontOfRNode","nativeAppendOrInsertBefore","tNodeType","getBeforeNodeForView","elIcuContainerChild","getFirstNativeNode","rNodeOrLContainer","nextRNode","projectionNodes","getProjectionNodes","getLViewParent","componentView","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","isProjection","rawSlotValue","attachPatchData","applyNodes","icuContainerIterate","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","componentNode","classToSearch","startingIndex","foundIndex","NG_TEMPLATE_SELECTOR","cssClassToMatch","isProjectionMode","classIndexOf","currentSelector","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","hasTagAndTypeMatch","isPositive","selectorAttrValue","isCssClassMatching","attrIndexInNode","findAttrIndexInNode","isInlineTemplate","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelector","selectorListLoop","currentSelectorInList","isNegativeMode","currentChunk","valueOrMarker","maybeWrapInNotSelector","NO_CHANGE","selectIndexInternal","getTView","getSelectedIndex","checkNoChangesMode","executeCheckHooks","executeInitAndCheckHooks","setSelectedIndex","tStylingRange","queryStartIdx","directiveDefIdx","setCurrentQueryIndex","tHostNode","rendererFactory","resetPreOrderHookFlags","isCurrentTNodeParent","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","mergedAttrs","localNames","initialInputs","tViews","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","createTNode","createTNodeAtIndex","getCurrentParentTNode","setCurrentTNode","numSlotsToAlloc","allocIdx","enterView","executeViewQueryFn","templateFn","executeTemplate","staticContentQueries","refreshContentQueries","staticViewQueries","components","hostLView","renderComponent$1","renderChildComponents","incompleteFirstPass","leaveView","isInCheckNoChangesPass","setBindingIndex","hooksInitPhaseCompleted","incrementInitPhaseFlags","getFirstLContainer","getNextLContainer","movedLView","markTransplantedViewsForRefresh","embeddedLView","embeddedTView","viewAttachedToChangeDetector","refreshView","refreshEmbeddedViews","hostBindingOpCodes","opCode","directiveIdx","bindingRootIndx","hostBindingFn","setBindingRootForHostBindings","processHostBindingOpCodes","refreshComponent","refreshChildComponents","firstUpdatePass","normalExecutionPath","creationModeIsActive","isCreationMode","prevSelectedIndex","isUpdatePhase","isContentQueryHost","getBindingsEnabled","getOrCreateNodeInjectorForNode","addComponentLogic","setInputsFromAttrs","getComponentLViewByIndex","instantiateAllDirectives","elementIndex","dirIndex","invokeHostBindingsInCreationMode","invokeDirectivesHostBindings","viewData","localRefExtractor","localIndex","createTView","constsOrFactory","initialViewLength","createViewBlueprint","expandoStartIndex","directiveRegistry","pipeRegistry","cleanupFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","inputAliasMap","propStore","internalName","nativeOnly","dataValue","inputData","setInputsForProperty","viewIndex","childComponentLView","markDirtyIfOnPush","mapPropName","localRefs","hasDirectives","isNodeMatchingSelectorList","diPublicInInjector","markAsComponentHost","findDirectiveDefMatches","exportsMap","initTNodeFlags","preOrderHooksFound","preOrderCheckHooksFound","allocExpando","mergeHostAttrs","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","directiveInputs","generateInitialInputs","generatePropertyAliases","initializeInputAndOutputAliases","cacheMatchingLocalNames","directiveVarsIdx","elementIndx","lastSelectedElementIdx","hostTNode","numberOfDirectives","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","getOrCreateTComponentView","addToViewTree","createLView","strValue","setElementAttribute$1","initialInputData","inputsToStore","hostNative","componentHostIdx","refreshContainsDirtyView","componentTView","syncViewWithBlueprint","isRootView","rootContext","rootComponent","readPatchedLView","renderComponentOrTemplate","tickRootContext","viewQueryFn","CLEAN_PROMISE","currentDef","unwrapLView","ErrorHandler","getNativeByIndex","updateTextNode","writeToHost","concatStringsWithSpace","INJECTOR","INJECTOR_SCOPE","NOT_YET","CIRCULAR$1","NULL_INJECTOR$1","NullInjector","defType","additionalProviders","R3Injector","getNullInjector","injectorDefTypes","dedupStack","processProvider","injectorDef","processInjectorType","makeRecord","previousInjector","setCurrentInjector","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","catchInjectorError","_resolveInjectorDefTypes","defOrWrappedDef","getInjectorDef","isDuplicate","importTypesWithProviders","imported","defProviders","injectorType","ngModuleType","isTypeProvider","isValueProvider","providerToFactory","multiRecord","injectArgs","paramLength","newArray","inheritedInjectableDef","typeName","getInheritedInjectableDef","getUndecoratedInjectableFactory","unwrappedProvider","isFactoryProvider","isExistingProvider","classRef","hasDeps","INJECTOR_IMPL","createInjectorWithoutInjectorInstances","createInjector$1","Injector","NULL","registerPostOrderHooks","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","fillProperties","defData","ɵɵInheritDefinitionFeature","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","_symbolIterator","isJsObject","getSymbolIterator","exp1","exp2","different","bindingUpdated","exp3","bindingUpdated2","exp4","nextBindingIndex","elementAttributeInternal","getSelectedTNode","ɵɵattribute","v0","getBindingIndex","incrementBindingIndex","attrsIndex","localRefsIndex","adjustedIndex","tViewConsts","getOrCreateTNode","getConstant","resolveDirectives","templateFirstCreatePass","createLContainer","isDirectiveHost","createDirectivesInstances","saveResolvedLocalsInData","elementPropertyInternal","ɵɵproperty","isClassBased","createElementNode","computeStaticStyling","elementStart","elementStartFirstCreatePass","setUpAttributes","writeDirectClass","writeDirectStyle","executeContentQueries","setCurrentTNodeAsNotParent","elementEnd","hasClassInput","setDirectiveInputsWhichShadowsStyling","hasStyleInput","ɵɵelementStart","ɵɵelementEnd","elementContainerStartFirstCreatePass","ɵɵelementContainerStart","ɵɵelementContainerEnd","isObservable","isSubscribable","listenerFn","useCapture","eventTargetResolver","listenerInternal","ɵɵlistener","loadComponentRenderer","getCurrentDirectiveDef","ɵɵsyntheticHostListener","isTNodeDirectiveHost","processOutputs","lCleanupIndex","existingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","findExistingListener","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","directiveInstance","profiler","wrapWithPreventDefault","markViewDirty","executeListenerWithErrorHandling","nextListenerFn","wrapListenerIn_markDirtyAndPreventDefault","nestingLevel","walkUpViews","nextContextImpl","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","ngProjectAsAttrIdx","getProjectAsAttrValue","isSelectorInSelectorList","projectionHeads","tails","componentChild","slotIndex","matchingProjectionSlotIndex","selectorIndex","applyProjection","ɵɵpropertyInterpolate1","ɵɵpropertyInterpolate","interpolatedValue","interpolation1","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","getTStylingRangePrev","getTStylingRangeNext","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","setTStylingRangeNextDuplicate","setTStylingRangePrevDuplicate","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","startIndex","consumeClassToken","consumeWhitespace","consumeStyleKey","consumeSeparator","ch1","ch3","lastChIndex","consumeQuotedText","consumeStyleValue","quoteCharCode","checkStylingProperty","ɵɵstyleProp","ɵɵclassProp","checkStylingMap","styleKeyValueArraySet","styleStringParser","resetParserState","parseStyleNext","parseStyle","getLastParsedKey","getLastParsedValue","keyValueArraySet","classStringParser","parseClassNameNext","parseClassName","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","oldKeyValueArray","newKeyValueArray","oldIndex","oldKey","newKey","setKey","Pn","updateStylingMap","styleKeyValueArray","unwrappedValue","toStylingKeyValueArray","isHostBindings","stylingKey","hostDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","wrapInStaticStylingKey","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","staticKeyValueArray","previousNode","toTStylingRange","setTStylingRangeNext","setTStylingRangePrev","bt","markDuplicates","markDuplicateOfResidualStyling","insertTStylingBinding","currentDirective","desiredMarker","currentMarker","tRange","isStylingValuePresent","getTStylingRangeNextDuplicate","findStylingValue","getTStylingRangePrevDuplicate","isProcedural","isImportant","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","keyValueArrayGet","textNative","ɵɵtextInterpolate1","ɵɵtextInterpolate","interpolated","textBindingInternal","interpolation2","ɵɵtextInterpolate2","bindingUpdated3","interpolation3","ɵɵtextInterpolate3","v3","bindingUpdated4","interpolation4","ɵɵtextInterpolate4","ɵɵhostProperty","ɵɵsyntheticHostProperty","localeEn","LOCALE_DATA","normalizedLocale","normalizeLocale","getLocaleData","parentLocale","findLocaleData","LocaleDataIndex","PluralCase","ng","LocaleId","DayPeriodsFormat","DayPeriodsStandalone","DaysFormat","DaysStandalone","MonthsFormat","MonthsStandalone","FirstDayOfWeek","WeekendRange","DateFormat","TimeFormat","NumberSymbols","NumberFormats","CurrencyCode","CurrencySymbol","CurrencyName","Currencies","ExtraData","DEFAULT_LOCALE_ID","LOCALE_ID$1","lInjectablesBlueprint","resolveProvider","providerFactory","beginIndex","ɵɵdirectiveInject","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesProvidersFactoryExist","doesViewProvidersFactoryExist","factoryFn","componentProviders","multiFactoryAdd","multiFactory","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","viewProviders","processProvidersFn","ERROR_COMPONENT","noComponentFactoryError","ComponentFactoryResolver$1","_NullComponentFactoryResolver","SWITCH_ELEMENT_REF_FACTORY","createElementRef","Renderer2","SWITCH_RENDERER2_FACTORY","nodeAtIndex","getOrCreateRenderer2","Sanitizer","full","major","minor","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","lNode","lViewInAContainer","lViewFirstChildTNode","collectNativeNodes","nodesInSlot","_cdRefInjectingView","_attachedToViewContainer","viewRefs","destroyLView","storeCleanupWithContext","reattach","detectChangesInternal","checkNoChanges","setIsInCheckNoChangesMode","checkNoChangesInternal","attachToViewContainerRef","detachFromAppRef","attachToAppRef","ViewRef$1","detectChangesInRootView","checkNoChangesInRootView","componentDef","ComponentFactory","nonMinified","templateName","SCHEDULER","ComponentFactory$1","componentType","stringifyCSSSelector","isBoundToModule","toRefArray","projectableNodes","rootSelectorOrNode","rootViewInjector","createChainedInjector","RendererFactory2","hostRenderer","elementName","hostRNode","elementOrSelector","selectRootElement","rElement","locateHostElement","getNamespace","rootFlags","playerHandler","createRootContext","rootTView","rootLView","tElementNode","viewRenderer","createRootComponentView","extractAttrsAndClassesFromSelector","nodesforSlot","hostFeatures","rootTNode","instantiateRootComponent","createRootComponent","LifecycleHooksFeature","ComponentRef","_rootLView","RootViewRef","NgModuleRef$1","_parent","_bootstrapComponents","destroyCbs","ComponentFactoryResolver","maybeUnwrapFn","_r3Injector","injectFlags","NgModuleFactory$1","moduleType","visited","incoming","assertSameOrNotExisting","recurse","registerNgModuleType","parentInjector","NgModuleRef","slotOffset","pureFn","getBindingRoot","updateBinding","getBinding","pureFunction1Internal","pureFunction2Internal","pureFunction3Internal","exp5","returnValueIndex","lastReturnValue","bindingRoot","getPureFunctionReturnValue","pipeName","getPipeDef","pipeFactory","pipeInstance","isPure","v4","pureFunction4Internal","isAsync","__isAsync","nextFn","completeFn","_wrapInTimeout","_results","_emitDistinctChangesOnly","dirty","_changesDetected","_changes","symbolIterator","resultsTree","identityAccessor","newResultFlat","valueA","valueB","arrayEquals","notifyOnChanges","setDirty","SWITCH_TEMPLATE_REF_FACTORY","createTemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","declarationViewLQueries","SWITCH_VIEW_CONTAINER_REF_FACTORY","createContainerRef","ViewContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","componentFactoryOrType","indexOrOptions","ngModuleRef","isComponentFactory","contextInjector","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","containerLength","addToArray","declaredComponentLView","insertedLContainer","trackMovedView","insertView","parentNativeNode","addViewToContainer","getOrCreateViewRefs","viewRefsArr","commentNode","nativeNextSibling","queryList","LQuery_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","LQueries_","dirtyQueriesWithMatches","getTQuery","queriesForTemplateRef","childQueryIndex","tqueryClone","TQueries_","tquery","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","TQuery_","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchingIdx","createResultByTNodeType","createSpecialToken","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","createResultForNode","lViewResults","materializeViewResults","collectQueryResults","embeddedLViews","getCurrentQueryIndex","unwrapElementRef","createTQuery","TQueryMetadata_","createLQuery","tViewContentQueries","saveContentQueryAndDirectiveIndex","bindingPropertyName","APP_INITIALIZER","ApplicationInitStatus","appInits","donePromise","rej","runInitializers","asyncInitPromises","initResult","observableAsPromise","APP_ID","APP_ID_RANDOM_PROVIDER","_randomChar","PLATFORM_INITIALIZER","APP_BOOTSTRAP_LISTENER","Console","ngModuleFactory","componentFactories","Compiler_compileModuleSync__POST_R3__","NgModuleFactory","Compiler_compileModuleSync","Compiler_compileModuleAsync","Compiler_compileModuleAndAllComponentsSync__POST_R3__","declaration","ModuleWithComponentFactories","Compiler_compileModuleAndAllComponentsSync","Compiler_compileModuleAndAllComponentsAsync","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","compileModuleAndAllComponentsAsync","clearCacheFor","getModuleId","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","onUnstable","onMicrotaskEmpty","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","fork","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","nativeCancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","getNativeRequestAnimationFrame","delayChangeDetectionForEventsDelegate","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","delayChangeDetectionForEvents","isAngularZone","onInvokeTask","applyThis","applyArgs","onEnter","invokeTask","onLeave","onInvoke","onHasTask","hasTaskState","hasTask","_hasPendingMicrotasks","microTask","macroTask","onHandleError","forkInnerZoneWithAngularBehavior","isInAngularZone","runTask","EMPTY_PAYLOAD","cancelTask","Testability","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","_watchAngularEvents","assertNotInAngularZone","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","whenStable","getPendingRequestCount","findProviders","using","exactMatch","TestabilityRegistry","_applications","_testabilityGetter","addToWindow","registerApplication","testability","unregisterApplication","unregisterAllApplications","getTestability","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","_NoopGetTestability","_devMode","_runModeLocked","ALLOW_MULTIPLE_PLATFORMS","parentPlatformFactory","extraProviders","getPlatform","injectedProviders","PlatformRef","inits","createPlatform","requiredToken","assertPlatform","_modules","_destroyListeners","bootstrapModuleFactory","moduleFactory","ngZoneOption","NoopNgZone","ngZoneEventCoalescing","ngZoneRunCoalescing","getNgZone","ngZoneInjector","moduleRef","exceptionHandler","_callAndReportToErrorHandler","initStatus","assertDefined","setLocaleId","_moduleDoBootstrap","compilerOptions","optionsReducer","compileNgModuleFactory","ngDoBootstrap","_exceptionHandler","_initStatus","_bootstrapListeners","_views","_runningTick","_stable","componentTypes","_onMicrotaskEmptySubscription","tick","isCurrentlyStable","stableSub","unstableSub","assertInAngularZone","merge$1","componentOrFactory","cf","compRef","testabilityRegistry","_loadComponent","viewCount","SWITCH_CHANGE_DETECTOR_REF_FACTORY","isPipe","createViewRef","ChangeDetectorRef","getDebugNodeR2","_nativeNode","isListLikeIterable","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","_nextAdded","forEachMovedItem","_nextMoved","_nextIdentityChange","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","previousRecord","_prev","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","_prevDup","_nextDup","_head","_tail","atOrAfterIndex","duplicates","_DuplicateItemRecordList","recordList","moveOffset","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","IterableDiffers","DefaultIterableDifferFactory","defaultIterableDiffersFactory","getTypeNameForDebugging","KeyValueDiffers","DefaultKeyValueDifferFactory","defaultKeyValueDiffersFactory","keyValDiff","defaultIterableDiffers","defaultKeyValueDiffers","platformCore","createPlatformFactory","APPLICATION_MODULE_PROVIDERS","$localize","ApplicationModule","ɵɵdefineNgModule","ɵɵdefineInjector","BaseControlValueAccessor","onChange","onTouched","BuiltInControlValueAccessor","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","ɵgetDOM","getUserAgent","_handleInput","_compositionStart","_compositionEnd","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","minValidator","maxValidator","requiredValidator","requiredTrueValidator","isEmptyInputValue","minLength","hasValidLength","minlength","requiredLength","actualLength","maxLengthValidator","patternValidator","validators","composeAsync","maxlength","nullValidator","regexStr","requiredPattern","actualValue","ɵisObservable","arrayOfErrors","validator","isValidatorFn","presentValidators","isPresent","mergeErrors","executeValidators","normalizeValidators","toObservable","controlValidators","dirValidator","_rawValidators","_rawAsyncValidators","currentValidators","makeValidatorsArray","validatorsToAdd","hasValidator","_onDestroyCallbacks","pristine","touched","untouched","statusChanges","_setValidators","_composedValidatorFn","composeValidators","_setAsyncValidators","_composedAsyncValidatorFn","composeAsyncValidators","asyncValidator","_registerOnDestroy","_invokeOnDestroyCallbacks","getError","AbstractControlDirective","formDirective","valueAccessor","_cd","submitted","NgControlStatus","AbstractControlStatus","NgControl","NgControlStatusGroup","ControlContainer","setUpValidators","_pendingValue","_pendingChange","_pendingDirty","updateOn","updateControl","setUpViewChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpModelChangePipeline","_pendingTouched","markAsTouched","setUpBlurPipeline","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","setUpDisabledChangeHandler","validateControlPresenceOnChange","cleanUpValidators","_registerOnCollectionChange","getControlValidators","setValidators","mergeValidators","asyncValidators","getControlAsyncValidators","setAsyncValidators","onValidatorChange","updateValueAndValidity","isControlUpdated","updatedValidators","updatedAsyncValidators","markAsDirty","emitModelToViewChange","viewModel","model","_syncPendingControls","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","VALID","INVALID","validatorOrOpts","isOptionsObj","_hasOwnPendingAsyncValidator","_onCollectionChange","_onDisabledChange","coerceToValidator","coerceToAsyncValidator","validatorFn","asyncValidatorFn","_updateOn","addValidators","addAsyncValidators","removeValidators","removeAsyncValidators","hasAsyncValidator","clearValidators","clearAsyncValidators","markAllAsTouched","_forEachChild","markAsUntouched","_updateTouched","markAsPristine","_updatePristine","markAsPending","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","setParent","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","ctrl","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","delimiter","controlToFind","FormGroup","FormArray","_find","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_isBoxedValue","formState","_setUpdateStrategy","AbstractControl","pickValidators","pickAsyncValidators","_applyFormState","emitViewToModelChange","patchValue","removeListItem","_setUpControls","registerControl","addControl","removeControl","setControl","controlName","_checkAllValuesPresent","_throwIfControlMissing","getRawValue","_reduceChildren","subtreeUpdated","updated","_reduceValue","initValue","_registerControl","removeAt","formDirectiveProvider$1","NgForm","resolvedPromise$1","_directives","ngSubmit","_findContainer","setUpControl","getControl","addFormGroup","setUpFormContainer","removeFormGroup","getFormGroup","updateModel","onSubmit","syncPendingControls","onReset","resetForm","formControlBinding$1","NgModel","resolvedPromise","_registered","selectValueAccessor","_checkForErrors","_setUpControl","_updateDisabled","isPropertyUpdated","controlPath","_isStandalone","_setUpStandalone","_checkParentType","_checkName","disabledValue","ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","RadioControlRegistryModule","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","FormControlDirective","_ngModelWarningConfig","_ngModelWarningSent","_isControlChanged","previousForm","cleanUpControl","_ngModelWarningSentOnce","formDirectiveProvider","FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","oldCtrl","newCtrl","cleanUpFormContainer","controlNameBinding","FormControlName","_added","AbstractValidatorDirective","handleChanges","inputName","normalizeInput","createValidator","MAX_VALIDATOR","MaxValidator","toFloat","MIN_VALIDATOR","MinValidator","REQUIRED_VALIDATOR","RequiredValidator","CHECKBOX_REQUIRED_VALIDATOR","CheckboxRequiredValidator","_required","MAX_LENGTH_VALIDATOR","MaxLengthValidator","PATTERN_VALIDATOR","PatternValidator","_createValidator","ɵInternalFormsSharedModule","warnOnNgModelWithFormControl","FormBuilder","controlsConfig","_reduceControls","isAbstractControlOptions","_createControl","controlConfig","_uniqueAutocompleteIdCounter","_MatAutocompleteMixinBase","mixinDisableRipple","MAT_AUTOCOMPLETE_DEFAULT_OPTIONS","autoActiveFirstOption","_MatAutocompleteBase","_activeOptionChanges","showPanel","_isOpen","displayWith","optionSelected","optionActivated","_classList","inertGroups","_autoActiveFirstOption","coerceStringArray","_setVisibilityClasses","_keyManager","ActiveDescendantKeyManager","_setVisibility","_setScrollTop","panel","_getScrollTop","_emitSelectEvent","MatAutocompleteSelectedEvent","_getPanelAriaLabelledby","labelId","ariaLabelledby","_visibleClass","_hiddenClass","MatAutocomplete","MAT_OPTGROUP","MatOption","MAT_OPTION_PARENT_COMPONENT","MAT_AUTOCOMPLETE_SCROLL_STRATEGY","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER","MAT_AUTOCOMPLETE_VALUE_ACCESSOR","MatAutocompleteTrigger","_MatAutocompleteTriggerBase","_defaults","_componentDestroyed","_autocompleteDisabled","_manuallyFloatingLabel","_viewportSubscription","_canOpenOnNextFocus","_closeKeyEventStream","_windowBlurHandler","panelOpen","autocompleteAttribute","_overlayAttached","optionSelections","autocomplete","autocompleteDisabled","_setStrategyPositions","_destroyPanel","openPanel","_floatLabel","closePanel","_resetLabel","_closingActionsSubscription","panelClosingActions","_getOutsideClickStream","MatOptionSelectionChange","activeOption","clickTarget","formField","customOrigin","_setTriggerValue","_handleKeydown","_selectViaInteraction","_resetActiveItem","prevActiveItem","isArrowKey","_canOpen","_scrollToOption","_previousValue","_handleFocus","shouldAnimate","floatLabel","_animateAndLockLabel","_subscribeToClosingActions","firstStable","optionChanges","wasOpen","_setValueAndClose","toDisplay","inputValue","_control","_clearPreviousSelectedOption","_getConnectedElement","_getPanelWidth","_portal","getLabelId","_getOverlayConfig","_getOverlayPosition","overlayPanelClass","belowPositions","_aboveClass","abovePositions","panelWidth","_getHostWidth","labelCount","_countGroupLabelsBeforeOption","optionGroups","_getHostElement","newScrollPosition","_getOptionScrollPosition","MAT_FORM_FIELD","MatOptionModule","_MatBadgeBase","mixinDisabled","BADGE_CONTENT_CLASS","MatBadge","_ariaDescriber","_animationMode","_overlap","overlap","_content","newContent","_updateRenderedContent","_description","newDescription","_updateHostAriaDescription","_hidden","isAbove","getBadgeElement","_badgeElement","_clearExistingBadges","_createBadgeElement","badgeElement","activeClass","newContentNormalized","colorPalette","badges","ANIMATION_MODULE_TYPE","matBottomSheetAnimations","bottomSheetState","AnimationDurations","AnimationCurves","closeOnNavigation","autoFocus","MatBottomSheetContainer","_interactivityChecker","breakpointObserver","bottomSheetConfig","_animationState","_animationStateChanged","_elementFocusedBeforeOpened","_validatePortalAttached","_setPanelClass","_savePreviouslyFocusedElement","_breakpointSubscription","_onAnimationDone","toState","_restoreFocus","_trapFocus","_onAnimationStart","_forceFocus","_focusByCssSelector","elementToFocus","_focusTrap","toFocus","MatBottomSheetConfig","containerInstance","_afterDismissed","_afterOpened","_closeFallbackTimeout","_result","afterOpened","MAT_BOTTOM_SHEET_DEFAULT_OPTIONS","MatBottomSheet","_parentBottomSheet","_bottomSheetRefAtThisLevel","_openedBottomSheetRef","componentOrTemplateRef","_applyConfigDefaults","_attachContainer","MatBottomSheetRef","_createInjector","contentRef","containerPortal","userInjector","MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS","MAT_BUTTON_TOGGLE_GROUP","MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR","MatButtonToggleGroup","uniqueIdCounter","_changeDetector","_controlValueAccessorChangeFn","valueChange","appearance","_buttonToggles","_markForCheck","_selectionModel","_setSelectionByValue","SelectionModel","MatButtonToggleChange","_syncButtonToggle","deferEvents","_updateModelValue","_isPrechecked","_clearSelection","_selectValue","correspondingOption","MatButtonToggle","_MatButtonToggleBase","toggleGroup","defaultTabIndex","_isSingleSelector","_checked","parsedTabIndex","buttonToggleGroup","buttonId","_appearance","_buttonElement","_onButtonClick","newChecked","BUTTON_HOST_ATTRIBUTES","_MatButtonBase","MatButton","isRoundButton","_hasHostAttributes","isIconButton","_isRippleDisabled","disableRipple","MatRipple","G","MatAnchor","focusMonitor","animationMode","_haltDisabledEvents","MatCardContent","MatCardTitle","MatCardSubtitle","MatCardFooter","MatCard","MAT_CHECKBOX_DEFAULT_OPTIONS","MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY","clickAction","MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR","MatCheckbox","_MatCheckboxBase","mixinTabIndex","_uniqueId","labelPosition","indeterminateChange","_currentAnimationClass","_currentCheckState","inputId","focusOrigin","_syncIndeterminate","indeterminate","_transitionCheckState","_onLabelTextChange","_getAriaChecked","oldState","_getAnimationClassForCheckStateTransition","animationClass","MatCheckboxChange","_inputElement","_onInputClick","_onInteractionEvent","animSuffix","nativeCheckbox","_MatCheckboxRequiredValidatorModule","MAT_CHIP_REMOVE","MAT_CHIP_AVATAR","MAT_CHIP_TRAILING_ICON","_MatChipMixinBase","MatChipBase","MatChip","globalRippleOptions","_hasFocus","chipListSelectable","_chipListMultiple","_chipListDisabled","_selectable","_removable","selectionChange","_addHostClassName","_chipRippleTarget","_chipRipple","RippleRenderer","setupTriggerEvents","rippleConfig","_animationsDisabled","rippleDisabled","coercedValue","_dispatchSelectionChange","selectable","removable","ariaSelected","basicChipAttrName","chip","_removeTriggerEvents","selectViaInteraction","toggleSelected","_handleClick","_blur","MAT_RIPPLE_GLOBAL_OPTIONS","Dt","MatChipRemove","_parentChip","parentChip","MAT_CHIPS_DEFAULT_OPTIONS","_MatChipListBase","mixinErrorState","_defaultErrorStateMatcher","_parentForm","_parentFormGroup","ngControl","nextUniqueId$1","MatChipList","controlType","_lastDestroyedChipIndex","_tabIndex","_userTabIndex","_compareWith","o1","o2","ariaOrientation","_syncChipsState","_initializeSelection","_chipInput","focused","_hasFocusedChip","chips","shouldLabelFloat","chipSelectionChanges","chipFocusChanges","chipBlurChanges","chipRemoveChanges","FocusKeyManager","_allowFocusEscape","_resetChips","_updateTabIndex","_updateFocusForDestroyedChips","updateErrorState","_dropSubscriptions","registerInput","inputElement","setDescribedByIds","_ariaDescribedby","onContainerClick","_originatesFromChip","_focusInput","_keydown","newChipIndex","_isValidIndex","_sortValues","correspondingChip","_propagateChanges","valueToEmit","MatChipListChange","_markAsTouched","_listenToChipsFocus","_listenToChipsSelection","_listenToChipsRemoved","_chipFocusSubscription","_chipBlurSubscription","_chipSelectionSubscription","_chipRemoveSubscription","chipIndex","MatFormFieldControl","MatChipInput","_addOnBlur","separatorKeyCodes","chipEnd","chipList","_chipList","addOnBlur","_focusLastChipOnBackspace","_emitChipEnd","_keyup","_focus","_isSeparatorKey","STANDARD_CURVE","DECELERATION_CURVE","ACCELERATION_CURVE","SHARP_CURVE","COMPLEX","ENTERING","EXITING","MATERIAL_SANITY_CHECKS","_sanityChecks","_hasDoneGlobalChecks","_checkIsEnabled","_disableRipple","errorState","errorStateMatcher","isErrorState","_pendingSubscribers","_notifySubscriber","_markInitialized","_localeChanges","getValidDateOrNull","firstValid","secondValid","MAT_DATE_FORMATS","NativeDateAdapter","MAT_NATIVE_DATE_FORMATS","NativeDateModule","MatLine","setClass","fadeOut","fadeOutRipple","defaultRippleAnimationConfig","enterDuration","exitDuration","passiveEventOptions","pointerDownEvents","pointerUpEvents","_target","_isPointerDown","_activeRipples","_pointerUpEventsRegistered","fadeInRipple","_containerRect","animationConfig","distX","distY","distanceToFurthestCorner","ripple","rippleRef","RippleRef","_mostRecentTransientRipple","_runTimeoutOutsideZone","isMostRecentTransientRipple","wasActive","rippleEl","fadeOutAll","fadeOutAllNonPersistent","_triggerElement","_registerEvents","_onTouchStart","_onPointerUp","isFakeMousedown","_lastTouchStartEvent","terminateOnPointerUp","eventTypes","globalOptions","_globalOptions","_rippleRenderer","_setupTriggerEventsIfEnabled","_trigger","launch","configOrX","MatPseudoCheckbox","MatPseudoCheckboxModule","_uniqueIdCounter","_MatOptionBase","_mostRecentViewValue","viewValue","_emitSelectionChangeEvent","_getAriaSelected","_getTabIndex","optionIndex","optionsArray","groupCounter","optionOffset","optionHeight","currentScrollPosition","panelHeight","MatDatepickerIntl","calendarLabel","openCalendarLabel","closeCalendarLabel","MatCalendarBody","_isComparisonIdentical","MatDateSelectionModel","_adapter","_selectionChanged","selectionChanged","updateSelection","_isValidDateInstance","MatSingleDateSelectionModel","MatRangeDateSelectionModel","MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER","MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER","MAT_DATE_RANGE_SELECTION_STRATEGY","DefaultMatCalendarRangeStrategy","MAT_CALENDAR_RANGE_STRATEGY_PROVIDER","MatMonthView","comparisonChange","_selectionKeyPressed","_canSelect","_handleCalendarBodyKeyup","monthLabel","MatCalendarCell","MatMultiYearView","MatYearView","MatCalendarHeader","_buttonDescriptionId","minYearName","maxYearName","MatCalendar","viewChanged","viewChangedResult","transformPanel","keyframes","fadeInCalendar","_MatDatepickerContentBase","MatDatepickerContent","_globalModel","_rangeSelectionStrategy","intl","_subscriptions","_animationDone","_actionsPortal","_closeButtonText","_handleUserSelection","newSelection","_startExitAnimation","_getSelected","_applyPendingSelection","MatDatepickerBase","_inputStateChanges","xPosition","yPosition","_backdropHarnessClass","getStartValue","getThemePalette","_panelClass","_getMinDate","_getMaxDate","_getDateFilter","_setConnectedPositions","_destroyOverlay","_viewChanged","registerActions","removeActions","_openOverlay","_componentRef","_forwardContentValues","isDialog","getOverlayLabelId","_getDialogStrategy","_getDropdownStrategy","_getCloseStream","primaryX","secondaryX","primaryY","secondaryY","MatDatepicker","MatDatepickerInputBase","_valueChangesSubscription","matDatepickerParse","_matchesFilter","matDatepickerFilter","matDatepickerMin","matDatepickerMax","_assignValueProgrammatically","_getValueFromModel","_parentDisabled","_getValidators","_registerModel","_assignValue","_shouldHandleChangeEvent","_isValidValue","MatDatepickerInputEvent","dateInputsHaveChanged","isAltDownArrow","_assignValueToModel","MatDatepickerInput","dateFormats","_closedSubscription","matDatepicker","validValue","wasMatchingValue","modelValue","MatDatepickerToggleIcon","MatDatepickerToggle","_watchStateChanges","datepickerStateChanged","inputStateChanged","datepickerToggled","MAT_DATE_RANGE_INPUT_PARENT","_MatDateRangeInputBase","MatDateRangeInputPartBase","_rangeInput","_getPlaceholder","_handleChildValueChange","_openDatepicker","_groupDisabled","_startInput","_endInput","opposite","MatStartDate","rangeInput","defaultErrorStateMatcher","parentForm","parentFormGroup","_startValidator","matStartDateInvalid","getMirrorValue","MatEndDate","_endValidator","matEndDateInvalid","MatDateRangeInput","_ariaDescribedBy","rangePicker","_rangePicker","wasMatchingStart","wasMatchingEnd","_revalidate","startEmpty","endEmpty","_getInputMirrorValue","_shouldHidePlaceholders","_shouldHideSeparator","_shouldLabelFloat","_getAriaLabelledby","_hasFloatingLabel","_labelId","_updateFocus","MatDateRangePicker","ariaDescribedBy","ariaLabelledBy","matDialogAnimations","dialogContainer","_MatDialogContainerBase","_elementFocusedBeforeDialogWasOpened","_closeInteractionType","_ariaLabelledBy","_initializeWithAttachedContent","_setupFocusTrap","_capturePreviouslyFocusedElement","_recaptureFocus","_containsFocus","focusedSuccessfully","_focusDialogContainer","previousElement","MatDialogConfig","MatDialogContainer","_containerInstance","_afterClosed","_beforeClosed","_finishDialogClose","_closeDialogVia","dialogResult","beforeClosed","_getPositionStrategy","interactionType","MAT_DIALOG_DEFAULT_OPTIONS","MAT_DIALOG_SCROLL_STRATEGY","MAT_DIALOG_SCROLL_STRATEGY_PROVIDER","_MatDialogBase","_parentDialog","_dialogRefConstructor","_dialogContainerType","_dialogDataToken","_openDialogsAtThisLevel","_afterAllClosedAtThisLevel","_afterOpenedAtThisLevel","_ariaHiddenElements","_dialogAnimatingOpen","afterAllClosed","openDialogs","_getAfterAllClosed","getDialogById","_lastDialogRef","_attachDialogContainer","animationStateSubscription","dialogAnimationEvent","_animationStateSubscriptions","_attachDialogContent","_hideNonDialogContentFromAssistiveTechnology","_removeOpenDialog","_closeDialogs","dialogConfig","overlayContainer","dialogs","MatDialog","parentDialog","dialogElementUid","MatDialogClose","getClosestDialog","proxiedChange","_matDialogClose","_matDialogCloseResult","screenX","screenY","MatDialogTitle","MatDialogContent","MatDialogActions","MAT_ACCORDION","EXPANSION_PANEL_ANIMATION_TIMING","matExpansionAnimations","indicatorRotate","bodyExpansion","MatExpansionPanelContent","MAT_EXPANSION_PANEL_DEFAULT_OPTIONS","MatExpansionPanel","_uniqueSelectionDispatcher","_hideToggle","afterExpand","afterCollapse","_inputChanges","_headerId","_bodyAnimationDone","fromState","hideToggle","togglePosition","_togglePosition","_hasSpacing","displayMode","_getExpandedState","_lazyContent","_body","focusedElement","bodyElement","_MatExpansionPanelHeaderMixinBase","MatExpansionPanelHeaderBase","MatExpansionPanelHeader","_parentChangeSubscription","accordionHideToggleChange","expandedHeight","collapsedHeight","_isExpanded","_getPanelId","_getTogglePosition","_showToggle","_getHeaderHeight","isExpanded","_handleHeaderKeydown","_handleHeaderFocus","MatExpansionPanelTitle","MatAccordion","_ownHeaders","updateOutlineGap","nextUniqueId$2","MAT_ERROR","MatError","ariaLive","matFormFieldAnimations","transitionMessages","_MAT_HINT","MatHint","MatLabel","MatPlaceholder","MAT_PREFIX","MAT_SUFFIX","MatSuffix","_MatFormFieldBase","MAT_FORM_FIELD_DEFAULT_OPTIONS","MatFormField","_outlineGapCalculationNeededImmediately","_outlineGapCalculationNeededOnStable","_showAlwaysAnimate","_subscriptAnimationState","_hintLabel","_hintLabelId","_getDefaultFloatLabelState","_animationsEnabled","_hideRequiredMarker","hideRequiredMarker","_shouldAlwaysFloat","_canLabelFloat","hintLabel","_processHints","_explicitFormFieldControl","_controlNonStatic","_controlStatic","_connectionContainerRef","_validateControlChild","_validatePlaceholders","_syncDescribedByIds","_prefixChildren","_suffixChildren","_hintChildren","_errorChildren","_shouldForward","_hasPlaceholder","_placeholderChild","_hasLabel","_labelChildNonStatic","_labelChildStatic","_hideControlPlaceholder","_getDisplayedMessages","_label","_validateHints","userAriaDescribedBy","startHint","endHint","labelEl","_isAttachedToDOM","startWidth","gapWidth","startEls","gapEls","containerStart","_getStartEnd","labelChildren","labelStart","labelWidth","outlineGapPadding","MatFormFieldModule","ttWindow","iconName","literal","svgText","MatIconRegistry","_httpClient","_sanitizer","_errorHandler","_svgIconConfigs","_iconSetConfigs","_cachedIconsByUrl","_inProgressUrlFetches","_fontCssClassesByAlias","_resolvers","_defaultFontSetClass","addSvgIcon","addSvgIconInNamespace","addSvgIconLiteral","addSvgIconLiteralInNamespace","_addSvgIconConfig","SvgIconConfig","addSvgIconResolver","cleanLiteral","getMatIconFailedToSanitizeLiteralError","trustedLiteral","addSvgIconSet","addSvgIconSetInNamespace","addSvgIconSetLiteral","addSvgIconSetLiteralInNamespace","_addSvgIconSetConfig","registerFontClassAlias","alias","classNameForFontAlias","setDefaultFontSetClass","getDefaultFontSetClass","getSvgIconFromUrl","safeUrl","getMatIconFailedToSanitizeUrlError","cachedIcon","cloneSvg","_loadSvgIconFromConfig","getNamedSvgIcon","iconKey","_getSvgFromConfig","_getIconConfigFromResolvers","iconSetConfigs","_getSvgFromIconSetConfigs","getMatIconNameNotFoundError","_svgElementFromConfig","namedIcon","_extractIconWithNameFromAnySet","iconSetFetchRequests","iconSetConfig","_loadSvgIconSetFromConfig","foundIcon","_extractSvgIconFromSet","_fetchIcon","iconSet","iconSource","iconElement","_setSvgAttributes","_toSvgElement","_svgElementFromString","iconConfig","inProgressFetch","configNamespace","isSafeUrlWithOptions","_MatIconBase","MAT_ICON_LOCATION","funcIriAttributes","funcIriAttributeSelector","funcIriPattern","MatIcon","_iconRegistry","ariaHidden","_inline","_currentIconFetch","svgIcon","_svgIcon","_updateSvgIcon","_clearSvgElement","fontSet","_fontSet","_cleanupFontValue","_updateFontIconClasses","fontIcon","_fontIcon","_splitIconName","cachedElements","_elementsWithExternalReferences","_previousPath","_prependPathToReferences","_usingFontIcon","_setSvgElement","styleTags","_cacheChildrenWithExternalReferences","layoutElement","fontSetClass","_previousFontSetClass","_previousFontIconClass","elementsWithFuncIri","elementWithReference","rawName","_svgNamespace","_svgName","listenerOptions","AutofillMonitor","_monitoredElements","animationName","isAutofilled","TextFieldModule","MAT_INPUT_INVALID_TYPES","_MatInputBase","MatInput","inputValueAccessor","_autofillMonitor","autofilled","_type","_readonly","_neverEmptyInputTypes","getSupportedInputTypes","_inputValueAccessor","_previousNativeValue","selectionStart","selectionEnd","_isServer","_isNativeSelect","_isTextarea","_isInFormField","_validateType","readonly","_dirtyCheckNativeValue","_dirtyCheckPlaceholder","_focusChanged","isFocused","_previousPlaceholder","_isNeverEmpty","_isBadInput","validity","badInput","firstOption","_isInlineSelect","_MatListBase","_MatListItemMixinBase","MAT_LIST","MAT_NAV_LIST","MatNavList","MatList","_getListType","MatListAvatarCssMatStyler","MatListIconCssMatStyler","MatListItem","navList","_isInteractiveList","_list","setLines","_lines","_MatSelectionListBase","_MatListOptionBase","MAT_SELECTION_LIST_VALUE_ACCESSOR","MatSelectionList","MatListOption","selectionList","checkboxPosition","_inputsInitialized","selectedOptions","_setSelected","_reportValueChange","wasSelected","hadFocus","newActiveItem","_removeOptionFromList","_text","_setFocusedOption","_handleBlur","_contentInitialized","_markOptionsForCheck","_setOptionsFromValues","disableRippleChanges","colorChanges","_isDestroyed","selectAll","_setAllOptionsSelected","deselectAll","_getOptionIndex","previousFocusIndex","hasModifier","_toggleFocusedOption","shouldSelect","_getSelectedOptionValues","MatSelectionListChange","focusedIndex","focusedOption","skipDisabled","changedOptions","De","matMenuAnimations","transformMenu","fadeInItems","MAT_MENU_CONTENT","MAT_MENU_PANEL","_MatMenuItemBase","MatMenuItem","_parentMenu","_hovered","_focused","_highlighted","_triggersSubmenu","_checkDisabled","_handleMouseEnter","_setHighlighted","isHighlighted","MAT_MENU_DEFAULT_OPTIONS","overlapTrigger","menuPanelUid","_MatMenuBase","_xPosition","_yPosition","_directDescendantItems","_tabSubscription","_panelAnimationState","_overlapTrigger","panelId","setPositionClasses","previousPanelClass","_previousPanelClass","_updateDirectDescendants","focusedItem","_item","parentMenu","focusFirstItem","lazyContent","_focusFirstItem","resetActiveItem","setElevation","elevation","_baseElevation","newElevation","_elevationPrefix","customElevation","_previousElevation","posX","posY","_startAnimation","_resetAnimation","_isAnimating","_allItems","MatMenu","MAT_MENU_SCROLL_STRATEGY","MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER","_MatMenuTriggerBase","_menuItemInstance","_menuOpen","_hoverSubscription","_menuCloseSubscription","_handleTouchStart","_openedBy","menuOpened","onMenuOpen","menuClosed","onMenuClose","_parentMaterialMenu","triggersSubmenu","_deprecatedMatMenuTriggerFor","menu","_menu","_destroyMenu","_checkMenu","_handleHover","menuOpen","toggleMenu","closeMenu","_setPosition","_getPortal","menuData","_menuClosingActions","_initMenu","_attached","_setIsMenuOpen","_setMenuElevation","_subscribeToPositions","originFallbackX","overlayFallbackY","originFallbackY","overlayFallbackX","parentClose","hover","_handleMousedown","i3$1","MatMenuTrigger","_changePageSize","lastPage","MatPaginatorIntl","itemsPerPageLabel","nextPageLabel","previousPageLabel","firstPageLabel","lastPageLabel","getRangeLabel","MAT_PAGINATOR_INTL_PROVIDER","MAT_PAGINATOR_DEFAULT_OPTIONS","_MatPaginatorMixinBase","mixinInitialized","_MatPaginatorBase","_pageSizeOptions","_hidePageSize","_showFirstLastButtons","pageSizeOptions","hidePageSize","showFirstLastButtons","_pageSize","_updateDisplayedPageSizeOptions","nextPage","hasNextPage","hasPreviousPage","maxPageIndex","_nextButtonsDisabled","_previousButtonsDisabled","_displayedPageSizeOptions","MatPaginator","formFieldAppearance","_formFieldAppearance","_MatProgressBarBase","MAT_PROGRESS_BAR_LOCATION","MAT_PROGRESS_BAR_DEFAULT_OPTIONS","progressbarId","MatProgressBar","_isNoopAnimation","_bufferValue","animationEnd","_animationEndSubscription","_rectangleFillValue","bufferValue","_primaryTransform","_bufferTransform","_primaryValueBar","_MatProgressSpinnerBase","MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS","diameter","_diameter","trackedDiameters","MatProgressSpinner","_diameters","_spinnerAnimationLabel","_getSpinnerAnimationLabel","_noopAnimations","_forceAnimations","strokeWidth","_styleRoot","_attachStyleNode","_strokeWidth","_getCircleRadius","_getViewBox","_getStrokeCircumference","_getStrokeDashOffset","_getCircleStrokeWidth","styleRoot","currentDiameter","diameters","diametersForElement","styleTag","_getAnimationText","strokeCircumference","MatSpinner","MAT_RADIO_DEFAULT_OPTIONS","MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR","MatRadioGroup","MAT_RADIO_GROUP","_MatRadioGroupBase","_labelPosition","_updateRadioButtonNames","_markRadiosForCheck","_updateSelectedRadioFromValue","_checkSelectedRadioButton","_touch","_radios","radio","MatRadioChange","MatRadioButton","_MatRadioButtonMixinBase","MatRadioButtonBase","_MatRadioButtonBase","radioGroup","_radioDispatcher","_providerOverride","newCheckedState","_setDisabled","_onInputInteraction","groupValueChanged","changeDetector","radioDispatcher","providerOverride","_panelDoneAnimatingStream","matSelectAnimations","transformPanelWrap","animateChild","SELECT_PANEL_MAX_HEIGHT","MAT_SELECT_SCROLL_STRATEGY","MAT_SELECT_CONFIG","MAT_SELECT_SCROLL_STRATEGY_PROVIDER","_MatSelectMixinBase","MAT_SELECT_TRIGGER","MatSelectTrigger","_MatSelectBase","_parentFormField","_panelOpen","_triggerAriaLabelledBy","_valueId","_overlayPanelClass","_disableOptionCentering","disableOptionCentering","un","optionSelectionChanges","openedChange","_openedStream","_closedStream","typeaheadDebounceInterval","_typeaheadDebounceInterval","_panelDoneAnimating","_initKeyManager","_resetOptions","newAriaLabelledby","_getTriggerAriaLabelledby","_highlightCorrectOption","triggerValue","_handleOpenKeydown","_handleClosedKeydown","isOpenKey","previouslySelectedOption","selectedOption","hasDeselectedOptions","previouslyFocusedIndex","_onAttached","_overlayDir","_positioningSettled","_getPanelTheme","_scrollOptionIntoView","changedOrDestroyed","_onSelect","sortComparator","_getChangeEvent","_getAriaActiveDescendant","MatSelect","_scrollTop","_triggerFontSize","_transformOrigin","_positions","_calculateOverlayScroll","scrollBuffer","maxScroll","_getItemHeight","_triggerRect","_calculateOverlayPosition","_calculateOverlayOffsetX","MatSelectChange","viewportSize","paddingWidth","SELECT_MULTIPLE_PANEL_PADDING_X","SELECT_PANEL_PADDING_X","_calculateOverlayOffsetY","optionHeightAdjustment","maxOptionsDisplayed","optionOffsetFromPanelTop","_getItemCount","_checkOverlayWithinViewport","topSpaceAvailable","bottomSpaceAvailable","panelHeightTop","panelHeightBottom","_adjustPanelUp","_adjustPanelDown","_getOriginBasedOnOption","distanceBelowViewport","distanceAboveViewport","selectedOptionOffset","_onBackdropClicked","matDrawerAnimations","transformDrawer","MAT_DRAWER_DEFAULT_AUTOSIZE","MAT_DRAWER_CONTAINER","MatDrawerContent","_contentMarginChanges","MatDrawerContainer","MatDrawer","_elementFocusedBeforeDrawerWasOpened","_enableAnimations","_mode","_disableClose","_animationStarted","_animationEnd","openedStart","closedStart","onPositionChanged","_modeChanged","_takeFocus","_isFocusWithinDrawer","_openedVia","_updateFocusTrapState","_autoFocus","hasMovedFocus","activeEl","openedVia","_closeViaBackdropClick","_setOpen","_getWidth","viewportRuler","defaultAutosize","_drawers","_doCheckSubject","_contentMargins","_validateDrawers","updateContentMargins","_autosize","autosize","_backdropOverride","_userContent","_allDrawers","_watchDrawerToggle","_watchDrawerPosition","_watchDrawerMode","_isDrawerOpen","_left","_right","_setContainerClass","_closeModalDrawersViaBackdrop","_canHaveBackdrop","_isShowingBackdrop","MatSidenavContent","MatSidenavContainer","MatSidenav","_fixedInViewport","_fixedTopGap","_fixedBottomGap","fixedInViewport","fixedTopGap","fixedBottomGap","MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS","disableToggleValue","MAT_SLIDE_TOGGLE_VALUE_ACCESSOR","MatSlideToggle","_MatSlideToggleBase","toggleChange","_onChangeEvent","MatSlideToggleChange","_MatSlideToggleRequiredValidatorModule","MAT_SNACK_BAR_DATA","announcementMessage","MAX_TIMEOUT","_onAction","_dismissedByAction","onAction","_onExit","_finishDismiss","_durationTimeoutId","dismissWithAction","closeWithAction","_dismissAfter","dismissedByAction","_onEnter","SimpleSnackBar","snackBarRef","hasAction","MatSnackBarRef","matSnackBarAnimations","snackBarState","MatSnackBarContainer","snackBarConfig","_announceDelay","_onAnnounce","_assertNotAttached","_applySnackBarClasses","_live","_role","onAnimationEnd","_completeExit","_screenReaderAnnounce","_announceTimeoutId","panelClasses","inertElement","liveElement","MatSnackBarConfig","MAT_SNACK_BAR_DEFAULT_OPTIONS","MatSnackBar","_breakpointObserver","_parentSnackBar","_defaultConfig","_snackBarRefAtThisLevel","simpleSnackBarComponent","snackBarContainerComponent","handsetCssClass","_openedSnackBarRef","openFromComponent","_attach","openFromTemplate","_attachSnackBarContainer","containerRef","userConfig","_animateSnackBar","isLeft","i3$2","_tabFocusChanged","_removeTabBodyWrapperHeight","_setTabBodyWrapperHeight","_MAT_INK_BAR_POSITIONER","MatInkBar","_inkBarPositioner","alignToElement","_setStyles","inkBar","MAT_TAB_CONTENT","MatTabContent","MAT_TAB_LABEL","MAT_TAB","_MatTabBase","MAT_TAB_GROUP","MatTab","_closestTabGroup","textLabel","_contentPortal","templateLabel","_templateLabel","_setTemplateLabelInput","_explicitContent","_implicitContent","_closestTab","matTabsAnimations","translateTab","MatTabBodyPortal","_centeringSub","_leavingSub","_beforeCentering","_isCenterPosition","isCentering","_afterLeavingCenter","MatTabBody","_MatTabBodyBase","_dirChangeSubscription","_translateTabComplete","_onCentering","_onCentered","animationDuration","_computePositionAnimationState","_positionIndex","_computePositionFromOrigin","_onTranslateTabStarted","_getLayoutDirection","MAT_TABS_CONFIG","_MatTabLabelWrapperBase","MatTabLabelWrapper","getOffsetLeft","getOffsetWidth","MatPaginatedTabHeader","_scrollDistance","_selectedIndexChanged","_showPaginationControls","_disableScrollAfter","_disableScrollBefore","disablePagination","_selectedIndex","selectFocusedIndex","indexFocused","_stopInterval","_previousPaginator","_handlePaginatorPress","_nextPaginator","dirChange","realign","_alignInkBarToSelectedTab","newFocusIndex","_setTabFocus","_tabLabelCount","_scrollToLabel","_checkScrollingControls","_scrollDistanceChanged","_updateTabScrollPosition","focusIndex","_itemSelected","_onContentChanges","_currentTextContent","_checkPaginationEnabled","_tabListContainer","scrollDistance","_tabList","_scrollTo","_scrollHeader","_handlePaginatorClick","labelIndex","selectedLabel","viewLength","labelBeforePos","labelAfterPos","_tabListInner","beforeVisiblePos","afterVisiblePos","_getMaxScrollDistance","selectedItem","selectedLabelWrapper","_inkBar","mouseEvent","maxScrollDistance","_MatTabHeaderBase","MatTabHeader","_MatTabGroupMixinBase","_MatTabGroupBase","_tabs","_indexToSelect","_tabBodyWrapperHeight","_tabsSubscription","_tabLabelSubscription","headerPosition","selectedIndexChange","focusChange","animationDone","selectedTabChange","_groupId","dynamicHeight","contentTabIndex","_dynamicHeight","_animationDuration","_contentTabIndex","_backgroundColor","indexToSelect","_clampTabIndex","isFirstRun","_createChangeEvent","_tabBodyWrapper","_subscribeToAllTabChanges","_subscribeToTabLabels","tabs","_allTabs","realignInkBar","_tabHeader","focusTab","MatTabChangeEvent","_getTabLabelId","_getTabContentId","tabHeight","tabHeader","MatTabGroup","_MatToolbarBase","MatToolbarRow","MatToolbar","_checkToolbarMixedModes","_toolbarRows","matTooltipAnimations","tooltipState","PANEL_CLASS","passiveListenerOptions","MAT_TOOLTIP_SCROLL_STRATEGY","MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER","MAT_TOOLTIP_DEFAULT_OPTIONS","showDelay","hideDelay","touchendHideDelay","_MatTooltipBase","_viewInitialized","_pointerExitEventsInitialized","_cssClassPrefix","touchGestures","_message","_passiveListeners","_isTooltipVisible","_updatePosition","_tooltipInstance","_setupPointerEnterEventsIfNeeded","_updateTooltipMessage","tooltipClass","_tooltipClass","_setTooltipClass","_touchstartTimeout","_showTimeoutId","_hideTimeoutId","_tooltipComponent","afterHidden","scrollableAncestors","_updateCurrentPositionClass","_handleBodyInteraction","_getOrigin","_addOffset","main","isLtr","originPosition","_invertPosition","overlayPosition","_currentPosition","classPrefix","_platformSupportsMouseEvents","_setupPointerExitEventsIfNeeded","_disableNativeGesturesIfNecessary","_addListeners","exitListeners","_wheelListener","touchendListener","elementUnderPointer","msUserSelect","webkitUserSelect","MozUserSelect","webkitUserDrag","MatTooltip","ariaDescriber","TooltipComponent","_TooltipComponentBase","_visibility","_closeOnInteraction","_onHide","_onShow","_animationStart","_isHandset","NoopAnimationPlayer","ɵAnimationGroupPlayer","driver","normalizer","preStyles","postStyles","normalizedKeyframes","previousKeyframe","kf","isSameOffset","normalizedKeyframe","normalizedProp","normalizePropertyName","normalizeStyleValue","LINE_START","copyAnimationEvent","makeAnimationEvent","triggerName","separatorPos","_contains","elm1","elm2","_matches","_isNode","matchesSelector","mozMatchesSelector","oMatchesSelector","elems","elm","_CACHED_BODY","_IS_WEBKIT","containsVendorPrefix","matchesElement","containsElement","invokeQuery","newObj","newProp","NoopAnimationDriver","validateStyleProperty","computeStyle","easing","previousPlayers","scrubberAccessRequested","AnimationDriver","NOOP","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","_convertTimeValueToMS","allowNegativeValues","delayMatch","easingVal","containsErrors","parseTimeExpression","readPrototype","copyObj","styleAttrValue","getStyleAttributeString","camelCaseToDashCase","formerStyles","camelProp","dashCaseToCamelCase","writeStyleAttribute","PARAM_REGEX","localVal","DASH_CASE_REGEXP","previousStyles","previousStyleProps","startingKeyframe","missingStyleProps","visitor","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","transitionValue","expressions","eventStr","parseAnimationAlias","makeLambdaFromStates","parseInnerTransitionStr","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","AnimationAstBuilderVisitor","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","visitDslNode","normalizeAnimationEntry","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","transitions","stateDef","styleAst","astParams","containsDynamicStyles","missingSubs","stylesObj","extractStyleParams","missingSubsArr","parseTransitionExpr","normalizeAnimationOptions","furthestTime","innerAst","timingAst","makeTimingAst","resolveTiming","ast","dynamic","constructTimingAst","currentAnimateTimings","styleMetadata","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","styleTuple","collectedEasing","styleData","styleMap","collectedEntry","updateCollectedStyle","validateStyleParams","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","generatedOffset","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","hasAmpersand","normalizeSelector","getOrSetAsInMap","originalSelector","currentTransition","normalizeParams","preStyleProps","postStyleProps","subTimeline","_map","consume","instructions","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","ElementInstructionMap","AnimationTimelineContext","currentTimeline","setStyles","timelines","timeline","containsAnimation","allowOnlyTimelineStyles","createTimelineInstruction","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","resolveTimingValue","instruction","instructionTimings","appendInstructionToTimeline","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","delayNextStep","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","interpolateParams","incrementTime","getCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","parentContext","maxTime","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","paramsToUpdate","_copyOptions","oldParams","newTime","updatedTimings","builder","SubTimelineBuilder","stretchStartingKeyframe","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_localTimelineStyles","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","allStyles","allProperties","copyStyles","flattenStyles","getFinalKeyframe","details0","details1","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","decimalPoints","mult","AnimationStyleNormalizer","userProvidedProperty","normalizedProperty","strVal","DIMENSIONAL_PROP_MAP","valAndSuffixMatch","makeBooleanMap","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","_triggerName","_stateStyles","nextState","matchFns","oneOrMoreTransitionsMatch","buildStyles","stateName","backupStateStyler","stateStyler","backupStyles","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","buildAnimationTimelines","createTransitionInstruction","queriedElementsList","defaultParams","combinedParams","styleObj","_normalizer","transitionFactories","AnimationStateStyles","balanceProperties","AnimationTransitionFactory","fallbackTransition","createFallbackTransition","containsQueries","matchTransition","matchStyles","EMPTY_INSTRUCTION_MAP","bodyNode","_animations","_playersById","buildAnimationAst","_buildPlayer","normalizeKeyframes","autoStylesMap","Mn","optimizeGroupPlayer","_getPlayer","baseEvent","listenOnPlayer","QUEUED_CLASSNAME","DISABLED_CLASSNAME","DISABLED_SELECTOR","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","isObj","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","StateValue","_engine","_triggers","_elementListeners","_hostClassName","phase","triggersWithStates","statesByElement","afterFlush","_getTrigger","defaultToFallback","TransitionAnimationPlayer","objEquals","reportError","eraseStyles","playersOnElement","playersByElement","isFallbackTransition","totalQueuedPlayers","stateMap","clearElementCache","elementPlayers","_signalRemovalForInnerTriggers","namespaces","fetchNamespacesByElement","triggerLeaveAnimation","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","elementStates","visitedTriggers","removeNode","engine","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","removalFlag","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","microtaskId","We","markedForDestroy","d0","elementContainsData","containsData","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","onRemovalComplete","queuedPlayers","createNamespace","AnimationTransitionNamespace","_balanceNamespaceList","collectEnterElement","registerTrigger","_fetchNamespace","nsId","isElementNode","markElementAsDisabled","hostNS","_buildInstruction","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","cleanupFns","_flushAnimations","quietFns","Et","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","Ln","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","nodeIsOrphaned","stringMap","setVal","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","getRealPlayer","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","finalPlayers","_flattenGroupPlayersRecur","flattenGroupPlayers","wrappedPlayer","currentValues","deleteOrUnsetInMap","_player","_containsRealPlayer","_queuedCallbacks","_queueEvent","valuesMap","elementPropsMap","defaultStyle","cloakVals","cloakElement","failedElements","roots","rootMap","nodeSet","localRootMap","CLASSES_CACHE_KEY","postEntry","preEntry","_triggerCache","_transitionEngine","TransitionAnimationEngine","_timelineEngine","TimelineAnimationEngine","componentId","AnimationTrigger","buildTrigger","onInsert","onRemove","disableAnimations","parseTimelineCommand","eventPhase","startStyles","endStyles","filterNonAnimatableStyles","SpecialCasedStyles","_startStyles","_endStyles","initialStyles","initialStylesByElement","_initialStyles","isNonAnimatableStyle","ANIMATION_PROP","ANIMATIONEND_EVENT","_duration","_easing","_fillMode","_onDoneFn","_startTime","_eventFn","_handleCallback","anim","getAnimationStyle","countChars","setAnimationStyle","applyKeyframeAnimation","addRemoveAnimationEvent","playPauseAnimation","findIndexForAnimation","_ngTestManualTimestamp","elapsedTime","findMatchingTokenIndex","removeKeyframeAnimation","searchToken","doRemove","_finalStyles","_specialStyles","currentSnapshot","_buildStyler","_styler","_flushStartFns","_flushDoneFns","ElementAnimationStyleHandler","finished","_startingStyles","__initialized","_styles","hypenatePropsObject","_count","buildKeyframeElement","keyframeStr","kfElm","previousCssKeyframePlayers","CssKeyframesPlayer","allowPreviousPlayerStylesMerge","flatKeyframes","flattenKeyframesIntoStyles","balancePreviousStylesIntoKeyframes","DirectStylePlayer","findNodeToAppendKeyframeElement","specialStyles","packageNonAnimatableStyles","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","_resetDomPlayerState","_isNativeImpl","getElementAnimateFn","_cssKeyframesDriver","CssKeyframesDriver","overrideWebAnimationsSupport","playerOptions","previousWebAnimationPlayers","WebAnimationsPlayer","BrowserAnimationBuilder","AnimationBuilder","rootRenderer","_nextAnimationId","issueAnimationCommand","BrowserAnimationFactory","AnimationFactory","RendererAnimationPlayer","_command","_listen","DISABLE_ANIMATIONS_FLAG","AnimationRendererFactory","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","BaseAnimationRenderer","animationTriggers","AnimationRenderer","_scheduleCountTask","scheduleListenerCallback","refChild","selectorOrNode","preserveContent","resolveElementFromTarget","dotIndex","parseTriggerCallbackName","InjectableAnimationEngine","ɵAnimationEngine","SHARED_ANIMATION_PROVIDERS","ɵAnimationStyleNormalizer","ɵWebAnimationsStyleNormalizer","ɵDomRendererFactory2","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","ɵCssKeyframesDriver","BROWSER_NOOP_ANIMATIONS_PROVIDERS","ɵNoopAnimationDriver","ɵDomAdapter","supportsDOMEvents","GenericBrowserDomAdapter","ɵsetRootDomAdapter","BrowserDomAdapter","onAndCancel","getDefaultDocument","createHtmlDocument","isShadowRoot","DocumentFragment","baseElement","urlParsingNode","pathName","resetBaseElement","getCookie","TRANSITION_ID","SERVER_TRANSITION_PROVIDERS","transitionId","setTestabilityGetter","BrowserGetTestability","ɵglobal","testabilities","didWork","didWork_","BrowserXhr","EVENT_MANAGER_PLUGINS","EventManager","_eventNameToPlugin","_plugins","plugin","_findPluginFor","addGlobalEventListener","getZone","SharedStylesHost","_stylesSet","addStyles","additions","onStylesAdded","getAllStyles","DomSharedStylesHost","_hostNodes","_addStylesToHost","styleNodes","styleEl","addHost","hostNode","removeHost","styleNode","NAMESPACE_URIS","xhtml","xlink","xml","xmlns","COMPONENT_REGEX","compId","DomRendererFactory2","sharedStylesHost","rendererByCompId","defaultRenderer","DefaultDomRenderer2","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDomRenderer","namespaceUri","removeAttributeNS","decoratePreventDefault","contentAttr","hostAttr","nodeOrShadowRoot","DomEventsPlugin","EventManagerPlugin","MODIFIER_KEYS","_keyMap","Del","Esc","Up","Down","Menu","Win","_chromeNumKeyPadMap","I","N","MODIFIER_KEY_GETTERS","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","modifierName","keyIdentifier","getEventKey","modifierGetter","getEventFullKey","DomSanitizer","DomSanitizerImpl","ke","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵgetSanitizationBypassType","ɵ_sanitizeUrl","ɵbypassSanitizationTrustHtml","bypassSecurityTrustStyle","ɵbypassSanitizationTrustStyle","bypassSecurityTrustScript","ɵbypassSanitizationTrustScript","bypassSecurityTrustUrl","ɵbypassSanitizationTrustUrl","bypassSecurityTrustResourceUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","platformBrowser","ɵPLATFORM_BROWSER_ID","makeCurrent","ɵsetDocument","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","XhrFactory","parentModule","_refCount","refCounter","sharedConnection","_connection","subjectFactory","getSubject","_teardown","higherOrderRefCount","RouterEvent","navigationTrigger","restoredState","urlAfterRedirects","shouldActivate","routeConfig","routerEvent","PRIMARY_OUTLET","ParamsAsMap","NAVIGATION_CANCELING_ERROR","segments","segmentGroup","posParams","consumed","equalArraysOrString","aSorted","bSorted","pathCompareMap","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","equalSegmentGroups","subset","containsSegmentGroup","paramCompareMap","shallowEqual","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","queryParamMap","_queryParamMap","convertToParamMap","DEFAULT_SERIALIZER","serializePaths","parameterMap","_parameterMap","serializePath","as","UrlParser","UrlTree","parseRootSegment","parseQueryParams","parseFragment","serializeSegment","strParams","encodeUriQuery","serializeQueryParams","encodeURI","DefaultUrlSerializer","primary","childOutlet","mapChildrenIntoArray","encodeUriString","encodeUriSegment","serializeMatrixParams","SEGMENT_RE","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","UrlSegmentGroup","parseChildren","parseQueryParam","parseSegment","parseParens","matchSegments","UrlSegment","parseMatrixParams","parseParam","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodedVal","currentVal","allowPrimary","outletName","pathFromRoot","findNode","findPath","cc","outlet","setRouterState","urlTree","ActivatedRouteSnapshot","RouterStateSnapshot","TreeNode","createEmptyStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","RouterState","futureSnapshot","_futureSnapshot","_routerState","_paramMap","inheritingStartingFrom","curr","_resolvedData","flattenInherited","urlSegment","lastPathIndex","_urlSegment","_lastPathIndex","serializeNode","nextSnapshot","shallowEqualArrays","equalUrlParams","equalSegments","equalParamsAndUrlSegments","routeReuseStrategy","prevState","shouldReuseRoute","createNode","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","createActivatedRoute","outlets","segmentPath","oldSegmentGroup","newSegmentGroup","qp","replaceSegment","oldSegment","newSegment","isAbsolute","numberOfDoubleDots","commands","isMatrixParams","cmdWithOutlet","isCommandWithOutlets","toRoot","processChildren","updateSegmentGroupChildren","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","prefixedWith","slicedCommands","createNewSegmentGroup","getOutlets","updateSegmentGroup","createNewSegmentChildren","futureState","currState","forwardEvent","activate","parentContexts","futureRoot","currRoot","deactivateChildRoutes","advanceActivatedRoute","activateChildRoutes","futureNode","currNode","contexts","nodeChildrenAsMap","futureChild","childOutletName","deactivateRoutes","deactivateRouteAndItsChildren","future","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","onOutletDeactivated","deactivate","attachRef","activateRoutes","ActivationEnd","ChildActivationEnd","getOrCreateContext","stored","onOutletReAttached","_loadedConfig","parentLoadedConfig","cmpFactoryResolver","activateWith","INITIAL_VALUE","isPending","innerAcc","isUrlTree","ChildrenOutletContexts","onChildOutletCreated","onChildOutletDestroyed","OutletContext","RouterOutlet","_activatedRoute","activateEvents","deactivateEvents","isActivated","activatedRouteData","childContexts","OutletInjector","ɵEmptyOutletComponent","validateNode","getFullPath","fullPath","validateConfig","currentRoute","standardizeConfig","sortedConfig","getOutlet","noMatch$1","consumedSegments","positionalParamSegments","defaultUrlMatcher","slicedSegments","relativeLinkResolution","emptyPathMatch","containsEmptyPathMatchesWithNamedOutlets","primarySegment","_sourceSegment","_segmentIndexShift","createChildrenForEmptyPaths","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","rawSegment","NoMatch$1","AbsoluteRedirect","configLoader","urlSerializer","allowRedirects","splitGroup","rootSegmentGroup","expandSegmentGroup","createUrlTree","squashSegmentGroup","noMatchError","rootCandidate","expandChildren","expandSegment","childOutlets","sortedRoutes","sortByMatchingOutlets","expandedChild","takeLast","last$1","expanded$","expandSegmentAgainstRoute","noLeftoversInUrl","isImmediateMatch","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","absoluteRedirect","lineralizeSegments","newSegments","rawSegmentGroup","cfg","rawSlicedSegments","getChildConfig","routerConfig","childModule","childConfig","splitSegmentGroup","matchedOnOutlet","LoadedRouterConfig","runCanLoadGuards","shouldLoadResult","navigationCancelingError","canLoad","canLoadObservables","injectionToken","guardVal","wrapIntoObservable","prioritizedGuardValue","namedOutletsRedirect","applyRedirectCreatreUrlTree","newRoot","createSegmentGroup","createQueryParams","redirectToParams","actualParams","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","childCandidate","mergeTrivialChildren","getChildRouteGuards","getClosestLoadedConfig","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","CanActivate","cn","CanDeactivate","getRouteGuards","rootComponentType","recognize","processSegmentGroup","routeState","inheritParamsAndData","routeNode","inheritedParamsDataResolve","processSegment","outletChildren","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","localeCompare","processSegmentAgainstRoute","getSourceSegmentGroup","getPathIndexShift","getResolve","mergedNodes","hasEmptyPathConfig","duplicateEmptyPathNode","resultNode","mergedNode","nextResult","detachedTree","ROUTES","compiler","onLoadStartListener","onLoadEndListener","_loader$","loadRunner","loadModuleFactory","ConnectableObservable","shouldProcessUrl","extract","newUrlPart","wholeUrl","runExtras","exactMatchOptions","subsetMatchOptions","Router","rootContexts","lastSuccessfulNavigation","currentNavigation","disposed","navigationId","currentPageId","isNgZoneEnabled","malformedUriErrorHandler","defaultMalformedUriErrorHandler","navigated","lastSuccessfulId","beforePreactivation","defaultRouterHook","afterPreactivation","urlHandlingStrategy","DefaultUrlHandlingStrategy","DefaultRouteReuseStrategy","onSameUrlNavigation","urlUpdateStrategy","canceledNavigationResolution","ɵConsole","resetConfig","currentUrlTree","rawUrlTree","browserUrlTree","RouterConfigLoader","triggerEvent","RouteConfigLoadStart","RouteConfigLoadEnd","routerState","createEmptyState","targetPageId","currentRawUrl","extractedUrl","rawUrl","extras","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","navigations","setupNavigations","processNavigations","browserPageId","ɵrouterPageId","eventsSubject","initialUrl","previousNavigation","urlTransition","isBrowserTriggeredNavigation","NavigationStart","serializeUrl","ApplyRedirects","applyRedirects$1","applyRedirects","finalUrl","serializer","Recognizer","newObservableError","NoMatch","recognize$1","skipLocationChange","setBrowserUrl","routesRecognized","RoutesRecognized","navStart","replaceUrl","switchTap","appliedUrlTree","guardsStart","GuardsCheckStart","getAllRouteGuards","futureRSS","currRSS","currARS","canDeactivate","canDeactivateObservables","isCanDeactivate","runCanDeactivate","runCanDeactivateChecks","ChildActivationStart","fireChildActivationStart","ActivationStart","fireActivationStart","futureARS","canActivateChildGuardsMapped","canActivateChild","getCanActivateChild","guardsMapped","isCanActivateChild","runCanActivateChild","canActivateObservables","isCanActivate","runCanActivate","runCanActivateChecks","checkGuards","guardsEnd","GuardsCheckEnd","restoreHistory","cancelNavigationTransition","resolveStart","ResolveStart","dataResolved","canActivateChecksResolved","getResolver","resolveNode","resolvedData","runResolve","resolveData","resolveEnd","ResolveEnd","createRouterState","ActivateRoutes","isNavigationCancelingError","redirecting","navCancel","NavigationCancel","mergedTree","scheduleNavigation","navError","NavigationError","resetRootComponentType","initialNavigation","setUpLocationChangeListener","navigateByUrl","locationSubscription","stateCopy","getCurrentNavigation","navigationExtras","relativeTo","queryParamsHandling","preserveFragment","removeEmptyProps","nav","cmdIdx","urlPart","partIndex","computeNavigation","startingPosition","Position","ci","dd","createPositionApplyingDoubleDots","findStartingPosition","validateCommands","matchOptions","Me","containsTree","NavigationEnd","priorPromise","lastNavigation","browserNavPrecededByRouterNav","navToSameUrl","lastNavigationInProgress","ni","Ki","generateNgRouterState","restoringFromCaughtError","targetPagePosition","resetState","resetUrlToCurrentUrlTree","routerPageId","RouterLink","tabIndexAttribute","onChanges","setTabIndexIfNotOnNativeEl","newTabIndex","routerLink","attrBoolValue","RouterLinkWithHref","locationStrategy","updateTargetUrlAndHref","RouterLinkActive","linkWithHref","routerLinkActiveOptions","isActiveChange","routerEventsSubscription","links","linksWithHrefs","subscribeToEachLinkOnChanges","linkInputChangesSubscription","allLinkChanges","isLinkActive","routerLinkActive","Vt","hasActiveLinks","isActiveMatchOptions","isActiveCheckFn","preload","RouterPreloader","preloadingStrategy","setUpPreloading","processRoutes","preloadConfig","PreloadingStrategy","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","ROUTER_CONFIGURATION","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","UrlSerializer","assignExtraOptionsToRouter","groupEnd","NoPreloading","NgProbeToken","provideRoutes","provideForRootGuard","createRouterScroller","routerNgProbeToken","RouterInitializer","getAppInitializer","ROUTER_INITIALIZER","getBootstrapListener","provideRouterInitializer","scrollOffset","platformLocationStrategy","useHash","initNavigation","resultOfPreactivationDone","appInitializer","Un","bootstrapListener","bootstrappedComponentRef","preloader","routerScroller","TimeoutError","errors$","syncResub","subscribeForRetryWhen","configOrCount","resetOnSuccess","soFar","subscribeForRetry","resub","notifierSubscriber","cjs","HttpBaseService","ConfigurationProvider","configsInternal","hasAtLeastOneConfig","hasManyConfigs","setConfig","readyConfig","getOpenIDConfiguration","getAllConfigurations","DataService","configurationProvider","prepareHeaders","prepareParams","headersParams","ngswBypass","EventTypes","ConfigLoaded","ConfigLoadingFailed","CheckSessionReceived","UserDataChanged","NewAuthenticationResult","TokenExpired","IdTokenExpired","SilentRenewStarted","Debug","Warn","logError","logErrorWithConfig","logErrorWithoutConfig","logWarning","logWarningWithConfig","logWarningWithoutConfig","logDebug","logLevelIsSet","loggingIsTurnedOff","currentLogLevelIsEqualOrSmallerThan","logLevelToCompare","BrowserStorageService","configProvider","loggerService","hasStorage","getStorage","storedConfig","StoragePersistenceService","browserStorageService","resetStorageFlowData","resetAuthStateInStorage","getAccessToken","getRefreshToken","getAuthenticationResult","PublicEventsService","fireEvent","registerForEvents","TokenHelperService","getTokenExpirationDate","dataIdToken","setUTCSeconds","getSigningInputFromToken","tokenIsValid","getHeaderFromToken","getPayloadFromToken","getPartOfToken","getSignatureFromToken","partOfToken","extractPartOfToken","urlBase64Decode","JwtWindowCryptoService","generateCodeChallenge","codeVerifier","calcHash","challengeRaw","base64UrlEncode","generateAtHash","tokenHash","valueToHash","msgBuffer","hashBuffer","hashArray","toHashString","TokenValidationService","tokenHelperService","jwtWindowCryptoService","keyAlgorithms","cyptoObj","hasIdTokenExpired","offsetSeconds","validateIdTokenExpNotExpired","decodedIdToken","tokenExpirationDate","tokenExpirationValue","nowWithOffset","tokenNotExpired","millisToMinutesAndSeconds","validateAccessTokenNotExpired","accessTokenExpiresAt","accessTokenExpirationValue","validateRequiredIdToken","validated","validateIdTokenIatMaxOffset","maxOffsetAllowedInSeconds","disableIatOffsetValidation","dateTimeIatIdToken","maxOffsetAllowedInMilliseconds","validateIdTokenNonce","localNonce","ignoreNonceAfterRefresh","refreshTokenNoncePlaceholder","validateIdTokenIss","authWellKnownEndpointsIssuer","validateIdTokenAud","validateIdTokenAzpExistsIfMoreThanOneAud","azp","validateIdTokenAzpValid","validateStateFromHashCallback","localState","validateSignatureIdToken","jwtkeys","headerData","kid","kty","alg2kty","matchingKeys","getImportAlg","signingInput","rawSignature","agent","importKey","cryptoKey","getVerifyAlg","namedCurve","validateIdTokenAtHash","atHash","idTokenAlg","sha","millis","DEFAULT_AUTHRESULT","allConfigsAuthenticated","AuthStateService","storagePersistenceService","publicEventsService","tokenValidationService","authenticatedInternal$","authenticated$","setAuthenticatedAndFireEvent","composeAuthenticatedResult","setUnauthenticatedAndFireEvent","configIdToReset","composeUnAuthenticatedResult","updateAndPublishAuthState","authenticationResult","setAuthorizationData","authResult","persistAccessTokenExpirationTime","decodeURIComponentSafely","areAuthStorageTokensValid","hasIdTokenExpiredAndRenewCheckIsEnabled","hasAccessTokenExpiredIfExpiryExists","tokenToCheck","idTokenExpired","accessTokenExpiresIn","hasExpired","accessTokenExpiryTime","checkAllConfigsIfTheyAreAuthenticated","configs","STORAGE_KEY","AutoLoginService","storageService","checkSavedRedirectRouteAndNavigate","savedRouteForRedirect","getStoredRedirectRoute","deleteStoredRedirectRoute","saveRedirectRoute","RandomService","createRandom","getCrypto","toHex","randomString","dec","characters","FlowsDataService","randomService","createNonce","setNonce","getAuthStateControl","setAuthStateControl","authStateControl","getExistingOrCreateAuthStateControl","setSessionState","sessionState","getCodeVerifier","createCodeVerifier","isSilentRenewRunning","storageObject","getSilentRenewRunningStorageEntry","timeOutInMilliseconds","dateOfLaunchedProcessUtc","currentDateUtc","elapsedTimeInMilliseconds","resetSilentRenewRunning","setSilentRenewRunning","storageEntry","FlowHelper","isCurrentFlowCodeFlow","currentFlowIs","isCurrentFlowAnyImplicitFlow","isCurrentFlowImplicitFlowWithAccessToken","isCurrentFlowImplicitFlowWithoutAccessToken","isCurrentFlowCodeFlowWithRefreshTokens","flowTypes","CALLBACK_PARAMS_TO_CHECK","UrlService","flowsDataService","flowHelper","getUrlParameter","urlToCheck","isCallbackFromSts","getRefreshSessionSilentRenewUrl","customParams","createUrlCodeFlowWithSilentRenew","createUrlImplicitFlowWithSilentRenew","getAuthorizeParUrl","authWellKnownEndPoints","authorizationEndpoint","urlParts","authorizationUrl","createHttpParams","getAuthorizeUrl","createUrlCodeFlowAuthorize","createUrlImplicitFlowAuthorize","createEndSessionUrl","idTokenHint","customParamsEndSession","isAuth0Endpoint","composeAuth0Endpoint","endSessionEndpoint","authorizationEndSessionUrl","getPostLogoutRedirectUrl","appendCustomParams","createRevocationEndpointBodyAccessToken","getClientId","createRevocationEndpointBodyRefreshToken","getRevocationEndpointUrl","revocationEndpoint","createBodyForCodeFlowCodeRequest","customTokenParams","silentRenewUrl","getSilentRenewUrl","getRedirectUrl","createBodyForCodeFlowRefreshTokensRequest","customParamsRefresh","createBodyForParCodeFlowRequest","customParamsRequest","codeChallenge","hdParam","customParamsAuthRequest","createAuthorizeUrl","customRequestParams","mergedParams","overWriteParam","existingParams","UriEncoder","CodeFlowCallbackHandlerService","urlService","dataService","codeFlowCallback","isRenewProcess","jwtKeys","validationResult","existingIdToken","codeFlowCodeRequest","authWellknownEndpoints","tokenEndpoint","bodyForCodeFlow","customParamsCodeRequest","session_state","retryWhen","handleRefreshRetry","ProgressEvent","refreshTokenRetryInSeconds","DEFAULT_USERRESULT","userData","allUserData","UserService","oidcDataService","userDataInternal$","userData$","getAndPersistUserDataInStore","existingUserDataFromStorage","getUserDataFromStore","haveUserData","setUserDataToStore","renewUserInfoAfterTokenRenew","getUserDataOidcFlowAndSave","publishUserDataIfExists","fireUserDataEvent","resetUserDataInStore","idTokenSub","getIdentityUserData","validateUserDataSubIdToken","userInfoEndpoint","retry","userDataSub","passedUserData","composeSingleOrMultipleUserDataObject","currentConfigIsToUpdate","alreadySavedUserData","composeSingleUserDataResult","ResetAuthDataService","authStateService","userService","resetAuthorizationData","ImplicitFlowCallbackHandlerService","resetAuthDataService","implicitFlowCallback","isRenewProcessData","resultData","ValidationResult","NotSet","StatesDoNotMatch","SignatureFailed","IncorrectNonce","RequiredPropertyMissing","MaxOffsetExpired","IssDoesNotMatchIssuer","NoAuthWellKnownEndPoints","IncorrectAud","IncorrectIdTokenClaimsAfterRefresh","IncorrectAzp","IncorrectAtHash","Ok","LoginRequired","SecureTokenServerError","SigninKeyDataService","getSigningKeys","jwksUri","handleErrorGetSigningKeys","errorResponse","errMsg","JWT_KEYS","HistoryJwtKeysCallbackHandlerService","signInKeyDataService","callbackHistoryAndResetJwtKeys","historyCleanUpTurnedOn","resetBrowserHistory","handleResultErrorFromCallback","storeSigningKeys","storedJwtKeys","readSigningKeys","historyCleanupOff","UserCallbackHandlerService","callbackUser","publishAuthState","publishUnauthenticatedState","stateValidationResult","authResponseIsValid","at_hash","EqualityService","isStringEqualOrNonOrderedArrayEqual","isNullOrUndefined","oneValueIsStringAndTheOtherIsArray","bothValuesAreStrings","bothValuesAreArrays","arraysHaveEqualContent","areEqual","arraysStrictEqual","bothValuesAreObjects","valueIsString","valueIsObject","StateValidationService","equalityService","getValidatedStateResult","StateValidationResult","validateState","toReturn","handleUnsuccessfulValidation","issValidationOff","maxIdTokenIatOffsetAllowedInSeconds","isSignatureIdTokenValid","authNonce","issuer","isIdTokenAfterRefreshTokenRequestValid","validateDefault","handleSuccessfulValidation","idTokenHeader","newIdToken","disableRefreshIdTokenAuthTimeValidation","autoCleanStateAfterAuthentication","StateValidationCallbackHandlerService","stateValidationService","callbackStateValidation","publishUnauthorizedState","RefreshSessionCallbackHandlerService","refreshSessionWithRefreshTokens","stateData","RefreshTokenCallbackHandlerService","refreshTokensRequestTokens","FlowsService","codeFlowCallbackHandlerService","implicitFlowCallbackHandlerService","historyJwtKeysCallbackHandlerService","userHandlerService","stateValidationCallbackHandlerService","refreshSessionCallbackHandlerService","refreshTokenCallbackHandlerService","processCodeFlowCallback","processSilentRenewCodeFlowCallback","firstContext","processImplicitFlowCallback","processRefreshToken","IntervalService","runTokenValidationRunning","stopPeriodicTokenCheck","startPeriodicTokenCheck","repeatAfterSeconds","millisecondsDelayBetweenTokenCheck","intervalId","ImplicitFlowCallbackService","flowsService","intervalService","authenticatedImplicitFlowCallback","triggerAuthorizationResultEvent","postLoginRoute","unauthorizedRoute","IFrameService","getExistingIFrame","iFrameOnParent","getIFrameFromParentWindow","isIFrameElement","iFrameOnSelf","getIFrameFromWindow","addIFrameToWindowBody","sessionIframe","iFrameElement","HTMLIFrameElement","IFRAME_FOR_CHECK_SESSION_IDENTIFIER","CheckSessionService","iFrameService","checkSessionReceived","lastIFrameRefresh","outstandingMessages","heartBeatInterval","iframeRefreshInterval","checkSessionChangedInternal$","checkSessionChanged$","isCheckSessionConfigured","startCheckSession","scheduledHeartBeatRunning","pollServerSession","clearScheduledHeartBeat","serverStateChanged","getExistingIframe","existingIframe","getOrCreateIframe","checkSessionIframe","pollServerSessionRecur","iframeOrigin","existingIFrame","bindMessageEventToIframe","iframeMessageEvent","frame","CurrentUrlService","getStateParamFromCurrentUrl","getCurrentUrl","currentUrlHasStateParam","IFRAME_FOR_SILENT_RENEW_IDENTIFIER","SilentRenewService","implicitFlowCallbackService","refreshSessionWithIFrameCompletedInternal$","refreshSessionWithIFrameCompleted$","isSilentRenewConfigured","codeFlowCallbackSilentRenewIframe","errorFromFlow","silentRenewEventHandler","callback$","CodeFlowCallbackService","authenticatedCallbackWithCode","CallbackService","codeFlowCallbackService","stsCallbackInternal$","stsCallback$","isCallback","handleCallbackAndFireEvents","currentCallbackUrl","WELL_KNOWN_SUFFIX","AuthWellKnownDataService","getWellKnownEndPointsFromUrl","authWellknownEndpoint","getWellKnownDocument","wellKnownEndpoints","jwks_uri","authorization_endpoint","token_endpoint","userinfo_endpoint","end_session_endpoint","check_session_iframe","revocation_endpoint","introspectionEndpoint","introspection_endpoint","parEndpoint","pushed_authorization_request_endpoint","wellKnownEndpoint","AuthWellKnownService","getAuthWellKnownEndPoints","authWellknownEndpointUrl","alreadySavedWellKnownEndpoints","mappedWellKnownEndpoints","storeWellKnownEndpoints","RefreshSessionIframeService","silentRenewService","refreshSessionWithIframe","sendAuthorizeRequestUsingSilentRenew","initSilentRenewRequest","onLoadHandler","instanceId","initDestroyHandler","renewDestroyHandler","RefreshSessionRefreshTokenService","RefreshSessionService","authWellKnownService","refreshSessionIframeService","refreshSessionRefreshTokenService","userForceRefreshSession","extraCustomParams","persistCustomParams","forceRefreshSession","customParamsRefreshTokenRequest","startRefreshSession","timeOutTime","schedulerArg","with","_with","timeoutErrorFactory","originalSourceSubscription","timerSubscription","startTimer","timeoutRetryStrategy","errorAttempts","currentAttempt","PeriodicallyTokenCheckService","startTokenValidationPeriodically","configsWithSilentRenewEnabled","getConfigsWithSilentRenewEnabled","refreshTimeInSeconds","getSmallestRefreshTimeFromConfigs","periodicallyCheck$","objectWithConfigIdsAndRefreshEvent","getRefreshEvent","objectWithConfigIds","shouldStartPeriodicallyCheckForConfig","refreshEvent$","createRefreshEventForConfig","userDataFromStore","idTokenStillValid","accessTokenHasExpired","PopUpService","STORAGE_IDENTIFIER","resultInternal$","result$","isCurrentlyInPopup","canAccessSessionStorage","opener","openPopUp","popupOptions","optionsToPass","popUp","userClosed","receivedUrl","sendMessageToMainWindow","sendMessage","screenLeft","screenTop","CheckAuthService","checkSessionService","currentUrlService","callbackService","refreshSessionService","periodicallyTokenCheckService","popupService","autoLoginService","checkAuth","passedConfigId","stateParamFromUrl","getConfigurationWithUrlState","checkAuthWithConfig","onlyExistingConfig","checkAuthMultiple","composeMultipleLoginResults","allChecks$","checkAuthIncludingServer","loginResponse","loginResponseAfterRefreshSession","startCheckSessionAndValidation","stateFromUrl","allConfigs","storedState","allOtherConfigs","currentConfigResult","allOtherConfigResults","usePushedAuthorisationRequests","forbiddenRoute","customParamsEndSessionRequest","eagerLoadAuthWellKnownEndpoints","POSITIVE_VALIDATION_RESULT","messages","allRules","passedConfig","hasRefreshToken","hasSilentRenew","hasOfflineScope","allMultipleConfigRules","passedConfigs","allIdentifiers","createIdentifierToCheck","arrayHasDuplicates","ConfigValidationService","validateConfigs","validateConfigsInternal","validateConfigInternal","allRulesToUse","allValidationResults","overallErrorCount","processValidationResultsAndGetErrorCount","errorCount","allMessages","allErrorMessages","getAllMessagesOfType","allWarnings","PlatformProvider","DefaultSessionStorageService","OidcConfigService","configValidationService","platformProvider","defaultSessionStorageService","withConfigs","createUniqueIds","allHandleConfigs$","handleConfig","usedConfig","prepareConfig","alreadyExistingAuthWellKnownEndpoints","passedAuthWellKnownEndpoints","wellknownEndPoints","configuration","openIdConfigurationInternal","setSpecialCases","setStorage","currentConfig","hasBrowserStorage","loadConfigs","ClosestMatchingRouteService","getConfigIdForClosestMatchingRoute","allConfiguredRoutes","getAllConfiguredRoutes","routesWithConfig","allRoutesForConfig","configuredRoute","matchingRoute","matchingConfigId","allConfigurations","ResponseTypeValidationService","hasConfigValidResponseType","RedirectService","ParService","postParRequest","authWellKnownEndpoints","request_uri","ParLoginService","responseTypeValidationService","redirectService","checkAuthService","parService","loginPar","authOptions","urlHandler","loginWithPopUpPar","PopUpLoginService","loginWithPopUpStandard","authUrl","StandardLoginService","loginStandard","LoginService","parLoginService","popUpLoginService","standardLoginService","loginWithPopUp","LogoffRevocationService","logoff","endSessionUrl","getEndSessionUrl","logoffLocal","logoffLocalMultiple","logoffAndRevokeTokens","revokeRefreshToken","revokeAccessToken","accessTok","sendRevokeRequest","refreshTok","OidcSecurityService","logoffRevocationService","loginService","getConfigurations","authorize","authorizeWithPopUp","StsConfigStaticLoader","oidcConfigService","allConfigs$","PASSED_CONFIG","AuthModule","StsConfigLoader","createStaticLoader","configurationProviderFactory","closestMatchingRouteService","allRoutesConfigured","allRoutesConfiguredFlat","IamService","exchangeSessionIdForAppSession","externalUserRef","externalOrganizationRef","actAsSub","isSubjectHasChanged","externalCompanyId","newCurrentUser","organization_id","AUTH_PARAMS","SESSION_ID","SUB_EXTERNAL_REF_LEGACY","SUB_EXTERNAL_ORG_REF_LEGACY","ACT_AS","ORGANIZATION_EXTERNAL_REF","ORGANIZATION_ID","ACR","IntegrationAuthService","iamService","tokenRefreshing","authenticating","tokenExchanging","impersonatedUser","iframeIntegration","authMessage","_isIntegration","isImpersonation","reigsterAuthHandlers","rememberCustomAuthParams","restoreCustomAuthParams","accessTokenIsExpired","restoreSession","checkForIntegration","authenticationUsingSessionIdHandler","legacyAuthenticationUsingQueryParamsHandler","legacyAuthenticationUsingIframeMessageHandler","listenAndNotifyAuthenticationChanges","registerImpersonationHandlers","impersonateWhenSessionIsReady","initCustomAuthentication","company","external_company_id","setupClientConfig","client_id","refreshTokenManuallyInternal","rememberClient","fulfillAuthLibPrerequisites","authzData","authnResult","access_token_expires_at","urlSearchParams","userHasSignedOut","lastSilentRenewalWasInterrupted","refreshTokenManually","kickInAuthLibraryFlow","storageSilentRenewRunning","silentRenewal","whenSignedInCompletedInternal","clearImpersonatedUser","changeExistingIdTokenSubToBypassLibrarySubCheck","addCustomParamsForTokenRefreshRequest","addCustomParamsForCodeExchageRequest","customRefreshTokenParams","act_as","organizationExternalRef","external_organization_ref","actAs","payloadDecoded","alterIdTokenSubject","checkIntegration","hasSelectedOrganization","IframeCommService","InternalSessionService","userHasChangedInternal$","hashCode","_sessionId","clearSession","clearSessionIfSessionChanged","previousSessionHasChanged","previousSessionHash","currentSessionHash","clearSigningStateExceptIdToken","acr_values","acr","orgExternalRef","addAttributeToSignInSession","rememberSession","clientSession","getIdTokenPayload","saveCustomAuthParams","silentRenewRunning","internalSession","initiateListner","whiteListedOrigins","isFromTrustedOrigin","pakage","startApp","republish","acknowledge","dataPackage","delivered","filterNestedObject","filter$1","filteredObject","AuthConfiguration","iframeComm","integrationAuth","libConfiguration","UserSessionService","integrationAuthService","changeSessionAndRefresh","idTokenPayload","familyName","family_name","user_group","phone_number","userReferenceId","sub_ref","picture","actor","search_params","isSignedOut","WindowRef","nativeWindow","AutosizeDirective","onlyGrow","useImportant","resized","retries","_findNestedTextArea","textAreaEl","_onTextAreaFound","minRows","_minRows","onInput","textArea","adjust","_windowResizeHandler","_addWindowResizeHandler","inputsChanged","currentText","_oldContent","_oldWidth","oldHeight","willGrow","lineHeight","_getLineHeight","rowsCount","maxRows","paramsList","ignoreNgOnChanges","allowedParams","SwiperSlideDirective","class","autoplayDelay","slideData","isPrev","isNext","_classNames","_hasClass","SwiperComponent","showNavigation","showPagination","showScrollbar","s__beforeBreakpoint","s__containerClasses","s__slideClass","s__swiper","s_activeIndexChange","s_afterInit","s_autoplay","s_autoplayStart","s_autoplayStop","s_autoplayPause","s_autoplayResume","s_beforeDestroy","s_beforeInit","s_beforeLoopFix","s_beforeResize","s_beforeSlideChangeStart","s_beforeTransitionStart","s_breakpoint","s_changeDirection","s_click","s_doubleTap","s_doubleClick","s_destroy","s_fromEdge","s_hashChange","s_hashSet","s_imagesReady","s_init","s_keyPress","s_lazyImageLoad","s_lazyImageReady","s_loopFix","s_momentumBounce","s_navigationHide","s_navigationShow","s_navigationPrev","s_navigationNext","s_observerUpdate","s_orientationchange","s_paginationHide","s_paginationRender","s_paginationShow","s_paginationUpdate","s_progress","s_reachBeginning","s_reachEnd","s_realIndexChange","s_resize","s_scroll","s_scrollbarDragEnd","s_scrollbarDragMove","s_scrollbarDragStart","s_setTransition","s_setTranslate","s_slideChange","s_slideChangeTransitionEnd","s_slideChangeTransitionStart","s_slideNextTransitionEnd","s_slideNextTransitionStart","s_slidePrevTransitionEnd","s_slidePrevTransitionStart","s_slideResetTransitionStart","s_slideResetTransitionEnd","s_sliderMove","s_sliderFirstMove","s_slidesLengthChange","s_slidesGridLengthChange","s_snapGridLengthChange","s_snapIndexChange","s_tap","s_toEdge","s_touchEnd","s_touchMove","s_touchMoveOpposite","s_touchStart","s_transitionEnd","s_transitionStart","s_update","s_zoomChange","s_swiper","s_lock","s_unlock","_activeSlides","containerClasses","slidesChanges","calcLoopedSlides","swiperRef","updateVirtualSlides","virtualData","currentVirtualData","currentNext","_navigation","currentPrev","_prevElRef","_pagination","isShowEl","_paginationElRef","_scrollbar","_scrollbarElRef","_virtual","updateSwiper","getParams","prevElRef","_setElement","nextElRef","_nextElRef","scrollbarElRef","paginationElRef","zoomContainerClass","updateObj","updateInitSwiper","childrenSlidesInit","initSwiper","slidesEl","isSwiperActive","_containerClasses","_slideClasses","virtualSlide","virtualIndex","isVirtualEnabled","changedParams","updateParameter","slidesPerViewParams","breakpointOnlyParams","isCurrentParamObj"],"sources":["./node_modules/@firebase/database/dist/index.esm2017.js","./node_modules/@firebase/database-compat/dist/index.esm2017.js","./node_modules/rxjs/dist/esm/internal/operators/switchMapTo.js","./node_modules/@angular/fire/fesm2015/angular-fire-app.js","./node_modules/@firebase/app-check/dist/esm/index.esm2017.js","./node_modules/@angular/fire/fesm2015/angular-fire-app-check.js","./node_modules/@angular/fire/fesm2015/angular-fire-compat-auth.js","./node_modules/@angular/fire/fesm2015/angular-fire-compat-database.js","./node_modules/rxjs/dist/esm/internal/operators/withLatestFrom.js","./node_modules/rxjs/dist/esm/internal/operators/skipWhile.js","./node_modules/@angular/fire/fesm2015/angular-fire-compat.js","./node_modules/@firebase/installations/dist/esm/index.esm2017.js","./node_modules/@firebase/remote-config/dist/esm/index.esm2017.js","./node_modules/@firebase/messaging/dist/esm/index.esm2017.js","./node_modules/@firebase/analytics/dist/esm/index.esm2017.js","./node_modules/rxjs/dist/esm/internal/scheduler/queue.js","./node_modules/rxjs/dist/esm/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/QueueAction.js","./node_modules/@angular/fire/fesm2015/angular-fire.js","./node_modules/@firebase/util/dist/index.esm2017.js","./node_modules/@livesession/sdk/dist/api.js","./node_modules/@livesession/sdk/dist/index.js","./node_modules/@livesession/sdk/dist/snippet.js","./node_modules/fast-diff/diff.js","./node_modules/firebase/app/dist/index.esm.js","./node_modules/firebase/compat/app/dist/index.esm.js","./node_modules/tslib/tslib.es6.js","./node_modules/@firebase/auth/dist/esm2017/index-cff4f2fd.js","./node_modules/@firebase/auth/dist/esm2017/internal.js","./node_modules/@firebase/auth-compat/dist/index.esm2017.js","./node_modules/idb/build/idb.js","./node_modules/lodash.clonedeep/index.js","./node_modules/lodash.isequal/index.js","./node_modules/lodash/lodash.js","./node_modules/ng2-pdf-viewer/node_modules/tslib/tslib.es6.js","./node_modules/ng2-pdf-viewer/__ivy_ngcc__/fesm2015/ng2-pdf-viewer.js","./node_modules/ngx-smart-popover/__ivy_ngcc__/fesm2015/ngx-smart-popover.js","./node_modules/pdfjs-dist/es5/build/pdf.js","./node_modules/pdfjs-dist/es5/web/pdf_viewer.js","./node_modules/quill-better-table/dist/quill-better-table.js","./node_modules/quill-delta/dist/AttributeMap.js","./node_modules/quill-delta/dist/Delta.js","./node_modules/quill-delta/dist/Op.js","./node_modules/quill-delta/dist/OpIterator.js","./node_modules/quill/node_modules/eventemitter3/index.js","./node_modules/rfc4648/lib/index.js","./node_modules/rxjs/dist/esm/internal/BehaviorSubject.js","./node_modules/rxjs/dist/esm/internal/Observable.js","./node_modules/rxjs/dist/esm/internal/ReplaySubject.js","./node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/dist/esm/internal/Subject.js","./node_modules/rxjs/dist/esm/internal/NotificationFactories.js","./node_modules/rxjs/dist/esm/internal/Subscriber.js","./node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js","./node_modules/rxjs/dist/esm/internal/Subscription.js","./node_modules/rxjs/dist/esm/internal/config.js","./node_modules/rxjs/dist/esm/internal/observable/combineLatest.js","./node_modules/rxjs/dist/esm/internal/observable/concat.js","./node_modules/rxjs/dist/esm/internal/operators/concatAll.js","./node_modules/rxjs/dist/esm/internal/observable/defer.js","./node_modules/rxjs/dist/esm/internal/observable/empty.js","./node_modules/rxjs/dist/esm/internal/observable/forkJoin.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/observable/from.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js","./node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/observable/fromEvent.js","./node_modules/rxjs/dist/esm/internal/observable/innerFrom.js","./node_modules/rxjs/dist/esm/internal/observable/merge.js","./node_modules/rxjs/dist/esm/internal/observable/of.js","./node_modules/rxjs/dist/esm/internal/observable/throwError.js","./node_modules/rxjs/dist/esm/internal/observable/timer.js","./node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js","./node_modules/rxjs/dist/esm/internal/operators/catchError.js","./node_modules/rxjs/dist/esm/internal/operators/concatMap.js","./node_modules/rxjs/dist/esm/internal/operators/debounceTime.js","./node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/delayWhen.js","./node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js","./node_modules/rxjs/dist/esm/internal/operators/delay.js","./node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/dist/esm/internal/operators/filter.js","./node_modules/rxjs/dist/esm/internal/operators/finalize.js","./node_modules/rxjs/dist/esm/internal/operators/first.js","./node_modules/rxjs/dist/esm/internal/operators/map.js","./node_modules/rxjs/dist/esm/internal/operators/mapTo.js","./node_modules/rxjs/dist/esm/internal/operators/mergeAll.js","./node_modules/rxjs/dist/esm/internal/operators/mergeMap.js","./node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js","./node_modules/rxjs/dist/esm/internal/operators/observeOn.js","./node_modules/rxjs/dist/esm/internal/operators/scanInternals.js","./node_modules/rxjs/dist/esm/internal/operators/scan.js","./node_modules/rxjs/dist/esm/internal/operators/share.js","./node_modules/rxjs/dist/esm/internal/operators/shareReplay.js","./node_modules/rxjs/dist/esm/internal/operators/skip.js","./node_modules/rxjs/dist/esm/internal/operators/startWith.js","./node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js","./node_modules/rxjs/dist/esm/internal/operators/switchMap.js","./node_modules/rxjs/dist/esm/internal/operators/take.js","./node_modules/rxjs/dist/esm/internal/operators/takeUntil.js","./node_modules/rxjs/dist/esm/internal/operators/tap.js","./node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js","./node_modules/rxjs/dist/esm/internal/scheduler/Action.js","./node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js","./node_modules/rxjs/dist/esm/internal/Scheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrameProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrame.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/dist/esm/internal/util/Immediate.js","./node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/asap.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/async.js","./node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js","./node_modules/rxjs/dist/esm/internal/symbol/iterator.js","./node_modules/rxjs/dist/esm/internal/symbol/observable.js","./node_modules/rxjs/dist/esm/internal/util/EmptyError.js","./node_modules/rxjs/dist/esm/internal/util/args.js","./node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js","./node_modules/rxjs/dist/esm/internal/util/arrRemove.js","./node_modules/rxjs/dist/esm/internal/util/createErrorClass.js","./node_modules/rxjs/dist/esm/internal/util/createObject.js","./node_modules/rxjs/dist/esm/internal/util/errorContext.js","./node_modules/rxjs/dist/esm/internal/util/executeSchedule.js","./node_modules/rxjs/dist/esm/internal/util/identity.js","./node_modules/rxjs/dist/esm/internal/util/isArrayLike.js","./node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/util/isDate.js","./node_modules/rxjs/dist/esm/internal/util/isFunction.js","./node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js","./node_modules/rxjs/dist/esm/internal/util/isIterable.js","./node_modules/rxjs/dist/esm/internal/util/isPromise.js","./node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/util/isScheduler.js","./node_modules/rxjs/dist/esm/internal/util/lift.js","./node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js","./node_modules/rxjs/dist/esm/internal/util/noop.js","./node_modules/rxjs/dist/esm/internal/util/pipe.js","./node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js","./node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js","./src/app/asset/components/asset-dashboard/property-search/property-search.component.html","./src/app/asset/components/asset-dashboard/property-search/property-search.component.ts","./src/app/asset/components/asset-dashboard/property-asset/asset-detail-with-backdrop/asset-detail-with-backdrop.component.html","./src/app/asset/components/asset-dashboard/property-asset/asset-detail-with-backdrop/asset-detail-with-backdrop.component.ts","./src/app/asset/components/asset-dashboard/property-asset/asset-list-view/asset-list-view.component.html","./src/app/asset/components/asset-dashboard/property-asset/asset-list-view/asset-list-view.component.ts","./src/app/asset/components/asset-dashboard/property-asset/property-asset.component.html","./src/app/asset/components/asset-dashboard/property-asset/property-asset.component.ts","./src/app/asset/components/asset-dashboard/asset-dashboard.component.html","./src/app/asset/components/asset-dashboard/asset-dashboard.component.ts","./src/app/asset/components/asset-detail/asset-detail-compare/asset-detail-compare.component.html","./src/app/asset/components/asset-detail/asset-detail-compare/asset-detail-compare.component.ts","./src/app/asset/models/action-button.model.ts","./src/app/asset/services/asset-detail/job-cache.service.ts","./src/app/shared/components/assets-container/sent-to-tenant-asset/sent-to-tenant-asset.component.ts","./src/app/shared/components/assets-container/sent-to-tenant-asset/sent-to-tenant-asset.component.html","./src/app/asset/components/asset-detail/action-buttons/action-buttons.component.html","./src/app/asset/components/asset-detail/action-buttons/action-buttons.component.ts","./src/app/asset/components/asset-detail/asset-detail.component.html","./src/app/asset/components/asset-detail/asset-detail.component.ts","./src/app/asset/models/asset.model.ts","./src/app/communications/models/contacts/email-inbox-type.ts","./src/app/core/guards/asset.guard.ts","./src/app/core/guards/auth.guard.ts","./src/app/core/services/auth/client-settings.service.ts","./src/app/core/services/data/job-types.service.ts","./src/app/core/services/data/local-storage.service.ts","./src/app/core/services/data/session-storage.service.ts","./src/app/core/services/firebase/notification.service.ts","./src/app/core/services/http/Property/property-search.service.ts","./src/app/core/services/http/agency-mgmt/asset.service.ts","./src/app/core/services/http/agency-mgmt/organization.service.ts","./src/app/core/services/http/agency-mgmt/property.service.ts","./src/app/core/services/http/agency-mgmt/settings-management.service.ts","./src/app/core/services/http/agency-mgmt/settings.service.ts","./src/app/core/services/http/attachments/job-attachments.service.ts","./src/app/core/services/http/base/base.service.ts","./src/app/core/services/http/cache.service.ts","./src/app/core/services/http/event.service.ts","./src/app/core/services/http/logger.service.ts","./src/app/core/services/http/maintenance/email-log.service.ts","./src/app/core/services/http/maintenance/job-asset.service.ts","./src/app/core/services/http/maintenance/job-search.service.ts","./src/app/core/services/http/maintenance/job.service.ts","./src/app/core/services/http/maintenance/settings.service.ts","./src/app/core/services/http/master-data/master-data.service.ts","./src/app/core/services/http/trade-mgmt/trade-search.service.ts","./src/app/core/services/http/trade-mgmt/trade.service.ts","./src/app/core/services/toster/toster.service.ts","./src/app/job/constants/assign-trade.constant.ts","./src/app/job/constants/job-detail.constants.ts","./src/app/job/constants/job-post/job-post.enum-map.ts","./src/app/job/constants/job-post/job-post.enums.ts","./src/app/job/models/job-detail/details/invite-trades-request.model.ts","./src/app/job/models/job-post/assign-trade-request.model.ts","./src/app/job/models/job-post/job.model.ts","./src/app/job/services/job-detail/job-cache.service.ts","./src/app/job/services/job-detail/job-detail-activity.service.ts","./src/app/job/services/job-detail/job-detail-service.ts","./node_modules/@angular/cdk/fesm2020/stepper.mjs","./node_modules/@angular/cdk/fesm2020/table.mjs","./node_modules/@angular/cdk/fesm2020/tree.mjs","./node_modules/@angular/material/fesm2020/stepper.mjs","./node_modules/@angular/material/fesm2020/grid-list.mjs","./node_modules/@angular/material/fesm2020/slider.mjs","./node_modules/@angular/material/fesm2020/sort.mjs","./node_modules/@angular/material/fesm2020/table.mjs","./node_modules/@angular/material/fesm2020/tree.mjs","./src/app/material/material-components.module.ts","./src/app/property/constants/asset-maintenance-cycle.enum.ts","./src/app/property/models/new-asset.model.ts","./src/app/property/models/property-activity.model.ts","./src/app/property/services/property-dashboard.service.ts","./src/app/settings/services/user-group.service.ts","./src/app/shared/components/assets-container/delete-aaset/delete-aaset.component.ts","./src/app/shared/components/assets-container/delete-aaset/delete-aaset.component.html","./src/app/shared/components/assets-container/edit-asset/edit-asset.component.html","./src/app/shared/components/assets-container/edit-asset/edit-asset.component.ts","./src/app/shared/components/bottom-confirmation-message/bottom-confirmation-message.component.html","./src/app/shared/components/bottom-confirmation-message/bottom-confirmation-message.component.ts","./src/app/shared/components/common-loader/common-loader.component.ts","./src/app/shared/components/common-loader/common-loader.component.html","./src/app/shared/pipes/date-ordinal.pipe.ts","./src/app/shared/components/dead-line/dead-line.component.html","./src/app/shared/components/dead-line/dead-line.component.ts","./src/app/shared/components/file-delete-confirm/file-delete-confirm.component.ts","./src/app/shared/components/file-delete-confirm/file-delete-confirm.component.html","./src/app/shared/components/image-gallery/image-gallery.component.html","./src/app/shared/components/image-gallery/image-gallery.component.ts","./src/app/shared/components/file-list-viewer/file-list-viewer.component.html","./src/app/shared/components/file-list-viewer/file-list-viewer.component.ts","./src/app/shared/models/file-upload.model.ts","./src/app/shared/components/file-upload/uploaded-file-preview/uploaded-file-preview.component.html","./src/app/shared/components/file-upload/uploaded-file-preview/uploaded-file-preview.component.ts","./src/app/shared/directives/drag-and-drop.directive.ts","./src/app/shared/components/file-upload/file-upload.component.html","./src/app/shared/components/file-upload/file-upload.component.ts","./src/app/shared/models/edit-image.model.ts","./src/app/shared/components/image-editor/image-editor.component.ts","./src/app/shared/components/image-editor/image-editor.component.html","./src/app/shared/components/image-viewer/image-viewer.component.html","./src/app/shared/components/image-viewer/image-viewer.component.ts","./src/app/shared/components/list-loader/list-loader.component.ts","./src/app/shared/components/list-loader/list-loader.component.html","./src/app/shared/components/pdf-viewer/pdf-viewer.component.html","./src/app/shared/components/pdf-viewer/pdf-viewer.component.ts","./node_modules/quill-mention/dist/blots/mention.mjs","./node_modules/quill-mention/dist/utils/index.mjs","./node_modules/quill-mention/dist/mention.mjs","./node_modules/quill-mention/dist/constants/index.mjs","./node_modules/quill-mention/dist/autoregister.mjs","./src/app/shared/components/quill-editor/quill-editor.component.ts","./src/app/shared/components/quill-editor/quill-editor.component.html","./src/app/shared/components/table-data-loader/table-data-loader.component.ts","./src/app/shared/components/table-data-loader/table-data-loader.component.html","./src/app/shared/components/video-viewer/video-viewer.component.ts","./src/app/shared/components/video-viewer/video-viewer.component.html","./src/app/shared/constants/app-settings.constants.ts","./src/app/shared/constants/empty-guid-.constant.ts","./src/app/shared/constants/events.constant.ts","./src/app/shared/constants/file.constants.ts","./src/app/shared/constants/local-storage-items.constants.ts","./src/app/shared/directives/style-paginator.directive.ts","./src/app/shared/directives/target-id.directive.ts","./src/app/shared/models/Enums.ts","./src/app/shared/models/advanced-search.model.ts","./src/app/shared/models/assets-register/send-tenat-asset-link-email.model.ts","./src/app/shared/models/file-upload-config.model.ts","./src/app/shared/models/job-types.model.ts","./src/app/shared/models/uploaded-file-list.model.ts","./src/app/shared/services/file.service.ts","./src/app/shared/shared.module.ts","./src/environments/environment.sim.ts","./src/app/profile/switch-oganization/switch-oganization.component.html","./src/app/profile/switch-oganization/switch-oganization.component.ts","./src/app/profile/switch-organization-popup/switch-organization-popup.component.ts","./src/app/layout/components/sign-in/sign-in.component.html","./src/app/layout/components/sign-in/sign-in.component.ts","./src/app/layout/components/sign-out/sign-out.component.ts","./src/app/job/components/job-dashboard/team-selection/selected-team-result.model.ts","./src/app/shared/components/advanced-search/advanced-search.component.html","./src/app/shared/components/advanced-search/advanced-search.component.ts","./src/app/job/components/job-dashboard/advanced-search-jobs/advanced-search-filtered-jobs/advanced-search-filtered-jobs-display.component.html","./src/app/job/components/job-dashboard/advanced-search-jobs/advanced-search-filtered-jobs/advanced-search-filtered-jobs-display.component.ts","./src/app/job/components/job-dashboard/advanced-search-jobs/advanced-search-jobs.component.html","./src/app/job/components/job-dashboard/advanced-search-jobs/advanced-search-jobs.component.ts","./src/app/layout/components/sign-in-check/sign-in-check.component.ts","./src/app/core/guards/credit-card.guard.ts","./src/app/layout/components/account-in-review/account-in-review.component.ts","./src/app/layout/components/account-in-review/account-in-review.component.html","./src/app/app-routing.module.ts","./src/app/layout/components/side-nav/side-nav.component.html","./src/app/layout/components/side-nav/side-nav.component.ts","./src/app/profile/user-profile-menu/user-profile-menu.component.html","./src/app/profile/user-profile-menu/user-profile-menu.component.ts","./src/app/layout/models/email-notification.model.ts","./src/app/core/services/http/notifications/email-notification.service.ts","./src/app/layout/components/notifications/email-notifications/email-notifications.component.html","./src/app/layout/components/notifications/email-notifications/email-notifications.component.ts","./src/app/layout/components/header/header.component.html","./src/app/layout/components/header/header.component.ts","./src/app/app.component.html","./src/app/app.component.ts","./src/app/core/interceptors/http-error.interceptor.ts","./src/app/core/interceptors/api-version.interceptor.ts","./src/app/core/core.module.ts","./src/app/layout/layout.module.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/rxjs/node_modules/tslib/tslib.es6.js","./node_modules/@firebase/app-compat/dist/esm/index.esm2017.js","./node_modules/@firebase/app/dist/esm/index.esm2017.js","./node_modules/@firebase/component/dist/esm/index.esm2017.js","./node_modules/@firebase/logger/dist/esm/index.esm2017.js","./node_modules/lodash-es/eq.js","./node_modules/lodash-es/_assocIndexOf.js","./node_modules/lodash-es/_listCacheDelete.js","./node_modules/lodash-es/_ListCache.js","./node_modules/lodash-es/_listCacheClear.js","./node_modules/lodash-es/_listCacheGet.js","./node_modules/lodash-es/_listCacheHas.js","./node_modules/lodash-es/_listCacheSet.js","./node_modules/lodash-es/_freeGlobal.js","./node_modules/lodash-es/_root.js","./node_modules/lodash-es/_Symbol.js","./node_modules/lodash-es/_getRawTag.js","./node_modules/lodash-es/_objectToString.js","./node_modules/lodash-es/_baseGetTag.js","./node_modules/lodash-es/isObject.js","./node_modules/lodash-es/isFunction.js","./node_modules/lodash-es/_coreJsData.js","./node_modules/lodash-es/_isMasked.js","./node_modules/lodash-es/_toSource.js","./node_modules/lodash-es/_baseIsNative.js","./node_modules/lodash-es/_getNative.js","./node_modules/lodash-es/_getValue.js","./node_modules/lodash-es/_Map.js","./node_modules/lodash-es/_nativeCreate.js","./node_modules/lodash-es/_hashGet.js","./node_modules/lodash-es/_hashHas.js","./node_modules/lodash-es/_Hash.js","./node_modules/lodash-es/_hashClear.js","./node_modules/lodash-es/_hashDelete.js","./node_modules/lodash-es/_hashSet.js","./node_modules/lodash-es/_getMapData.js","./node_modules/lodash-es/_isKeyable.js","./node_modules/lodash-es/_MapCache.js","./node_modules/lodash-es/_mapCacheClear.js","./node_modules/lodash-es/_mapCacheDelete.js","./node_modules/lodash-es/_mapCacheGet.js","./node_modules/lodash-es/_mapCacheHas.js","./node_modules/lodash-es/_mapCacheSet.js","./node_modules/lodash-es/_Stack.js","./node_modules/lodash-es/_stackClear.js","./node_modules/lodash-es/_stackDelete.js","./node_modules/lodash-es/_stackGet.js","./node_modules/lodash-es/_stackHas.js","./node_modules/lodash-es/_stackSet.js","./node_modules/lodash-es/_defineProperty.js","./node_modules/lodash-es/_baseAssignValue.js","./node_modules/lodash-es/_assignMergeValue.js","./node_modules/lodash-es/_baseFor.js","./node_modules/lodash-es/_createBaseFor.js","./node_modules/lodash-es/_cloneBuffer.js","./node_modules/lodash-es/_Uint8Array.js","./node_modules/lodash-es/_cloneArrayBuffer.js","./node_modules/lodash-es/_cloneTypedArray.js","./node_modules/lodash-es/_copyArray.js","./node_modules/lodash-es/_baseCreate.js","./node_modules/lodash-es/_overArg.js","./node_modules/lodash-es/_getPrototype.js","./node_modules/lodash-es/_isPrototype.js","./node_modules/lodash-es/_initCloneObject.js","./node_modules/lodash-es/isObjectLike.js","./node_modules/lodash-es/_baseIsArguments.js","./node_modules/lodash-es/isArguments.js","./node_modules/lodash-es/isArray.js","./node_modules/lodash-es/isLength.js","./node_modules/lodash-es/isArrayLike.js","./node_modules/lodash-es/isBuffer.js","./node_modules/lodash-es/stubFalse.js","./node_modules/lodash-es/isPlainObject.js","./node_modules/lodash-es/_baseIsTypedArray.js","./node_modules/lodash-es/_baseUnary.js","./node_modules/lodash-es/_nodeUtil.js","./node_modules/lodash-es/isTypedArray.js","./node_modules/lodash-es/_safeGet.js","./node_modules/lodash-es/_assignValue.js","./node_modules/lodash-es/_copyObject.js","./node_modules/lodash-es/_isIndex.js","./node_modules/lodash-es/_arrayLikeKeys.js","./node_modules/lodash-es/_baseTimes.js","./node_modules/lodash-es/_baseKeysIn.js","./node_modules/lodash-es/_nativeKeysIn.js","./node_modules/lodash-es/keysIn.js","./node_modules/lodash-es/_baseMergeDeep.js","./node_modules/lodash-es/isArrayLikeObject.js","./node_modules/lodash-es/toPlainObject.js","./node_modules/lodash-es/_baseMerge.js","./node_modules/lodash-es/identity.js","./node_modules/lodash-es/_apply.js","./node_modules/lodash-es/_overRest.js","./node_modules/lodash-es/constant.js","./node_modules/lodash-es/_baseSetToString.js","./node_modules/lodash-es/_shortOut.js","./node_modules/lodash-es/_setToString.js","./node_modules/lodash-es/_baseRest.js","./node_modules/lodash-es/merge.js","./node_modules/lodash-es/_createAssigner.js","./node_modules/lodash-es/_isIterateeCall.js","./node_modules/parchment/dist/parchment.js","./node_modules/lodash-es/_arrayEach.js","./node_modules/lodash-es/_nativeKeys.js","./node_modules/lodash-es/_baseKeys.js","./node_modules/lodash-es/keys.js","./node_modules/lodash-es/stubArray.js","./node_modules/lodash-es/_getSymbols.js","./node_modules/lodash-es/_arrayFilter.js","./node_modules/lodash-es/_arrayPush.js","./node_modules/lodash-es/_getSymbolsIn.js","./node_modules/lodash-es/_baseGetAllKeys.js","./node_modules/lodash-es/_getAllKeys.js","./node_modules/lodash-es/_getAllKeysIn.js","./node_modules/lodash-es/_DataView.js","./node_modules/lodash-es/_Promise.js","./node_modules/lodash-es/_Set.js","./node_modules/lodash-es/_WeakMap.js","./node_modules/lodash-es/_getTag.js","./node_modules/lodash-es/_initCloneArray.js","./node_modules/lodash-es/_cloneRegExp.js","./node_modules/lodash-es/_cloneSymbol.js","./node_modules/lodash-es/_initCloneByTag.js","./node_modules/lodash-es/_cloneDataView.js","./node_modules/lodash-es/isMap.js","./node_modules/lodash-es/_baseIsMap.js","./node_modules/lodash-es/isSet.js","./node_modules/lodash-es/_baseIsSet.js","./node_modules/lodash-es/_baseClone.js","./node_modules/lodash-es/_copySymbolsIn.js","./node_modules/lodash-es/_baseAssignIn.js","./node_modules/lodash-es/_copySymbols.js","./node_modules/lodash-es/_baseAssign.js","./node_modules/lodash-es/cloneDeep.js","./node_modules/lodash-es/_SetCache.js","./node_modules/lodash-es/_setCacheAdd.js","./node_modules/lodash-es/_setCacheHas.js","./node_modules/lodash-es/_arraySome.js","./node_modules/lodash-es/_cacheHas.js","./node_modules/lodash-es/_equalArrays.js","./node_modules/lodash-es/_mapToArray.js","./node_modules/lodash-es/_setToArray.js","./node_modules/lodash-es/_equalByTag.js","./node_modules/lodash-es/_equalObjects.js","./node_modules/lodash-es/_baseIsEqualDeep.js","./node_modules/lodash-es/_baseIsEqual.js","./node_modules/lodash-es/isEqual.js","./node_modules/quill/blots/break.js","./node_modules/quill/blots/text.js","./node_modules/quill/blots/inline.js","./node_modules/quill/blots/block.js","./node_modules/quill/blots/cursor.js","./node_modules/quill/node_modules/eventemitter3/index.mjs","./node_modules/quill/core/instances.js","./node_modules/quill/core/logger.js","./node_modules/quill/core/emitter.js","./node_modules/quill/core/selection.js","./node_modules/quill/core/editor.js","./node_modules/quill/core/module.js","./node_modules/quill/blots/embed.js","./node_modules/quill/core/theme.js","./node_modules/quill/core/utils/scrollRectIntoView.js","./node_modules/quill/core/utils/createRegistryWithFormats.js","./node_modules/quill/core/quill.js","./node_modules/quill/core/composition.js","./node_modules/quill/blots/container.js","./node_modules/quill/blots/scroll.js","./node_modules/quill/formats/align.js","./node_modules/quill/formats/color.js","./node_modules/quill/formats/background.js","./node_modules/quill/formats/code.js","./node_modules/quill/formats/direction.js","./node_modules/quill/formats/font.js","./node_modules/quill/formats/size.js","./node_modules/quill/modules/keyboard.js","./node_modules/quill/modules/normalizeExternalHTML/normalizers/googleDocs.js","./node_modules/quill/modules/normalizeExternalHTML/normalizers/msWord.js","./node_modules/quill/modules/normalizeExternalHTML/index.js","./node_modules/quill/modules/clipboard.js","./node_modules/quill/modules/history.js","./node_modules/quill/modules/uploader.js","./node_modules/quill/modules/input.js","./node_modules/quill/modules/uiNode.js","./node_modules/quill/core.js","./node_modules/quill/formats/indent.js","./node_modules/quill/formats/blockquote.js","./node_modules/quill/formats/header.js","./node_modules/quill/formats/list.js","./node_modules/quill/formats/bold.js","./node_modules/quill/formats/italic.js","./node_modules/quill/formats/link.js","./node_modules/quill/formats/script.js","./node_modules/quill/formats/strike.js","./node_modules/quill/formats/underline.js","./node_modules/quill/formats/formula.js","./node_modules/quill/formats/image.js","./node_modules/quill/formats/video.js","./node_modules/quill/modules/syntax.js","./node_modules/quill/formats/table.js","./node_modules/quill/modules/table.js","./node_modules/quill/modules/toolbar.js","./node_modules/quill/ui/icons.js","./node_modules/quill/ui/picker.js","./node_modules/quill/ui/color-picker.js","./node_modules/quill/ui/icon-picker.js","./node_modules/quill/ui/tooltip.js","./node_modules/quill/themes/base.js","./node_modules/quill/themes/bubble.js","./node_modules/quill/themes/snow.js","./node_modules/quill/quill.js","./node_modules/ssr-window/ssr-window.esm.js","./node_modules/dom7/dom7.esm.js","./node_modules/swiper/shared/dom.js","./node_modules/swiper/shared/utils.js","./node_modules/swiper/shared/get-support.js","./node_modules/swiper/shared/get-device.js","./node_modules/swiper/shared/get-browser.js","./node_modules/swiper/core/transition/transitionEmit.js","./node_modules/swiper/core/events/onTouchStart.js","./node_modules/swiper/core/events/onTouchMove.js","./node_modules/swiper/core/events/onTouchEnd.js","./node_modules/swiper/core/events/onResize.js","./node_modules/swiper/core/events/onClick.js","./node_modules/swiper/core/events/onScroll.js","./node_modules/swiper/core/events/index.js","./node_modules/swiper/core/breakpoints/setBreakpoint.js","./node_modules/swiper/core/defaults.js","./node_modules/swiper/core/moduleExtendParams.js","./node_modules/swiper/core/core.js","./node_modules/swiper/core/events-emitter.js","./node_modules/swiper/core/update/index.js","./node_modules/swiper/core/update/updateSize.js","./node_modules/swiper/core/update/updateSlides.js","./node_modules/swiper/core/update/updateAutoHeight.js","./node_modules/swiper/core/update/updateSlidesOffset.js","./node_modules/swiper/core/update/updateSlidesProgress.js","./node_modules/swiper/core/update/updateProgress.js","./node_modules/swiper/core/update/updateSlidesClasses.js","./node_modules/swiper/core/update/updateActiveIndex.js","./node_modules/swiper/core/update/updateClickedSlide.js","./node_modules/swiper/core/translate/index.js","./node_modules/swiper/core/translate/getTranslate.js","./node_modules/swiper/core/translate/setTranslate.js","./node_modules/swiper/core/translate/minTranslate.js","./node_modules/swiper/core/translate/maxTranslate.js","./node_modules/swiper/core/translate/translateTo.js","./node_modules/swiper/core/transition/index.js","./node_modules/swiper/core/transition/setTransition.js","./node_modules/swiper/core/transition/transitionStart.js","./node_modules/swiper/core/transition/transitionEnd.js","./node_modules/swiper/core/slide/index.js","./node_modules/swiper/core/slide/slideTo.js","./node_modules/swiper/core/slide/slideToLoop.js","./node_modules/swiper/core/slide/slideNext.js","./node_modules/swiper/core/slide/slidePrev.js","./node_modules/swiper/core/slide/slideReset.js","./node_modules/swiper/core/slide/slideToClosest.js","./node_modules/swiper/core/slide/slideToClickedSlide.js","./node_modules/swiper/core/loop/index.js","./node_modules/swiper/core/loop/loopCreate.js","./node_modules/swiper/core/loop/loopFix.js","./node_modules/swiper/core/loop/loopDestroy.js","./node_modules/swiper/core/grab-cursor/index.js","./node_modules/swiper/core/grab-cursor/setGrabCursor.js","./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","./node_modules/swiper/core/breakpoints/index.js","./node_modules/swiper/core/breakpoints/getBreakpoint.js","./node_modules/swiper/core/check-overflow/index.js","./node_modules/swiper/core/classes/index.js","./node_modules/swiper/core/classes/addClasses.js","./node_modules/swiper/core/classes/removeClasses.js","./node_modules/swiper/core/images/index.js","./node_modules/swiper/core/images/loadImage.js","./node_modules/swiper/core/images/preloadImages.js","./node_modules/swiper/core/modules/resize/resize.js","./node_modules/swiper/core/modules/observer/observer.js","./node_modules/swiper/modules/virtual/virtual.js","./node_modules/swiper/shared/create-element-if-not-defined.js","./node_modules/swiper/modules/navigation/navigation.js","./node_modules/swiper/shared/classes-to-selector.js","./node_modules/swiper/modules/pagination/pagination.js","./node_modules/swiper/modules/scrollbar/scrollbar.js","./node_modules/swiper/modules/zoom/zoom.js","./node_modules/swiper/modules/controller/controller.js","./node_modules/swiper/modules/a11y/a11y.js","./node_modules/swiper/modules/autoplay/autoplay.js","./node_modules/swiper/modules/thumbs/thumbs.js","./node_modules/swiper/modules/free-mode/free-mode.js","./node_modules/@angular-material-components/datetime-picker/fesm2020/angular-material-components-datetime-picker.mjs","./node_modules/@angular/animations/fesm2020/animations.mjs","./node_modules/@angular/cdk/fesm2020/a11y.mjs","./node_modules/@angular/cdk/fesm2020/accordion.mjs","./node_modules/@angular/cdk/fesm2020/bidi.mjs","./node_modules/@angular/cdk/fesm2020/clipboard.mjs","./node_modules/@angular/cdk/fesm2020/coercion.mjs","./node_modules/@angular/cdk/fesm2020/collections.mjs","./node_modules/@angular/cdk/fesm2020/drag-drop.mjs","./node_modules/rxjs/dist/esm/internal/observable/interval.js","./node_modules/@angular/cdk/fesm2020/keycodes.mjs","./node_modules/@angular/cdk/fesm2020/layout.mjs","./node_modules/@angular/cdk/fesm2020/observers.mjs","./node_modules/@angular/cdk/fesm2020/overlay.mjs","./node_modules/rxjs/dist/esm/internal/operators/takeWhile.js","./node_modules/@angular/cdk/fesm2020/platform.mjs","./node_modules/@angular/cdk/fesm2020/portal.mjs","./node_modules/rxjs/dist/esm/internal/operators/auditTime.js","./node_modules/rxjs/dist/esm/internal/operators/audit.js","./node_modules/@angular/cdk/fesm2020/scrolling.mjs","./node_modules/@angular/common/fesm2020/common.mjs","./node_modules/@angular/common/fesm2020/http.mjs","./node_modules/@angular/core/fesm2020/core.mjs","./node_modules/@angular/forms/fesm2020/forms.mjs","./node_modules/@angular/material/fesm2020/autocomplete.mjs","./node_modules/@angular/material/fesm2020/badge.mjs","./node_modules/@angular/material/fesm2020/bottom-sheet.mjs","./node_modules/@angular/material/fesm2020/button-toggle.mjs","./node_modules/@angular/material/fesm2020/button.mjs","./node_modules/@angular/material/fesm2020/card.mjs","./node_modules/@angular/material/fesm2020/checkbox.mjs","./node_modules/@angular/material/fesm2020/chips.mjs","./node_modules/@angular/material/fesm2020/core.mjs","./node_modules/@angular/material/fesm2020/datepicker.mjs","./node_modules/@angular/material/fesm2020/dialog.mjs","./node_modules/@angular/material/fesm2020/divider.mjs","./node_modules/@angular/material/fesm2020/expansion.mjs","./node_modules/@angular/material/fesm2020/form-field.mjs","./node_modules/@angular/material/fesm2020/icon.mjs","./node_modules/@angular/cdk/fesm2020/text-field.mjs","./node_modules/@angular/material/fesm2020/input.mjs","./node_modules/@angular/material/fesm2020/list.mjs","./node_modules/@angular/material/fesm2020/menu.mjs","./node_modules/@angular/material/fesm2020/paginator.mjs","./node_modules/@angular/material/fesm2020/progress-bar.mjs","./node_modules/@angular/material/fesm2020/progress-spinner.mjs","./node_modules/@angular/material/fesm2020/radio.mjs","./node_modules/@angular/material/fesm2020/select.mjs","./node_modules/@angular/material/fesm2020/sidenav.mjs","./node_modules/@angular/material/fesm2020/slide-toggle.mjs","./node_modules/@angular/material/fesm2020/snack-bar.mjs","./node_modules/@angular/material/fesm2020/tabs.mjs","./node_modules/@angular/material/fesm2020/toolbar.mjs","./node_modules/@angular/material/fesm2020/tooltip.mjs","./node_modules/@angular/animations/fesm2020/browser.mjs","./node_modules/@angular/platform-browser/fesm2020/animations.mjs","./node_modules/@angular/platform-browser/fesm2020/platform-browser.mjs","./node_modules/rxjs/dist/esm/internal/operators/refCount.js","./node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js","./node_modules/rxjs/dist/esm/internal/operators/takeLast.js","./node_modules/@angular/router/fesm2020/router.mjs","./node_modules/rxjs/dist/esm/internal/operators/last.js","./node_modules/rxjs/dist/esm/internal/operators/timeout.js","./node_modules/rxjs/dist/esm/internal/operators/retryWhen.js","./node_modules/rxjs/dist/esm/internal/operators/retry.js","./node_modules/rfc4648/lib/index.mjs","./node_modules/angular-auth-oidc-client/fesm2020/angular-auth-oidc-client.mjs","./node_modules/bna-angular-auth-client/fesm2020/bna-angular-auth-client.mjs","./node_modules/ngx-autosize/fesm2020/ngx-autosize.mjs","./node_modules/swiper/angular/fesm2015/swiper_angular.mjs","./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js"],"sourcesContent":["import { getApp, _getProvider, SDK_VERSION as SDK_VERSION$1, _registerComponent, registerVersion } from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { stringify, jsonEval, contains, assert, base64, stringToByteArray, Sha1, isNodeSdk, deepCopy, base64Encode, isMobileCordova, stringLength, Deferred, safeGet, isAdmin, isValidFormat, isEmpty, isReactNative, assertionError, map, querystring, errorPrefix, getModularInstance, createMockUserToken } from '@firebase/util';\nimport { Logger, LogLevel } from '@firebase/logger';\n\nconst name = \"@firebase/database\";\nconst version = \"0.12.5\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** The semver (www.semver.org) version of the SDK. */\r\nlet SDK_VERSION = '';\r\n/**\r\n * SDK_VERSION should be set before any database instance is created\r\n * @internal\r\n */\r\nfunction setSDKVersion(version) {\r\n SDK_VERSION = version;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Wraps a DOM Storage object and:\r\n * - automatically encode objects as JSON strings before storing them to allow us to store arbitrary types.\r\n * - prefixes names with \"firebase:\" to avoid collisions with app data.\r\n *\r\n * We automatically (see storage.js) create two such wrappers, one for sessionStorage,\r\n * and one for localStorage.\r\n *\r\n */\r\nclass DOMStorageWrapper {\r\n /**\r\n * @param domStorage_ - The underlying storage object (e.g. localStorage or sessionStorage)\r\n */\r\n constructor(domStorage_) {\r\n this.domStorage_ = domStorage_;\r\n // Use a prefix to avoid collisions with other stuff saved by the app.\r\n this.prefix_ = 'firebase:';\r\n }\r\n /**\r\n * @param key - The key to save the value under\r\n * @param value - The value being stored, or null to remove the key.\r\n */\r\n set(key, value) {\r\n if (value == null) {\r\n this.domStorage_.removeItem(this.prefixedName_(key));\r\n }\r\n else {\r\n this.domStorage_.setItem(this.prefixedName_(key), stringify(value));\r\n }\r\n }\r\n /**\r\n * @returns The value that was stored under this key, or null\r\n */\r\n get(key) {\r\n const storedVal = this.domStorage_.getItem(this.prefixedName_(key));\r\n if (storedVal == null) {\r\n return null;\r\n }\r\n else {\r\n return jsonEval(storedVal);\r\n }\r\n }\r\n remove(key) {\r\n this.domStorage_.removeItem(this.prefixedName_(key));\r\n }\r\n prefixedName_(name) {\r\n return this.prefix_ + name;\r\n }\r\n toString() {\r\n return this.domStorage_.toString();\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An in-memory storage implementation that matches the API of DOMStorageWrapper\r\n * (TODO: create interface for both to implement).\r\n */\r\nclass MemoryStorage {\r\n constructor() {\r\n this.cache_ = {};\r\n this.isInMemoryStorage = true;\r\n }\r\n set(key, value) {\r\n if (value == null) {\r\n delete this.cache_[key];\r\n }\r\n else {\r\n this.cache_[key] = value;\r\n }\r\n }\r\n get(key) {\r\n if (contains(this.cache_, key)) {\r\n return this.cache_[key];\r\n }\r\n return null;\r\n }\r\n remove(key) {\r\n delete this.cache_[key];\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Helper to create a DOMStorageWrapper or else fall back to MemoryStorage.\r\n * TODO: Once MemoryStorage and DOMStorageWrapper have a shared interface this method annotation should change\r\n * to reflect this type\r\n *\r\n * @param domStorageName - Name of the underlying storage object\r\n * (e.g. 'localStorage' or 'sessionStorage').\r\n * @returns Turning off type information until a common interface is defined.\r\n */\r\nconst createStoragefor = function (domStorageName) {\r\n try {\r\n // NOTE: just accessing \"localStorage\" or \"window['localStorage']\" may throw a security exception,\r\n // so it must be inside the try/catch.\r\n if (typeof window !== 'undefined' &&\r\n typeof window[domStorageName] !== 'undefined') {\r\n // Need to test cache. Just because it's here doesn't mean it works\r\n const domStorage = window[domStorageName];\r\n domStorage.setItem('firebase:sentinel', 'cache');\r\n domStorage.removeItem('firebase:sentinel');\r\n return new DOMStorageWrapper(domStorage);\r\n }\r\n }\r\n catch (e) { }\r\n // Failed to create wrapper. Just return in-memory storage.\r\n // TODO: log?\r\n return new MemoryStorage();\r\n};\r\n/** A storage object that lasts across sessions */\r\nconst PersistentStorage = createStoragefor('localStorage');\r\n/** A storage object that only lasts one session */\r\nconst SessionStorage = createStoragefor('sessionStorage');\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst logClient = new Logger('@firebase/database');\r\n/**\r\n * Returns a locally-unique ID (generated by just incrementing up from 0 each time its called).\r\n */\r\nconst LUIDGenerator = (function () {\r\n let id = 1;\r\n return function () {\r\n return id++;\r\n };\r\n})();\r\n/**\r\n * Sha1 hash of the input string\r\n * @param str - The string to hash\r\n * @returns {!string} The resulting hash\r\n */\r\nconst sha1 = function (str) {\r\n const utf8Bytes = stringToByteArray(str);\r\n const sha1 = new Sha1();\r\n sha1.update(utf8Bytes);\r\n const sha1Bytes = sha1.digest();\r\n return base64.encodeByteArray(sha1Bytes);\r\n};\r\nconst buildLogMessage_ = function (...varArgs) {\r\n let message = '';\r\n for (let i = 0; i < varArgs.length; i++) {\r\n const arg = varArgs[i];\r\n if (Array.isArray(arg) ||\r\n (arg &&\r\n typeof arg === 'object' &&\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n typeof arg.length === 'number')) {\r\n message += buildLogMessage_.apply(null, arg);\r\n }\r\n else if (typeof arg === 'object') {\r\n message += stringify(arg);\r\n }\r\n else {\r\n message += arg;\r\n }\r\n message += ' ';\r\n }\r\n return message;\r\n};\r\n/**\r\n * Use this for all debug messages in Firebase.\r\n */\r\nlet logger = null;\r\n/**\r\n * Flag to check for log availability on first log message\r\n */\r\nlet firstLog_ = true;\r\n/**\r\n * The implementation of Firebase.enableLogging (defined here to break dependencies)\r\n * @param logger_ - A flag to turn on logging, or a custom logger\r\n * @param persistent - Whether or not to persist logging settings across refreshes\r\n */\r\nconst enableLogging$1 = function (logger_, persistent) {\r\n assert(!persistent || logger_ === true || logger_ === false, \"Can't turn on custom loggers persistently.\");\r\n if (logger_ === true) {\r\n logClient.logLevel = LogLevel.VERBOSE;\r\n logger = logClient.log.bind(logClient);\r\n if (persistent) {\r\n SessionStorage.set('logging_enabled', true);\r\n }\r\n }\r\n else if (typeof logger_ === 'function') {\r\n logger = logger_;\r\n }\r\n else {\r\n logger = null;\r\n SessionStorage.remove('logging_enabled');\r\n }\r\n};\r\nconst log = function (...varArgs) {\r\n if (firstLog_ === true) {\r\n firstLog_ = false;\r\n if (logger === null && SessionStorage.get('logging_enabled') === true) {\r\n enableLogging$1(true);\r\n }\r\n }\r\n if (logger) {\r\n const message = buildLogMessage_.apply(null, varArgs);\r\n logger(message);\r\n }\r\n};\r\nconst logWrapper = function (prefix) {\r\n return function (...varArgs) {\r\n log(prefix, ...varArgs);\r\n };\r\n};\r\nconst error = function (...varArgs) {\r\n const message = 'FIREBASE INTERNAL ERROR: ' + buildLogMessage_(...varArgs);\r\n logClient.error(message);\r\n};\r\nconst fatal = function (...varArgs) {\r\n const message = `FIREBASE FATAL ERROR: ${buildLogMessage_(...varArgs)}`;\r\n logClient.error(message);\r\n throw new Error(message);\r\n};\r\nconst warn = function (...varArgs) {\r\n const message = 'FIREBASE WARNING: ' + buildLogMessage_(...varArgs);\r\n logClient.warn(message);\r\n};\r\n/**\r\n * Logs a warning if the containing page uses https. Called when a call to new Firebase\r\n * does not use https.\r\n */\r\nconst warnIfPageIsSecure = function () {\r\n // Be very careful accessing browser globals. Who knows what may or may not exist.\r\n if (typeof window !== 'undefined' &&\r\n window.location &&\r\n window.location.protocol &&\r\n window.location.protocol.indexOf('https:') !== -1) {\r\n warn('Insecure Firebase access from a secure page. ' +\r\n 'Please use https in calls to new Firebase().');\r\n }\r\n};\r\n/**\r\n * Returns true if data is NaN, or +/- Infinity.\r\n */\r\nconst isInvalidJSONNumber = function (data) {\r\n return (typeof data === 'number' &&\r\n (data !== data || // NaN\r\n data === Number.POSITIVE_INFINITY ||\r\n data === Number.NEGATIVE_INFINITY));\r\n};\r\nconst executeWhenDOMReady = function (fn) {\r\n if (isNodeSdk() || document.readyState === 'complete') {\r\n fn();\r\n }\r\n else {\r\n // Modeled after jQuery. Try DOMContentLoaded and onreadystatechange (which\r\n // fire before onload), but fall back to onload.\r\n let called = false;\r\n const wrappedFn = function () {\r\n if (!document.body) {\r\n setTimeout(wrappedFn, Math.floor(10));\r\n return;\r\n }\r\n if (!called) {\r\n called = true;\r\n fn();\r\n }\r\n };\r\n if (document.addEventListener) {\r\n document.addEventListener('DOMContentLoaded', wrappedFn, false);\r\n // fallback to onload.\r\n window.addEventListener('load', wrappedFn, false);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n }\r\n else if (document.attachEvent) {\r\n // IE.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n document.attachEvent('onreadystatechange', () => {\r\n if (document.readyState === 'complete') {\r\n wrappedFn();\r\n }\r\n });\r\n // fallback to onload.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n window.attachEvent('onload', wrappedFn);\r\n // jQuery has an extra hack for IE that we could employ (based on\r\n // http://javascript.nwbox.com/IEContentLoaded/) But it looks really old.\r\n // I'm hoping we don't need it.\r\n }\r\n }\r\n};\r\n/**\r\n * Minimum key name. Invalid for actual data, used as a marker to sort before any valid names\r\n */\r\nconst MIN_NAME = '[MIN_NAME]';\r\n/**\r\n * Maximum key name. Invalid for actual data, used as a marker to sort above any valid names\r\n */\r\nconst MAX_NAME = '[MAX_NAME]';\r\n/**\r\n * Compares valid Firebase key names, plus min and max name\r\n */\r\nconst nameCompare = function (a, b) {\r\n if (a === b) {\r\n return 0;\r\n }\r\n else if (a === MIN_NAME || b === MAX_NAME) {\r\n return -1;\r\n }\r\n else if (b === MIN_NAME || a === MAX_NAME) {\r\n return 1;\r\n }\r\n else {\r\n const aAsInt = tryParseInt(a), bAsInt = tryParseInt(b);\r\n if (aAsInt !== null) {\r\n if (bAsInt !== null) {\r\n return aAsInt - bAsInt === 0 ? a.length - b.length : aAsInt - bAsInt;\r\n }\r\n else {\r\n return -1;\r\n }\r\n }\r\n else if (bAsInt !== null) {\r\n return 1;\r\n }\r\n else {\r\n return a < b ? -1 : 1;\r\n }\r\n }\r\n};\r\n/**\r\n * @returns {!number} comparison result.\r\n */\r\nconst stringCompare = function (a, b) {\r\n if (a === b) {\r\n return 0;\r\n }\r\n else if (a < b) {\r\n return -1;\r\n }\r\n else {\r\n return 1;\r\n }\r\n};\r\nconst requireKey = function (key, obj) {\r\n if (obj && key in obj) {\r\n return obj[key];\r\n }\r\n else {\r\n throw new Error('Missing required key (' + key + ') in object: ' + stringify(obj));\r\n }\r\n};\r\nconst ObjectToUniqueKey = function (obj) {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return stringify(obj);\r\n }\r\n const keys = [];\r\n // eslint-disable-next-line guard-for-in\r\n for (const k in obj) {\r\n keys.push(k);\r\n }\r\n // Export as json, but with the keys sorted.\r\n keys.sort();\r\n let key = '{';\r\n for (let i = 0; i < keys.length; i++) {\r\n if (i !== 0) {\r\n key += ',';\r\n }\r\n key += stringify(keys[i]);\r\n key += ':';\r\n key += ObjectToUniqueKey(obj[keys[i]]);\r\n }\r\n key += '}';\r\n return key;\r\n};\r\n/**\r\n * Splits a string into a number of smaller segments of maximum size\r\n * @param str - The string\r\n * @param segsize - The maximum number of chars in the string.\r\n * @returns The string, split into appropriately-sized chunks\r\n */\r\nconst splitStringBySize = function (str, segsize) {\r\n const len = str.length;\r\n if (len <= segsize) {\r\n return [str];\r\n }\r\n const dataSegs = [];\r\n for (let c = 0; c < len; c += segsize) {\r\n if (c + segsize > len) {\r\n dataSegs.push(str.substring(c, len));\r\n }\r\n else {\r\n dataSegs.push(str.substring(c, c + segsize));\r\n }\r\n }\r\n return dataSegs;\r\n};\r\n/**\r\n * Apply a function to each (key, value) pair in an object or\r\n * apply a function to each (index, value) pair in an array\r\n * @param obj - The object or array to iterate over\r\n * @param fn - The function to apply\r\n */\r\nfunction each(obj, fn) {\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n fn(key, obj[key]);\r\n }\r\n }\r\n}\r\n/**\r\n * Borrowed from http://hg.secondlife.com/llsd/src/tip/js/typedarray.js (MIT License)\r\n * I made one modification at the end and removed the NaN / Infinity\r\n * handling (since it seemed broken [caused an overflow] and we don't need it). See MJL comments.\r\n * @param v - A double\r\n *\r\n */\r\nconst doubleToIEEE754String = function (v) {\r\n assert(!isInvalidJSONNumber(v), 'Invalid JSON number'); // MJL\r\n const ebits = 11, fbits = 52;\r\n const bias = (1 << (ebits - 1)) - 1;\r\n let s, e, f, ln, i;\r\n // Compute sign, exponent, fraction\r\n // Skip NaN / Infinity handling --MJL.\r\n if (v === 0) {\r\n e = 0;\r\n f = 0;\r\n s = 1 / v === -Infinity ? 1 : 0;\r\n }\r\n else {\r\n s = v < 0;\r\n v = Math.abs(v);\r\n if (v >= Math.pow(2, 1 - bias)) {\r\n // Normalized\r\n ln = Math.min(Math.floor(Math.log(v) / Math.LN2), bias);\r\n e = ln + bias;\r\n f = Math.round(v * Math.pow(2, fbits - ln) - Math.pow(2, fbits));\r\n }\r\n else {\r\n // Denormalized\r\n e = 0;\r\n f = Math.round(v / Math.pow(2, 1 - bias - fbits));\r\n }\r\n }\r\n // Pack sign, exponent, fraction\r\n const bits = [];\r\n for (i = fbits; i; i -= 1) {\r\n bits.push(f % 2 ? 1 : 0);\r\n f = Math.floor(f / 2);\r\n }\r\n for (i = ebits; i; i -= 1) {\r\n bits.push(e % 2 ? 1 : 0);\r\n e = Math.floor(e / 2);\r\n }\r\n bits.push(s ? 1 : 0);\r\n bits.reverse();\r\n const str = bits.join('');\r\n // Return the data as a hex string. --MJL\r\n let hexByteString = '';\r\n for (i = 0; i < 64; i += 8) {\r\n let hexByte = parseInt(str.substr(i, 8), 2).toString(16);\r\n if (hexByte.length === 1) {\r\n hexByte = '0' + hexByte;\r\n }\r\n hexByteString = hexByteString + hexByte;\r\n }\r\n return hexByteString.toLowerCase();\r\n};\r\n/**\r\n * Used to detect if we're in a Chrome content script (which executes in an\r\n * isolated environment where long-polling doesn't work).\r\n */\r\nconst isChromeExtensionContentScript = function () {\r\n return !!(typeof window === 'object' &&\r\n window['chrome'] &&\r\n window['chrome']['extension'] &&\r\n !/^chrome/.test(window.location.href));\r\n};\r\n/**\r\n * Used to detect if we're in a Windows 8 Store app.\r\n */\r\nconst isWindowsStoreApp = function () {\r\n // Check for the presence of a couple WinRT globals\r\n return typeof Windows === 'object' && typeof Windows.UI === 'object';\r\n};\r\n/**\r\n * Converts a server error code to a Javascript Error\r\n */\r\nfunction errorForServerCode(code, query) {\r\n let reason = 'Unknown Error';\r\n if (code === 'too_big') {\r\n reason =\r\n 'The data requested exceeds the maximum size ' +\r\n 'that can be accessed with a single request.';\r\n }\r\n else if (code === 'permission_denied') {\r\n reason = \"Client doesn't have permission to access the desired data.\";\r\n }\r\n else if (code === 'unavailable') {\r\n reason = 'The service is unavailable';\r\n }\r\n const error = new Error(code + ' at ' + query._path.toString() + ': ' + reason);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error.code = code.toUpperCase();\r\n return error;\r\n}\r\n/**\r\n * Used to test for integer-looking strings\r\n */\r\nconst INTEGER_REGEXP_ = new RegExp('^-?(0*)\\\\d{1,10}$');\r\n/**\r\n * For use in keys, the minimum possible 32-bit integer.\r\n */\r\nconst INTEGER_32_MIN = -2147483648;\r\n/**\r\n * For use in kyes, the maximum possible 32-bit integer.\r\n */\r\nconst INTEGER_32_MAX = 2147483647;\r\n/**\r\n * If the string contains a 32-bit integer, return it. Else return null.\r\n */\r\nconst tryParseInt = function (str) {\r\n if (INTEGER_REGEXP_.test(str)) {\r\n const intVal = Number(str);\r\n if (intVal >= INTEGER_32_MIN && intVal <= INTEGER_32_MAX) {\r\n return intVal;\r\n }\r\n }\r\n return null;\r\n};\r\n/**\r\n * Helper to run some code but catch any exceptions and re-throw them later.\r\n * Useful for preventing user callbacks from breaking internal code.\r\n *\r\n * Re-throwing the exception from a setTimeout is a little evil, but it's very\r\n * convenient (we don't have to try to figure out when is a safe point to\r\n * re-throw it), and the behavior seems reasonable:\r\n *\r\n * * If you aren't pausing on exceptions, you get an error in the console with\r\n * the correct stack trace.\r\n * * If you're pausing on all exceptions, the debugger will pause on your\r\n * exception and then again when we rethrow it.\r\n * * If you're only pausing on uncaught exceptions, the debugger will only pause\r\n * on us re-throwing it.\r\n *\r\n * @param fn - The code to guard.\r\n */\r\nconst exceptionGuard = function (fn) {\r\n try {\r\n fn();\r\n }\r\n catch (e) {\r\n // Re-throw exception when it's safe.\r\n setTimeout(() => {\r\n // It used to be that \"throw e\" would result in a good console error with\r\n // relevant context, but as of Chrome 39, you just get the firebase.js\r\n // file/line number where we re-throw it, which is useless. So we log\r\n // e.stack explicitly.\r\n const stack = e.stack || '';\r\n warn('Exception was thrown by user callback.', stack);\r\n throw e;\r\n }, Math.floor(0));\r\n }\r\n};\r\n/**\r\n * @returns {boolean} true if we think we're currently being crawled.\r\n */\r\nconst beingCrawled = function () {\r\n const userAgent = (typeof window === 'object' &&\r\n window['navigator'] &&\r\n window['navigator']['userAgent']) ||\r\n '';\r\n // For now we whitelist the most popular crawlers. We should refine this to be the set of crawlers we\r\n // believe to support JavaScript/AJAX rendering.\r\n // NOTE: Google Webmaster Tools doesn't really belong, but their \"This is how a visitor to your website\r\n // would have seen the page\" is flaky if we don't treat it as a crawler.\r\n return (userAgent.search(/googlebot|google webmaster tools|bingbot|yahoo! slurp|baiduspider|yandexbot|duckduckbot/i) >= 0);\r\n};\r\n/**\r\n * Same as setTimeout() except on Node.JS it will /not/ prevent the process from exiting.\r\n *\r\n * It is removed with clearTimeout() as normal.\r\n *\r\n * @param fn - Function to run.\r\n * @param time - Milliseconds to wait before running.\r\n * @returns The setTimeout() return value.\r\n */\r\nconst setTimeoutNonBlocking = function (fn, time) {\r\n const timeout = setTimeout(fn, time);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (typeof timeout === 'object' && timeout['unref']) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n timeout['unref']();\r\n }\r\n return timeout;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Abstraction around AppCheck's token fetching capabilities.\r\n */\r\nclass AppCheckTokenProvider {\r\n constructor(appName_, appCheckProvider) {\r\n this.appName_ = appName_;\r\n this.appCheckProvider = appCheckProvider;\r\n this.appCheck = appCheckProvider === null || appCheckProvider === void 0 ? void 0 : appCheckProvider.getImmediate({ optional: true });\r\n if (!this.appCheck) {\r\n appCheckProvider === null || appCheckProvider === void 0 ? void 0 : appCheckProvider.get().then(appCheck => (this.appCheck = appCheck));\r\n }\r\n }\r\n getToken(forceRefresh) {\r\n if (!this.appCheck) {\r\n return new Promise((resolve, reject) => {\r\n // Support delayed initialization of FirebaseAppCheck. This allows our\r\n // customers to initialize the RTDB SDK before initializing Firebase\r\n // AppCheck and ensures that all requests are authenticated if a token\r\n // becomes available before the timoeout below expires.\r\n setTimeout(() => {\r\n if (this.appCheck) {\r\n this.getToken(forceRefresh).then(resolve, reject);\r\n }\r\n else {\r\n resolve(null);\r\n }\r\n }, 0);\r\n });\r\n }\r\n return this.appCheck.getToken(forceRefresh);\r\n }\r\n addTokenChangeListener(listener) {\r\n var _a;\r\n (_a = this.appCheckProvider) === null || _a === void 0 ? void 0 : _a.get().then(appCheck => appCheck.addTokenListener(listener));\r\n }\r\n notifyForInvalidToken() {\r\n warn(`Provided AppCheck credentials for the app named \"${this.appName_}\" ` +\r\n 'are invalid. This usually indicates your app was not initialized correctly.');\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Abstraction around FirebaseApp's token fetching capabilities.\r\n */\r\nclass FirebaseAuthTokenProvider {\r\n constructor(appName_, firebaseOptions_, authProvider_) {\r\n this.appName_ = appName_;\r\n this.firebaseOptions_ = firebaseOptions_;\r\n this.authProvider_ = authProvider_;\r\n this.auth_ = null;\r\n this.auth_ = authProvider_.getImmediate({ optional: true });\r\n if (!this.auth_) {\r\n authProvider_.onInit(auth => (this.auth_ = auth));\r\n }\r\n }\r\n getToken(forceRefresh) {\r\n if (!this.auth_) {\r\n return new Promise((resolve, reject) => {\r\n // Support delayed initialization of FirebaseAuth. This allows our\r\n // customers to initialize the RTDB SDK before initializing Firebase\r\n // Auth and ensures that all requests are authenticated if a token\r\n // becomes available before the timoeout below expires.\r\n setTimeout(() => {\r\n if (this.auth_) {\r\n this.getToken(forceRefresh).then(resolve, reject);\r\n }\r\n else {\r\n resolve(null);\r\n }\r\n }, 0);\r\n });\r\n }\r\n return this.auth_.getToken(forceRefresh).catch(error => {\r\n // TODO: Need to figure out all the cases this is raised and whether\r\n // this makes sense.\r\n if (error && error.code === 'auth/token-not-initialized') {\r\n log('Got auth/token-not-initialized error. Treating as null token.');\r\n return null;\r\n }\r\n else {\r\n return Promise.reject(error);\r\n }\r\n });\r\n }\r\n addTokenChangeListener(listener) {\r\n // TODO: We might want to wrap the listener and call it with no args to\r\n // avoid a leaky abstraction, but that makes removing the listener harder.\r\n if (this.auth_) {\r\n this.auth_.addAuthTokenListener(listener);\r\n }\r\n else {\r\n this.authProvider_\r\n .get()\r\n .then(auth => auth.addAuthTokenListener(listener));\r\n }\r\n }\r\n removeTokenChangeListener(listener) {\r\n this.authProvider_\r\n .get()\r\n .then(auth => auth.removeAuthTokenListener(listener));\r\n }\r\n notifyForInvalidToken() {\r\n let errorMessage = 'Provided authentication credentials for the app named \"' +\r\n this.appName_ +\r\n '\" are invalid. This usually indicates your app was not ' +\r\n 'initialized correctly. ';\r\n if ('credential' in this.firebaseOptions_) {\r\n errorMessage +=\r\n 'Make sure the \"credential\" property provided to initializeApp() ' +\r\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\r\n 'project.';\r\n }\r\n else if ('serviceAccount' in this.firebaseOptions_) {\r\n errorMessage +=\r\n 'Make sure the \"serviceAccount\" property provided to initializeApp() ' +\r\n 'is authorized to access the specified \"databaseURL\" and is from the correct ' +\r\n 'project.';\r\n }\r\n else {\r\n errorMessage +=\r\n 'Make sure the \"apiKey\" and \"databaseURL\" properties provided to ' +\r\n 'initializeApp() match the values provided for your app at ' +\r\n 'https://console.firebase.google.com/.';\r\n }\r\n warn(errorMessage);\r\n }\r\n}\r\n/* AuthTokenProvider that supplies a constant token. Used by Admin SDK or mockUserToken with emulators. */\r\nclass EmulatorTokenProvider {\r\n constructor(accessToken) {\r\n this.accessToken = accessToken;\r\n }\r\n getToken(forceRefresh) {\r\n return Promise.resolve({\r\n accessToken: this.accessToken\r\n });\r\n }\r\n addTokenChangeListener(listener) {\r\n // Invoke the listener immediately to match the behavior in Firebase Auth\r\n // (see packages/auth/src/auth.js#L1807)\r\n listener(this.accessToken);\r\n }\r\n removeTokenChangeListener(listener) { }\r\n notifyForInvalidToken() { }\r\n}\r\n/** A string that is treated as an admin access token by the RTDB emulator. Used by Admin SDK. */\r\nEmulatorTokenProvider.OWNER = 'owner';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst PROTOCOL_VERSION = '5';\r\nconst VERSION_PARAM = 'v';\r\nconst TRANSPORT_SESSION_PARAM = 's';\r\nconst REFERER_PARAM = 'r';\r\nconst FORGE_REF = 'f';\r\n// Matches console.firebase.google.com, firebase-console-*.corp.google.com and\r\n// firebase.corp.google.com\r\nconst FORGE_DOMAIN_RE = /(console\\.firebase|firebase-console-\\w+\\.corp|firebase\\.corp)\\.google\\.com/;\r\nconst LAST_SESSION_PARAM = 'ls';\r\nconst APPLICATION_ID_PARAM = 'p';\r\nconst APP_CHECK_TOKEN_PARAM = 'ac';\r\nconst WEBSOCKET = 'websocket';\r\nconst LONG_POLLING = 'long_polling';\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A class that holds metadata about a Repo object\r\n */\r\nclass RepoInfo {\r\n /**\r\n * @param host - Hostname portion of the url for the repo\r\n * @param secure - Whether or not this repo is accessed over ssl\r\n * @param namespace - The namespace represented by the repo\r\n * @param webSocketOnly - Whether to prefer websockets over all other transports (used by Nest).\r\n * @param nodeAdmin - Whether this instance uses Admin SDK credentials\r\n * @param persistenceKey - Override the default session persistence storage key\r\n */\r\n constructor(host, secure, namespace, webSocketOnly, nodeAdmin = false, persistenceKey = '', includeNamespaceInQueryParams = false) {\r\n this.secure = secure;\r\n this.namespace = namespace;\r\n this.webSocketOnly = webSocketOnly;\r\n this.nodeAdmin = nodeAdmin;\r\n this.persistenceKey = persistenceKey;\r\n this.includeNamespaceInQueryParams = includeNamespaceInQueryParams;\r\n this._host = host.toLowerCase();\r\n this._domain = this._host.substr(this._host.indexOf('.') + 1);\r\n this.internalHost =\r\n PersistentStorage.get('host:' + host) || this._host;\r\n }\r\n isCacheableHost() {\r\n return this.internalHost.substr(0, 2) === 's-';\r\n }\r\n isCustomHost() {\r\n return (this._domain !== 'firebaseio.com' &&\r\n this._domain !== 'firebaseio-demo.com');\r\n }\r\n get host() {\r\n return this._host;\r\n }\r\n set host(newHost) {\r\n if (newHost !== this.internalHost) {\r\n this.internalHost = newHost;\r\n if (this.isCacheableHost()) {\r\n PersistentStorage.set('host:' + this._host, this.internalHost);\r\n }\r\n }\r\n }\r\n toString() {\r\n let str = this.toURLString();\r\n if (this.persistenceKey) {\r\n str += '<' + this.persistenceKey + '>';\r\n }\r\n return str;\r\n }\r\n toURLString() {\r\n const protocol = this.secure ? 'https://' : 'http://';\r\n const query = this.includeNamespaceInQueryParams\r\n ? `?ns=${this.namespace}`\r\n : '';\r\n return `${protocol}${this.host}/${query}`;\r\n }\r\n}\r\nfunction repoInfoNeedsQueryParam(repoInfo) {\r\n return (repoInfo.host !== repoInfo.internalHost ||\r\n repoInfo.isCustomHost() ||\r\n repoInfo.includeNamespaceInQueryParams);\r\n}\r\n/**\r\n * Returns the websocket URL for this repo\r\n * @param repoInfo - RepoInfo object\r\n * @param type - of connection\r\n * @param params - list\r\n * @returns The URL for this repo\r\n */\r\nfunction repoInfoConnectionURL(repoInfo, type, params) {\r\n assert(typeof type === 'string', 'typeof type must == string');\r\n assert(typeof params === 'object', 'typeof params must == object');\r\n let connURL;\r\n if (type === WEBSOCKET) {\r\n connURL =\r\n (repoInfo.secure ? 'wss://' : 'ws://') + repoInfo.internalHost + '/.ws?';\r\n }\r\n else if (type === LONG_POLLING) {\r\n connURL =\r\n (repoInfo.secure ? 'https://' : 'http://') +\r\n repoInfo.internalHost +\r\n '/.lp?';\r\n }\r\n else {\r\n throw new Error('Unknown connection type: ' + type);\r\n }\r\n if (repoInfoNeedsQueryParam(repoInfo)) {\r\n params['ns'] = repoInfo.namespace;\r\n }\r\n const pairs = [];\r\n each(params, (key, value) => {\r\n pairs.push(key + '=' + value);\r\n });\r\n return connURL + pairs.join('&');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Tracks a collection of stats.\r\n */\r\nclass StatsCollection {\r\n constructor() {\r\n this.counters_ = {};\r\n }\r\n incrementCounter(name, amount = 1) {\r\n if (!contains(this.counters_, name)) {\r\n this.counters_[name] = 0;\r\n }\r\n this.counters_[name] += amount;\r\n }\r\n get() {\r\n return deepCopy(this.counters_);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst collections = {};\r\nconst reporters = {};\r\nfunction statsManagerGetCollection(repoInfo) {\r\n const hashString = repoInfo.toString();\r\n if (!collections[hashString]) {\r\n collections[hashString] = new StatsCollection();\r\n }\r\n return collections[hashString];\r\n}\r\nfunction statsManagerGetOrCreateReporter(repoInfo, creatorFunction) {\r\n const hashString = repoInfo.toString();\r\n if (!reporters[hashString]) {\r\n reporters[hashString] = creatorFunction();\r\n }\r\n return reporters[hashString];\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * This class ensures the packets from the server arrive in order\r\n * This class takes data from the server and ensures it gets passed into the callbacks in order.\r\n */\r\nclass PacketReceiver {\r\n /**\r\n * @param onMessage_\r\n */\r\n constructor(onMessage_) {\r\n this.onMessage_ = onMessage_;\r\n this.pendingResponses = [];\r\n this.currentResponseNum = 0;\r\n this.closeAfterResponse = -1;\r\n this.onClose = null;\r\n }\r\n closeAfter(responseNum, callback) {\r\n this.closeAfterResponse = responseNum;\r\n this.onClose = callback;\r\n if (this.closeAfterResponse < this.currentResponseNum) {\r\n this.onClose();\r\n this.onClose = null;\r\n }\r\n }\r\n /**\r\n * Each message from the server comes with a response number, and an array of data. The responseNumber\r\n * allows us to ensure that we process them in the right order, since we can't be guaranteed that all\r\n * browsers will respond in the same order as the requests we sent\r\n */\r\n handleResponse(requestNum, data) {\r\n this.pendingResponses[requestNum] = data;\r\n while (this.pendingResponses[this.currentResponseNum]) {\r\n const toProcess = this.pendingResponses[this.currentResponseNum];\r\n delete this.pendingResponses[this.currentResponseNum];\r\n for (let i = 0; i < toProcess.length; ++i) {\r\n if (toProcess[i]) {\r\n exceptionGuard(() => {\r\n this.onMessage_(toProcess[i]);\r\n });\r\n }\r\n }\r\n if (this.currentResponseNum === this.closeAfterResponse) {\r\n if (this.onClose) {\r\n this.onClose();\r\n this.onClose = null;\r\n }\r\n break;\r\n }\r\n this.currentResponseNum++;\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// URL query parameters associated with longpolling\r\nconst FIREBASE_LONGPOLL_START_PARAM = 'start';\r\nconst FIREBASE_LONGPOLL_CLOSE_COMMAND = 'close';\r\nconst FIREBASE_LONGPOLL_COMMAND_CB_NAME = 'pLPCommand';\r\nconst FIREBASE_LONGPOLL_DATA_CB_NAME = 'pRTLPCB';\r\nconst FIREBASE_LONGPOLL_ID_PARAM = 'id';\r\nconst FIREBASE_LONGPOLL_PW_PARAM = 'pw';\r\nconst FIREBASE_LONGPOLL_SERIAL_PARAM = 'ser';\r\nconst FIREBASE_LONGPOLL_CALLBACK_ID_PARAM = 'cb';\r\nconst FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM = 'seg';\r\nconst FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET = 'ts';\r\nconst FIREBASE_LONGPOLL_DATA_PARAM = 'd';\r\nconst FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM = 'dframe';\r\n//Data size constants.\r\n//TODO: Perf: the maximum length actually differs from browser to browser.\r\n// We should check what browser we're on and set accordingly.\r\nconst MAX_URL_DATA_SIZE = 1870;\r\nconst SEG_HEADER_SIZE = 30; //ie: &seg=8299234&ts=982389123&d=\r\nconst MAX_PAYLOAD_SIZE = MAX_URL_DATA_SIZE - SEG_HEADER_SIZE;\r\n/**\r\n * Keepalive period\r\n * send a fresh request at minimum every 25 seconds. Opera has a maximum request\r\n * length of 30 seconds that we can't exceed.\r\n */\r\nconst KEEPALIVE_REQUEST_INTERVAL = 25000;\r\n/**\r\n * How long to wait before aborting a long-polling connection attempt.\r\n */\r\nconst LP_CONNECT_TIMEOUT = 30000;\r\n/**\r\n * This class manages a single long-polling connection.\r\n */\r\nclass BrowserPollConnection {\r\n /**\r\n * @param connId An identifier for this connection, used for logging\r\n * @param repoInfo The info for the endpoint to send data to.\r\n * @param applicationId The Firebase App ID for this project.\r\n * @param appCheckToken The AppCheck token for this client.\r\n * @param authToken The AuthToken to use for this connection.\r\n * @param transportSessionId Optional transportSessionid if we are\r\n * reconnecting for an existing transport session\r\n * @param lastSessionId Optional lastSessionId if the PersistentConnection has\r\n * already created a connection previously\r\n */\r\n constructor(connId, repoInfo, applicationId, appCheckToken, authToken, transportSessionId, lastSessionId) {\r\n this.connId = connId;\r\n this.repoInfo = repoInfo;\r\n this.applicationId = applicationId;\r\n this.appCheckToken = appCheckToken;\r\n this.authToken = authToken;\r\n this.transportSessionId = transportSessionId;\r\n this.lastSessionId = lastSessionId;\r\n this.bytesSent = 0;\r\n this.bytesReceived = 0;\r\n this.everConnected_ = false;\r\n this.log_ = logWrapper(connId);\r\n this.stats_ = statsManagerGetCollection(repoInfo);\r\n this.urlFn = (params) => {\r\n // Always add the token if we have one.\r\n if (this.appCheckToken) {\r\n params[APP_CHECK_TOKEN_PARAM] = this.appCheckToken;\r\n }\r\n return repoInfoConnectionURL(repoInfo, LONG_POLLING, params);\r\n };\r\n }\r\n /**\r\n * @param onMessage - Callback when messages arrive\r\n * @param onDisconnect - Callback with connection lost.\r\n */\r\n open(onMessage, onDisconnect) {\r\n this.curSegmentNum = 0;\r\n this.onDisconnect_ = onDisconnect;\r\n this.myPacketOrderer = new PacketReceiver(onMessage);\r\n this.isClosed_ = false;\r\n this.connectTimeoutTimer_ = setTimeout(() => {\r\n this.log_('Timed out trying to connect.');\r\n // Make sure we clear the host cache\r\n this.onClosed_();\r\n this.connectTimeoutTimer_ = null;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n }, Math.floor(LP_CONNECT_TIMEOUT));\r\n // Ensure we delay the creation of the iframe until the DOM is loaded.\r\n executeWhenDOMReady(() => {\r\n if (this.isClosed_) {\r\n return;\r\n }\r\n //Set up a callback that gets triggered once a connection is set up.\r\n this.scriptTagHolder = new FirebaseIFrameScriptHolder((...args) => {\r\n const [command, arg1, arg2, arg3, arg4] = args;\r\n this.incrementIncomingBytes_(args);\r\n if (!this.scriptTagHolder) {\r\n return; // we closed the connection.\r\n }\r\n if (this.connectTimeoutTimer_) {\r\n clearTimeout(this.connectTimeoutTimer_);\r\n this.connectTimeoutTimer_ = null;\r\n }\r\n this.everConnected_ = true;\r\n if (command === FIREBASE_LONGPOLL_START_PARAM) {\r\n this.id = arg1;\r\n this.password = arg2;\r\n }\r\n else if (command === FIREBASE_LONGPOLL_CLOSE_COMMAND) {\r\n // Don't clear the host cache. We got a response from the server, so we know it's reachable\r\n if (arg1) {\r\n // We aren't expecting any more data (other than what the server's already in the process of sending us\r\n // through our already open polls), so don't send any more.\r\n this.scriptTagHolder.sendNewPolls = false;\r\n // arg1 in this case is the last response number sent by the server. We should try to receive\r\n // all of the responses up to this one before closing\r\n this.myPacketOrderer.closeAfter(arg1, () => {\r\n this.onClosed_();\r\n });\r\n }\r\n else {\r\n this.onClosed_();\r\n }\r\n }\r\n else {\r\n throw new Error('Unrecognized command received: ' + command);\r\n }\r\n }, (...args) => {\r\n const [pN, data] = args;\r\n this.incrementIncomingBytes_(args);\r\n this.myPacketOrderer.handleResponse(pN, data);\r\n }, () => {\r\n this.onClosed_();\r\n }, this.urlFn);\r\n //Send the initial request to connect. The serial number is simply to keep the browser from pulling previous results\r\n //from cache.\r\n const urlParams = {};\r\n urlParams[FIREBASE_LONGPOLL_START_PARAM] = 't';\r\n urlParams[FIREBASE_LONGPOLL_SERIAL_PARAM] = Math.floor(Math.random() * 100000000);\r\n if (this.scriptTagHolder.uniqueCallbackIdentifier) {\r\n urlParams[FIREBASE_LONGPOLL_CALLBACK_ID_PARAM] =\r\n this.scriptTagHolder.uniqueCallbackIdentifier;\r\n }\r\n urlParams[VERSION_PARAM] = PROTOCOL_VERSION;\r\n if (this.transportSessionId) {\r\n urlParams[TRANSPORT_SESSION_PARAM] = this.transportSessionId;\r\n }\r\n if (this.lastSessionId) {\r\n urlParams[LAST_SESSION_PARAM] = this.lastSessionId;\r\n }\r\n if (this.applicationId) {\r\n urlParams[APPLICATION_ID_PARAM] = this.applicationId;\r\n }\r\n if (this.appCheckToken) {\r\n urlParams[APP_CHECK_TOKEN_PARAM] = this.appCheckToken;\r\n }\r\n if (typeof location !== 'undefined' &&\r\n location.hostname &&\r\n FORGE_DOMAIN_RE.test(location.hostname)) {\r\n urlParams[REFERER_PARAM] = FORGE_REF;\r\n }\r\n const connectURL = this.urlFn(urlParams);\r\n this.log_('Connecting via long-poll to ' + connectURL);\r\n this.scriptTagHolder.addTag(connectURL, () => {\r\n /* do nothing */\r\n });\r\n });\r\n }\r\n /**\r\n * Call this when a handshake has completed successfully and we want to consider the connection established\r\n */\r\n start() {\r\n this.scriptTagHolder.startLongPoll(this.id, this.password);\r\n this.addDisconnectPingFrame(this.id, this.password);\r\n }\r\n /**\r\n * Forces long polling to be considered as a potential transport\r\n */\r\n static forceAllow() {\r\n BrowserPollConnection.forceAllow_ = true;\r\n }\r\n /**\r\n * Forces longpolling to not be considered as a potential transport\r\n */\r\n static forceDisallow() {\r\n BrowserPollConnection.forceDisallow_ = true;\r\n }\r\n // Static method, use string literal so it can be accessed in a generic way\r\n static isAvailable() {\r\n if (isNodeSdk()) {\r\n return false;\r\n }\r\n else if (BrowserPollConnection.forceAllow_) {\r\n return true;\r\n }\r\n else {\r\n // NOTE: In React-Native there's normally no 'document', but if you debug a React-Native app in\r\n // the Chrome debugger, 'document' is defined, but document.createElement is null (2015/06/08).\r\n return (!BrowserPollConnection.forceDisallow_ &&\r\n typeof document !== 'undefined' &&\r\n document.createElement != null &&\r\n !isChromeExtensionContentScript() &&\r\n !isWindowsStoreApp());\r\n }\r\n }\r\n /**\r\n * No-op for polling\r\n */\r\n markConnectionHealthy() { }\r\n /**\r\n * Stops polling and cleans up the iframe\r\n */\r\n shutdown_() {\r\n this.isClosed_ = true;\r\n if (this.scriptTagHolder) {\r\n this.scriptTagHolder.close();\r\n this.scriptTagHolder = null;\r\n }\r\n //remove the disconnect frame, which will trigger an XHR call to the server to tell it we're leaving.\r\n if (this.myDisconnFrame) {\r\n document.body.removeChild(this.myDisconnFrame);\r\n this.myDisconnFrame = null;\r\n }\r\n if (this.connectTimeoutTimer_) {\r\n clearTimeout(this.connectTimeoutTimer_);\r\n this.connectTimeoutTimer_ = null;\r\n }\r\n }\r\n /**\r\n * Triggered when this transport is closed\r\n */\r\n onClosed_() {\r\n if (!this.isClosed_) {\r\n this.log_('Longpoll is closing itself');\r\n this.shutdown_();\r\n if (this.onDisconnect_) {\r\n this.onDisconnect_(this.everConnected_);\r\n this.onDisconnect_ = null;\r\n }\r\n }\r\n }\r\n /**\r\n * External-facing close handler. RealTime has requested we shut down. Kill our connection and tell the server\r\n * that we've left.\r\n */\r\n close() {\r\n if (!this.isClosed_) {\r\n this.log_('Longpoll is being closed.');\r\n this.shutdown_();\r\n }\r\n }\r\n /**\r\n * Send the JSON object down to the server. It will need to be stringified, base64 encoded, and then\r\n * broken into chunks (since URLs have a small maximum length).\r\n * @param data - The JSON data to transmit.\r\n */\r\n send(data) {\r\n const dataStr = stringify(data);\r\n this.bytesSent += dataStr.length;\r\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\r\n //first, lets get the base64-encoded data\r\n const base64data = base64Encode(dataStr);\r\n //We can only fit a certain amount in each URL, so we need to split this request\r\n //up into multiple pieces if it doesn't fit in one request.\r\n const dataSegs = splitStringBySize(base64data, MAX_PAYLOAD_SIZE);\r\n //Enqueue each segment for transmission. We assign each chunk a sequential ID and a total number\r\n //of segments so that we can reassemble the packet on the server.\r\n for (let i = 0; i < dataSegs.length; i++) {\r\n this.scriptTagHolder.enqueueSegment(this.curSegmentNum, dataSegs.length, dataSegs[i]);\r\n this.curSegmentNum++;\r\n }\r\n }\r\n /**\r\n * This is how we notify the server that we're leaving.\r\n * We aren't able to send requests with DHTML on a window close event, but we can\r\n * trigger XHR requests in some browsers (everything but Opera basically).\r\n */\r\n addDisconnectPingFrame(id, pw) {\r\n if (isNodeSdk()) {\r\n return;\r\n }\r\n this.myDisconnFrame = document.createElement('iframe');\r\n const urlParams = {};\r\n urlParams[FIREBASE_LONGPOLL_DISCONN_FRAME_REQUEST_PARAM] = 't';\r\n urlParams[FIREBASE_LONGPOLL_ID_PARAM] = id;\r\n urlParams[FIREBASE_LONGPOLL_PW_PARAM] = pw;\r\n this.myDisconnFrame.src = this.urlFn(urlParams);\r\n this.myDisconnFrame.style.display = 'none';\r\n document.body.appendChild(this.myDisconnFrame);\r\n }\r\n /**\r\n * Used to track the bytes received by this client\r\n */\r\n incrementIncomingBytes_(args) {\r\n // TODO: This is an annoying perf hit just to track the number of incoming bytes. Maybe it should be opt-in.\r\n const bytesReceived = stringify(args).length;\r\n this.bytesReceived += bytesReceived;\r\n this.stats_.incrementCounter('bytes_received', bytesReceived);\r\n }\r\n}\r\n/*********************************************************************************************\r\n * A wrapper around an iframe that is used as a long-polling script holder.\r\n *********************************************************************************************/\r\nclass FirebaseIFrameScriptHolder {\r\n /**\r\n * @param commandCB - The callback to be called when control commands are recevied from the server.\r\n * @param onMessageCB - The callback to be triggered when responses arrive from the server.\r\n * @param onDisconnect - The callback to be triggered when this tag holder is closed\r\n * @param urlFn - A function that provides the URL of the endpoint to send data to.\r\n */\r\n constructor(commandCB, onMessageCB, onDisconnect, urlFn) {\r\n this.onDisconnect = onDisconnect;\r\n this.urlFn = urlFn;\r\n //We maintain a count of all of the outstanding requests, because if we have too many active at once it can cause\r\n //problems in some browsers.\r\n this.outstandingRequests = new Set();\r\n //A queue of the pending segments waiting for transmission to the server.\r\n this.pendingSegs = [];\r\n //A serial number. We use this for two things:\r\n // 1) A way to ensure the browser doesn't cache responses to polls\r\n // 2) A way to make the server aware when long-polls arrive in a different order than we started them. The\r\n // server needs to release both polls in this case or it will cause problems in Opera since Opera can only execute\r\n // JSONP code in the order it was added to the iframe.\r\n this.currentSerial = Math.floor(Math.random() * 100000000);\r\n // This gets set to false when we're \"closing down\" the connection (e.g. we're switching transports but there's still\r\n // incoming data from the server that we're waiting for).\r\n this.sendNewPolls = true;\r\n if (!isNodeSdk()) {\r\n //Each script holder registers a couple of uniquely named callbacks with the window. These are called from the\r\n //iframes where we put the long-polling script tags. We have two callbacks:\r\n // 1) Command Callback - Triggered for control issues, like starting a connection.\r\n // 2) Message Callback - Triggered when new data arrives.\r\n this.uniqueCallbackIdentifier = LUIDGenerator();\r\n window[FIREBASE_LONGPOLL_COMMAND_CB_NAME + this.uniqueCallbackIdentifier] = commandCB;\r\n window[FIREBASE_LONGPOLL_DATA_CB_NAME + this.uniqueCallbackIdentifier] =\r\n onMessageCB;\r\n //Create an iframe for us to add script tags to.\r\n this.myIFrame = FirebaseIFrameScriptHolder.createIFrame_();\r\n // Set the iframe's contents.\r\n let script = '';\r\n // if we set a javascript url, it's IE and we need to set the document domain. The javascript url is sufficient\r\n // for ie9, but ie8 needs to do it again in the document itself.\r\n if (this.myIFrame.src &&\r\n this.myIFrame.src.substr(0, 'javascript:'.length) === 'javascript:') {\r\n const currentDomain = document.domain;\r\n script = '';\r\n }\r\n const iframeContents = '' + script + '';\r\n try {\r\n this.myIFrame.doc.open();\r\n this.myIFrame.doc.write(iframeContents);\r\n this.myIFrame.doc.close();\r\n }\r\n catch (e) {\r\n log('frame writing exception');\r\n if (e.stack) {\r\n log(e.stack);\r\n }\r\n log(e);\r\n }\r\n }\r\n else {\r\n this.commandCB = commandCB;\r\n this.onMessageCB = onMessageCB;\r\n }\r\n }\r\n /**\r\n * Each browser has its own funny way to handle iframes. Here we mush them all together into one object that I can\r\n * actually use.\r\n */\r\n static createIFrame_() {\r\n const iframe = document.createElement('iframe');\r\n iframe.style.display = 'none';\r\n // This is necessary in order to initialize the document inside the iframe\r\n if (document.body) {\r\n document.body.appendChild(iframe);\r\n try {\r\n // If document.domain has been modified in IE, this will throw an error, and we need to set the\r\n // domain of the iframe's document manually. We can do this via a javascript: url as the src attribute\r\n // Also note that we must do this *after* the iframe has been appended to the page. Otherwise it doesn't work.\r\n const a = iframe.contentWindow.document;\r\n if (!a) {\r\n // Apologies for the log-spam, I need to do something to keep closure from optimizing out the assignment above.\r\n log('No IE domain setting required');\r\n }\r\n }\r\n catch (e) {\r\n const domain = document.domain;\r\n iframe.src =\r\n \"javascript:void((function(){document.open();document.domain='\" +\r\n domain +\r\n \"';document.close();})())\";\r\n }\r\n }\r\n else {\r\n // LongPollConnection attempts to delay initialization until the document is ready, so hopefully this\r\n // never gets hit.\r\n throw 'Document body has not initialized. Wait to initialize Firebase until after the document is ready.';\r\n }\r\n // Get the document of the iframe in a browser-specific way.\r\n if (iframe.contentDocument) {\r\n iframe.doc = iframe.contentDocument; // Firefox, Opera, Safari\r\n }\r\n else if (iframe.contentWindow) {\r\n iframe.doc = iframe.contentWindow.document; // Internet Explorer\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n }\r\n else if (iframe.document) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n iframe.doc = iframe.document; //others?\r\n }\r\n return iframe;\r\n }\r\n /**\r\n * Cancel all outstanding queries and remove the frame.\r\n */\r\n close() {\r\n //Mark this iframe as dead, so no new requests are sent.\r\n this.alive = false;\r\n if (this.myIFrame) {\r\n //We have to actually remove all of the html inside this iframe before removing it from the\r\n //window, or IE will continue loading and executing the script tags we've already added, which\r\n //can lead to some errors being thrown. Setting innerHTML seems to be the easiest way to do this.\r\n this.myIFrame.doc.body.innerHTML = '';\r\n setTimeout(() => {\r\n if (this.myIFrame !== null) {\r\n document.body.removeChild(this.myIFrame);\r\n this.myIFrame = null;\r\n }\r\n }, Math.floor(0));\r\n }\r\n // Protect from being called recursively.\r\n const onDisconnect = this.onDisconnect;\r\n if (onDisconnect) {\r\n this.onDisconnect = null;\r\n onDisconnect();\r\n }\r\n }\r\n /**\r\n * Actually start the long-polling session by adding the first script tag(s) to the iframe.\r\n * @param id - The ID of this connection\r\n * @param pw - The password for this connection\r\n */\r\n startLongPoll(id, pw) {\r\n this.myID = id;\r\n this.myPW = pw;\r\n this.alive = true;\r\n //send the initial request. If there are requests queued, make sure that we transmit as many as we are currently able to.\r\n while (this.newRequest_()) { }\r\n }\r\n /**\r\n * This is called any time someone might want a script tag to be added. It adds a script tag when there aren't\r\n * too many outstanding requests and we are still alive.\r\n *\r\n * If there are outstanding packet segments to send, it sends one. If there aren't, it sends a long-poll anyways if\r\n * needed.\r\n */\r\n newRequest_() {\r\n // We keep one outstanding request open all the time to receive data, but if we need to send data\r\n // (pendingSegs.length > 0) then we create a new request to send the data. The server will automatically\r\n // close the old request.\r\n if (this.alive &&\r\n this.sendNewPolls &&\r\n this.outstandingRequests.size < (this.pendingSegs.length > 0 ? 2 : 1)) {\r\n //construct our url\r\n this.currentSerial++;\r\n const urlParams = {};\r\n urlParams[FIREBASE_LONGPOLL_ID_PARAM] = this.myID;\r\n urlParams[FIREBASE_LONGPOLL_PW_PARAM] = this.myPW;\r\n urlParams[FIREBASE_LONGPOLL_SERIAL_PARAM] = this.currentSerial;\r\n let theURL = this.urlFn(urlParams);\r\n //Now add as much data as we can.\r\n let curDataString = '';\r\n let i = 0;\r\n while (this.pendingSegs.length > 0) {\r\n //first, lets see if the next segment will fit.\r\n const nextSeg = this.pendingSegs[0];\r\n if (nextSeg.d.length +\r\n SEG_HEADER_SIZE +\r\n curDataString.length <=\r\n MAX_URL_DATA_SIZE) {\r\n //great, the segment will fit. Lets append it.\r\n const theSeg = this.pendingSegs.shift();\r\n curDataString =\r\n curDataString +\r\n '&' +\r\n FIREBASE_LONGPOLL_SEGMENT_NUM_PARAM +\r\n i +\r\n '=' +\r\n theSeg.seg +\r\n '&' +\r\n FIREBASE_LONGPOLL_SEGMENTS_IN_PACKET +\r\n i +\r\n '=' +\r\n theSeg.ts +\r\n '&' +\r\n FIREBASE_LONGPOLL_DATA_PARAM +\r\n i +\r\n '=' +\r\n theSeg.d;\r\n i++;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n theURL = theURL + curDataString;\r\n this.addLongPollTag_(theURL, this.currentSerial);\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n /**\r\n * Queue a packet for transmission to the server.\r\n * @param segnum - A sequential id for this packet segment used for reassembly\r\n * @param totalsegs - The total number of segments in this packet\r\n * @param data - The data for this segment.\r\n */\r\n enqueueSegment(segnum, totalsegs, data) {\r\n //add this to the queue of segments to send.\r\n this.pendingSegs.push({ seg: segnum, ts: totalsegs, d: data });\r\n //send the data immediately if there isn't already data being transmitted, unless\r\n //startLongPoll hasn't been called yet.\r\n if (this.alive) {\r\n this.newRequest_();\r\n }\r\n }\r\n /**\r\n * Add a script tag for a regular long-poll request.\r\n * @param url - The URL of the script tag.\r\n * @param serial - The serial number of the request.\r\n */\r\n addLongPollTag_(url, serial) {\r\n //remember that we sent this request.\r\n this.outstandingRequests.add(serial);\r\n const doNewRequest = () => {\r\n this.outstandingRequests.delete(serial);\r\n this.newRequest_();\r\n };\r\n // If this request doesn't return on its own accord (by the server sending us some data), we'll\r\n // create a new one after the KEEPALIVE interval to make sure we always keep a fresh request open.\r\n const keepaliveTimeout = setTimeout(doNewRequest, Math.floor(KEEPALIVE_REQUEST_INTERVAL));\r\n const readyStateCB = () => {\r\n // Request completed. Cancel the keepalive.\r\n clearTimeout(keepaliveTimeout);\r\n // Trigger a new request so we can continue receiving data.\r\n doNewRequest();\r\n };\r\n this.addTag(url, readyStateCB);\r\n }\r\n /**\r\n * Add an arbitrary script tag to the iframe.\r\n * @param url - The URL for the script tag source.\r\n * @param loadCB - A callback to be triggered once the script has loaded.\r\n */\r\n addTag(url, loadCB) {\r\n if (isNodeSdk()) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.doNodeLongPoll(url, loadCB);\r\n }\r\n else {\r\n setTimeout(() => {\r\n try {\r\n // if we're already closed, don't add this poll\r\n if (!this.sendNewPolls) {\r\n return;\r\n }\r\n const newScript = this.myIFrame.doc.createElement('script');\r\n newScript.type = 'text/javascript';\r\n newScript.async = true;\r\n newScript.src = url;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n newScript.onload = newScript.onreadystatechange =\r\n function () {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const rstate = newScript.readyState;\r\n if (!rstate || rstate === 'loaded' || rstate === 'complete') {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n newScript.onload = newScript.onreadystatechange = null;\r\n if (newScript.parentNode) {\r\n newScript.parentNode.removeChild(newScript);\r\n }\r\n loadCB();\r\n }\r\n };\r\n newScript.onerror = () => {\r\n log('Long-poll script failed to load: ' + url);\r\n this.sendNewPolls = false;\r\n this.close();\r\n };\r\n this.myIFrame.doc.body.appendChild(newScript);\r\n }\r\n catch (e) {\r\n // TODO: we should make this error visible somehow\r\n }\r\n }, Math.floor(1));\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst WEBSOCKET_MAX_FRAME_SIZE = 16384;\r\nconst WEBSOCKET_KEEPALIVE_INTERVAL = 45000;\r\nlet WebSocketImpl = null;\r\nif (typeof MozWebSocket !== 'undefined') {\r\n WebSocketImpl = MozWebSocket;\r\n}\r\nelse if (typeof WebSocket !== 'undefined') {\r\n WebSocketImpl = WebSocket;\r\n}\r\n/**\r\n * Create a new websocket connection with the given callbacks.\r\n */\r\nclass WebSocketConnection {\r\n /**\r\n * @param connId identifier for this transport\r\n * @param repoInfo The info for the websocket endpoint.\r\n * @param applicationId The Firebase App ID for this project.\r\n * @param appCheckToken The App Check Token for this client.\r\n * @param authToken The Auth Token for this client.\r\n * @param transportSessionId Optional transportSessionId if this is connecting\r\n * to an existing transport session\r\n * @param lastSessionId Optional lastSessionId if there was a previous\r\n * connection\r\n */\r\n constructor(connId, repoInfo, applicationId, appCheckToken, authToken, transportSessionId, lastSessionId) {\r\n this.connId = connId;\r\n this.applicationId = applicationId;\r\n this.appCheckToken = appCheckToken;\r\n this.authToken = authToken;\r\n this.keepaliveTimer = null;\r\n this.frames = null;\r\n this.totalFrames = 0;\r\n this.bytesSent = 0;\r\n this.bytesReceived = 0;\r\n this.log_ = logWrapper(this.connId);\r\n this.stats_ = statsManagerGetCollection(repoInfo);\r\n this.connURL = WebSocketConnection.connectionURL_(repoInfo, transportSessionId, lastSessionId, appCheckToken);\r\n this.nodeAdmin = repoInfo.nodeAdmin;\r\n }\r\n /**\r\n * @param repoInfo - The info for the websocket endpoint.\r\n * @param transportSessionId - Optional transportSessionId if this is connecting to an existing transport\r\n * session\r\n * @param lastSessionId - Optional lastSessionId if there was a previous connection\r\n * @returns connection url\r\n */\r\n static connectionURL_(repoInfo, transportSessionId, lastSessionId, appCheckToken) {\r\n const urlParams = {};\r\n urlParams[VERSION_PARAM] = PROTOCOL_VERSION;\r\n if (!isNodeSdk() &&\r\n typeof location !== 'undefined' &&\r\n location.hostname &&\r\n FORGE_DOMAIN_RE.test(location.hostname)) {\r\n urlParams[REFERER_PARAM] = FORGE_REF;\r\n }\r\n if (transportSessionId) {\r\n urlParams[TRANSPORT_SESSION_PARAM] = transportSessionId;\r\n }\r\n if (lastSessionId) {\r\n urlParams[LAST_SESSION_PARAM] = lastSessionId;\r\n }\r\n if (appCheckToken) {\r\n urlParams[APP_CHECK_TOKEN_PARAM] = appCheckToken;\r\n }\r\n return repoInfoConnectionURL(repoInfo, WEBSOCKET, urlParams);\r\n }\r\n /**\r\n * @param onMessage - Callback when messages arrive\r\n * @param onDisconnect - Callback with connection lost.\r\n */\r\n open(onMessage, onDisconnect) {\r\n this.onDisconnect = onDisconnect;\r\n this.onMessage = onMessage;\r\n this.log_('Websocket connecting to ' + this.connURL);\r\n this.everConnected_ = false;\r\n // Assume failure until proven otherwise.\r\n PersistentStorage.set('previous_websocket_failure', true);\r\n try {\r\n if (isNodeSdk()) {\r\n const device = this.nodeAdmin ? 'AdminNode' : 'Node';\r\n // UA Format: Firebase////\r\n const options = {\r\n headers: {\r\n 'User-Agent': `Firebase/${PROTOCOL_VERSION}/${SDK_VERSION}/${process.platform}/${device}`,\r\n 'X-Firebase-GMPID': this.applicationId || ''\r\n }\r\n };\r\n // If using Node with admin creds, AppCheck-related checks are unnecessary.\r\n // Note that we send the credentials here even if they aren't admin credentials, which is\r\n // not a problem.\r\n // Note that this header is just used to bypass appcheck, and the token should still be sent\r\n // through the websocket connection once it is established.\r\n if (this.authToken) {\r\n options.headers['Authorization'] = `Bearer ${this.authToken}`;\r\n }\r\n if (this.appCheckToken) {\r\n options.headers['X-Firebase-AppCheck'] = this.appCheckToken;\r\n }\r\n // Plumb appropriate http_proxy environment variable into faye-websocket if it exists.\r\n const env = process['env'];\r\n const proxy = this.connURL.indexOf('wss://') === 0\r\n ? env['HTTPS_PROXY'] || env['https_proxy']\r\n : env['HTTP_PROXY'] || env['http_proxy'];\r\n if (proxy) {\r\n options['proxy'] = { origin: proxy };\r\n }\r\n this.mySock = new WebSocketImpl(this.connURL, [], options);\r\n }\r\n else {\r\n const options = {\r\n headers: {\r\n 'X-Firebase-GMPID': this.applicationId || '',\r\n 'X-Firebase-AppCheck': this.appCheckToken || ''\r\n }\r\n };\r\n this.mySock = new WebSocketImpl(this.connURL, [], options);\r\n }\r\n }\r\n catch (e) {\r\n this.log_('Error instantiating WebSocket.');\r\n const error = e.message || e.data;\r\n if (error) {\r\n this.log_(error);\r\n }\r\n this.onClosed_();\r\n return;\r\n }\r\n this.mySock.onopen = () => {\r\n this.log_('Websocket connected.');\r\n this.everConnected_ = true;\r\n };\r\n this.mySock.onclose = () => {\r\n this.log_('Websocket connection was disconnected.');\r\n this.mySock = null;\r\n this.onClosed_();\r\n };\r\n this.mySock.onmessage = m => {\r\n this.handleIncomingFrame(m);\r\n };\r\n this.mySock.onerror = e => {\r\n this.log_('WebSocket error. Closing connection.');\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const error = e.message || e.data;\r\n if (error) {\r\n this.log_(error);\r\n }\r\n this.onClosed_();\r\n };\r\n }\r\n /**\r\n * No-op for websockets, we don't need to do anything once the connection is confirmed as open\r\n */\r\n start() { }\r\n static forceDisallow() {\r\n WebSocketConnection.forceDisallow_ = true;\r\n }\r\n static isAvailable() {\r\n let isOldAndroid = false;\r\n if (typeof navigator !== 'undefined' && navigator.userAgent) {\r\n const oldAndroidRegex = /Android ([0-9]{0,}\\.[0-9]{0,})/;\r\n const oldAndroidMatch = navigator.userAgent.match(oldAndroidRegex);\r\n if (oldAndroidMatch && oldAndroidMatch.length > 1) {\r\n if (parseFloat(oldAndroidMatch[1]) < 4.4) {\r\n isOldAndroid = true;\r\n }\r\n }\r\n }\r\n return (!isOldAndroid &&\r\n WebSocketImpl !== null &&\r\n !WebSocketConnection.forceDisallow_);\r\n }\r\n /**\r\n * Returns true if we previously failed to connect with this transport.\r\n */\r\n static previouslyFailed() {\r\n // If our persistent storage is actually only in-memory storage,\r\n // we default to assuming that it previously failed to be safe.\r\n return (PersistentStorage.isInMemoryStorage ||\r\n PersistentStorage.get('previous_websocket_failure') === true);\r\n }\r\n markConnectionHealthy() {\r\n PersistentStorage.remove('previous_websocket_failure');\r\n }\r\n appendFrame_(data) {\r\n this.frames.push(data);\r\n if (this.frames.length === this.totalFrames) {\r\n const fullMess = this.frames.join('');\r\n this.frames = null;\r\n const jsonMess = jsonEval(fullMess);\r\n //handle the message\r\n this.onMessage(jsonMess);\r\n }\r\n }\r\n /**\r\n * @param frameCount - The number of frames we are expecting from the server\r\n */\r\n handleNewFrameCount_(frameCount) {\r\n this.totalFrames = frameCount;\r\n this.frames = [];\r\n }\r\n /**\r\n * Attempts to parse a frame count out of some text. If it can't, assumes a value of 1\r\n * @returns Any remaining data to be process, or null if there is none\r\n */\r\n extractFrameCount_(data) {\r\n assert(this.frames === null, 'We already have a frame buffer');\r\n // TODO: The server is only supposed to send up to 9999 frames (i.e. length <= 4), but that isn't being enforced\r\n // currently. So allowing larger frame counts (length <= 6). See https://app.asana.com/0/search/8688598998380/8237608042508\r\n if (data.length <= 6) {\r\n const frameCount = Number(data);\r\n if (!isNaN(frameCount)) {\r\n this.handleNewFrameCount_(frameCount);\r\n return null;\r\n }\r\n }\r\n this.handleNewFrameCount_(1);\r\n return data;\r\n }\r\n /**\r\n * Process a websocket frame that has arrived from the server.\r\n * @param mess - The frame data\r\n */\r\n handleIncomingFrame(mess) {\r\n if (this.mySock === null) {\r\n return; // Chrome apparently delivers incoming packets even after we .close() the connection sometimes.\r\n }\r\n const data = mess['data'];\r\n this.bytesReceived += data.length;\r\n this.stats_.incrementCounter('bytes_received', data.length);\r\n this.resetKeepAlive();\r\n if (this.frames !== null) {\r\n // we're buffering\r\n this.appendFrame_(data);\r\n }\r\n else {\r\n // try to parse out a frame count, otherwise, assume 1 and process it\r\n const remainingData = this.extractFrameCount_(data);\r\n if (remainingData !== null) {\r\n this.appendFrame_(remainingData);\r\n }\r\n }\r\n }\r\n /**\r\n * Send a message to the server\r\n * @param data - The JSON object to transmit\r\n */\r\n send(data) {\r\n this.resetKeepAlive();\r\n const dataStr = stringify(data);\r\n this.bytesSent += dataStr.length;\r\n this.stats_.incrementCounter('bytes_sent', dataStr.length);\r\n //We can only fit a certain amount in each websocket frame, so we need to split this request\r\n //up into multiple pieces if it doesn't fit in one request.\r\n const dataSegs = splitStringBySize(dataStr, WEBSOCKET_MAX_FRAME_SIZE);\r\n //Send the length header\r\n if (dataSegs.length > 1) {\r\n this.sendString_(String(dataSegs.length));\r\n }\r\n //Send the actual data in segments.\r\n for (let i = 0; i < dataSegs.length; i++) {\r\n this.sendString_(dataSegs[i]);\r\n }\r\n }\r\n shutdown_() {\r\n this.isClosed_ = true;\r\n if (this.keepaliveTimer) {\r\n clearInterval(this.keepaliveTimer);\r\n this.keepaliveTimer = null;\r\n }\r\n if (this.mySock) {\r\n this.mySock.close();\r\n this.mySock = null;\r\n }\r\n }\r\n onClosed_() {\r\n if (!this.isClosed_) {\r\n this.log_('WebSocket is closing itself');\r\n this.shutdown_();\r\n // since this is an internal close, trigger the close listener\r\n if (this.onDisconnect) {\r\n this.onDisconnect(this.everConnected_);\r\n this.onDisconnect = null;\r\n }\r\n }\r\n }\r\n /**\r\n * External-facing close handler.\r\n * Close the websocket and kill the connection.\r\n */\r\n close() {\r\n if (!this.isClosed_) {\r\n this.log_('WebSocket is being closed');\r\n this.shutdown_();\r\n }\r\n }\r\n /**\r\n * Kill the current keepalive timer and start a new one, to ensure that it always fires N seconds after\r\n * the last activity.\r\n */\r\n resetKeepAlive() {\r\n clearInterval(this.keepaliveTimer);\r\n this.keepaliveTimer = setInterval(() => {\r\n //If there has been no websocket activity for a while, send a no-op\r\n if (this.mySock) {\r\n this.sendString_('0');\r\n }\r\n this.resetKeepAlive();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n }, Math.floor(WEBSOCKET_KEEPALIVE_INTERVAL));\r\n }\r\n /**\r\n * Send a string over the websocket.\r\n *\r\n * @param str - String to send.\r\n */\r\n sendString_(str) {\r\n // Firefox seems to sometimes throw exceptions (NS_ERROR_UNEXPECTED) from websocket .send()\r\n // calls for some unknown reason. We treat these as an error and disconnect.\r\n // See https://app.asana.com/0/58926111402292/68021340250410\r\n try {\r\n this.mySock.send(str);\r\n }\r\n catch (e) {\r\n this.log_('Exception thrown from WebSocket.send():', e.message || e.data, 'Closing connection.');\r\n setTimeout(this.onClosed_.bind(this), 0);\r\n }\r\n }\r\n}\r\n/**\r\n * Number of response before we consider the connection \"healthy.\"\r\n */\r\nWebSocketConnection.responsesRequiredToBeHealthy = 2;\r\n/**\r\n * Time to wait for the connection te become healthy before giving up.\r\n */\r\nWebSocketConnection.healthyTimeout = 30000;\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Currently simplistic, this class manages what transport a Connection should use at various stages of its\r\n * lifecycle.\r\n *\r\n * It starts with longpolling in a browser, and httppolling on node. It then upgrades to websockets if\r\n * they are available.\r\n */\r\nclass TransportManager {\r\n /**\r\n * @param repoInfo - Metadata around the namespace we're connecting to\r\n */\r\n constructor(repoInfo) {\r\n this.initTransports_(repoInfo);\r\n }\r\n static get ALL_TRANSPORTS() {\r\n return [BrowserPollConnection, WebSocketConnection];\r\n }\r\n initTransports_(repoInfo) {\r\n const isWebSocketsAvailable = WebSocketConnection && WebSocketConnection['isAvailable']();\r\n let isSkipPollConnection = isWebSocketsAvailable && !WebSocketConnection.previouslyFailed();\r\n if (repoInfo.webSocketOnly) {\r\n if (!isWebSocketsAvailable) {\r\n warn(\"wss:// URL used, but browser isn't known to support websockets. Trying anyway.\");\r\n }\r\n isSkipPollConnection = true;\r\n }\r\n if (isSkipPollConnection) {\r\n this.transports_ = [WebSocketConnection];\r\n }\r\n else {\r\n const transports = (this.transports_ = []);\r\n for (const transport of TransportManager.ALL_TRANSPORTS) {\r\n if (transport && transport['isAvailable']()) {\r\n transports.push(transport);\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * @returns The constructor for the initial transport to use\r\n */\r\n initialTransport() {\r\n if (this.transports_.length > 0) {\r\n return this.transports_[0];\r\n }\r\n else {\r\n throw new Error('No transports available');\r\n }\r\n }\r\n /**\r\n * @returns The constructor for the next transport, or null\r\n */\r\n upgradeTransport() {\r\n if (this.transports_.length > 1) {\r\n return this.transports_[1];\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Abort upgrade attempt if it takes longer than 60s.\r\nconst UPGRADE_TIMEOUT = 60000;\r\n// For some transports (WebSockets), we need to \"validate\" the transport by exchanging a few requests and responses.\r\n// If we haven't sent enough requests within 5s, we'll start sending noop ping requests.\r\nconst DELAY_BEFORE_SENDING_EXTRA_REQUESTS = 5000;\r\n// If the initial data sent triggers a lot of bandwidth (i.e. it's a large put or a listen for a large amount of data)\r\n// then we may not be able to exchange our ping/pong requests within the healthy timeout. So if we reach the timeout\r\n// but we've sent/received enough bytes, we don't cancel the connection.\r\nconst BYTES_SENT_HEALTHY_OVERRIDE = 10 * 1024;\r\nconst BYTES_RECEIVED_HEALTHY_OVERRIDE = 100 * 1024;\r\nconst MESSAGE_TYPE = 't';\r\nconst MESSAGE_DATA = 'd';\r\nconst CONTROL_SHUTDOWN = 's';\r\nconst CONTROL_RESET = 'r';\r\nconst CONTROL_ERROR = 'e';\r\nconst CONTROL_PONG = 'o';\r\nconst SWITCH_ACK = 'a';\r\nconst END_TRANSMISSION = 'n';\r\nconst PING = 'p';\r\nconst SERVER_HELLO = 'h';\r\n/**\r\n * Creates a new real-time connection to the server using whichever method works\r\n * best in the current browser.\r\n */\r\nclass Connection {\r\n /**\r\n * @param id - an id for this connection\r\n * @param repoInfo_ - the info for the endpoint to connect to\r\n * @param applicationId_ - the Firebase App ID for this project\r\n * @param appCheckToken_ - The App Check Token for this device.\r\n * @param authToken_ - The auth token for this session.\r\n * @param onMessage_ - the callback to be triggered when a server-push message arrives\r\n * @param onReady_ - the callback to be triggered when this connection is ready to send messages.\r\n * @param onDisconnect_ - the callback to be triggered when a connection was lost\r\n * @param onKill_ - the callback to be triggered when this connection has permanently shut down.\r\n * @param lastSessionId - last session id in persistent connection. is used to clean up old session in real-time server\r\n */\r\n constructor(id, repoInfo_, applicationId_, appCheckToken_, authToken_, onMessage_, onReady_, onDisconnect_, onKill_, lastSessionId) {\r\n this.id = id;\r\n this.repoInfo_ = repoInfo_;\r\n this.applicationId_ = applicationId_;\r\n this.appCheckToken_ = appCheckToken_;\r\n this.authToken_ = authToken_;\r\n this.onMessage_ = onMessage_;\r\n this.onReady_ = onReady_;\r\n this.onDisconnect_ = onDisconnect_;\r\n this.onKill_ = onKill_;\r\n this.lastSessionId = lastSessionId;\r\n this.connectionCount = 0;\r\n this.pendingDataMessages = [];\r\n this.state_ = 0 /* CONNECTING */;\r\n this.log_ = logWrapper('c:' + this.id + ':');\r\n this.transportManager_ = new TransportManager(repoInfo_);\r\n this.log_('Connection created');\r\n this.start_();\r\n }\r\n /**\r\n * Starts a connection attempt\r\n */\r\n start_() {\r\n const conn = this.transportManager_.initialTransport();\r\n this.conn_ = new conn(this.nextTransportId_(), this.repoInfo_, this.applicationId_, this.appCheckToken_, this.authToken_, null, this.lastSessionId);\r\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\r\n // can consider the transport healthy.\r\n this.primaryResponsesRequired_ = conn['responsesRequiredToBeHealthy'] || 0;\r\n const onMessageReceived = this.connReceiver_(this.conn_);\r\n const onConnectionLost = this.disconnReceiver_(this.conn_);\r\n this.tx_ = this.conn_;\r\n this.rx_ = this.conn_;\r\n this.secondaryConn_ = null;\r\n this.isHealthy_ = false;\r\n /*\r\n * Firefox doesn't like when code from one iframe tries to create another iframe by way of the parent frame.\r\n * This can occur in the case of a redirect, i.e. we guessed wrong on what server to connect to and received a reset.\r\n * Somehow, setTimeout seems to make this ok. That doesn't make sense from a security perspective, since you should\r\n * still have the context of your originating frame.\r\n */\r\n setTimeout(() => {\r\n // this.conn_ gets set to null in some of the tests. Check to make sure it still exists before using it\r\n this.conn_ && this.conn_.open(onMessageReceived, onConnectionLost);\r\n }, Math.floor(0));\r\n const healthyTimeoutMS = conn['healthyTimeout'] || 0;\r\n if (healthyTimeoutMS > 0) {\r\n this.healthyTimeout_ = setTimeoutNonBlocking(() => {\r\n this.healthyTimeout_ = null;\r\n if (!this.isHealthy_) {\r\n if (this.conn_ &&\r\n this.conn_.bytesReceived > BYTES_RECEIVED_HEALTHY_OVERRIDE) {\r\n this.log_('Connection exceeded healthy timeout but has received ' +\r\n this.conn_.bytesReceived +\r\n ' bytes. Marking connection healthy.');\r\n this.isHealthy_ = true;\r\n this.conn_.markConnectionHealthy();\r\n }\r\n else if (this.conn_ &&\r\n this.conn_.bytesSent > BYTES_SENT_HEALTHY_OVERRIDE) {\r\n this.log_('Connection exceeded healthy timeout but has sent ' +\r\n this.conn_.bytesSent +\r\n ' bytes. Leaving connection alive.');\r\n // NOTE: We don't want to mark it healthy, since we have no guarantee that the bytes have made it to\r\n // the server.\r\n }\r\n else {\r\n this.log_('Closing unhealthy connection after timeout.');\r\n this.close();\r\n }\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n }, Math.floor(healthyTimeoutMS));\r\n }\r\n }\r\n nextTransportId_() {\r\n return 'c:' + this.id + ':' + this.connectionCount++;\r\n }\r\n disconnReceiver_(conn) {\r\n return everConnected => {\r\n if (conn === this.conn_) {\r\n this.onConnectionLost_(everConnected);\r\n }\r\n else if (conn === this.secondaryConn_) {\r\n this.log_('Secondary connection lost.');\r\n this.onSecondaryConnectionLost_();\r\n }\r\n else {\r\n this.log_('closing an old connection');\r\n }\r\n };\r\n }\r\n connReceiver_(conn) {\r\n return (message) => {\r\n if (this.state_ !== 2 /* DISCONNECTED */) {\r\n if (conn === this.rx_) {\r\n this.onPrimaryMessageReceived_(message);\r\n }\r\n else if (conn === this.secondaryConn_) {\r\n this.onSecondaryMessageReceived_(message);\r\n }\r\n else {\r\n this.log_('message on old connection');\r\n }\r\n }\r\n };\r\n }\r\n /**\r\n * @param dataMsg - An arbitrary data message to be sent to the server\r\n */\r\n sendRequest(dataMsg) {\r\n // wrap in a data message envelope and send it on\r\n const msg = { t: 'd', d: dataMsg };\r\n this.sendData_(msg);\r\n }\r\n tryCleanupConnection() {\r\n if (this.tx_ === this.secondaryConn_ && this.rx_ === this.secondaryConn_) {\r\n this.log_('cleaning up and promoting a connection: ' + this.secondaryConn_.connId);\r\n this.conn_ = this.secondaryConn_;\r\n this.secondaryConn_ = null;\r\n // the server will shutdown the old connection\r\n }\r\n }\r\n onSecondaryControl_(controlData) {\r\n if (MESSAGE_TYPE in controlData) {\r\n const cmd = controlData[MESSAGE_TYPE];\r\n if (cmd === SWITCH_ACK) {\r\n this.upgradeIfSecondaryHealthy_();\r\n }\r\n else if (cmd === CONTROL_RESET) {\r\n // Most likely the session wasn't valid. Abandon the switch attempt\r\n this.log_('Got a reset on secondary, closing it');\r\n this.secondaryConn_.close();\r\n // If we were already using this connection for something, than we need to fully close\r\n if (this.tx_ === this.secondaryConn_ ||\r\n this.rx_ === this.secondaryConn_) {\r\n this.close();\r\n }\r\n }\r\n else if (cmd === CONTROL_PONG) {\r\n this.log_('got pong on secondary.');\r\n this.secondaryResponsesRequired_--;\r\n this.upgradeIfSecondaryHealthy_();\r\n }\r\n }\r\n }\r\n onSecondaryMessageReceived_(parsedData) {\r\n const layer = requireKey('t', parsedData);\r\n const data = requireKey('d', parsedData);\r\n if (layer === 'c') {\r\n this.onSecondaryControl_(data);\r\n }\r\n else if (layer === 'd') {\r\n // got a data message, but we're still second connection. Need to buffer it up\r\n this.pendingDataMessages.push(data);\r\n }\r\n else {\r\n throw new Error('Unknown protocol layer: ' + layer);\r\n }\r\n }\r\n upgradeIfSecondaryHealthy_() {\r\n if (this.secondaryResponsesRequired_ <= 0) {\r\n this.log_('Secondary connection is healthy.');\r\n this.isHealthy_ = true;\r\n this.secondaryConn_.markConnectionHealthy();\r\n this.proceedWithUpgrade_();\r\n }\r\n else {\r\n // Send a ping to make sure the connection is healthy.\r\n this.log_('sending ping on secondary.');\r\n this.secondaryConn_.send({ t: 'c', d: { t: PING, d: {} } });\r\n }\r\n }\r\n proceedWithUpgrade_() {\r\n // tell this connection to consider itself open\r\n this.secondaryConn_.start();\r\n // send ack\r\n this.log_('sending client ack on secondary');\r\n this.secondaryConn_.send({ t: 'c', d: { t: SWITCH_ACK, d: {} } });\r\n // send end packet on primary transport, switch to sending on this one\r\n // can receive on this one, buffer responses until end received on primary transport\r\n this.log_('Ending transmission on primary');\r\n this.conn_.send({ t: 'c', d: { t: END_TRANSMISSION, d: {} } });\r\n this.tx_ = this.secondaryConn_;\r\n this.tryCleanupConnection();\r\n }\r\n onPrimaryMessageReceived_(parsedData) {\r\n // Must refer to parsedData properties in quotes, so closure doesn't touch them.\r\n const layer = requireKey('t', parsedData);\r\n const data = requireKey('d', parsedData);\r\n if (layer === 'c') {\r\n this.onControl_(data);\r\n }\r\n else if (layer === 'd') {\r\n this.onDataMessage_(data);\r\n }\r\n }\r\n onDataMessage_(message) {\r\n this.onPrimaryResponse_();\r\n // We don't do anything with data messages, just kick them up a level\r\n this.onMessage_(message);\r\n }\r\n onPrimaryResponse_() {\r\n if (!this.isHealthy_) {\r\n this.primaryResponsesRequired_--;\r\n if (this.primaryResponsesRequired_ <= 0) {\r\n this.log_('Primary connection is healthy.');\r\n this.isHealthy_ = true;\r\n this.conn_.markConnectionHealthy();\r\n }\r\n }\r\n }\r\n onControl_(controlData) {\r\n const cmd = requireKey(MESSAGE_TYPE, controlData);\r\n if (MESSAGE_DATA in controlData) {\r\n const payload = controlData[MESSAGE_DATA];\r\n if (cmd === SERVER_HELLO) {\r\n this.onHandshake_(payload);\r\n }\r\n else if (cmd === END_TRANSMISSION) {\r\n this.log_('recvd end transmission on primary');\r\n this.rx_ = this.secondaryConn_;\r\n for (let i = 0; i < this.pendingDataMessages.length; ++i) {\r\n this.onDataMessage_(this.pendingDataMessages[i]);\r\n }\r\n this.pendingDataMessages = [];\r\n this.tryCleanupConnection();\r\n }\r\n else if (cmd === CONTROL_SHUTDOWN) {\r\n // This was previously the 'onKill' callback passed to the lower-level connection\r\n // payload in this case is the reason for the shutdown. Generally a human-readable error\r\n this.onConnectionShutdown_(payload);\r\n }\r\n else if (cmd === CONTROL_RESET) {\r\n // payload in this case is the host we should contact\r\n this.onReset_(payload);\r\n }\r\n else if (cmd === CONTROL_ERROR) {\r\n error('Server Error: ' + payload);\r\n }\r\n else if (cmd === CONTROL_PONG) {\r\n this.log_('got pong on primary.');\r\n this.onPrimaryResponse_();\r\n this.sendPingOnPrimaryIfNecessary_();\r\n }\r\n else {\r\n error('Unknown control packet command: ' + cmd);\r\n }\r\n }\r\n }\r\n /**\r\n * @param handshake - The handshake data returned from the server\r\n */\r\n onHandshake_(handshake) {\r\n const timestamp = handshake.ts;\r\n const version = handshake.v;\r\n const host = handshake.h;\r\n this.sessionId = handshake.s;\r\n this.repoInfo_.host = host;\r\n // if we've already closed the connection, then don't bother trying to progress further\r\n if (this.state_ === 0 /* CONNECTING */) {\r\n this.conn_.start();\r\n this.onConnectionEstablished_(this.conn_, timestamp);\r\n if (PROTOCOL_VERSION !== version) {\r\n warn('Protocol version mismatch detected');\r\n }\r\n // TODO: do we want to upgrade? when? maybe a delay?\r\n this.tryStartUpgrade_();\r\n }\r\n }\r\n tryStartUpgrade_() {\r\n const conn = this.transportManager_.upgradeTransport();\r\n if (conn) {\r\n this.startUpgrade_(conn);\r\n }\r\n }\r\n startUpgrade_(conn) {\r\n this.secondaryConn_ = new conn(this.nextTransportId_(), this.repoInfo_, this.applicationId_, this.appCheckToken_, this.authToken_, this.sessionId);\r\n // For certain transports (WebSockets), we need to send and receive several messages back and forth before we\r\n // can consider the transport healthy.\r\n this.secondaryResponsesRequired_ =\r\n conn['responsesRequiredToBeHealthy'] || 0;\r\n const onMessage = this.connReceiver_(this.secondaryConn_);\r\n const onDisconnect = this.disconnReceiver_(this.secondaryConn_);\r\n this.secondaryConn_.open(onMessage, onDisconnect);\r\n // If we haven't successfully upgraded after UPGRADE_TIMEOUT, give up and kill the secondary.\r\n setTimeoutNonBlocking(() => {\r\n if (this.secondaryConn_) {\r\n this.log_('Timed out trying to upgrade.');\r\n this.secondaryConn_.close();\r\n }\r\n }, Math.floor(UPGRADE_TIMEOUT));\r\n }\r\n onReset_(host) {\r\n this.log_('Reset packet received. New host: ' + host);\r\n this.repoInfo_.host = host;\r\n // TODO: if we're already \"connected\", we need to trigger a disconnect at the next layer up.\r\n // We don't currently support resets after the connection has already been established\r\n if (this.state_ === 1 /* CONNECTED */) {\r\n this.close();\r\n }\r\n else {\r\n // Close whatever connections we have open and start again.\r\n this.closeConnections_();\r\n this.start_();\r\n }\r\n }\r\n onConnectionEstablished_(conn, timestamp) {\r\n this.log_('Realtime connection established.');\r\n this.conn_ = conn;\r\n this.state_ = 1 /* CONNECTED */;\r\n if (this.onReady_) {\r\n this.onReady_(timestamp, this.sessionId);\r\n this.onReady_ = null;\r\n }\r\n // If after 5 seconds we haven't sent enough requests to the server to get the connection healthy,\r\n // send some pings.\r\n if (this.primaryResponsesRequired_ === 0) {\r\n this.log_('Primary connection is healthy.');\r\n this.isHealthy_ = true;\r\n }\r\n else {\r\n setTimeoutNonBlocking(() => {\r\n this.sendPingOnPrimaryIfNecessary_();\r\n }, Math.floor(DELAY_BEFORE_SENDING_EXTRA_REQUESTS));\r\n }\r\n }\r\n sendPingOnPrimaryIfNecessary_() {\r\n // If the connection isn't considered healthy yet, we'll send a noop ping packet request.\r\n if (!this.isHealthy_ && this.state_ === 1 /* CONNECTED */) {\r\n this.log_('sending ping on primary.');\r\n this.sendData_({ t: 'c', d: { t: PING, d: {} } });\r\n }\r\n }\r\n onSecondaryConnectionLost_() {\r\n const conn = this.secondaryConn_;\r\n this.secondaryConn_ = null;\r\n if (this.tx_ === conn || this.rx_ === conn) {\r\n // we are relying on this connection already in some capacity. Therefore, a failure is real\r\n this.close();\r\n }\r\n }\r\n /**\r\n * @param everConnected - Whether or not the connection ever reached a server. Used to determine if\r\n * we should flush the host cache\r\n */\r\n onConnectionLost_(everConnected) {\r\n this.conn_ = null;\r\n // NOTE: IF you're seeing a Firefox error for this line, I think it might be because it's getting\r\n // called on window close and RealtimeState.CONNECTING is no longer defined. Just a guess.\r\n if (!everConnected && this.state_ === 0 /* CONNECTING */) {\r\n this.log_('Realtime connection failed.');\r\n // Since we failed to connect at all, clear any cached entry for this namespace in case the machine went away\r\n if (this.repoInfo_.isCacheableHost()) {\r\n PersistentStorage.remove('host:' + this.repoInfo_.host);\r\n // reset the internal host to what we would show the user, i.e. .firebaseio.com\r\n this.repoInfo_.internalHost = this.repoInfo_.host;\r\n }\r\n }\r\n else if (this.state_ === 1 /* CONNECTED */) {\r\n this.log_('Realtime connection lost.');\r\n }\r\n this.close();\r\n }\r\n onConnectionShutdown_(reason) {\r\n this.log_('Connection shutdown command received. Shutting down...');\r\n if (this.onKill_) {\r\n this.onKill_(reason);\r\n this.onKill_ = null;\r\n }\r\n // We intentionally don't want to fire onDisconnect (kill is a different case),\r\n // so clear the callback.\r\n this.onDisconnect_ = null;\r\n this.close();\r\n }\r\n sendData_(data) {\r\n if (this.state_ !== 1 /* CONNECTED */) {\r\n throw 'Connection is not connected';\r\n }\r\n else {\r\n this.tx_.send(data);\r\n }\r\n }\r\n /**\r\n * Cleans up this connection, calling the appropriate callbacks\r\n */\r\n close() {\r\n if (this.state_ !== 2 /* DISCONNECTED */) {\r\n this.log_('Closing realtime connection.');\r\n this.state_ = 2 /* DISCONNECTED */;\r\n this.closeConnections_();\r\n if (this.onDisconnect_) {\r\n this.onDisconnect_();\r\n this.onDisconnect_ = null;\r\n }\r\n }\r\n }\r\n closeConnections_() {\r\n this.log_('Shutting down all connections');\r\n if (this.conn_) {\r\n this.conn_.close();\r\n this.conn_ = null;\r\n }\r\n if (this.secondaryConn_) {\r\n this.secondaryConn_.close();\r\n this.secondaryConn_ = null;\r\n }\r\n if (this.healthyTimeout_) {\r\n clearTimeout(this.healthyTimeout_);\r\n this.healthyTimeout_ = null;\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Interface defining the set of actions that can be performed against the Firebase server\r\n * (basically corresponds to our wire protocol).\r\n *\r\n * @interface\r\n */\r\nclass ServerActions {\r\n put(pathString, data, onComplete, hash) { }\r\n merge(pathString, data, onComplete, hash) { }\r\n /**\r\n * Refreshes the auth token for the current connection.\r\n * @param token - The authentication token\r\n */\r\n refreshAuthToken(token) { }\r\n /**\r\n * Refreshes the app check token for the current connection.\r\n * @param token The app check token\r\n */\r\n refreshAppCheckToken(token) { }\r\n onDisconnectPut(pathString, data, onComplete) { }\r\n onDisconnectMerge(pathString, data, onComplete) { }\r\n onDisconnectCancel(pathString, onComplete) { }\r\n reportStats(stats) { }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Base class to be used if you want to emit events. Call the constructor with\r\n * the set of allowed event names.\r\n */\r\nclass EventEmitter {\r\n constructor(allowedEvents_) {\r\n this.allowedEvents_ = allowedEvents_;\r\n this.listeners_ = {};\r\n assert(Array.isArray(allowedEvents_) && allowedEvents_.length > 0, 'Requires a non-empty array');\r\n }\r\n /**\r\n * To be called by derived classes to trigger events.\r\n */\r\n trigger(eventType, ...varArgs) {\r\n if (Array.isArray(this.listeners_[eventType])) {\r\n // Clone the list, since callbacks could add/remove listeners.\r\n const listeners = [...this.listeners_[eventType]];\r\n for (let i = 0; i < listeners.length; i++) {\r\n listeners[i].callback.apply(listeners[i].context, varArgs);\r\n }\r\n }\r\n }\r\n on(eventType, callback, context) {\r\n this.validateEventType_(eventType);\r\n this.listeners_[eventType] = this.listeners_[eventType] || [];\r\n this.listeners_[eventType].push({ callback, context });\r\n const eventData = this.getInitialEvent(eventType);\r\n if (eventData) {\r\n callback.apply(context, eventData);\r\n }\r\n }\r\n off(eventType, callback, context) {\r\n this.validateEventType_(eventType);\r\n const listeners = this.listeners_[eventType] || [];\r\n for (let i = 0; i < listeners.length; i++) {\r\n if (listeners[i].callback === callback &&\r\n (!context || context === listeners[i].context)) {\r\n listeners.splice(i, 1);\r\n return;\r\n }\r\n }\r\n }\r\n validateEventType_(eventType) {\r\n assert(this.allowedEvents_.find(et => {\r\n return et === eventType;\r\n }), 'Unknown event: ' + eventType);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Monitors online state (as reported by window.online/offline events).\r\n *\r\n * The expectation is that this could have many false positives (thinks we are online\r\n * when we're not), but no false negatives. So we can safely use it to determine when\r\n * we definitely cannot reach the internet.\r\n */\r\nclass OnlineMonitor extends EventEmitter {\r\n constructor() {\r\n super(['online']);\r\n this.online_ = true;\r\n // We've had repeated complaints that Cordova apps can get stuck \"offline\", e.g.\r\n // https://forum.ionicframework.com/t/firebase-connection-is-lost-and-never-come-back/43810\r\n // It would seem that the 'online' event does not always fire consistently. So we disable it\r\n // for Cordova.\r\n if (typeof window !== 'undefined' &&\r\n typeof window.addEventListener !== 'undefined' &&\r\n !isMobileCordova()) {\r\n window.addEventListener('online', () => {\r\n if (!this.online_) {\r\n this.online_ = true;\r\n this.trigger('online', true);\r\n }\r\n }, false);\r\n window.addEventListener('offline', () => {\r\n if (this.online_) {\r\n this.online_ = false;\r\n this.trigger('online', false);\r\n }\r\n }, false);\r\n }\r\n }\r\n static getInstance() {\r\n return new OnlineMonitor();\r\n }\r\n getInitialEvent(eventType) {\r\n assert(eventType === 'online', 'Unknown event type: ' + eventType);\r\n return [this.online_];\r\n }\r\n currentlyOnline() {\r\n return this.online_;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Maximum key depth. */\r\nconst MAX_PATH_DEPTH = 32;\r\n/** Maximum number of (UTF8) bytes in a Firebase path. */\r\nconst MAX_PATH_LENGTH_BYTES = 768;\r\n/**\r\n * An immutable object representing a parsed path. It's immutable so that you\r\n * can pass them around to other functions without worrying about them changing\r\n * it.\r\n */\r\nclass Path {\r\n /**\r\n * @param pathOrString - Path string to parse, or another path, or the raw\r\n * tokens array\r\n */\r\n constructor(pathOrString, pieceNum) {\r\n if (pieceNum === void 0) {\r\n this.pieces_ = pathOrString.split('/');\r\n // Remove empty pieces.\r\n let copyTo = 0;\r\n for (let i = 0; i < this.pieces_.length; i++) {\r\n if (this.pieces_[i].length > 0) {\r\n this.pieces_[copyTo] = this.pieces_[i];\r\n copyTo++;\r\n }\r\n }\r\n this.pieces_.length = copyTo;\r\n this.pieceNum_ = 0;\r\n }\r\n else {\r\n this.pieces_ = pathOrString;\r\n this.pieceNum_ = pieceNum;\r\n }\r\n }\r\n toString() {\r\n let pathString = '';\r\n for (let i = this.pieceNum_; i < this.pieces_.length; i++) {\r\n if (this.pieces_[i] !== '') {\r\n pathString += '/' + this.pieces_[i];\r\n }\r\n }\r\n return pathString || '/';\r\n }\r\n}\r\nfunction newEmptyPath() {\r\n return new Path('');\r\n}\r\nfunction pathGetFront(path) {\r\n if (path.pieceNum_ >= path.pieces_.length) {\r\n return null;\r\n }\r\n return path.pieces_[path.pieceNum_];\r\n}\r\n/**\r\n * @returns The number of segments in this path\r\n */\r\nfunction pathGetLength(path) {\r\n return path.pieces_.length - path.pieceNum_;\r\n}\r\nfunction pathPopFront(path) {\r\n let pieceNum = path.pieceNum_;\r\n if (pieceNum < path.pieces_.length) {\r\n pieceNum++;\r\n }\r\n return new Path(path.pieces_, pieceNum);\r\n}\r\nfunction pathGetBack(path) {\r\n if (path.pieceNum_ < path.pieces_.length) {\r\n return path.pieces_[path.pieces_.length - 1];\r\n }\r\n return null;\r\n}\r\nfunction pathToUrlEncodedString(path) {\r\n let pathString = '';\r\n for (let i = path.pieceNum_; i < path.pieces_.length; i++) {\r\n if (path.pieces_[i] !== '') {\r\n pathString += '/' + encodeURIComponent(String(path.pieces_[i]));\r\n }\r\n }\r\n return pathString || '/';\r\n}\r\n/**\r\n * Shallow copy of the parts of the path.\r\n *\r\n */\r\nfunction pathSlice(path, begin = 0) {\r\n return path.pieces_.slice(path.pieceNum_ + begin);\r\n}\r\nfunction pathParent(path) {\r\n if (path.pieceNum_ >= path.pieces_.length) {\r\n return null;\r\n }\r\n const pieces = [];\r\n for (let i = path.pieceNum_; i < path.pieces_.length - 1; i++) {\r\n pieces.push(path.pieces_[i]);\r\n }\r\n return new Path(pieces, 0);\r\n}\r\nfunction pathChild(path, childPathObj) {\r\n const pieces = [];\r\n for (let i = path.pieceNum_; i < path.pieces_.length; i++) {\r\n pieces.push(path.pieces_[i]);\r\n }\r\n if (childPathObj instanceof Path) {\r\n for (let i = childPathObj.pieceNum_; i < childPathObj.pieces_.length; i++) {\r\n pieces.push(childPathObj.pieces_[i]);\r\n }\r\n }\r\n else {\r\n const childPieces = childPathObj.split('/');\r\n for (let i = 0; i < childPieces.length; i++) {\r\n if (childPieces[i].length > 0) {\r\n pieces.push(childPieces[i]);\r\n }\r\n }\r\n }\r\n return new Path(pieces, 0);\r\n}\r\n/**\r\n * @returns True if there are no segments in this path\r\n */\r\nfunction pathIsEmpty(path) {\r\n return path.pieceNum_ >= path.pieces_.length;\r\n}\r\n/**\r\n * @returns The path from outerPath to innerPath\r\n */\r\nfunction newRelativePath(outerPath, innerPath) {\r\n const outer = pathGetFront(outerPath), inner = pathGetFront(innerPath);\r\n if (outer === null) {\r\n return innerPath;\r\n }\r\n else if (outer === inner) {\r\n return newRelativePath(pathPopFront(outerPath), pathPopFront(innerPath));\r\n }\r\n else {\r\n throw new Error('INTERNAL ERROR: innerPath (' +\r\n innerPath +\r\n ') is not within ' +\r\n 'outerPath (' +\r\n outerPath +\r\n ')');\r\n }\r\n}\r\n/**\r\n * @returns -1, 0, 1 if left is less, equal, or greater than the right.\r\n */\r\nfunction pathCompare(left, right) {\r\n const leftKeys = pathSlice(left, 0);\r\n const rightKeys = pathSlice(right, 0);\r\n for (let i = 0; i < leftKeys.length && i < rightKeys.length; i++) {\r\n const cmp = nameCompare(leftKeys[i], rightKeys[i]);\r\n if (cmp !== 0) {\r\n return cmp;\r\n }\r\n }\r\n if (leftKeys.length === rightKeys.length) {\r\n return 0;\r\n }\r\n return leftKeys.length < rightKeys.length ? -1 : 1;\r\n}\r\n/**\r\n * @returns true if paths are the same.\r\n */\r\nfunction pathEquals(path, other) {\r\n if (pathGetLength(path) !== pathGetLength(other)) {\r\n return false;\r\n }\r\n for (let i = path.pieceNum_, j = other.pieceNum_; i <= path.pieces_.length; i++, j++) {\r\n if (path.pieces_[i] !== other.pieces_[j]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * @returns True if this path is a parent (or the same as) other\r\n */\r\nfunction pathContains(path, other) {\r\n let i = path.pieceNum_;\r\n let j = other.pieceNum_;\r\n if (pathGetLength(path) > pathGetLength(other)) {\r\n return false;\r\n }\r\n while (i < path.pieces_.length) {\r\n if (path.pieces_[i] !== other.pieces_[j]) {\r\n return false;\r\n }\r\n ++i;\r\n ++j;\r\n }\r\n return true;\r\n}\r\n/**\r\n * Dynamic (mutable) path used to count path lengths.\r\n *\r\n * This class is used to efficiently check paths for valid\r\n * length (in UTF8 bytes) and depth (used in path validation).\r\n *\r\n * Throws Error exception if path is ever invalid.\r\n *\r\n * The definition of a path always begins with '/'.\r\n */\r\nclass ValidationPath {\r\n /**\r\n * @param path - Initial Path.\r\n * @param errorPrefix_ - Prefix for any error messages.\r\n */\r\n constructor(path, errorPrefix_) {\r\n this.errorPrefix_ = errorPrefix_;\r\n this.parts_ = pathSlice(path, 0);\r\n /** Initialize to number of '/' chars needed in path. */\r\n this.byteLength_ = Math.max(1, this.parts_.length);\r\n for (let i = 0; i < this.parts_.length; i++) {\r\n this.byteLength_ += stringLength(this.parts_[i]);\r\n }\r\n validationPathCheckValid(this);\r\n }\r\n}\r\nfunction validationPathPush(validationPath, child) {\r\n // Count the needed '/'\r\n if (validationPath.parts_.length > 0) {\r\n validationPath.byteLength_ += 1;\r\n }\r\n validationPath.parts_.push(child);\r\n validationPath.byteLength_ += stringLength(child);\r\n validationPathCheckValid(validationPath);\r\n}\r\nfunction validationPathPop(validationPath) {\r\n const last = validationPath.parts_.pop();\r\n validationPath.byteLength_ -= stringLength(last);\r\n // Un-count the previous '/'\r\n if (validationPath.parts_.length > 0) {\r\n validationPath.byteLength_ -= 1;\r\n }\r\n}\r\nfunction validationPathCheckValid(validationPath) {\r\n if (validationPath.byteLength_ > MAX_PATH_LENGTH_BYTES) {\r\n throw new Error(validationPath.errorPrefix_ +\r\n 'has a key path longer than ' +\r\n MAX_PATH_LENGTH_BYTES +\r\n ' bytes (' +\r\n validationPath.byteLength_ +\r\n ').');\r\n }\r\n if (validationPath.parts_.length > MAX_PATH_DEPTH) {\r\n throw new Error(validationPath.errorPrefix_ +\r\n 'path specified exceeds the maximum depth that can be written (' +\r\n MAX_PATH_DEPTH +\r\n ') or object contains a cycle ' +\r\n validationPathToErrorString(validationPath));\r\n }\r\n}\r\n/**\r\n * String for use in error messages - uses '.' notation for path.\r\n */\r\nfunction validationPathToErrorString(validationPath) {\r\n if (validationPath.parts_.length === 0) {\r\n return '';\r\n }\r\n return \"in property '\" + validationPath.parts_.join('.') + \"'\";\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass VisibilityMonitor extends EventEmitter {\r\n constructor() {\r\n super(['visible']);\r\n let hidden;\r\n let visibilityChange;\r\n if (typeof document !== 'undefined' &&\r\n typeof document.addEventListener !== 'undefined') {\r\n if (typeof document['hidden'] !== 'undefined') {\r\n // Opera 12.10 and Firefox 18 and later support\r\n visibilityChange = 'visibilitychange';\r\n hidden = 'hidden';\r\n }\r\n else if (typeof document['mozHidden'] !== 'undefined') {\r\n visibilityChange = 'mozvisibilitychange';\r\n hidden = 'mozHidden';\r\n }\r\n else if (typeof document['msHidden'] !== 'undefined') {\r\n visibilityChange = 'msvisibilitychange';\r\n hidden = 'msHidden';\r\n }\r\n else if (typeof document['webkitHidden'] !== 'undefined') {\r\n visibilityChange = 'webkitvisibilitychange';\r\n hidden = 'webkitHidden';\r\n }\r\n }\r\n // Initially, we always assume we are visible. This ensures that in browsers\r\n // without page visibility support or in cases where we are never visible\r\n // (e.g. chrome extension), we act as if we are visible, i.e. don't delay\r\n // reconnects\r\n this.visible_ = true;\r\n if (visibilityChange) {\r\n document.addEventListener(visibilityChange, () => {\r\n const visible = !document[hidden];\r\n if (visible !== this.visible_) {\r\n this.visible_ = visible;\r\n this.trigger('visible', visible);\r\n }\r\n }, false);\r\n }\r\n }\r\n static getInstance() {\r\n return new VisibilityMonitor();\r\n }\r\n getInitialEvent(eventType) {\r\n assert(eventType === 'visible', 'Unknown event type: ' + eventType);\r\n return [this.visible_];\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst RECONNECT_MIN_DELAY = 1000;\r\nconst RECONNECT_MAX_DELAY_DEFAULT = 60 * 5 * 1000; // 5 minutes in milliseconds (Case: 1858)\r\nconst GET_CONNECT_TIMEOUT = 3 * 1000;\r\nconst RECONNECT_MAX_DELAY_FOR_ADMINS = 30 * 1000; // 30 seconds for admin clients (likely to be a backend server)\r\nconst RECONNECT_DELAY_MULTIPLIER = 1.3;\r\nconst RECONNECT_DELAY_RESET_TIMEOUT = 30000; // Reset delay back to MIN_DELAY after being connected for 30sec.\r\nconst SERVER_KILL_INTERRUPT_REASON = 'server_kill';\r\n// If auth fails repeatedly, we'll assume something is wrong and log a warning / back off.\r\nconst INVALID_TOKEN_THRESHOLD = 3;\r\n/**\r\n * Firebase connection. Abstracts wire protocol and handles reconnecting.\r\n *\r\n * NOTE: All JSON objects sent to the realtime connection must have property names enclosed\r\n * in quotes to make sure the closure compiler does not minify them.\r\n */\r\nclass PersistentConnection extends ServerActions {\r\n /**\r\n * @param repoInfo_ - Data about the namespace we are connecting to\r\n * @param applicationId_ - The Firebase App ID for this project\r\n * @param onDataUpdate_ - A callback for new data from the server\r\n */\r\n constructor(repoInfo_, applicationId_, onDataUpdate_, onConnectStatus_, onServerInfoUpdate_, authTokenProvider_, appCheckTokenProvider_, authOverride_) {\r\n super();\r\n this.repoInfo_ = repoInfo_;\r\n this.applicationId_ = applicationId_;\r\n this.onDataUpdate_ = onDataUpdate_;\r\n this.onConnectStatus_ = onConnectStatus_;\r\n this.onServerInfoUpdate_ = onServerInfoUpdate_;\r\n this.authTokenProvider_ = authTokenProvider_;\r\n this.appCheckTokenProvider_ = appCheckTokenProvider_;\r\n this.authOverride_ = authOverride_;\r\n // Used for diagnostic logging.\r\n this.id = PersistentConnection.nextPersistentConnectionId_++;\r\n this.log_ = logWrapper('p:' + this.id + ':');\r\n this.interruptReasons_ = {};\r\n this.listens = new Map();\r\n this.outstandingPuts_ = [];\r\n this.outstandingGets_ = [];\r\n this.outstandingPutCount_ = 0;\r\n this.outstandingGetCount_ = 0;\r\n this.onDisconnectRequestQueue_ = [];\r\n this.connected_ = false;\r\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\r\n this.maxReconnectDelay_ = RECONNECT_MAX_DELAY_DEFAULT;\r\n this.securityDebugCallback_ = null;\r\n this.lastSessionId = null;\r\n this.establishConnectionTimer_ = null;\r\n this.visible_ = false;\r\n // Before we get connected, we keep a queue of pending messages to send.\r\n this.requestCBHash_ = {};\r\n this.requestNumber_ = 0;\r\n this.realtime_ = null;\r\n this.authToken_ = null;\r\n this.appCheckToken_ = null;\r\n this.forceTokenRefresh_ = false;\r\n this.invalidAuthTokenCount_ = 0;\r\n this.invalidAppCheckTokenCount_ = 0;\r\n this.firstConnection_ = true;\r\n this.lastConnectionAttemptTime_ = null;\r\n this.lastConnectionEstablishedTime_ = null;\r\n if (authOverride_ && !isNodeSdk()) {\r\n throw new Error('Auth override specified in options, but not supported on non Node.js platforms');\r\n }\r\n VisibilityMonitor.getInstance().on('visible', this.onVisible_, this);\r\n if (repoInfo_.host.indexOf('fblocal') === -1) {\r\n OnlineMonitor.getInstance().on('online', this.onOnline_, this);\r\n }\r\n }\r\n sendRequest(action, body, onResponse) {\r\n const curReqNum = ++this.requestNumber_;\r\n const msg = { r: curReqNum, a: action, b: body };\r\n this.log_(stringify(msg));\r\n assert(this.connected_, \"sendRequest call when we're not connected not allowed.\");\r\n this.realtime_.sendRequest(msg);\r\n if (onResponse) {\r\n this.requestCBHash_[curReqNum] = onResponse;\r\n }\r\n }\r\n get(query) {\r\n this.initConnection_();\r\n const deferred = new Deferred();\r\n const request = {\r\n p: query._path.toString(),\r\n q: query._queryObject\r\n };\r\n const outstandingGet = {\r\n action: 'g',\r\n request,\r\n onComplete: (message) => {\r\n const payload = message['d'];\r\n if (message['s'] === 'ok') {\r\n this.onDataUpdate_(request['p'], payload, \r\n /*isMerge*/ false, \r\n /*tag*/ null);\r\n deferred.resolve(payload);\r\n }\r\n else {\r\n deferred.reject(payload);\r\n }\r\n }\r\n };\r\n this.outstandingGets_.push(outstandingGet);\r\n this.outstandingGetCount_++;\r\n const index = this.outstandingGets_.length - 1;\r\n if (!this.connected_) {\r\n setTimeout(() => {\r\n const get = this.outstandingGets_[index];\r\n if (get === undefined || outstandingGet !== get) {\r\n return;\r\n }\r\n delete this.outstandingGets_[index];\r\n this.outstandingGetCount_--;\r\n if (this.outstandingGetCount_ === 0) {\r\n this.outstandingGets_ = [];\r\n }\r\n this.log_('get ' + index + ' timed out on connection');\r\n deferred.reject(new Error('Client is offline.'));\r\n }, GET_CONNECT_TIMEOUT);\r\n }\r\n if (this.connected_) {\r\n this.sendGet_(index);\r\n }\r\n return deferred.promise;\r\n }\r\n listen(query, currentHashFn, tag, onComplete) {\r\n this.initConnection_();\r\n const queryId = query._queryIdentifier;\r\n const pathString = query._path.toString();\r\n this.log_('Listen called for ' + pathString + ' ' + queryId);\r\n if (!this.listens.has(pathString)) {\r\n this.listens.set(pathString, new Map());\r\n }\r\n assert(query._queryParams.isDefault() || !query._queryParams.loadsAllData(), 'listen() called for non-default but complete query');\r\n assert(!this.listens.get(pathString).has(queryId), 'listen() called twice for same path/queryId.');\r\n const listenSpec = {\r\n onComplete,\r\n hashFn: currentHashFn,\r\n query,\r\n tag\r\n };\r\n this.listens.get(pathString).set(queryId, listenSpec);\r\n if (this.connected_) {\r\n this.sendListen_(listenSpec);\r\n }\r\n }\r\n sendGet_(index) {\r\n const get = this.outstandingGets_[index];\r\n this.sendRequest('g', get.request, (message) => {\r\n delete this.outstandingGets_[index];\r\n this.outstandingGetCount_--;\r\n if (this.outstandingGetCount_ === 0) {\r\n this.outstandingGets_ = [];\r\n }\r\n if (get.onComplete) {\r\n get.onComplete(message);\r\n }\r\n });\r\n }\r\n sendListen_(listenSpec) {\r\n const query = listenSpec.query;\r\n const pathString = query._path.toString();\r\n const queryId = query._queryIdentifier;\r\n this.log_('Listen on ' + pathString + ' for ' + queryId);\r\n const req = { /*path*/ p: pathString };\r\n const action = 'q';\r\n // Only bother to send query if it's non-default.\r\n if (listenSpec.tag) {\r\n req['q'] = query._queryObject;\r\n req['t'] = listenSpec.tag;\r\n }\r\n req[ /*hash*/'h'] = listenSpec.hashFn();\r\n this.sendRequest(action, req, (message) => {\r\n const payload = message[ /*data*/'d'];\r\n const status = message[ /*status*/'s'];\r\n // print warnings in any case...\r\n PersistentConnection.warnOnListenWarnings_(payload, query);\r\n const currentListenSpec = this.listens.get(pathString) &&\r\n this.listens.get(pathString).get(queryId);\r\n // only trigger actions if the listen hasn't been removed and readded\r\n if (currentListenSpec === listenSpec) {\r\n this.log_('listen response', message);\r\n if (status !== 'ok') {\r\n this.removeListen_(pathString, queryId);\r\n }\r\n if (listenSpec.onComplete) {\r\n listenSpec.onComplete(status, payload);\r\n }\r\n }\r\n });\r\n }\r\n static warnOnListenWarnings_(payload, query) {\r\n if (payload && typeof payload === 'object' && contains(payload, 'w')) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const warnings = safeGet(payload, 'w');\r\n if (Array.isArray(warnings) && ~warnings.indexOf('no_index')) {\r\n const indexSpec = '\".indexOn\": \"' + query._queryParams.getIndex().toString() + '\"';\r\n const indexPath = query._path.toString();\r\n warn(`Using an unspecified index. Your data will be downloaded and ` +\r\n `filtered on the client. Consider adding ${indexSpec} at ` +\r\n `${indexPath} to your security rules for better performance.`);\r\n }\r\n }\r\n }\r\n refreshAuthToken(token) {\r\n this.authToken_ = token;\r\n this.log_('Auth token refreshed');\r\n if (this.authToken_) {\r\n this.tryAuth();\r\n }\r\n else {\r\n //If we're connected we want to let the server know to unauthenticate us. If we're not connected, simply delete\r\n //the credential so we dont become authenticated next time we connect.\r\n if (this.connected_) {\r\n this.sendRequest('unauth', {}, () => { });\r\n }\r\n }\r\n this.reduceReconnectDelayIfAdminCredential_(token);\r\n }\r\n reduceReconnectDelayIfAdminCredential_(credential) {\r\n // NOTE: This isn't intended to be bulletproof (a malicious developer can always just modify the client).\r\n // Additionally, we don't bother resetting the max delay back to the default if auth fails / expires.\r\n const isFirebaseSecret = credential && credential.length === 40;\r\n if (isFirebaseSecret || isAdmin(credential)) {\r\n this.log_('Admin auth credential detected. Reducing max reconnect time.');\r\n this.maxReconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\r\n }\r\n }\r\n refreshAppCheckToken(token) {\r\n this.appCheckToken_ = token;\r\n this.log_('App check token refreshed');\r\n if (this.appCheckToken_) {\r\n this.tryAppCheck();\r\n }\r\n else {\r\n //If we're connected we want to let the server know to unauthenticate us.\r\n //If we're not connected, simply delete the credential so we dont become\r\n // authenticated next time we connect.\r\n if (this.connected_) {\r\n this.sendRequest('unappeck', {}, () => { });\r\n }\r\n }\r\n }\r\n /**\r\n * Attempts to authenticate with the given credentials. If the authentication attempt fails, it's triggered like\r\n * a auth revoked (the connection is closed).\r\n */\r\n tryAuth() {\r\n if (this.connected_ && this.authToken_) {\r\n const token = this.authToken_;\r\n const authMethod = isValidFormat(token) ? 'auth' : 'gauth';\r\n const requestData = { cred: token };\r\n if (this.authOverride_ === null) {\r\n requestData['noauth'] = true;\r\n }\r\n else if (typeof this.authOverride_ === 'object') {\r\n requestData['authvar'] = this.authOverride_;\r\n }\r\n this.sendRequest(authMethod, requestData, (res) => {\r\n const status = res[ /*status*/'s'];\r\n const data = res[ /*data*/'d'] || 'error';\r\n if (this.authToken_ === token) {\r\n if (status === 'ok') {\r\n this.invalidAuthTokenCount_ = 0;\r\n }\r\n else {\r\n // Triggers reconnect and force refresh for auth token\r\n this.onAuthRevoked_(status, data);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n /**\r\n * Attempts to authenticate with the given token. If the authentication\r\n * attempt fails, it's triggered like the token was revoked (the connection is\r\n * closed).\r\n */\r\n tryAppCheck() {\r\n if (this.connected_ && this.appCheckToken_) {\r\n this.sendRequest('appcheck', { 'token': this.appCheckToken_ }, (res) => {\r\n const status = res[ /*status*/'s'];\r\n const data = res[ /*data*/'d'] || 'error';\r\n if (status === 'ok') {\r\n this.invalidAppCheckTokenCount_ = 0;\r\n }\r\n else {\r\n this.onAppCheckRevoked_(status, data);\r\n }\r\n });\r\n }\r\n }\r\n /**\r\n * @inheritDoc\r\n */\r\n unlisten(query, tag) {\r\n const pathString = query._path.toString();\r\n const queryId = query._queryIdentifier;\r\n this.log_('Unlisten called for ' + pathString + ' ' + queryId);\r\n assert(query._queryParams.isDefault() || !query._queryParams.loadsAllData(), 'unlisten() called for non-default but complete query');\r\n const listen = this.removeListen_(pathString, queryId);\r\n if (listen && this.connected_) {\r\n this.sendUnlisten_(pathString, queryId, query._queryObject, tag);\r\n }\r\n }\r\n sendUnlisten_(pathString, queryId, queryObj, tag) {\r\n this.log_('Unlisten on ' + pathString + ' for ' + queryId);\r\n const req = { /*path*/ p: pathString };\r\n const action = 'n';\r\n // Only bother sending queryId if it's non-default.\r\n if (tag) {\r\n req['q'] = queryObj;\r\n req['t'] = tag;\r\n }\r\n this.sendRequest(action, req);\r\n }\r\n onDisconnectPut(pathString, data, onComplete) {\r\n this.initConnection_();\r\n if (this.connected_) {\r\n this.sendOnDisconnect_('o', pathString, data, onComplete);\r\n }\r\n else {\r\n this.onDisconnectRequestQueue_.push({\r\n pathString,\r\n action: 'o',\r\n data,\r\n onComplete\r\n });\r\n }\r\n }\r\n onDisconnectMerge(pathString, data, onComplete) {\r\n this.initConnection_();\r\n if (this.connected_) {\r\n this.sendOnDisconnect_('om', pathString, data, onComplete);\r\n }\r\n else {\r\n this.onDisconnectRequestQueue_.push({\r\n pathString,\r\n action: 'om',\r\n data,\r\n onComplete\r\n });\r\n }\r\n }\r\n onDisconnectCancel(pathString, onComplete) {\r\n this.initConnection_();\r\n if (this.connected_) {\r\n this.sendOnDisconnect_('oc', pathString, null, onComplete);\r\n }\r\n else {\r\n this.onDisconnectRequestQueue_.push({\r\n pathString,\r\n action: 'oc',\r\n data: null,\r\n onComplete\r\n });\r\n }\r\n }\r\n sendOnDisconnect_(action, pathString, data, onComplete) {\r\n const request = { /*path*/ p: pathString, /*data*/ d: data };\r\n this.log_('onDisconnect ' + action, request);\r\n this.sendRequest(action, request, (response) => {\r\n if (onComplete) {\r\n setTimeout(() => {\r\n onComplete(response[ /*status*/'s'], response[ /* data */'d']);\r\n }, Math.floor(0));\r\n }\r\n });\r\n }\r\n put(pathString, data, onComplete, hash) {\r\n this.putInternal('p', pathString, data, onComplete, hash);\r\n }\r\n merge(pathString, data, onComplete, hash) {\r\n this.putInternal('m', pathString, data, onComplete, hash);\r\n }\r\n putInternal(action, pathString, data, onComplete, hash) {\r\n this.initConnection_();\r\n const request = {\r\n /*path*/ p: pathString,\r\n /*data*/ d: data\r\n };\r\n if (hash !== undefined) {\r\n request[ /*hash*/'h'] = hash;\r\n }\r\n // TODO: Only keep track of the most recent put for a given path?\r\n this.outstandingPuts_.push({\r\n action,\r\n request,\r\n onComplete\r\n });\r\n this.outstandingPutCount_++;\r\n const index = this.outstandingPuts_.length - 1;\r\n if (this.connected_) {\r\n this.sendPut_(index);\r\n }\r\n else {\r\n this.log_('Buffering put: ' + pathString);\r\n }\r\n }\r\n sendPut_(index) {\r\n const action = this.outstandingPuts_[index].action;\r\n const request = this.outstandingPuts_[index].request;\r\n const onComplete = this.outstandingPuts_[index].onComplete;\r\n this.outstandingPuts_[index].queued = this.connected_;\r\n this.sendRequest(action, request, (message) => {\r\n this.log_(action + ' response', message);\r\n delete this.outstandingPuts_[index];\r\n this.outstandingPutCount_--;\r\n // Clean up array occasionally.\r\n if (this.outstandingPutCount_ === 0) {\r\n this.outstandingPuts_ = [];\r\n }\r\n if (onComplete) {\r\n onComplete(message[ /*status*/'s'], message[ /* data */'d']);\r\n }\r\n });\r\n }\r\n reportStats(stats) {\r\n // If we're not connected, we just drop the stats.\r\n if (this.connected_) {\r\n const request = { /*counters*/ c: stats };\r\n this.log_('reportStats', request);\r\n this.sendRequest(/*stats*/ 's', request, result => {\r\n const status = result[ /*status*/'s'];\r\n if (status !== 'ok') {\r\n const errorReason = result[ /* data */'d'];\r\n this.log_('reportStats', 'Error sending stats: ' + errorReason);\r\n }\r\n });\r\n }\r\n }\r\n onDataMessage_(message) {\r\n if ('r' in message) {\r\n // this is a response\r\n this.log_('from server: ' + stringify(message));\r\n const reqNum = message['r'];\r\n const onResponse = this.requestCBHash_[reqNum];\r\n if (onResponse) {\r\n delete this.requestCBHash_[reqNum];\r\n onResponse(message[ /*body*/'b']);\r\n }\r\n }\r\n else if ('error' in message) {\r\n throw 'A server-side error has occurred: ' + message['error'];\r\n }\r\n else if ('a' in message) {\r\n // a and b are action and body, respectively\r\n this.onDataPush_(message['a'], message['b']);\r\n }\r\n }\r\n onDataPush_(action, body) {\r\n this.log_('handleServerMessage', action, body);\r\n if (action === 'd') {\r\n this.onDataUpdate_(body[ /*path*/'p'], body[ /*data*/'d'], \r\n /*isMerge*/ false, body['t']);\r\n }\r\n else if (action === 'm') {\r\n this.onDataUpdate_(body[ /*path*/'p'], body[ /*data*/'d'], \r\n /*isMerge=*/ true, body['t']);\r\n }\r\n else if (action === 'c') {\r\n this.onListenRevoked_(body[ /*path*/'p'], body[ /*query*/'q']);\r\n }\r\n else if (action === 'ac') {\r\n this.onAuthRevoked_(body[ /*status code*/'s'], body[ /* explanation */'d']);\r\n }\r\n else if (action === 'apc') {\r\n this.onAppCheckRevoked_(body[ /*status code*/'s'], body[ /* explanation */'d']);\r\n }\r\n else if (action === 'sd') {\r\n this.onSecurityDebugPacket_(body);\r\n }\r\n else {\r\n error('Unrecognized action received from server: ' +\r\n stringify(action) +\r\n '\\nAre you using the latest client?');\r\n }\r\n }\r\n onReady_(timestamp, sessionId) {\r\n this.log_('connection ready');\r\n this.connected_ = true;\r\n this.lastConnectionEstablishedTime_ = new Date().getTime();\r\n this.handleTimestamp_(timestamp);\r\n this.lastSessionId = sessionId;\r\n if (this.firstConnection_) {\r\n this.sendConnectStats_();\r\n }\r\n this.restoreState_();\r\n this.firstConnection_ = false;\r\n this.onConnectStatus_(true);\r\n }\r\n scheduleConnect_(timeout) {\r\n assert(!this.realtime_, \"Scheduling a connect when we're already connected/ing?\");\r\n if (this.establishConnectionTimer_) {\r\n clearTimeout(this.establishConnectionTimer_);\r\n }\r\n // NOTE: Even when timeout is 0, it's important to do a setTimeout to work around an infuriating \"Security Error\" in\r\n // Firefox when trying to write to our long-polling iframe in some scenarios (e.g. Forge or our unit tests).\r\n this.establishConnectionTimer_ = setTimeout(() => {\r\n this.establishConnectionTimer_ = null;\r\n this.establishConnection_();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n }, Math.floor(timeout));\r\n }\r\n initConnection_() {\r\n if (!this.realtime_ && this.firstConnection_) {\r\n this.scheduleConnect_(0);\r\n }\r\n }\r\n onVisible_(visible) {\r\n // NOTE: Tabbing away and back to a window will defeat our reconnect backoff, but I think that's fine.\r\n if (visible &&\r\n !this.visible_ &&\r\n this.reconnectDelay_ === this.maxReconnectDelay_) {\r\n this.log_('Window became visible. Reducing delay.');\r\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\r\n if (!this.realtime_) {\r\n this.scheduleConnect_(0);\r\n }\r\n }\r\n this.visible_ = visible;\r\n }\r\n onOnline_(online) {\r\n if (online) {\r\n this.log_('Browser went online.');\r\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\r\n if (!this.realtime_) {\r\n this.scheduleConnect_(0);\r\n }\r\n }\r\n else {\r\n this.log_('Browser went offline. Killing connection.');\r\n if (this.realtime_) {\r\n this.realtime_.close();\r\n }\r\n }\r\n }\r\n onRealtimeDisconnect_() {\r\n this.log_('data client disconnected');\r\n this.connected_ = false;\r\n this.realtime_ = null;\r\n // Since we don't know if our sent transactions succeeded or not, we need to cancel them.\r\n this.cancelSentTransactions_();\r\n // Clear out the pending requests.\r\n this.requestCBHash_ = {};\r\n if (this.shouldReconnect_()) {\r\n if (!this.visible_) {\r\n this.log_(\"Window isn't visible. Delaying reconnect.\");\r\n this.reconnectDelay_ = this.maxReconnectDelay_;\r\n this.lastConnectionAttemptTime_ = new Date().getTime();\r\n }\r\n else if (this.lastConnectionEstablishedTime_) {\r\n // If we've been connected long enough, reset reconnect delay to minimum.\r\n const timeSinceLastConnectSucceeded = new Date().getTime() - this.lastConnectionEstablishedTime_;\r\n if (timeSinceLastConnectSucceeded > RECONNECT_DELAY_RESET_TIMEOUT) {\r\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\r\n }\r\n this.lastConnectionEstablishedTime_ = null;\r\n }\r\n const timeSinceLastConnectAttempt = new Date().getTime() - this.lastConnectionAttemptTime_;\r\n let reconnectDelay = Math.max(0, this.reconnectDelay_ - timeSinceLastConnectAttempt);\r\n reconnectDelay = Math.random() * reconnectDelay;\r\n this.log_('Trying to reconnect in ' + reconnectDelay + 'ms');\r\n this.scheduleConnect_(reconnectDelay);\r\n // Adjust reconnect delay for next time.\r\n this.reconnectDelay_ = Math.min(this.maxReconnectDelay_, this.reconnectDelay_ * RECONNECT_DELAY_MULTIPLIER);\r\n }\r\n this.onConnectStatus_(false);\r\n }\r\n async establishConnection_() {\r\n if (this.shouldReconnect_()) {\r\n this.log_('Making a connection attempt');\r\n this.lastConnectionAttemptTime_ = new Date().getTime();\r\n this.lastConnectionEstablishedTime_ = null;\r\n const onDataMessage = this.onDataMessage_.bind(this);\r\n const onReady = this.onReady_.bind(this);\r\n const onDisconnect = this.onRealtimeDisconnect_.bind(this);\r\n const connId = this.id + ':' + PersistentConnection.nextConnectionId_++;\r\n const lastSessionId = this.lastSessionId;\r\n let canceled = false;\r\n let connection = null;\r\n const closeFn = function () {\r\n if (connection) {\r\n connection.close();\r\n }\r\n else {\r\n canceled = true;\r\n onDisconnect();\r\n }\r\n };\r\n const sendRequestFn = function (msg) {\r\n assert(connection, \"sendRequest call when we're not connected not allowed.\");\r\n connection.sendRequest(msg);\r\n };\r\n this.realtime_ = {\r\n close: closeFn,\r\n sendRequest: sendRequestFn\r\n };\r\n const forceRefresh = this.forceTokenRefresh_;\r\n this.forceTokenRefresh_ = false;\r\n try {\r\n // First fetch auth and app check token, and establish connection after\r\n // fetching the token was successful\r\n const [authToken, appCheckToken] = await Promise.all([\r\n this.authTokenProvider_.getToken(forceRefresh),\r\n this.appCheckTokenProvider_.getToken(forceRefresh)\r\n ]);\r\n if (!canceled) {\r\n log('getToken() completed. Creating connection.');\r\n this.authToken_ = authToken && authToken.accessToken;\r\n this.appCheckToken_ = appCheckToken && appCheckToken.token;\r\n connection = new Connection(connId, this.repoInfo_, this.applicationId_, this.appCheckToken_, this.authToken_, onDataMessage, onReady, onDisconnect, \r\n /* onKill= */ reason => {\r\n warn(reason + ' (' + this.repoInfo_.toString() + ')');\r\n this.interrupt(SERVER_KILL_INTERRUPT_REASON);\r\n }, lastSessionId);\r\n }\r\n else {\r\n log('getToken() completed but was canceled');\r\n }\r\n }\r\n catch (error) {\r\n this.log_('Failed to get token: ' + error);\r\n if (!canceled) {\r\n if (this.repoInfo_.nodeAdmin) {\r\n // This may be a critical error for the Admin Node.js SDK, so log a warning.\r\n // But getToken() may also just have temporarily failed, so we still want to\r\n // continue retrying.\r\n warn(error);\r\n }\r\n closeFn();\r\n }\r\n }\r\n }\r\n }\r\n interrupt(reason) {\r\n log('Interrupting connection for reason: ' + reason);\r\n this.interruptReasons_[reason] = true;\r\n if (this.realtime_) {\r\n this.realtime_.close();\r\n }\r\n else {\r\n if (this.establishConnectionTimer_) {\r\n clearTimeout(this.establishConnectionTimer_);\r\n this.establishConnectionTimer_ = null;\r\n }\r\n if (this.connected_) {\r\n this.onRealtimeDisconnect_();\r\n }\r\n }\r\n }\r\n resume(reason) {\r\n log('Resuming connection for reason: ' + reason);\r\n delete this.interruptReasons_[reason];\r\n if (isEmpty(this.interruptReasons_)) {\r\n this.reconnectDelay_ = RECONNECT_MIN_DELAY;\r\n if (!this.realtime_) {\r\n this.scheduleConnect_(0);\r\n }\r\n }\r\n }\r\n handleTimestamp_(timestamp) {\r\n const delta = timestamp - new Date().getTime();\r\n this.onServerInfoUpdate_({ serverTimeOffset: delta });\r\n }\r\n cancelSentTransactions_() {\r\n for (let i = 0; i < this.outstandingPuts_.length; i++) {\r\n const put = this.outstandingPuts_[i];\r\n if (put && /*hash*/ 'h' in put.request && put.queued) {\r\n if (put.onComplete) {\r\n put.onComplete('disconnect');\r\n }\r\n delete this.outstandingPuts_[i];\r\n this.outstandingPutCount_--;\r\n }\r\n }\r\n // Clean up array occasionally.\r\n if (this.outstandingPutCount_ === 0) {\r\n this.outstandingPuts_ = [];\r\n }\r\n }\r\n onListenRevoked_(pathString, query) {\r\n // Remove the listen and manufacture a \"permission_denied\" error for the failed listen.\r\n let queryId;\r\n if (!query) {\r\n queryId = 'default';\r\n }\r\n else {\r\n queryId = query.map(q => ObjectToUniqueKey(q)).join('$');\r\n }\r\n const listen = this.removeListen_(pathString, queryId);\r\n if (listen && listen.onComplete) {\r\n listen.onComplete('permission_denied');\r\n }\r\n }\r\n removeListen_(pathString, queryId) {\r\n const normalizedPathString = new Path(pathString).toString(); // normalize path.\r\n let listen;\r\n if (this.listens.has(normalizedPathString)) {\r\n const map = this.listens.get(normalizedPathString);\r\n listen = map.get(queryId);\r\n map.delete(queryId);\r\n if (map.size === 0) {\r\n this.listens.delete(normalizedPathString);\r\n }\r\n }\r\n else {\r\n // all listens for this path has already been removed\r\n listen = undefined;\r\n }\r\n return listen;\r\n }\r\n onAuthRevoked_(statusCode, explanation) {\r\n log('Auth token revoked: ' + statusCode + '/' + explanation);\r\n this.authToken_ = null;\r\n this.forceTokenRefresh_ = true;\r\n this.realtime_.close();\r\n if (statusCode === 'invalid_token' || statusCode === 'permission_denied') {\r\n // We'll wait a couple times before logging the warning / increasing the\r\n // retry period since oauth tokens will report as \"invalid\" if they're\r\n // just expired. Plus there may be transient issues that resolve themselves.\r\n this.invalidAuthTokenCount_++;\r\n if (this.invalidAuthTokenCount_ >= INVALID_TOKEN_THRESHOLD) {\r\n // Set a long reconnect delay because recovery is unlikely\r\n this.reconnectDelay_ = RECONNECT_MAX_DELAY_FOR_ADMINS;\r\n // Notify the auth token provider that the token is invalid, which will log\r\n // a warning\r\n this.authTokenProvider_.notifyForInvalidToken();\r\n }\r\n }\r\n }\r\n onAppCheckRevoked_(statusCode, explanation) {\r\n log('App check token revoked: ' + statusCode + '/' + explanation);\r\n this.appCheckToken_ = null;\r\n this.forceTokenRefresh_ = true;\r\n // Note: We don't close the connection as the developer may not have\r\n // enforcement enabled. The backend closes connections with enforcements.\r\n if (statusCode === 'invalid_token' || statusCode === 'permission_denied') {\r\n // We'll wait a couple times before logging the warning / increasing the\r\n // retry period since oauth tokens will report as \"invalid\" if they're\r\n // just expired. Plus there may be transient issues that resolve themselves.\r\n this.invalidAppCheckTokenCount_++;\r\n if (this.invalidAppCheckTokenCount_ >= INVALID_TOKEN_THRESHOLD) {\r\n this.appCheckTokenProvider_.notifyForInvalidToken();\r\n }\r\n }\r\n }\r\n onSecurityDebugPacket_(body) {\r\n if (this.securityDebugCallback_) {\r\n this.securityDebugCallback_(body);\r\n }\r\n else {\r\n if ('msg' in body) {\r\n console.log('FIREBASE: ' + body['msg'].replace('\\n', '\\nFIREBASE: '));\r\n }\r\n }\r\n }\r\n restoreState_() {\r\n //Re-authenticate ourselves if we have a credential stored.\r\n this.tryAuth();\r\n this.tryAppCheck();\r\n // Puts depend on having received the corresponding data update from the server before they complete, so we must\r\n // make sure to send listens before puts.\r\n for (const queries of this.listens.values()) {\r\n for (const listenSpec of queries.values()) {\r\n this.sendListen_(listenSpec);\r\n }\r\n }\r\n for (let i = 0; i < this.outstandingPuts_.length; i++) {\r\n if (this.outstandingPuts_[i]) {\r\n this.sendPut_(i);\r\n }\r\n }\r\n while (this.onDisconnectRequestQueue_.length) {\r\n const request = this.onDisconnectRequestQueue_.shift();\r\n this.sendOnDisconnect_(request.action, request.pathString, request.data, request.onComplete);\r\n }\r\n for (let i = 0; i < this.outstandingGets_.length; i++) {\r\n if (this.outstandingGets_[i]) {\r\n this.sendGet_(i);\r\n }\r\n }\r\n }\r\n /**\r\n * Sends client stats for first connection\r\n */\r\n sendConnectStats_() {\r\n const stats = {};\r\n let clientName = 'js';\r\n if (isNodeSdk()) {\r\n if (this.repoInfo_.nodeAdmin) {\r\n clientName = 'admin_node';\r\n }\r\n else {\r\n clientName = 'node';\r\n }\r\n }\r\n stats['sdk.' + clientName + '.' + SDK_VERSION.replace(/\\./g, '-')] = 1;\r\n if (isMobileCordova()) {\r\n stats['framework.cordova'] = 1;\r\n }\r\n else if (isReactNative()) {\r\n stats['framework.reactnative'] = 1;\r\n }\r\n this.reportStats(stats);\r\n }\r\n shouldReconnect_() {\r\n const online = OnlineMonitor.getInstance().currentlyOnline();\r\n return isEmpty(this.interruptReasons_) && online;\r\n }\r\n}\r\nPersistentConnection.nextPersistentConnectionId_ = 0;\r\n/**\r\n * Counter for number of connections created. Mainly used for tagging in the logs\r\n */\r\nPersistentConnection.nextConnectionId_ = 0;\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass NamedNode {\r\n constructor(name, node) {\r\n this.name = name;\r\n this.node = node;\r\n }\r\n static Wrap(name, node) {\r\n return new NamedNode(name, node);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass Index {\r\n /**\r\n * @returns A standalone comparison function for\r\n * this index\r\n */\r\n getCompare() {\r\n return this.compare.bind(this);\r\n }\r\n /**\r\n * Given a before and after value for a node, determine if the indexed value has changed. Even if they are different,\r\n * it's possible that the changes are isolated to parts of the snapshot that are not indexed.\r\n *\r\n *\r\n * @returns True if the portion of the snapshot being indexed changed between oldNode and newNode\r\n */\r\n indexedValueChanged(oldNode, newNode) {\r\n const oldWrapped = new NamedNode(MIN_NAME, oldNode);\r\n const newWrapped = new NamedNode(MIN_NAME, newNode);\r\n return this.compare(oldWrapped, newWrapped) !== 0;\r\n }\r\n /**\r\n * @returns a node wrapper that will sort equal to or less than\r\n * any other node wrapper, using this index\r\n */\r\n minPost() {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return NamedNode.MIN;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nlet __EMPTY_NODE;\r\nclass KeyIndex extends Index {\r\n static get __EMPTY_NODE() {\r\n return __EMPTY_NODE;\r\n }\r\n static set __EMPTY_NODE(val) {\r\n __EMPTY_NODE = val;\r\n }\r\n compare(a, b) {\r\n return nameCompare(a.name, b.name);\r\n }\r\n isDefinedOn(node) {\r\n // We could probably return true here (since every node has a key), but it's never called\r\n // so just leaving unimplemented for now.\r\n throw assertionError('KeyIndex.isDefinedOn not expected to be called.');\r\n }\r\n indexedValueChanged(oldNode, newNode) {\r\n return false; // The key for a node never changes.\r\n }\r\n minPost() {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return NamedNode.MIN;\r\n }\r\n maxPost() {\r\n // TODO: This should really be created once and cached in a static property, but\r\n // NamedNode isn't defined yet, so I can't use it in a static. Bleh.\r\n return new NamedNode(MAX_NAME, __EMPTY_NODE);\r\n }\r\n makePost(indexValue, name) {\r\n assert(typeof indexValue === 'string', 'KeyIndex indexValue must always be a string.');\r\n // We just use empty node, but it'll never be compared, since our comparator only looks at name.\r\n return new NamedNode(indexValue, __EMPTY_NODE);\r\n }\r\n /**\r\n * @returns String representation for inclusion in a query spec\r\n */\r\n toString() {\r\n return '.key';\r\n }\r\n}\r\nconst KEY_INDEX = new KeyIndex();\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An iterator over an LLRBNode.\r\n */\r\nclass SortedMapIterator {\r\n /**\r\n * @param node - Node to iterate.\r\n * @param isReverse_ - Whether or not to iterate in reverse\r\n */\r\n constructor(node, startKey, comparator, isReverse_, resultGenerator_ = null) {\r\n this.isReverse_ = isReverse_;\r\n this.resultGenerator_ = resultGenerator_;\r\n this.nodeStack_ = [];\r\n let cmp = 1;\r\n while (!node.isEmpty()) {\r\n node = node;\r\n cmp = startKey ? comparator(node.key, startKey) : 1;\r\n // flip the comparison if we're going in reverse\r\n if (isReverse_) {\r\n cmp *= -1;\r\n }\r\n if (cmp < 0) {\r\n // This node is less than our start key. ignore it\r\n if (this.isReverse_) {\r\n node = node.left;\r\n }\r\n else {\r\n node = node.right;\r\n }\r\n }\r\n else if (cmp === 0) {\r\n // This node is exactly equal to our start key. Push it on the stack, but stop iterating;\r\n this.nodeStack_.push(node);\r\n break;\r\n }\r\n else {\r\n // This node is greater than our start key, add it to the stack and move to the next one\r\n this.nodeStack_.push(node);\r\n if (this.isReverse_) {\r\n node = node.right;\r\n }\r\n else {\r\n node = node.left;\r\n }\r\n }\r\n }\r\n }\r\n getNext() {\r\n if (this.nodeStack_.length === 0) {\r\n return null;\r\n }\r\n let node = this.nodeStack_.pop();\r\n let result;\r\n if (this.resultGenerator_) {\r\n result = this.resultGenerator_(node.key, node.value);\r\n }\r\n else {\r\n result = { key: node.key, value: node.value };\r\n }\r\n if (this.isReverse_) {\r\n node = node.left;\r\n while (!node.isEmpty()) {\r\n this.nodeStack_.push(node);\r\n node = node.right;\r\n }\r\n }\r\n else {\r\n node = node.right;\r\n while (!node.isEmpty()) {\r\n this.nodeStack_.push(node);\r\n node = node.left;\r\n }\r\n }\r\n return result;\r\n }\r\n hasNext() {\r\n return this.nodeStack_.length > 0;\r\n }\r\n peek() {\r\n if (this.nodeStack_.length === 0) {\r\n return null;\r\n }\r\n const node = this.nodeStack_[this.nodeStack_.length - 1];\r\n if (this.resultGenerator_) {\r\n return this.resultGenerator_(node.key, node.value);\r\n }\r\n else {\r\n return { key: node.key, value: node.value };\r\n }\r\n }\r\n}\r\n/**\r\n * Represents a node in a Left-leaning Red-Black tree.\r\n */\r\nclass LLRBNode {\r\n /**\r\n * @param key - Key associated with this node.\r\n * @param value - Value associated with this node.\r\n * @param color - Whether this node is red.\r\n * @param left - Left child.\r\n * @param right - Right child.\r\n */\r\n constructor(key, value, color, left, right) {\r\n this.key = key;\r\n this.value = value;\r\n this.color = color != null ? color : LLRBNode.RED;\r\n this.left =\r\n left != null ? left : SortedMap.EMPTY_NODE;\r\n this.right =\r\n right != null ? right : SortedMap.EMPTY_NODE;\r\n }\r\n /**\r\n * Returns a copy of the current node, optionally replacing pieces of it.\r\n *\r\n * @param key - New key for the node, or null.\r\n * @param value - New value for the node, or null.\r\n * @param color - New color for the node, or null.\r\n * @param left - New left child for the node, or null.\r\n * @param right - New right child for the node, or null.\r\n * @returns The node copy.\r\n */\r\n copy(key, value, color, left, right) {\r\n return new LLRBNode(key != null ? key : this.key, value != null ? value : this.value, color != null ? color : this.color, left != null ? left : this.left, right != null ? right : this.right);\r\n }\r\n /**\r\n * @returns The total number of nodes in the tree.\r\n */\r\n count() {\r\n return this.left.count() + 1 + this.right.count();\r\n }\r\n /**\r\n * @returns True if the tree is empty.\r\n */\r\n isEmpty() {\r\n return false;\r\n }\r\n /**\r\n * Traverses the tree in key order and calls the specified action function\r\n * for each node.\r\n *\r\n * @param action - Callback function to be called for each\r\n * node. If it returns true, traversal is aborted.\r\n * @returns The first truthy value returned by action, or the last falsey\r\n * value returned by action\r\n */\r\n inorderTraversal(action) {\r\n return (this.left.inorderTraversal(action) ||\r\n !!action(this.key, this.value) ||\r\n this.right.inorderTraversal(action));\r\n }\r\n /**\r\n * Traverses the tree in reverse key order and calls the specified action function\r\n * for each node.\r\n *\r\n * @param action - Callback function to be called for each\r\n * node. If it returns true, traversal is aborted.\r\n * @returns True if traversal was aborted.\r\n */\r\n reverseTraversal(action) {\r\n return (this.right.reverseTraversal(action) ||\r\n action(this.key, this.value) ||\r\n this.left.reverseTraversal(action));\r\n }\r\n /**\r\n * @returns The minimum node in the tree.\r\n */\r\n min_() {\r\n if (this.left.isEmpty()) {\r\n return this;\r\n }\r\n else {\r\n return this.left.min_();\r\n }\r\n }\r\n /**\r\n * @returns The maximum key in the tree.\r\n */\r\n minKey() {\r\n return this.min_().key;\r\n }\r\n /**\r\n * @returns The maximum key in the tree.\r\n */\r\n maxKey() {\r\n if (this.right.isEmpty()) {\r\n return this.key;\r\n }\r\n else {\r\n return this.right.maxKey();\r\n }\r\n }\r\n /**\r\n * @param key - Key to insert.\r\n * @param value - Value to insert.\r\n * @param comparator - Comparator.\r\n * @returns New tree, with the key/value added.\r\n */\r\n insert(key, value, comparator) {\r\n let n = this;\r\n const cmp = comparator(key, n.key);\r\n if (cmp < 0) {\r\n n = n.copy(null, null, null, n.left.insert(key, value, comparator), null);\r\n }\r\n else if (cmp === 0) {\r\n n = n.copy(null, value, null, null, null);\r\n }\r\n else {\r\n n = n.copy(null, null, null, null, n.right.insert(key, value, comparator));\r\n }\r\n return n.fixUp_();\r\n }\r\n /**\r\n * @returns New tree, with the minimum key removed.\r\n */\r\n removeMin_() {\r\n if (this.left.isEmpty()) {\r\n return SortedMap.EMPTY_NODE;\r\n }\r\n let n = this;\r\n if (!n.left.isRed_() && !n.left.left.isRed_()) {\r\n n = n.moveRedLeft_();\r\n }\r\n n = n.copy(null, null, null, n.left.removeMin_(), null);\r\n return n.fixUp_();\r\n }\r\n /**\r\n * @param key - The key of the item to remove.\r\n * @param comparator - Comparator.\r\n * @returns New tree, with the specified item removed.\r\n */\r\n remove(key, comparator) {\r\n let n, smallest;\r\n n = this;\r\n if (comparator(key, n.key) < 0) {\r\n if (!n.left.isEmpty() && !n.left.isRed_() && !n.left.left.isRed_()) {\r\n n = n.moveRedLeft_();\r\n }\r\n n = n.copy(null, null, null, n.left.remove(key, comparator), null);\r\n }\r\n else {\r\n if (n.left.isRed_()) {\r\n n = n.rotateRight_();\r\n }\r\n if (!n.right.isEmpty() && !n.right.isRed_() && !n.right.left.isRed_()) {\r\n n = n.moveRedRight_();\r\n }\r\n if (comparator(key, n.key) === 0) {\r\n if (n.right.isEmpty()) {\r\n return SortedMap.EMPTY_NODE;\r\n }\r\n else {\r\n smallest = n.right.min_();\r\n n = n.copy(smallest.key, smallest.value, null, null, n.right.removeMin_());\r\n }\r\n }\r\n n = n.copy(null, null, null, null, n.right.remove(key, comparator));\r\n }\r\n return n.fixUp_();\r\n }\r\n /**\r\n * @returns Whether this is a RED node.\r\n */\r\n isRed_() {\r\n return this.color;\r\n }\r\n /**\r\n * @returns New tree after performing any needed rotations.\r\n */\r\n fixUp_() {\r\n let n = this;\r\n if (n.right.isRed_() && !n.left.isRed_()) {\r\n n = n.rotateLeft_();\r\n }\r\n if (n.left.isRed_() && n.left.left.isRed_()) {\r\n n = n.rotateRight_();\r\n }\r\n if (n.left.isRed_() && n.right.isRed_()) {\r\n n = n.colorFlip_();\r\n }\r\n return n;\r\n }\r\n /**\r\n * @returns New tree, after moveRedLeft.\r\n */\r\n moveRedLeft_() {\r\n let n = this.colorFlip_();\r\n if (n.right.left.isRed_()) {\r\n n = n.copy(null, null, null, null, n.right.rotateRight_());\r\n n = n.rotateLeft_();\r\n n = n.colorFlip_();\r\n }\r\n return n;\r\n }\r\n /**\r\n * @returns New tree, after moveRedRight.\r\n */\r\n moveRedRight_() {\r\n let n = this.colorFlip_();\r\n if (n.left.left.isRed_()) {\r\n n = n.rotateRight_();\r\n n = n.colorFlip_();\r\n }\r\n return n;\r\n }\r\n /**\r\n * @returns New tree, after rotateLeft.\r\n */\r\n rotateLeft_() {\r\n const nl = this.copy(null, null, LLRBNode.RED, null, this.right.left);\r\n return this.right.copy(null, null, this.color, nl, null);\r\n }\r\n /**\r\n * @returns New tree, after rotateRight.\r\n */\r\n rotateRight_() {\r\n const nr = this.copy(null, null, LLRBNode.RED, this.left.right, null);\r\n return this.left.copy(null, null, this.color, null, nr);\r\n }\r\n /**\r\n * @returns Newt ree, after colorFlip.\r\n */\r\n colorFlip_() {\r\n const left = this.left.copy(null, null, !this.left.color, null, null);\r\n const right = this.right.copy(null, null, !this.right.color, null, null);\r\n return this.copy(null, null, !this.color, left, right);\r\n }\r\n /**\r\n * For testing.\r\n *\r\n * @returns True if all is well.\r\n */\r\n checkMaxDepth_() {\r\n const blackDepth = this.check_();\r\n return Math.pow(2.0, blackDepth) <= this.count() + 1;\r\n }\r\n check_() {\r\n if (this.isRed_() && this.left.isRed_()) {\r\n throw new Error('Red node has red child(' + this.key + ',' + this.value + ')');\r\n }\r\n if (this.right.isRed_()) {\r\n throw new Error('Right child of (' + this.key + ',' + this.value + ') is red');\r\n }\r\n const blackDepth = this.left.check_();\r\n if (blackDepth !== this.right.check_()) {\r\n throw new Error('Black depths differ');\r\n }\r\n else {\r\n return blackDepth + (this.isRed_() ? 0 : 1);\r\n }\r\n }\r\n}\r\nLLRBNode.RED = true;\r\nLLRBNode.BLACK = false;\r\n/**\r\n * Represents an empty node (a leaf node in the Red-Black Tree).\r\n */\r\nclass LLRBEmptyNode {\r\n /**\r\n * Returns a copy of the current node.\r\n *\r\n * @returns The node copy.\r\n */\r\n copy(key, value, color, left, right) {\r\n return this;\r\n }\r\n /**\r\n * Returns a copy of the tree, with the specified key/value added.\r\n *\r\n * @param key - Key to be added.\r\n * @param value - Value to be added.\r\n * @param comparator - Comparator.\r\n * @returns New tree, with item added.\r\n */\r\n insert(key, value, comparator) {\r\n return new LLRBNode(key, value, null);\r\n }\r\n /**\r\n * Returns a copy of the tree, with the specified key removed.\r\n *\r\n * @param key - The key to remove.\r\n * @param comparator - Comparator.\r\n * @returns New tree, with item removed.\r\n */\r\n remove(key, comparator) {\r\n return this;\r\n }\r\n /**\r\n * @returns The total number of nodes in the tree.\r\n */\r\n count() {\r\n return 0;\r\n }\r\n /**\r\n * @returns True if the tree is empty.\r\n */\r\n isEmpty() {\r\n return true;\r\n }\r\n /**\r\n * Traverses the tree in key order and calls the specified action function\r\n * for each node.\r\n *\r\n * @param action - Callback function to be called for each\r\n * node. If it returns true, traversal is aborted.\r\n * @returns True if traversal was aborted.\r\n */\r\n inorderTraversal(action) {\r\n return false;\r\n }\r\n /**\r\n * Traverses the tree in reverse key order and calls the specified action function\r\n * for each node.\r\n *\r\n * @param action - Callback function to be called for each\r\n * node. If it returns true, traversal is aborted.\r\n * @returns True if traversal was aborted.\r\n */\r\n reverseTraversal(action) {\r\n return false;\r\n }\r\n minKey() {\r\n return null;\r\n }\r\n maxKey() {\r\n return null;\r\n }\r\n check_() {\r\n return 0;\r\n }\r\n /**\r\n * @returns Whether this node is red.\r\n */\r\n isRed_() {\r\n return false;\r\n }\r\n}\r\n/**\r\n * An immutable sorted map implementation, based on a Left-leaning Red-Black\r\n * tree.\r\n */\r\nclass SortedMap {\r\n /**\r\n * @param comparator_ - Key comparator.\r\n * @param root_ - Optional root node for the map.\r\n */\r\n constructor(comparator_, root_ = SortedMap.EMPTY_NODE) {\r\n this.comparator_ = comparator_;\r\n this.root_ = root_;\r\n }\r\n /**\r\n * Returns a copy of the map, with the specified key/value added or replaced.\r\n * (TODO: We should perhaps rename this method to 'put')\r\n *\r\n * @param key - Key to be added.\r\n * @param value - Value to be added.\r\n * @returns New map, with item added.\r\n */\r\n insert(key, value) {\r\n return new SortedMap(this.comparator_, this.root_\r\n .insert(key, value, this.comparator_)\r\n .copy(null, null, LLRBNode.BLACK, null, null));\r\n }\r\n /**\r\n * Returns a copy of the map, with the specified key removed.\r\n *\r\n * @param key - The key to remove.\r\n * @returns New map, with item removed.\r\n */\r\n remove(key) {\r\n return new SortedMap(this.comparator_, this.root_\r\n .remove(key, this.comparator_)\r\n .copy(null, null, LLRBNode.BLACK, null, null));\r\n }\r\n /**\r\n * Returns the value of the node with the given key, or null.\r\n *\r\n * @param key - The key to look up.\r\n * @returns The value of the node with the given key, or null if the\r\n * key doesn't exist.\r\n */\r\n get(key) {\r\n let cmp;\r\n let node = this.root_;\r\n while (!node.isEmpty()) {\r\n cmp = this.comparator_(key, node.key);\r\n if (cmp === 0) {\r\n return node.value;\r\n }\r\n else if (cmp < 0) {\r\n node = node.left;\r\n }\r\n else if (cmp > 0) {\r\n node = node.right;\r\n }\r\n }\r\n return null;\r\n }\r\n /**\r\n * Returns the key of the item *before* the specified key, or null if key is the first item.\r\n * @param key - The key to find the predecessor of\r\n * @returns The predecessor key.\r\n */\r\n getPredecessorKey(key) {\r\n let cmp, node = this.root_, rightParent = null;\r\n while (!node.isEmpty()) {\r\n cmp = this.comparator_(key, node.key);\r\n if (cmp === 0) {\r\n if (!node.left.isEmpty()) {\r\n node = node.left;\r\n while (!node.right.isEmpty()) {\r\n node = node.right;\r\n }\r\n return node.key;\r\n }\r\n else if (rightParent) {\r\n return rightParent.key;\r\n }\r\n else {\r\n return null; // first item.\r\n }\r\n }\r\n else if (cmp < 0) {\r\n node = node.left;\r\n }\r\n else if (cmp > 0) {\r\n rightParent = node;\r\n node = node.right;\r\n }\r\n }\r\n throw new Error('Attempted to find predecessor key for a nonexistent key. What gives?');\r\n }\r\n /**\r\n * @returns True if the map is empty.\r\n */\r\n isEmpty() {\r\n return this.root_.isEmpty();\r\n }\r\n /**\r\n * @returns The total number of nodes in the map.\r\n */\r\n count() {\r\n return this.root_.count();\r\n }\r\n /**\r\n * @returns The minimum key in the map.\r\n */\r\n minKey() {\r\n return this.root_.minKey();\r\n }\r\n /**\r\n * @returns The maximum key in the map.\r\n */\r\n maxKey() {\r\n return this.root_.maxKey();\r\n }\r\n /**\r\n * Traverses the map in key order and calls the specified action function\r\n * for each key/value pair.\r\n *\r\n * @param action - Callback function to be called\r\n * for each key/value pair. If action returns true, traversal is aborted.\r\n * @returns The first truthy value returned by action, or the last falsey\r\n * value returned by action\r\n */\r\n inorderTraversal(action) {\r\n return this.root_.inorderTraversal(action);\r\n }\r\n /**\r\n * Traverses the map in reverse key order and calls the specified action function\r\n * for each key/value pair.\r\n *\r\n * @param action - Callback function to be called\r\n * for each key/value pair. If action returns true, traversal is aborted.\r\n * @returns True if the traversal was aborted.\r\n */\r\n reverseTraversal(action) {\r\n return this.root_.reverseTraversal(action);\r\n }\r\n /**\r\n * Returns an iterator over the SortedMap.\r\n * @returns The iterator.\r\n */\r\n getIterator(resultGenerator) {\r\n return new SortedMapIterator(this.root_, null, this.comparator_, false, resultGenerator);\r\n }\r\n getIteratorFrom(key, resultGenerator) {\r\n return new SortedMapIterator(this.root_, key, this.comparator_, false, resultGenerator);\r\n }\r\n getReverseIteratorFrom(key, resultGenerator) {\r\n return new SortedMapIterator(this.root_, key, this.comparator_, true, resultGenerator);\r\n }\r\n getReverseIterator(resultGenerator) {\r\n return new SortedMapIterator(this.root_, null, this.comparator_, true, resultGenerator);\r\n }\r\n}\r\n/**\r\n * Always use the same empty node, to reduce memory.\r\n */\r\nSortedMap.EMPTY_NODE = new LLRBEmptyNode();\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction NAME_ONLY_COMPARATOR(left, right) {\r\n return nameCompare(left.name, right.name);\r\n}\r\nfunction NAME_COMPARATOR(left, right) {\r\n return nameCompare(left, right);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nlet MAX_NODE$2;\r\nfunction setMaxNode$1(val) {\r\n MAX_NODE$2 = val;\r\n}\r\nconst priorityHashText = function (priority) {\r\n if (typeof priority === 'number') {\r\n return 'number:' + doubleToIEEE754String(priority);\r\n }\r\n else {\r\n return 'string:' + priority;\r\n }\r\n};\r\n/**\r\n * Validates that a priority snapshot Node is valid.\r\n */\r\nconst validatePriorityNode = function (priorityNode) {\r\n if (priorityNode.isLeafNode()) {\r\n const val = priorityNode.val();\r\n assert(typeof val === 'string' ||\r\n typeof val === 'number' ||\r\n (typeof val === 'object' && contains(val, '.sv')), 'Priority must be a string or number.');\r\n }\r\n else {\r\n assert(priorityNode === MAX_NODE$2 || priorityNode.isEmpty(), 'priority of unexpected type.');\r\n }\r\n // Don't call getPriority() on MAX_NODE to avoid hitting assertion.\r\n assert(priorityNode === MAX_NODE$2 || priorityNode.getPriority().isEmpty(), \"Priority nodes can't have a priority of their own.\");\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nlet __childrenNodeConstructor;\r\n/**\r\n * LeafNode is a class for storing leaf nodes in a DataSnapshot. It\r\n * implements Node and stores the value of the node (a string,\r\n * number, or boolean) accessible via getValue().\r\n */\r\nclass LeafNode {\r\n /**\r\n * @param value_ - The value to store in this leaf node. The object type is\r\n * possible in the event of a deferred value\r\n * @param priorityNode_ - The priority of this node.\r\n */\r\n constructor(value_, priorityNode_ = LeafNode.__childrenNodeConstructor.EMPTY_NODE) {\r\n this.value_ = value_;\r\n this.priorityNode_ = priorityNode_;\r\n this.lazyHash_ = null;\r\n assert(this.value_ !== undefined && this.value_ !== null, \"LeafNode shouldn't be created with null/undefined value.\");\r\n validatePriorityNode(this.priorityNode_);\r\n }\r\n static set __childrenNodeConstructor(val) {\r\n __childrenNodeConstructor = val;\r\n }\r\n static get __childrenNodeConstructor() {\r\n return __childrenNodeConstructor;\r\n }\r\n /** @inheritDoc */\r\n isLeafNode() {\r\n return true;\r\n }\r\n /** @inheritDoc */\r\n getPriority() {\r\n return this.priorityNode_;\r\n }\r\n /** @inheritDoc */\r\n updatePriority(newPriorityNode) {\r\n return new LeafNode(this.value_, newPriorityNode);\r\n }\r\n /** @inheritDoc */\r\n getImmediateChild(childName) {\r\n // Hack to treat priority as a regular child\r\n if (childName === '.priority') {\r\n return this.priorityNode_;\r\n }\r\n else {\r\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE;\r\n }\r\n }\r\n /** @inheritDoc */\r\n getChild(path) {\r\n if (pathIsEmpty(path)) {\r\n return this;\r\n }\r\n else if (pathGetFront(path) === '.priority') {\r\n return this.priorityNode_;\r\n }\r\n else {\r\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE;\r\n }\r\n }\r\n hasChild() {\r\n return false;\r\n }\r\n /** @inheritDoc */\r\n getPredecessorChildName(childName, childNode) {\r\n return null;\r\n }\r\n /** @inheritDoc */\r\n updateImmediateChild(childName, newChildNode) {\r\n if (childName === '.priority') {\r\n return this.updatePriority(newChildNode);\r\n }\r\n else if (newChildNode.isEmpty() && childName !== '.priority') {\r\n return this;\r\n }\r\n else {\r\n return LeafNode.__childrenNodeConstructor.EMPTY_NODE.updateImmediateChild(childName, newChildNode).updatePriority(this.priorityNode_);\r\n }\r\n }\r\n /** @inheritDoc */\r\n updateChild(path, newChildNode) {\r\n const front = pathGetFront(path);\r\n if (front === null) {\r\n return newChildNode;\r\n }\r\n else if (newChildNode.isEmpty() && front !== '.priority') {\r\n return this;\r\n }\r\n else {\r\n assert(front !== '.priority' || pathGetLength(path) === 1, '.priority must be the last token in a path');\r\n return this.updateImmediateChild(front, LeafNode.__childrenNodeConstructor.EMPTY_NODE.updateChild(pathPopFront(path), newChildNode));\r\n }\r\n }\r\n /** @inheritDoc */\r\n isEmpty() {\r\n return false;\r\n }\r\n /** @inheritDoc */\r\n numChildren() {\r\n return 0;\r\n }\r\n /** @inheritDoc */\r\n forEachChild(index, action) {\r\n return false;\r\n }\r\n val(exportFormat) {\r\n if (exportFormat && !this.getPriority().isEmpty()) {\r\n return {\r\n '.value': this.getValue(),\r\n '.priority': this.getPriority().val()\r\n };\r\n }\r\n else {\r\n return this.getValue();\r\n }\r\n }\r\n /** @inheritDoc */\r\n hash() {\r\n if (this.lazyHash_ === null) {\r\n let toHash = '';\r\n if (!this.priorityNode_.isEmpty()) {\r\n toHash +=\r\n 'priority:' +\r\n priorityHashText(this.priorityNode_.val()) +\r\n ':';\r\n }\r\n const type = typeof this.value_;\r\n toHash += type + ':';\r\n if (type === 'number') {\r\n toHash += doubleToIEEE754String(this.value_);\r\n }\r\n else {\r\n toHash += this.value_;\r\n }\r\n this.lazyHash_ = sha1(toHash);\r\n }\r\n return this.lazyHash_;\r\n }\r\n /**\r\n * Returns the value of the leaf node.\r\n * @returns The value of the node.\r\n */\r\n getValue() {\r\n return this.value_;\r\n }\r\n compareTo(other) {\r\n if (other === LeafNode.__childrenNodeConstructor.EMPTY_NODE) {\r\n return 1;\r\n }\r\n else if (other instanceof LeafNode.__childrenNodeConstructor) {\r\n return -1;\r\n }\r\n else {\r\n assert(other.isLeafNode(), 'Unknown node type');\r\n return this.compareToLeafNode_(other);\r\n }\r\n }\r\n /**\r\n * Comparison specifically for two leaf nodes\r\n */\r\n compareToLeafNode_(otherLeaf) {\r\n const otherLeafType = typeof otherLeaf.value_;\r\n const thisLeafType = typeof this.value_;\r\n const otherIndex = LeafNode.VALUE_TYPE_ORDER.indexOf(otherLeafType);\r\n const thisIndex = LeafNode.VALUE_TYPE_ORDER.indexOf(thisLeafType);\r\n assert(otherIndex >= 0, 'Unknown leaf type: ' + otherLeafType);\r\n assert(thisIndex >= 0, 'Unknown leaf type: ' + thisLeafType);\r\n if (otherIndex === thisIndex) {\r\n // Same type, compare values\r\n if (thisLeafType === 'object') {\r\n // Deferred value nodes are all equal, but we should also never get to this point...\r\n return 0;\r\n }\r\n else {\r\n // Note that this works because true > false, all others are number or string comparisons\r\n if (this.value_ < otherLeaf.value_) {\r\n return -1;\r\n }\r\n else if (this.value_ === otherLeaf.value_) {\r\n return 0;\r\n }\r\n else {\r\n return 1;\r\n }\r\n }\r\n }\r\n else {\r\n return thisIndex - otherIndex;\r\n }\r\n }\r\n withIndex() {\r\n return this;\r\n }\r\n isIndexed() {\r\n return true;\r\n }\r\n equals(other) {\r\n if (other === this) {\r\n return true;\r\n }\r\n else if (other.isLeafNode()) {\r\n const otherLeaf = other;\r\n return (this.value_ === otherLeaf.value_ &&\r\n this.priorityNode_.equals(otherLeaf.priorityNode_));\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n}\r\n/**\r\n * The sort order for comparing leaf nodes of different types. If two leaf nodes have\r\n * the same type, the comparison falls back to their value\r\n */\r\nLeafNode.VALUE_TYPE_ORDER = ['object', 'boolean', 'number', 'string'];\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nlet nodeFromJSON$1;\r\nlet MAX_NODE$1;\r\nfunction setNodeFromJSON(val) {\r\n nodeFromJSON$1 = val;\r\n}\r\nfunction setMaxNode(val) {\r\n MAX_NODE$1 = val;\r\n}\r\nclass PriorityIndex extends Index {\r\n compare(a, b) {\r\n const aPriority = a.node.getPriority();\r\n const bPriority = b.node.getPriority();\r\n const indexCmp = aPriority.compareTo(bPriority);\r\n if (indexCmp === 0) {\r\n return nameCompare(a.name, b.name);\r\n }\r\n else {\r\n return indexCmp;\r\n }\r\n }\r\n isDefinedOn(node) {\r\n return !node.getPriority().isEmpty();\r\n }\r\n indexedValueChanged(oldNode, newNode) {\r\n return !oldNode.getPriority().equals(newNode.getPriority());\r\n }\r\n minPost() {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return NamedNode.MIN;\r\n }\r\n maxPost() {\r\n return new NamedNode(MAX_NAME, new LeafNode('[PRIORITY-POST]', MAX_NODE$1));\r\n }\r\n makePost(indexValue, name) {\r\n const priorityNode = nodeFromJSON$1(indexValue);\r\n return new NamedNode(name, new LeafNode('[PRIORITY-POST]', priorityNode));\r\n }\r\n /**\r\n * @returns String representation for inclusion in a query spec\r\n */\r\n toString() {\r\n return '.priority';\r\n }\r\n}\r\nconst PRIORITY_INDEX = new PriorityIndex();\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst LOG_2 = Math.log(2);\r\nclass Base12Num {\r\n constructor(length) {\r\n const logBase2 = (num) => \r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n parseInt((Math.log(num) / LOG_2), 10);\r\n const bitMask = (bits) => parseInt(Array(bits + 1).join('1'), 2);\r\n this.count = logBase2(length + 1);\r\n this.current_ = this.count - 1;\r\n const mask = bitMask(this.count);\r\n this.bits_ = (length + 1) & mask;\r\n }\r\n nextBitIsOne() {\r\n //noinspection JSBitwiseOperatorUsage\r\n const result = !(this.bits_ & (0x1 << this.current_));\r\n this.current_--;\r\n return result;\r\n }\r\n}\r\n/**\r\n * Takes a list of child nodes and constructs a SortedSet using the given comparison\r\n * function\r\n *\r\n * Uses the algorithm described in the paper linked here:\r\n * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.1458\r\n *\r\n * @param childList - Unsorted list of children\r\n * @param cmp - The comparison method to be used\r\n * @param keyFn - An optional function to extract K from a node wrapper, if K's\r\n * type is not NamedNode\r\n * @param mapSortFn - An optional override for comparator used by the generated sorted map\r\n */\r\nconst buildChildSet = function (childList, cmp, keyFn, mapSortFn) {\r\n childList.sort(cmp);\r\n const buildBalancedTree = function (low, high) {\r\n const length = high - low;\r\n let namedNode;\r\n let key;\r\n if (length === 0) {\r\n return null;\r\n }\r\n else if (length === 1) {\r\n namedNode = childList[low];\r\n key = keyFn ? keyFn(namedNode) : namedNode;\r\n return new LLRBNode(key, namedNode.node, LLRBNode.BLACK, null, null);\r\n }\r\n else {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const middle = parseInt((length / 2), 10) + low;\r\n const left = buildBalancedTree(low, middle);\r\n const right = buildBalancedTree(middle + 1, high);\r\n namedNode = childList[middle];\r\n key = keyFn ? keyFn(namedNode) : namedNode;\r\n return new LLRBNode(key, namedNode.node, LLRBNode.BLACK, left, right);\r\n }\r\n };\r\n const buildFrom12Array = function (base12) {\r\n let node = null;\r\n let root = null;\r\n let index = childList.length;\r\n const buildPennant = function (chunkSize, color) {\r\n const low = index - chunkSize;\r\n const high = index;\r\n index -= chunkSize;\r\n const childTree = buildBalancedTree(low + 1, high);\r\n const namedNode = childList[low];\r\n const key = keyFn ? keyFn(namedNode) : namedNode;\r\n attachPennant(new LLRBNode(key, namedNode.node, color, null, childTree));\r\n };\r\n const attachPennant = function (pennant) {\r\n if (node) {\r\n node.left = pennant;\r\n node = pennant;\r\n }\r\n else {\r\n root = pennant;\r\n node = pennant;\r\n }\r\n };\r\n for (let i = 0; i < base12.count; ++i) {\r\n const isOne = base12.nextBitIsOne();\r\n // The number of nodes taken in each slice is 2^(arr.length - (i + 1))\r\n const chunkSize = Math.pow(2, base12.count - (i + 1));\r\n if (isOne) {\r\n buildPennant(chunkSize, LLRBNode.BLACK);\r\n }\r\n else {\r\n // current == 2\r\n buildPennant(chunkSize, LLRBNode.BLACK);\r\n buildPennant(chunkSize, LLRBNode.RED);\r\n }\r\n }\r\n return root;\r\n };\r\n const base12 = new Base12Num(childList.length);\r\n const root = buildFrom12Array(base12);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return new SortedMap(mapSortFn || cmp, root);\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nlet _defaultIndexMap;\r\nconst fallbackObject = {};\r\nclass IndexMap {\r\n constructor(indexes_, indexSet_) {\r\n this.indexes_ = indexes_;\r\n this.indexSet_ = indexSet_;\r\n }\r\n /**\r\n * The default IndexMap for nodes without a priority\r\n */\r\n static get Default() {\r\n assert(fallbackObject && PRIORITY_INDEX, 'ChildrenNode.ts has not been loaded');\r\n _defaultIndexMap =\r\n _defaultIndexMap ||\r\n new IndexMap({ '.priority': fallbackObject }, { '.priority': PRIORITY_INDEX });\r\n return _defaultIndexMap;\r\n }\r\n get(indexKey) {\r\n const sortedMap = safeGet(this.indexes_, indexKey);\r\n if (!sortedMap) {\r\n throw new Error('No index defined for ' + indexKey);\r\n }\r\n if (sortedMap instanceof SortedMap) {\r\n return sortedMap;\r\n }\r\n else {\r\n // The index exists, but it falls back to just name comparison. Return null so that the calling code uses the\r\n // regular child map\r\n return null;\r\n }\r\n }\r\n hasIndex(indexDefinition) {\r\n return contains(this.indexSet_, indexDefinition.toString());\r\n }\r\n addIndex(indexDefinition, existingChildren) {\r\n assert(indexDefinition !== KEY_INDEX, \"KeyIndex always exists and isn't meant to be added to the IndexMap.\");\r\n const childList = [];\r\n let sawIndexedValue = false;\r\n const iter = existingChildren.getIterator(NamedNode.Wrap);\r\n let next = iter.getNext();\r\n while (next) {\r\n sawIndexedValue =\r\n sawIndexedValue || indexDefinition.isDefinedOn(next.node);\r\n childList.push(next);\r\n next = iter.getNext();\r\n }\r\n let newIndex;\r\n if (sawIndexedValue) {\r\n newIndex = buildChildSet(childList, indexDefinition.getCompare());\r\n }\r\n else {\r\n newIndex = fallbackObject;\r\n }\r\n const indexName = indexDefinition.toString();\r\n const newIndexSet = Object.assign({}, this.indexSet_);\r\n newIndexSet[indexName] = indexDefinition;\r\n const newIndexes = Object.assign({}, this.indexes_);\r\n newIndexes[indexName] = newIndex;\r\n return new IndexMap(newIndexes, newIndexSet);\r\n }\r\n /**\r\n * Ensure that this node is properly tracked in any indexes that we're maintaining\r\n */\r\n addToIndexes(namedNode, existingChildren) {\r\n const newIndexes = map(this.indexes_, (indexedChildren, indexName) => {\r\n const index = safeGet(this.indexSet_, indexName);\r\n assert(index, 'Missing index implementation for ' + indexName);\r\n if (indexedChildren === fallbackObject) {\r\n // Check to see if we need to index everything\r\n if (index.isDefinedOn(namedNode.node)) {\r\n // We need to build this index\r\n const childList = [];\r\n const iter = existingChildren.getIterator(NamedNode.Wrap);\r\n let next = iter.getNext();\r\n while (next) {\r\n if (next.name !== namedNode.name) {\r\n childList.push(next);\r\n }\r\n next = iter.getNext();\r\n }\r\n childList.push(namedNode);\r\n return buildChildSet(childList, index.getCompare());\r\n }\r\n else {\r\n // No change, this remains a fallback\r\n return fallbackObject;\r\n }\r\n }\r\n else {\r\n const existingSnap = existingChildren.get(namedNode.name);\r\n let newChildren = indexedChildren;\r\n if (existingSnap) {\r\n newChildren = newChildren.remove(new NamedNode(namedNode.name, existingSnap));\r\n }\r\n return newChildren.insert(namedNode, namedNode.node);\r\n }\r\n });\r\n return new IndexMap(newIndexes, this.indexSet_);\r\n }\r\n /**\r\n * Create a new IndexMap instance with the given value removed\r\n */\r\n removeFromIndexes(namedNode, existingChildren) {\r\n const newIndexes = map(this.indexes_, (indexedChildren) => {\r\n if (indexedChildren === fallbackObject) {\r\n // This is the fallback. Just return it, nothing to do in this case\r\n return indexedChildren;\r\n }\r\n else {\r\n const existingSnap = existingChildren.get(namedNode.name);\r\n if (existingSnap) {\r\n return indexedChildren.remove(new NamedNode(namedNode.name, existingSnap));\r\n }\r\n else {\r\n // No record of this child\r\n return indexedChildren;\r\n }\r\n }\r\n });\r\n return new IndexMap(newIndexes, this.indexSet_);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// TODO: For memory savings, don't store priorityNode_ if it's empty.\r\nlet EMPTY_NODE;\r\n/**\r\n * ChildrenNode is a class for storing internal nodes in a DataSnapshot\r\n * (i.e. nodes with children). It implements Node and stores the\r\n * list of children in the children property, sorted by child name.\r\n */\r\nclass ChildrenNode {\r\n /**\r\n * @param children_ - List of children of this node..\r\n * @param priorityNode_ - The priority of this node (as a snapshot node).\r\n */\r\n constructor(children_, priorityNode_, indexMap_) {\r\n this.children_ = children_;\r\n this.priorityNode_ = priorityNode_;\r\n this.indexMap_ = indexMap_;\r\n this.lazyHash_ = null;\r\n /**\r\n * Note: The only reason we allow null priority is for EMPTY_NODE, since we can't use\r\n * EMPTY_NODE as the priority of EMPTY_NODE. We might want to consider making EMPTY_NODE its own\r\n * class instead of an empty ChildrenNode.\r\n */\r\n if (this.priorityNode_) {\r\n validatePriorityNode(this.priorityNode_);\r\n }\r\n if (this.children_.isEmpty()) {\r\n assert(!this.priorityNode_ || this.priorityNode_.isEmpty(), 'An empty node cannot have a priority');\r\n }\r\n }\r\n static get EMPTY_NODE() {\r\n return (EMPTY_NODE ||\r\n (EMPTY_NODE = new ChildrenNode(new SortedMap(NAME_COMPARATOR), null, IndexMap.Default)));\r\n }\r\n /** @inheritDoc */\r\n isLeafNode() {\r\n return false;\r\n }\r\n /** @inheritDoc */\r\n getPriority() {\r\n return this.priorityNode_ || EMPTY_NODE;\r\n }\r\n /** @inheritDoc */\r\n updatePriority(newPriorityNode) {\r\n if (this.children_.isEmpty()) {\r\n // Don't allow priorities on empty nodes\r\n return this;\r\n }\r\n else {\r\n return new ChildrenNode(this.children_, newPriorityNode, this.indexMap_);\r\n }\r\n }\r\n /** @inheritDoc */\r\n getImmediateChild(childName) {\r\n // Hack to treat priority as a regular child\r\n if (childName === '.priority') {\r\n return this.getPriority();\r\n }\r\n else {\r\n const child = this.children_.get(childName);\r\n return child === null ? EMPTY_NODE : child;\r\n }\r\n }\r\n /** @inheritDoc */\r\n getChild(path) {\r\n const front = pathGetFront(path);\r\n if (front === null) {\r\n return this;\r\n }\r\n return this.getImmediateChild(front).getChild(pathPopFront(path));\r\n }\r\n /** @inheritDoc */\r\n hasChild(childName) {\r\n return this.children_.get(childName) !== null;\r\n }\r\n /** @inheritDoc */\r\n updateImmediateChild(childName, newChildNode) {\r\n assert(newChildNode, 'We should always be passing snapshot nodes');\r\n if (childName === '.priority') {\r\n return this.updatePriority(newChildNode);\r\n }\r\n else {\r\n const namedNode = new NamedNode(childName, newChildNode);\r\n let newChildren, newIndexMap;\r\n if (newChildNode.isEmpty()) {\r\n newChildren = this.children_.remove(childName);\r\n newIndexMap = this.indexMap_.removeFromIndexes(namedNode, this.children_);\r\n }\r\n else {\r\n newChildren = this.children_.insert(childName, newChildNode);\r\n newIndexMap = this.indexMap_.addToIndexes(namedNode, this.children_);\r\n }\r\n const newPriority = newChildren.isEmpty()\r\n ? EMPTY_NODE\r\n : this.priorityNode_;\r\n return new ChildrenNode(newChildren, newPriority, newIndexMap);\r\n }\r\n }\r\n /** @inheritDoc */\r\n updateChild(path, newChildNode) {\r\n const front = pathGetFront(path);\r\n if (front === null) {\r\n return newChildNode;\r\n }\r\n else {\r\n assert(pathGetFront(path) !== '.priority' || pathGetLength(path) === 1, '.priority must be the last token in a path');\r\n const newImmediateChild = this.getImmediateChild(front).updateChild(pathPopFront(path), newChildNode);\r\n return this.updateImmediateChild(front, newImmediateChild);\r\n }\r\n }\r\n /** @inheritDoc */\r\n isEmpty() {\r\n return this.children_.isEmpty();\r\n }\r\n /** @inheritDoc */\r\n numChildren() {\r\n return this.children_.count();\r\n }\r\n /** @inheritDoc */\r\n val(exportFormat) {\r\n if (this.isEmpty()) {\r\n return null;\r\n }\r\n const obj = {};\r\n let numKeys = 0, maxKey = 0, allIntegerKeys = true;\r\n this.forEachChild(PRIORITY_INDEX, (key, childNode) => {\r\n obj[key] = childNode.val(exportFormat);\r\n numKeys++;\r\n if (allIntegerKeys && ChildrenNode.INTEGER_REGEXP_.test(key)) {\r\n maxKey = Math.max(maxKey, Number(key));\r\n }\r\n else {\r\n allIntegerKeys = false;\r\n }\r\n });\r\n if (!exportFormat && allIntegerKeys && maxKey < 2 * numKeys) {\r\n // convert to array.\r\n const array = [];\r\n // eslint-disable-next-line guard-for-in\r\n for (const key in obj) {\r\n array[key] = obj[key];\r\n }\r\n return array;\r\n }\r\n else {\r\n if (exportFormat && !this.getPriority().isEmpty()) {\r\n obj['.priority'] = this.getPriority().val();\r\n }\r\n return obj;\r\n }\r\n }\r\n /** @inheritDoc */\r\n hash() {\r\n if (this.lazyHash_ === null) {\r\n let toHash = '';\r\n if (!this.getPriority().isEmpty()) {\r\n toHash +=\r\n 'priority:' +\r\n priorityHashText(this.getPriority().val()) +\r\n ':';\r\n }\r\n this.forEachChild(PRIORITY_INDEX, (key, childNode) => {\r\n const childHash = childNode.hash();\r\n if (childHash !== '') {\r\n toHash += ':' + key + ':' + childHash;\r\n }\r\n });\r\n this.lazyHash_ = toHash === '' ? '' : sha1(toHash);\r\n }\r\n return this.lazyHash_;\r\n }\r\n /** @inheritDoc */\r\n getPredecessorChildName(childName, childNode, index) {\r\n const idx = this.resolveIndex_(index);\r\n if (idx) {\r\n const predecessor = idx.getPredecessorKey(new NamedNode(childName, childNode));\r\n return predecessor ? predecessor.name : null;\r\n }\r\n else {\r\n return this.children_.getPredecessorKey(childName);\r\n }\r\n }\r\n getFirstChildName(indexDefinition) {\r\n const idx = this.resolveIndex_(indexDefinition);\r\n if (idx) {\r\n const minKey = idx.minKey();\r\n return minKey && minKey.name;\r\n }\r\n else {\r\n return this.children_.minKey();\r\n }\r\n }\r\n getFirstChild(indexDefinition) {\r\n const minKey = this.getFirstChildName(indexDefinition);\r\n if (minKey) {\r\n return new NamedNode(minKey, this.children_.get(minKey));\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n /**\r\n * Given an index, return the key name of the largest value we have, according to that index\r\n */\r\n getLastChildName(indexDefinition) {\r\n const idx = this.resolveIndex_(indexDefinition);\r\n if (idx) {\r\n const maxKey = idx.maxKey();\r\n return maxKey && maxKey.name;\r\n }\r\n else {\r\n return this.children_.maxKey();\r\n }\r\n }\r\n getLastChild(indexDefinition) {\r\n const maxKey = this.getLastChildName(indexDefinition);\r\n if (maxKey) {\r\n return new NamedNode(maxKey, this.children_.get(maxKey));\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n forEachChild(index, action) {\r\n const idx = this.resolveIndex_(index);\r\n if (idx) {\r\n return idx.inorderTraversal(wrappedNode => {\r\n return action(wrappedNode.name, wrappedNode.node);\r\n });\r\n }\r\n else {\r\n return this.children_.inorderTraversal(action);\r\n }\r\n }\r\n getIterator(indexDefinition) {\r\n return this.getIteratorFrom(indexDefinition.minPost(), indexDefinition);\r\n }\r\n getIteratorFrom(startPost, indexDefinition) {\r\n const idx = this.resolveIndex_(indexDefinition);\r\n if (idx) {\r\n return idx.getIteratorFrom(startPost, key => key);\r\n }\r\n else {\r\n const iterator = this.children_.getIteratorFrom(startPost.name, NamedNode.Wrap);\r\n let next = iterator.peek();\r\n while (next != null && indexDefinition.compare(next, startPost) < 0) {\r\n iterator.getNext();\r\n next = iterator.peek();\r\n }\r\n return iterator;\r\n }\r\n }\r\n getReverseIterator(indexDefinition) {\r\n return this.getReverseIteratorFrom(indexDefinition.maxPost(), indexDefinition);\r\n }\r\n getReverseIteratorFrom(endPost, indexDefinition) {\r\n const idx = this.resolveIndex_(indexDefinition);\r\n if (idx) {\r\n return idx.getReverseIteratorFrom(endPost, key => {\r\n return key;\r\n });\r\n }\r\n else {\r\n const iterator = this.children_.getReverseIteratorFrom(endPost.name, NamedNode.Wrap);\r\n let next = iterator.peek();\r\n while (next != null && indexDefinition.compare(next, endPost) > 0) {\r\n iterator.getNext();\r\n next = iterator.peek();\r\n }\r\n return iterator;\r\n }\r\n }\r\n compareTo(other) {\r\n if (this.isEmpty()) {\r\n if (other.isEmpty()) {\r\n return 0;\r\n }\r\n else {\r\n return -1;\r\n }\r\n }\r\n else if (other.isLeafNode() || other.isEmpty()) {\r\n return 1;\r\n }\r\n else if (other === MAX_NODE) {\r\n return -1;\r\n }\r\n else {\r\n // Must be another node with children.\r\n return 0;\r\n }\r\n }\r\n withIndex(indexDefinition) {\r\n if (indexDefinition === KEY_INDEX ||\r\n this.indexMap_.hasIndex(indexDefinition)) {\r\n return this;\r\n }\r\n else {\r\n const newIndexMap = this.indexMap_.addIndex(indexDefinition, this.children_);\r\n return new ChildrenNode(this.children_, this.priorityNode_, newIndexMap);\r\n }\r\n }\r\n isIndexed(index) {\r\n return index === KEY_INDEX || this.indexMap_.hasIndex(index);\r\n }\r\n equals(other) {\r\n if (other === this) {\r\n return true;\r\n }\r\n else if (other.isLeafNode()) {\r\n return false;\r\n }\r\n else {\r\n const otherChildrenNode = other;\r\n if (!this.getPriority().equals(otherChildrenNode.getPriority())) {\r\n return false;\r\n }\r\n else if (this.children_.count() === otherChildrenNode.children_.count()) {\r\n const thisIter = this.getIterator(PRIORITY_INDEX);\r\n const otherIter = otherChildrenNode.getIterator(PRIORITY_INDEX);\r\n let thisCurrent = thisIter.getNext();\r\n let otherCurrent = otherIter.getNext();\r\n while (thisCurrent && otherCurrent) {\r\n if (thisCurrent.name !== otherCurrent.name ||\r\n !thisCurrent.node.equals(otherCurrent.node)) {\r\n return false;\r\n }\r\n thisCurrent = thisIter.getNext();\r\n otherCurrent = otherIter.getNext();\r\n }\r\n return thisCurrent === null && otherCurrent === null;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n }\r\n /**\r\n * Returns a SortedMap ordered by index, or null if the default (by-key) ordering can be used\r\n * instead.\r\n *\r\n */\r\n resolveIndex_(indexDefinition) {\r\n if (indexDefinition === KEY_INDEX) {\r\n return null;\r\n }\r\n else {\r\n return this.indexMap_.get(indexDefinition.toString());\r\n }\r\n }\r\n}\r\nChildrenNode.INTEGER_REGEXP_ = /^(0|[1-9]\\d*)$/;\r\nclass MaxNode extends ChildrenNode {\r\n constructor() {\r\n super(new SortedMap(NAME_COMPARATOR), ChildrenNode.EMPTY_NODE, IndexMap.Default);\r\n }\r\n compareTo(other) {\r\n if (other === this) {\r\n return 0;\r\n }\r\n else {\r\n return 1;\r\n }\r\n }\r\n equals(other) {\r\n // Not that we every compare it, but MAX_NODE is only ever equal to itself\r\n return other === this;\r\n }\r\n getPriority() {\r\n return this;\r\n }\r\n getImmediateChild(childName) {\r\n return ChildrenNode.EMPTY_NODE;\r\n }\r\n isEmpty() {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Marker that will sort higher than any other snapshot.\r\n */\r\nconst MAX_NODE = new MaxNode();\r\nObject.defineProperties(NamedNode, {\r\n MIN: {\r\n value: new NamedNode(MIN_NAME, ChildrenNode.EMPTY_NODE)\r\n },\r\n MAX: {\r\n value: new NamedNode(MAX_NAME, MAX_NODE)\r\n }\r\n});\r\n/**\r\n * Reference Extensions\r\n */\r\nKeyIndex.__EMPTY_NODE = ChildrenNode.EMPTY_NODE;\r\nLeafNode.__childrenNodeConstructor = ChildrenNode;\r\nsetMaxNode$1(MAX_NODE);\r\nsetMaxNode(MAX_NODE);\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst USE_HINZE = true;\r\n/**\r\n * Constructs a snapshot node representing the passed JSON and returns it.\r\n * @param json - JSON to create a node for.\r\n * @param priority - Optional priority to use. This will be ignored if the\r\n * passed JSON contains a .priority property.\r\n */\r\nfunction nodeFromJSON(json, priority = null) {\r\n if (json === null) {\r\n return ChildrenNode.EMPTY_NODE;\r\n }\r\n if (typeof json === 'object' && '.priority' in json) {\r\n priority = json['.priority'];\r\n }\r\n assert(priority === null ||\r\n typeof priority === 'string' ||\r\n typeof priority === 'number' ||\r\n (typeof priority === 'object' && '.sv' in priority), 'Invalid priority type found: ' + typeof priority);\r\n if (typeof json === 'object' && '.value' in json && json['.value'] !== null) {\r\n json = json['.value'];\r\n }\r\n // Valid leaf nodes include non-objects or server-value wrapper objects\r\n if (typeof json !== 'object' || '.sv' in json) {\r\n const jsonLeaf = json;\r\n return new LeafNode(jsonLeaf, nodeFromJSON(priority));\r\n }\r\n if (!(json instanceof Array) && USE_HINZE) {\r\n const children = [];\r\n let childrenHavePriority = false;\r\n const hinzeJsonObj = json;\r\n each(hinzeJsonObj, (key, child) => {\r\n if (key.substring(0, 1) !== '.') {\r\n // Ignore metadata nodes\r\n const childNode = nodeFromJSON(child);\r\n if (!childNode.isEmpty()) {\r\n childrenHavePriority =\r\n childrenHavePriority || !childNode.getPriority().isEmpty();\r\n children.push(new NamedNode(key, childNode));\r\n }\r\n }\r\n });\r\n if (children.length === 0) {\r\n return ChildrenNode.EMPTY_NODE;\r\n }\r\n const childSet = buildChildSet(children, NAME_ONLY_COMPARATOR, namedNode => namedNode.name, NAME_COMPARATOR);\r\n if (childrenHavePriority) {\r\n const sortedChildSet = buildChildSet(children, PRIORITY_INDEX.getCompare());\r\n return new ChildrenNode(childSet, nodeFromJSON(priority), new IndexMap({ '.priority': sortedChildSet }, { '.priority': PRIORITY_INDEX }));\r\n }\r\n else {\r\n return new ChildrenNode(childSet, nodeFromJSON(priority), IndexMap.Default);\r\n }\r\n }\r\n else {\r\n let node = ChildrenNode.EMPTY_NODE;\r\n each(json, (key, childData) => {\r\n if (contains(json, key)) {\r\n if (key.substring(0, 1) !== '.') {\r\n // ignore metadata nodes.\r\n const childNode = nodeFromJSON(childData);\r\n if (childNode.isLeafNode() || !childNode.isEmpty()) {\r\n node = node.updateImmediateChild(key, childNode);\r\n }\r\n }\r\n }\r\n });\r\n return node.updatePriority(nodeFromJSON(priority));\r\n }\r\n}\r\nsetNodeFromJSON(nodeFromJSON);\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass PathIndex extends Index {\r\n constructor(indexPath_) {\r\n super();\r\n this.indexPath_ = indexPath_;\r\n assert(!pathIsEmpty(indexPath_) && pathGetFront(indexPath_) !== '.priority', \"Can't create PathIndex with empty path or .priority key\");\r\n }\r\n extractChild(snap) {\r\n return snap.getChild(this.indexPath_);\r\n }\r\n isDefinedOn(node) {\r\n return !node.getChild(this.indexPath_).isEmpty();\r\n }\r\n compare(a, b) {\r\n const aChild = this.extractChild(a.node);\r\n const bChild = this.extractChild(b.node);\r\n const indexCmp = aChild.compareTo(bChild);\r\n if (indexCmp === 0) {\r\n return nameCompare(a.name, b.name);\r\n }\r\n else {\r\n return indexCmp;\r\n }\r\n }\r\n makePost(indexValue, name) {\r\n const valueNode = nodeFromJSON(indexValue);\r\n const node = ChildrenNode.EMPTY_NODE.updateChild(this.indexPath_, valueNode);\r\n return new NamedNode(name, node);\r\n }\r\n maxPost() {\r\n const node = ChildrenNode.EMPTY_NODE.updateChild(this.indexPath_, MAX_NODE);\r\n return new NamedNode(MAX_NAME, node);\r\n }\r\n toString() {\r\n return pathSlice(this.indexPath_, 0).join('/');\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass ValueIndex extends Index {\r\n compare(a, b) {\r\n const indexCmp = a.node.compareTo(b.node);\r\n if (indexCmp === 0) {\r\n return nameCompare(a.name, b.name);\r\n }\r\n else {\r\n return indexCmp;\r\n }\r\n }\r\n isDefinedOn(node) {\r\n return true;\r\n }\r\n indexedValueChanged(oldNode, newNode) {\r\n return !oldNode.equals(newNode);\r\n }\r\n minPost() {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return NamedNode.MIN;\r\n }\r\n maxPost() {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return NamedNode.MAX;\r\n }\r\n makePost(indexValue, name) {\r\n const valueNode = nodeFromJSON(indexValue);\r\n return new NamedNode(name, valueNode);\r\n }\r\n /**\r\n * @returns String representation for inclusion in a query spec\r\n */\r\n toString() {\r\n return '.value';\r\n }\r\n}\r\nconst VALUE_INDEX = new ValueIndex();\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Modeled after base64 web-safe chars, but ordered by ASCII.\r\nconst PUSH_CHARS = '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz';\r\nconst MIN_PUSH_CHAR = '-';\r\nconst MAX_PUSH_CHAR = 'z';\r\nconst MAX_KEY_LEN = 786;\r\n/**\r\n * Fancy ID generator that creates 20-character string identifiers with the\r\n * following properties:\r\n *\r\n * 1. They're based on timestamp so that they sort *after* any existing ids.\r\n * 2. They contain 72-bits of random data after the timestamp so that IDs won't\r\n * collide with other clients' IDs.\r\n * 3. They sort *lexicographically* (so the timestamp is converted to characters\r\n * that will sort properly).\r\n * 4. They're monotonically increasing. Even if you generate more than one in\r\n * the same timestamp, the latter ones will sort after the former ones. We do\r\n * this by using the previous random bits but \"incrementing\" them by 1 (only\r\n * in the case of a timestamp collision).\r\n */\r\nconst nextPushId = (function () {\r\n // Timestamp of last push, used to prevent local collisions if you push twice\r\n // in one ms.\r\n let lastPushTime = 0;\r\n // We generate 72-bits of randomness which get turned into 12 characters and\r\n // appended to the timestamp to prevent collisions with other clients. We\r\n // store the last characters we generated because in the event of a collision,\r\n // we'll use those same characters except \"incremented\" by one.\r\n const lastRandChars = [];\r\n return function (now) {\r\n const duplicateTime = now === lastPushTime;\r\n lastPushTime = now;\r\n let i;\r\n const timeStampChars = new Array(8);\r\n for (i = 7; i >= 0; i--) {\r\n timeStampChars[i] = PUSH_CHARS.charAt(now % 64);\r\n // NOTE: Can't use << here because javascript will convert to int and lose\r\n // the upper bits.\r\n now = Math.floor(now / 64);\r\n }\r\n assert(now === 0, 'Cannot push at time == 0');\r\n let id = timeStampChars.join('');\r\n if (!duplicateTime) {\r\n for (i = 0; i < 12; i++) {\r\n lastRandChars[i] = Math.floor(Math.random() * 64);\r\n }\r\n }\r\n else {\r\n // If the timestamp hasn't changed since last push, use the same random\r\n // number, except incremented by 1.\r\n for (i = 11; i >= 0 && lastRandChars[i] === 63; i--) {\r\n lastRandChars[i] = 0;\r\n }\r\n lastRandChars[i]++;\r\n }\r\n for (i = 0; i < 12; i++) {\r\n id += PUSH_CHARS.charAt(lastRandChars[i]);\r\n }\r\n assert(id.length === 20, 'nextPushId: Length should be 20.');\r\n return id;\r\n };\r\n})();\r\nconst successor = function (key) {\r\n if (key === '' + INTEGER_32_MAX) {\r\n // See https://firebase.google.com/docs/database/web/lists-of-data#data-order\r\n return MIN_PUSH_CHAR;\r\n }\r\n const keyAsInt = tryParseInt(key);\r\n if (keyAsInt != null) {\r\n return '' + (keyAsInt + 1);\r\n }\r\n const next = new Array(key.length);\r\n for (let i = 0; i < next.length; i++) {\r\n next[i] = key.charAt(i);\r\n }\r\n if (next.length < MAX_KEY_LEN) {\r\n next.push(MIN_PUSH_CHAR);\r\n return next.join('');\r\n }\r\n let i = next.length - 1;\r\n while (i >= 0 && next[i] === MAX_PUSH_CHAR) {\r\n i--;\r\n }\r\n // `successor` was called on the largest possible key, so return the\r\n // MAX_NAME, which sorts larger than all keys.\r\n if (i === -1) {\r\n return MAX_NAME;\r\n }\r\n const source = next[i];\r\n const sourcePlusOne = PUSH_CHARS.charAt(PUSH_CHARS.indexOf(source) + 1);\r\n next[i] = sourcePlusOne;\r\n return next.slice(0, i + 1).join('');\r\n};\r\n// `key` is assumed to be non-empty.\r\nconst predecessor = function (key) {\r\n if (key === '' + INTEGER_32_MIN) {\r\n return MIN_NAME;\r\n }\r\n const keyAsInt = tryParseInt(key);\r\n if (keyAsInt != null) {\r\n return '' + (keyAsInt - 1);\r\n }\r\n const next = new Array(key.length);\r\n for (let i = 0; i < next.length; i++) {\r\n next[i] = key.charAt(i);\r\n }\r\n // If `key` ends in `MIN_PUSH_CHAR`, the largest key lexicographically\r\n // smaller than `key`, is `key[0:key.length - 1]`. The next key smaller\r\n // than that, `predecessor(predecessor(key))`, is\r\n //\r\n // `key[0:key.length - 2] + (key[key.length - 1] - 1) + \\\r\n // { MAX_PUSH_CHAR repeated MAX_KEY_LEN - (key.length - 1) times }\r\n //\r\n // analogous to increment/decrement for base-10 integers.\r\n //\r\n // This works because lexigographic comparison works character-by-character,\r\n // using length as a tie-breaker if one key is a prefix of the other.\r\n if (next[next.length - 1] === MIN_PUSH_CHAR) {\r\n if (next.length === 1) {\r\n // See https://firebase.google.com/docs/database/web/lists-of-data#orderbykey\r\n return '' + INTEGER_32_MAX;\r\n }\r\n delete next[next.length - 1];\r\n return next.join('');\r\n }\r\n // Replace the last character with it's immediate predecessor, and\r\n // fill the suffix of the key with MAX_PUSH_CHAR. This is the\r\n // lexicographically largest possible key smaller than `key`.\r\n next[next.length - 1] = PUSH_CHARS.charAt(PUSH_CHARS.indexOf(next[next.length - 1]) - 1);\r\n return next.join('') + MAX_PUSH_CHAR.repeat(MAX_KEY_LEN - next.length);\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction changeValue(snapshotNode) {\r\n return { type: \"value\" /* VALUE */, snapshotNode };\r\n}\r\nfunction changeChildAdded(childName, snapshotNode) {\r\n return { type: \"child_added\" /* CHILD_ADDED */, snapshotNode, childName };\r\n}\r\nfunction changeChildRemoved(childName, snapshotNode) {\r\n return { type: \"child_removed\" /* CHILD_REMOVED */, snapshotNode, childName };\r\n}\r\nfunction changeChildChanged(childName, snapshotNode, oldSnap) {\r\n return {\r\n type: \"child_changed\" /* CHILD_CHANGED */,\r\n snapshotNode,\r\n childName,\r\n oldSnap\r\n };\r\n}\r\nfunction changeChildMoved(childName, snapshotNode) {\r\n return { type: \"child_moved\" /* CHILD_MOVED */, snapshotNode, childName };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Doesn't really filter nodes but applies an index to the node and keeps track of any changes\r\n */\r\nclass IndexedFilter {\r\n constructor(index_) {\r\n this.index_ = index_;\r\n }\r\n updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator) {\r\n assert(snap.isIndexed(this.index_), 'A node must be indexed if only a child is updated');\r\n const oldChild = snap.getImmediateChild(key);\r\n // Check if anything actually changed.\r\n if (oldChild.getChild(affectedPath).equals(newChild.getChild(affectedPath))) {\r\n // There's an edge case where a child can enter or leave the view because affectedPath was set to null.\r\n // In this case, affectedPath will appear null in both the old and new snapshots. So we need\r\n // to avoid treating these cases as \"nothing changed.\"\r\n if (oldChild.isEmpty() === newChild.isEmpty()) {\r\n // Nothing changed.\r\n // This assert should be valid, but it's expensive (can dominate perf testing) so don't actually do it.\r\n //assert(oldChild.equals(newChild), 'Old and new snapshots should be equal.');\r\n return snap;\r\n }\r\n }\r\n if (optChangeAccumulator != null) {\r\n if (newChild.isEmpty()) {\r\n if (snap.hasChild(key)) {\r\n optChangeAccumulator.trackChildChange(changeChildRemoved(key, oldChild));\r\n }\r\n else {\r\n assert(snap.isLeafNode(), 'A child remove without an old child only makes sense on a leaf node');\r\n }\r\n }\r\n else if (oldChild.isEmpty()) {\r\n optChangeAccumulator.trackChildChange(changeChildAdded(key, newChild));\r\n }\r\n else {\r\n optChangeAccumulator.trackChildChange(changeChildChanged(key, newChild, oldChild));\r\n }\r\n }\r\n if (snap.isLeafNode() && newChild.isEmpty()) {\r\n return snap;\r\n }\r\n else {\r\n // Make sure the node is indexed\r\n return snap.updateImmediateChild(key, newChild).withIndex(this.index_);\r\n }\r\n }\r\n updateFullNode(oldSnap, newSnap, optChangeAccumulator) {\r\n if (optChangeAccumulator != null) {\r\n if (!oldSnap.isLeafNode()) {\r\n oldSnap.forEachChild(PRIORITY_INDEX, (key, childNode) => {\r\n if (!newSnap.hasChild(key)) {\r\n optChangeAccumulator.trackChildChange(changeChildRemoved(key, childNode));\r\n }\r\n });\r\n }\r\n if (!newSnap.isLeafNode()) {\r\n newSnap.forEachChild(PRIORITY_INDEX, (key, childNode) => {\r\n if (oldSnap.hasChild(key)) {\r\n const oldChild = oldSnap.getImmediateChild(key);\r\n if (!oldChild.equals(childNode)) {\r\n optChangeAccumulator.trackChildChange(changeChildChanged(key, childNode, oldChild));\r\n }\r\n }\r\n else {\r\n optChangeAccumulator.trackChildChange(changeChildAdded(key, childNode));\r\n }\r\n });\r\n }\r\n }\r\n return newSnap.withIndex(this.index_);\r\n }\r\n updatePriority(oldSnap, newPriority) {\r\n if (oldSnap.isEmpty()) {\r\n return ChildrenNode.EMPTY_NODE;\r\n }\r\n else {\r\n return oldSnap.updatePriority(newPriority);\r\n }\r\n }\r\n filtersNodes() {\r\n return false;\r\n }\r\n getIndexedFilter() {\r\n return this;\r\n }\r\n getIndex() {\r\n return this.index_;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Filters nodes by range and uses an IndexFilter to track any changes after filtering the node\r\n */\r\nclass RangedFilter {\r\n constructor(params) {\r\n this.indexedFilter_ = new IndexedFilter(params.getIndex());\r\n this.index_ = params.getIndex();\r\n this.startPost_ = RangedFilter.getStartPost_(params);\r\n this.endPost_ = RangedFilter.getEndPost_(params);\r\n }\r\n getStartPost() {\r\n return this.startPost_;\r\n }\r\n getEndPost() {\r\n return this.endPost_;\r\n }\r\n matches(node) {\r\n return (this.index_.compare(this.getStartPost(), node) <= 0 &&\r\n this.index_.compare(node, this.getEndPost()) <= 0);\r\n }\r\n updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator) {\r\n if (!this.matches(new NamedNode(key, newChild))) {\r\n newChild = ChildrenNode.EMPTY_NODE;\r\n }\r\n return this.indexedFilter_.updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\r\n }\r\n updateFullNode(oldSnap, newSnap, optChangeAccumulator) {\r\n if (newSnap.isLeafNode()) {\r\n // Make sure we have a children node with the correct index, not a leaf node;\r\n newSnap = ChildrenNode.EMPTY_NODE;\r\n }\r\n let filtered = newSnap.withIndex(this.index_);\r\n // Don't support priorities on queries\r\n filtered = filtered.updatePriority(ChildrenNode.EMPTY_NODE);\r\n const self = this;\r\n newSnap.forEachChild(PRIORITY_INDEX, (key, childNode) => {\r\n if (!self.matches(new NamedNode(key, childNode))) {\r\n filtered = filtered.updateImmediateChild(key, ChildrenNode.EMPTY_NODE);\r\n }\r\n });\r\n return this.indexedFilter_.updateFullNode(oldSnap, filtered, optChangeAccumulator);\r\n }\r\n updatePriority(oldSnap, newPriority) {\r\n // Don't support priorities on queries\r\n return oldSnap;\r\n }\r\n filtersNodes() {\r\n return true;\r\n }\r\n getIndexedFilter() {\r\n return this.indexedFilter_;\r\n }\r\n getIndex() {\r\n return this.index_;\r\n }\r\n static getStartPost_(params) {\r\n if (params.hasStart()) {\r\n const startName = params.getIndexStartName();\r\n return params.getIndex().makePost(params.getIndexStartValue(), startName);\r\n }\r\n else {\r\n return params.getIndex().minPost();\r\n }\r\n }\r\n static getEndPost_(params) {\r\n if (params.hasEnd()) {\r\n const endName = params.getIndexEndName();\r\n return params.getIndex().makePost(params.getIndexEndValue(), endName);\r\n }\r\n else {\r\n return params.getIndex().maxPost();\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Applies a limit and a range to a node and uses RangedFilter to do the heavy lifting where possible\r\n */\r\nclass LimitedFilter {\r\n constructor(params) {\r\n this.rangedFilter_ = new RangedFilter(params);\r\n this.index_ = params.getIndex();\r\n this.limit_ = params.getLimit();\r\n this.reverse_ = !params.isViewFromLeft();\r\n }\r\n updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator) {\r\n if (!this.rangedFilter_.matches(new NamedNode(key, newChild))) {\r\n newChild = ChildrenNode.EMPTY_NODE;\r\n }\r\n if (snap.getImmediateChild(key).equals(newChild)) {\r\n // No change\r\n return snap;\r\n }\r\n else if (snap.numChildren() < this.limit_) {\r\n return this.rangedFilter_\r\n .getIndexedFilter()\r\n .updateChild(snap, key, newChild, affectedPath, source, optChangeAccumulator);\r\n }\r\n else {\r\n return this.fullLimitUpdateChild_(snap, key, newChild, source, optChangeAccumulator);\r\n }\r\n }\r\n updateFullNode(oldSnap, newSnap, optChangeAccumulator) {\r\n let filtered;\r\n if (newSnap.isLeafNode() || newSnap.isEmpty()) {\r\n // Make sure we have a children node with the correct index, not a leaf node;\r\n filtered = ChildrenNode.EMPTY_NODE.withIndex(this.index_);\r\n }\r\n else {\r\n if (this.limit_ * 2 < newSnap.numChildren() &&\r\n newSnap.isIndexed(this.index_)) {\r\n // Easier to build up a snapshot, since what we're given has more than twice the elements we want\r\n filtered = ChildrenNode.EMPTY_NODE.withIndex(this.index_);\r\n // anchor to the startPost, endPost, or last element as appropriate\r\n let iterator;\r\n if (this.reverse_) {\r\n iterator = newSnap.getReverseIteratorFrom(this.rangedFilter_.getEndPost(), this.index_);\r\n }\r\n else {\r\n iterator = newSnap.getIteratorFrom(this.rangedFilter_.getStartPost(), this.index_);\r\n }\r\n let count = 0;\r\n while (iterator.hasNext() && count < this.limit_) {\r\n const next = iterator.getNext();\r\n let inRange;\r\n if (this.reverse_) {\r\n inRange =\r\n this.index_.compare(this.rangedFilter_.getStartPost(), next) <= 0;\r\n }\r\n else {\r\n inRange =\r\n this.index_.compare(next, this.rangedFilter_.getEndPost()) <= 0;\r\n }\r\n if (inRange) {\r\n filtered = filtered.updateImmediateChild(next.name, next.node);\r\n count++;\r\n }\r\n else {\r\n // if we have reached the end post, we cannot keep adding elemments\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n // The snap contains less than twice the limit. Faster to delete from the snap than build up a new one\r\n filtered = newSnap.withIndex(this.index_);\r\n // Don't support priorities on queries\r\n filtered = filtered.updatePriority(ChildrenNode.EMPTY_NODE);\r\n let startPost;\r\n let endPost;\r\n let cmp;\r\n let iterator;\r\n if (this.reverse_) {\r\n iterator = filtered.getReverseIterator(this.index_);\r\n startPost = this.rangedFilter_.getEndPost();\r\n endPost = this.rangedFilter_.getStartPost();\r\n const indexCompare = this.index_.getCompare();\r\n cmp = (a, b) => indexCompare(b, a);\r\n }\r\n else {\r\n iterator = filtered.getIterator(this.index_);\r\n startPost = this.rangedFilter_.getStartPost();\r\n endPost = this.rangedFilter_.getEndPost();\r\n cmp = this.index_.getCompare();\r\n }\r\n let count = 0;\r\n let foundStartPost = false;\r\n while (iterator.hasNext()) {\r\n const next = iterator.getNext();\r\n if (!foundStartPost && cmp(startPost, next) <= 0) {\r\n // start adding\r\n foundStartPost = true;\r\n }\r\n const inRange = foundStartPost && count < this.limit_ && cmp(next, endPost) <= 0;\r\n if (inRange) {\r\n count++;\r\n }\r\n else {\r\n filtered = filtered.updateImmediateChild(next.name, ChildrenNode.EMPTY_NODE);\r\n }\r\n }\r\n }\r\n }\r\n return this.rangedFilter_\r\n .getIndexedFilter()\r\n .updateFullNode(oldSnap, filtered, optChangeAccumulator);\r\n }\r\n updatePriority(oldSnap, newPriority) {\r\n // Don't support priorities on queries\r\n return oldSnap;\r\n }\r\n filtersNodes() {\r\n return true;\r\n }\r\n getIndexedFilter() {\r\n return this.rangedFilter_.getIndexedFilter();\r\n }\r\n getIndex() {\r\n return this.index_;\r\n }\r\n fullLimitUpdateChild_(snap, childKey, childSnap, source, changeAccumulator) {\r\n // TODO: rename all cache stuff etc to general snap terminology\r\n let cmp;\r\n if (this.reverse_) {\r\n const indexCmp = this.index_.getCompare();\r\n cmp = (a, b) => indexCmp(b, a);\r\n }\r\n else {\r\n cmp = this.index_.getCompare();\r\n }\r\n const oldEventCache = snap;\r\n assert(oldEventCache.numChildren() === this.limit_, '');\r\n const newChildNamedNode = new NamedNode(childKey, childSnap);\r\n const windowBoundary = this.reverse_\r\n ? oldEventCache.getFirstChild(this.index_)\r\n : oldEventCache.getLastChild(this.index_);\r\n const inRange = this.rangedFilter_.matches(newChildNamedNode);\r\n if (oldEventCache.hasChild(childKey)) {\r\n const oldChildSnap = oldEventCache.getImmediateChild(childKey);\r\n let nextChild = source.getChildAfterChild(this.index_, windowBoundary, this.reverse_);\r\n while (nextChild != null &&\r\n (nextChild.name === childKey || oldEventCache.hasChild(nextChild.name))) {\r\n // There is a weird edge case where a node is updated as part of a merge in the write tree, but hasn't\r\n // been applied to the limited filter yet. Ignore this next child which will be updated later in\r\n // the limited filter...\r\n nextChild = source.getChildAfterChild(this.index_, nextChild, this.reverse_);\r\n }\r\n const compareNext = nextChild == null ? 1 : cmp(nextChild, newChildNamedNode);\r\n const remainsInWindow = inRange && !childSnap.isEmpty() && compareNext >= 0;\r\n if (remainsInWindow) {\r\n if (changeAccumulator != null) {\r\n changeAccumulator.trackChildChange(changeChildChanged(childKey, childSnap, oldChildSnap));\r\n }\r\n return oldEventCache.updateImmediateChild(childKey, childSnap);\r\n }\r\n else {\r\n if (changeAccumulator != null) {\r\n changeAccumulator.trackChildChange(changeChildRemoved(childKey, oldChildSnap));\r\n }\r\n const newEventCache = oldEventCache.updateImmediateChild(childKey, ChildrenNode.EMPTY_NODE);\r\n const nextChildInRange = nextChild != null && this.rangedFilter_.matches(nextChild);\r\n if (nextChildInRange) {\r\n if (changeAccumulator != null) {\r\n changeAccumulator.trackChildChange(changeChildAdded(nextChild.name, nextChild.node));\r\n }\r\n return newEventCache.updateImmediateChild(nextChild.name, nextChild.node);\r\n }\r\n else {\r\n return newEventCache;\r\n }\r\n }\r\n }\r\n else if (childSnap.isEmpty()) {\r\n // we're deleting a node, but it was not in the window, so ignore it\r\n return snap;\r\n }\r\n else if (inRange) {\r\n if (cmp(windowBoundary, newChildNamedNode) >= 0) {\r\n if (changeAccumulator != null) {\r\n changeAccumulator.trackChildChange(changeChildRemoved(windowBoundary.name, windowBoundary.node));\r\n changeAccumulator.trackChildChange(changeChildAdded(childKey, childSnap));\r\n }\r\n return oldEventCache\r\n .updateImmediateChild(childKey, childSnap)\r\n .updateImmediateChild(windowBoundary.name, ChildrenNode.EMPTY_NODE);\r\n }\r\n else {\r\n return snap;\r\n }\r\n }\r\n else {\r\n return snap;\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * This class is an immutable-from-the-public-api struct containing a set of query parameters defining a\r\n * range to be returned for a particular location. It is assumed that validation of parameters is done at the\r\n * user-facing API level, so it is not done here.\r\n *\r\n * @internal\r\n */\r\nclass QueryParams {\r\n constructor() {\r\n this.limitSet_ = false;\r\n this.startSet_ = false;\r\n this.startNameSet_ = false;\r\n this.startAfterSet_ = false;\r\n this.endSet_ = false;\r\n this.endNameSet_ = false;\r\n this.endBeforeSet_ = false;\r\n this.limit_ = 0;\r\n this.viewFrom_ = '';\r\n this.indexStartValue_ = null;\r\n this.indexStartName_ = '';\r\n this.indexEndValue_ = null;\r\n this.indexEndName_ = '';\r\n this.index_ = PRIORITY_INDEX;\r\n }\r\n hasStart() {\r\n return this.startSet_;\r\n }\r\n hasStartAfter() {\r\n return this.startAfterSet_;\r\n }\r\n hasEndBefore() {\r\n return this.endBeforeSet_;\r\n }\r\n /**\r\n * @returns True if it would return from left.\r\n */\r\n isViewFromLeft() {\r\n if (this.viewFrom_ === '') {\r\n // limit(), rather than limitToFirst or limitToLast was called.\r\n // This means that only one of startSet_ and endSet_ is true. Use them\r\n // to calculate which side of the view to anchor to. If neither is set,\r\n // anchor to the end.\r\n return this.startSet_;\r\n }\r\n else {\r\n return this.viewFrom_ === \"l\" /* VIEW_FROM_LEFT */;\r\n }\r\n }\r\n /**\r\n * Only valid to call if hasStart() returns true\r\n */\r\n getIndexStartValue() {\r\n assert(this.startSet_, 'Only valid if start has been set');\r\n return this.indexStartValue_;\r\n }\r\n /**\r\n * Only valid to call if hasStart() returns true.\r\n * Returns the starting key name for the range defined by these query parameters\r\n */\r\n getIndexStartName() {\r\n assert(this.startSet_, 'Only valid if start has been set');\r\n if (this.startNameSet_) {\r\n return this.indexStartName_;\r\n }\r\n else {\r\n return MIN_NAME;\r\n }\r\n }\r\n hasEnd() {\r\n return this.endSet_;\r\n }\r\n /**\r\n * Only valid to call if hasEnd() returns true.\r\n */\r\n getIndexEndValue() {\r\n assert(this.endSet_, 'Only valid if end has been set');\r\n return this.indexEndValue_;\r\n }\r\n /**\r\n * Only valid to call if hasEnd() returns true.\r\n * Returns the end key name for the range defined by these query parameters\r\n */\r\n getIndexEndName() {\r\n assert(this.endSet_, 'Only valid if end has been set');\r\n if (this.endNameSet_) {\r\n return this.indexEndName_;\r\n }\r\n else {\r\n return MAX_NAME;\r\n }\r\n }\r\n hasLimit() {\r\n return this.limitSet_;\r\n }\r\n /**\r\n * @returns True if a limit has been set and it has been explicitly anchored\r\n */\r\n hasAnchoredLimit() {\r\n return this.limitSet_ && this.viewFrom_ !== '';\r\n }\r\n /**\r\n * Only valid to call if hasLimit() returns true\r\n */\r\n getLimit() {\r\n assert(this.limitSet_, 'Only valid if limit has been set');\r\n return this.limit_;\r\n }\r\n getIndex() {\r\n return this.index_;\r\n }\r\n loadsAllData() {\r\n return !(this.startSet_ || this.endSet_ || this.limitSet_);\r\n }\r\n isDefault() {\r\n return this.loadsAllData() && this.index_ === PRIORITY_INDEX;\r\n }\r\n copy() {\r\n const copy = new QueryParams();\r\n copy.limitSet_ = this.limitSet_;\r\n copy.limit_ = this.limit_;\r\n copy.startSet_ = this.startSet_;\r\n copy.indexStartValue_ = this.indexStartValue_;\r\n copy.startNameSet_ = this.startNameSet_;\r\n copy.indexStartName_ = this.indexStartName_;\r\n copy.endSet_ = this.endSet_;\r\n copy.indexEndValue_ = this.indexEndValue_;\r\n copy.endNameSet_ = this.endNameSet_;\r\n copy.indexEndName_ = this.indexEndName_;\r\n copy.index_ = this.index_;\r\n copy.viewFrom_ = this.viewFrom_;\r\n return copy;\r\n }\r\n}\r\nfunction queryParamsGetNodeFilter(queryParams) {\r\n if (queryParams.loadsAllData()) {\r\n return new IndexedFilter(queryParams.getIndex());\r\n }\r\n else if (queryParams.hasLimit()) {\r\n return new LimitedFilter(queryParams);\r\n }\r\n else {\r\n return new RangedFilter(queryParams);\r\n }\r\n}\r\nfunction queryParamsLimitToFirst(queryParams, newLimit) {\r\n const newParams = queryParams.copy();\r\n newParams.limitSet_ = true;\r\n newParams.limit_ = newLimit;\r\n newParams.viewFrom_ = \"l\" /* VIEW_FROM_LEFT */;\r\n return newParams;\r\n}\r\nfunction queryParamsLimitToLast(queryParams, newLimit) {\r\n const newParams = queryParams.copy();\r\n newParams.limitSet_ = true;\r\n newParams.limit_ = newLimit;\r\n newParams.viewFrom_ = \"r\" /* VIEW_FROM_RIGHT */;\r\n return newParams;\r\n}\r\nfunction queryParamsStartAt(queryParams, indexValue, key) {\r\n const newParams = queryParams.copy();\r\n newParams.startSet_ = true;\r\n if (indexValue === undefined) {\r\n indexValue = null;\r\n }\r\n newParams.indexStartValue_ = indexValue;\r\n if (key != null) {\r\n newParams.startNameSet_ = true;\r\n newParams.indexStartName_ = key;\r\n }\r\n else {\r\n newParams.startNameSet_ = false;\r\n newParams.indexStartName_ = '';\r\n }\r\n return newParams;\r\n}\r\nfunction queryParamsStartAfter(queryParams, indexValue, key) {\r\n let params;\r\n if (queryParams.index_ === KEY_INDEX) {\r\n if (typeof indexValue === 'string') {\r\n indexValue = successor(indexValue);\r\n }\r\n params = queryParamsStartAt(queryParams, indexValue, key);\r\n }\r\n else {\r\n let childKey;\r\n if (key == null) {\r\n childKey = MAX_NAME;\r\n }\r\n else {\r\n childKey = successor(key);\r\n }\r\n params = queryParamsStartAt(queryParams, indexValue, childKey);\r\n }\r\n params.startAfterSet_ = true;\r\n return params;\r\n}\r\nfunction queryParamsEndAt(queryParams, indexValue, key) {\r\n const newParams = queryParams.copy();\r\n newParams.endSet_ = true;\r\n if (indexValue === undefined) {\r\n indexValue = null;\r\n }\r\n newParams.indexEndValue_ = indexValue;\r\n if (key !== undefined) {\r\n newParams.endNameSet_ = true;\r\n newParams.indexEndName_ = key;\r\n }\r\n else {\r\n newParams.endNameSet_ = false;\r\n newParams.indexEndName_ = '';\r\n }\r\n return newParams;\r\n}\r\nfunction queryParamsEndBefore(queryParams, indexValue, key) {\r\n let childKey;\r\n let params;\r\n if (queryParams.index_ === KEY_INDEX) {\r\n if (typeof indexValue === 'string') {\r\n indexValue = predecessor(indexValue);\r\n }\r\n params = queryParamsEndAt(queryParams, indexValue, key);\r\n }\r\n else {\r\n if (key == null) {\r\n childKey = MIN_NAME;\r\n }\r\n else {\r\n childKey = predecessor(key);\r\n }\r\n params = queryParamsEndAt(queryParams, indexValue, childKey);\r\n }\r\n params.endBeforeSet_ = true;\r\n return params;\r\n}\r\nfunction queryParamsOrderBy(queryParams, index) {\r\n const newParams = queryParams.copy();\r\n newParams.index_ = index;\r\n return newParams;\r\n}\r\n/**\r\n * Returns a set of REST query string parameters representing this query.\r\n *\r\n * @returns query string parameters\r\n */\r\nfunction queryParamsToRestQueryStringParameters(queryParams) {\r\n const qs = {};\r\n if (queryParams.isDefault()) {\r\n return qs;\r\n }\r\n let orderBy;\r\n if (queryParams.index_ === PRIORITY_INDEX) {\r\n orderBy = \"$priority\" /* PRIORITY_INDEX */;\r\n }\r\n else if (queryParams.index_ === VALUE_INDEX) {\r\n orderBy = \"$value\" /* VALUE_INDEX */;\r\n }\r\n else if (queryParams.index_ === KEY_INDEX) {\r\n orderBy = \"$key\" /* KEY_INDEX */;\r\n }\r\n else {\r\n assert(queryParams.index_ instanceof PathIndex, 'Unrecognized index type!');\r\n orderBy = queryParams.index_.toString();\r\n }\r\n qs[\"orderBy\" /* ORDER_BY */] = stringify(orderBy);\r\n if (queryParams.startSet_) {\r\n qs[\"startAt\" /* START_AT */] = stringify(queryParams.indexStartValue_);\r\n if (queryParams.startNameSet_) {\r\n qs[\"startAt\" /* START_AT */] +=\r\n ',' + stringify(queryParams.indexStartName_);\r\n }\r\n }\r\n if (queryParams.endSet_) {\r\n qs[\"endAt\" /* END_AT */] = stringify(queryParams.indexEndValue_);\r\n if (queryParams.endNameSet_) {\r\n qs[\"endAt\" /* END_AT */] +=\r\n ',' + stringify(queryParams.indexEndName_);\r\n }\r\n }\r\n if (queryParams.limitSet_) {\r\n if (queryParams.isViewFromLeft()) {\r\n qs[\"limitToFirst\" /* LIMIT_TO_FIRST */] = queryParams.limit_;\r\n }\r\n else {\r\n qs[\"limitToLast\" /* LIMIT_TO_LAST */] = queryParams.limit_;\r\n }\r\n }\r\n return qs;\r\n}\r\nfunction queryParamsGetQueryObject(queryParams) {\r\n const obj = {};\r\n if (queryParams.startSet_) {\r\n obj[\"sp\" /* INDEX_START_VALUE */] =\r\n queryParams.indexStartValue_;\r\n if (queryParams.startNameSet_) {\r\n obj[\"sn\" /* INDEX_START_NAME */] =\r\n queryParams.indexStartName_;\r\n }\r\n }\r\n if (queryParams.endSet_) {\r\n obj[\"ep\" /* INDEX_END_VALUE */] = queryParams.indexEndValue_;\r\n if (queryParams.endNameSet_) {\r\n obj[\"en\" /* INDEX_END_NAME */] = queryParams.indexEndName_;\r\n }\r\n }\r\n if (queryParams.limitSet_) {\r\n obj[\"l\" /* LIMIT */] = queryParams.limit_;\r\n let viewFrom = queryParams.viewFrom_;\r\n if (viewFrom === '') {\r\n if (queryParams.isViewFromLeft()) {\r\n viewFrom = \"l\" /* VIEW_FROM_LEFT */;\r\n }\r\n else {\r\n viewFrom = \"r\" /* VIEW_FROM_RIGHT */;\r\n }\r\n }\r\n obj[\"vf\" /* VIEW_FROM */] = viewFrom;\r\n }\r\n // For now, priority index is the default, so we only specify if it's some other index\r\n if (queryParams.index_ !== PRIORITY_INDEX) {\r\n obj[\"i\" /* INDEX */] = queryParams.index_.toString();\r\n }\r\n return obj;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An implementation of ServerActions that communicates with the server via REST requests.\r\n * This is mostly useful for compatibility with crawlers, where we don't want to spin up a full\r\n * persistent connection (using WebSockets or long-polling)\r\n */\r\nclass ReadonlyRestClient extends ServerActions {\r\n /**\r\n * @param repoInfo_ - Data about the namespace we are connecting to\r\n * @param onDataUpdate_ - A callback for new data from the server\r\n */\r\n constructor(repoInfo_, onDataUpdate_, authTokenProvider_, appCheckTokenProvider_) {\r\n super();\r\n this.repoInfo_ = repoInfo_;\r\n this.onDataUpdate_ = onDataUpdate_;\r\n this.authTokenProvider_ = authTokenProvider_;\r\n this.appCheckTokenProvider_ = appCheckTokenProvider_;\r\n /** @private {function(...[*])} */\r\n this.log_ = logWrapper('p:rest:');\r\n /**\r\n * We don't actually need to track listens, except to prevent us calling an onComplete for a listen\r\n * that's been removed. :-/\r\n */\r\n this.listens_ = {};\r\n }\r\n reportStats(stats) {\r\n throw new Error('Method not implemented.');\r\n }\r\n static getListenId_(query, tag) {\r\n if (tag !== undefined) {\r\n return 'tag$' + tag;\r\n }\r\n else {\r\n assert(query._queryParams.isDefault(), \"should have a tag if it's not a default query.\");\r\n return query._path.toString();\r\n }\r\n }\r\n /** @inheritDoc */\r\n listen(query, currentHashFn, tag, onComplete) {\r\n const pathString = query._path.toString();\r\n this.log_('Listen called for ' + pathString + ' ' + query._queryIdentifier);\r\n // Mark this listener so we can tell if it's removed.\r\n const listenId = ReadonlyRestClient.getListenId_(query, tag);\r\n const thisListen = {};\r\n this.listens_[listenId] = thisListen;\r\n const queryStringParameters = queryParamsToRestQueryStringParameters(query._queryParams);\r\n this.restRequest_(pathString + '.json', queryStringParameters, (error, result) => {\r\n let data = result;\r\n if (error === 404) {\r\n data = null;\r\n error = null;\r\n }\r\n if (error === null) {\r\n this.onDataUpdate_(pathString, data, /*isMerge=*/ false, tag);\r\n }\r\n if (safeGet(this.listens_, listenId) === thisListen) {\r\n let status;\r\n if (!error) {\r\n status = 'ok';\r\n }\r\n else if (error === 401) {\r\n status = 'permission_denied';\r\n }\r\n else {\r\n status = 'rest_error:' + error;\r\n }\r\n onComplete(status, null);\r\n }\r\n });\r\n }\r\n /** @inheritDoc */\r\n unlisten(query, tag) {\r\n const listenId = ReadonlyRestClient.getListenId_(query, tag);\r\n delete this.listens_[listenId];\r\n }\r\n get(query) {\r\n const queryStringParameters = queryParamsToRestQueryStringParameters(query._queryParams);\r\n const pathString = query._path.toString();\r\n const deferred = new Deferred();\r\n this.restRequest_(pathString + '.json', queryStringParameters, (error, result) => {\r\n let data = result;\r\n if (error === 404) {\r\n data = null;\r\n error = null;\r\n }\r\n if (error === null) {\r\n this.onDataUpdate_(pathString, data, \r\n /*isMerge=*/ false, \r\n /*tag=*/ null);\r\n deferred.resolve(data);\r\n }\r\n else {\r\n deferred.reject(new Error(data));\r\n }\r\n });\r\n return deferred.promise;\r\n }\r\n /** @inheritDoc */\r\n refreshAuthToken(token) {\r\n // no-op since we just always call getToken.\r\n }\r\n /**\r\n * Performs a REST request to the given path, with the provided query string parameters,\r\n * and any auth credentials we have.\r\n */\r\n restRequest_(pathString, queryStringParameters = {}, callback) {\r\n queryStringParameters['format'] = 'export';\r\n return Promise.all([\r\n this.authTokenProvider_.getToken(/*forceRefresh=*/ false),\r\n this.appCheckTokenProvider_.getToken(/*forceRefresh=*/ false)\r\n ]).then(([authToken, appCheckToken]) => {\r\n if (authToken && authToken.accessToken) {\r\n queryStringParameters['auth'] = authToken.accessToken;\r\n }\r\n if (appCheckToken && appCheckToken.token) {\r\n queryStringParameters['ac'] = appCheckToken.token;\r\n }\r\n const url = (this.repoInfo_.secure ? 'https://' : 'http://') +\r\n this.repoInfo_.host +\r\n pathString +\r\n '?' +\r\n 'ns=' +\r\n this.repoInfo_.namespace +\r\n querystring(queryStringParameters);\r\n this.log_('Sending REST request for ' + url);\r\n const xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange = () => {\r\n if (callback && xhr.readyState === 4) {\r\n this.log_('REST Response for ' + url + ' received. status:', xhr.status, 'response:', xhr.responseText);\r\n let res = null;\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n try {\r\n res = jsonEval(xhr.responseText);\r\n }\r\n catch (e) {\r\n warn('Failed to parse JSON response for ' +\r\n url +\r\n ': ' +\r\n xhr.responseText);\r\n }\r\n callback(null, res);\r\n }\r\n else {\r\n // 401 and 404 are expected.\r\n if (xhr.status !== 401 && xhr.status !== 404) {\r\n warn('Got unsuccessful REST response for ' +\r\n url +\r\n ' Status: ' +\r\n xhr.status);\r\n }\r\n callback(xhr.status);\r\n }\r\n callback = null;\r\n }\r\n };\r\n xhr.open('GET', url, /*asynchronous=*/ true);\r\n xhr.send();\r\n });\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Mutable object which basically just stores a reference to the \"latest\" immutable snapshot.\r\n */\r\nclass SnapshotHolder {\r\n constructor() {\r\n this.rootNode_ = ChildrenNode.EMPTY_NODE;\r\n }\r\n getNode(path) {\r\n return this.rootNode_.getChild(path);\r\n }\r\n updateSnapshot(path, newSnapshotNode) {\r\n this.rootNode_ = this.rootNode_.updateChild(path, newSnapshotNode);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction newSparseSnapshotTree() {\r\n return {\r\n value: null,\r\n children: new Map()\r\n };\r\n}\r\n/**\r\n * Stores the given node at the specified path. If there is already a node\r\n * at a shallower path, it merges the new data into that snapshot node.\r\n *\r\n * @param path - Path to look up snapshot for.\r\n * @param data - The new data, or null.\r\n */\r\nfunction sparseSnapshotTreeRemember(sparseSnapshotTree, path, data) {\r\n if (pathIsEmpty(path)) {\r\n sparseSnapshotTree.value = data;\r\n sparseSnapshotTree.children.clear();\r\n }\r\n else if (sparseSnapshotTree.value !== null) {\r\n sparseSnapshotTree.value = sparseSnapshotTree.value.updateChild(path, data);\r\n }\r\n else {\r\n const childKey = pathGetFront(path);\r\n if (!sparseSnapshotTree.children.has(childKey)) {\r\n sparseSnapshotTree.children.set(childKey, newSparseSnapshotTree());\r\n }\r\n const child = sparseSnapshotTree.children.get(childKey);\r\n path = pathPopFront(path);\r\n sparseSnapshotTreeRemember(child, path, data);\r\n }\r\n}\r\n/**\r\n * Purge the data at path from the cache.\r\n *\r\n * @param path - Path to look up snapshot for.\r\n * @returns True if this node should now be removed.\r\n */\r\nfunction sparseSnapshotTreeForget(sparseSnapshotTree, path) {\r\n if (pathIsEmpty(path)) {\r\n sparseSnapshotTree.value = null;\r\n sparseSnapshotTree.children.clear();\r\n return true;\r\n }\r\n else {\r\n if (sparseSnapshotTree.value !== null) {\r\n if (sparseSnapshotTree.value.isLeafNode()) {\r\n // We're trying to forget a node that doesn't exist\r\n return false;\r\n }\r\n else {\r\n const value = sparseSnapshotTree.value;\r\n sparseSnapshotTree.value = null;\r\n value.forEachChild(PRIORITY_INDEX, (key, tree) => {\r\n sparseSnapshotTreeRemember(sparseSnapshotTree, new Path(key), tree);\r\n });\r\n return sparseSnapshotTreeForget(sparseSnapshotTree, path);\r\n }\r\n }\r\n else if (sparseSnapshotTree.children.size > 0) {\r\n const childKey = pathGetFront(path);\r\n path = pathPopFront(path);\r\n if (sparseSnapshotTree.children.has(childKey)) {\r\n const safeToRemove = sparseSnapshotTreeForget(sparseSnapshotTree.children.get(childKey), path);\r\n if (safeToRemove) {\r\n sparseSnapshotTree.children.delete(childKey);\r\n }\r\n }\r\n return sparseSnapshotTree.children.size === 0;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n}\r\n/**\r\n * Recursively iterates through all of the stored tree and calls the\r\n * callback on each one.\r\n *\r\n * @param prefixPath - Path to look up node for.\r\n * @param func - The function to invoke for each tree.\r\n */\r\nfunction sparseSnapshotTreeForEachTree(sparseSnapshotTree, prefixPath, func) {\r\n if (sparseSnapshotTree.value !== null) {\r\n func(prefixPath, sparseSnapshotTree.value);\r\n }\r\n else {\r\n sparseSnapshotTreeForEachChild(sparseSnapshotTree, (key, tree) => {\r\n const path = new Path(prefixPath.toString() + '/' + key);\r\n sparseSnapshotTreeForEachTree(tree, path, func);\r\n });\r\n }\r\n}\r\n/**\r\n * Iterates through each immediate child and triggers the callback.\r\n * Only seems to be used in tests.\r\n *\r\n * @param func - The function to invoke for each child.\r\n */\r\nfunction sparseSnapshotTreeForEachChild(sparseSnapshotTree, func) {\r\n sparseSnapshotTree.children.forEach((tree, key) => {\r\n func(key, tree);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns the delta from the previous call to get stats.\r\n *\r\n * @param collection_ - The collection to \"listen\" to.\r\n */\r\nclass StatsListener {\r\n constructor(collection_) {\r\n this.collection_ = collection_;\r\n this.last_ = null;\r\n }\r\n get() {\r\n const newStats = this.collection_.get();\r\n const delta = Object.assign({}, newStats);\r\n if (this.last_) {\r\n each(this.last_, (stat, value) => {\r\n delta[stat] = delta[stat] - value;\r\n });\r\n }\r\n this.last_ = newStats;\r\n return delta;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Assuming some apps may have a short amount of time on page, and a bulk of firebase operations probably\r\n// happen on page load, we try to report our first set of stats pretty quickly, but we wait at least 10\r\n// seconds to try to ensure the Firebase connection is established / settled.\r\nconst FIRST_STATS_MIN_TIME = 10 * 1000;\r\nconst FIRST_STATS_MAX_TIME = 30 * 1000;\r\n// We'll continue to report stats on average every 5 minutes.\r\nconst REPORT_STATS_INTERVAL = 5 * 60 * 1000;\r\nclass StatsReporter {\r\n constructor(collection, server_) {\r\n this.server_ = server_;\r\n this.statsToReport_ = {};\r\n this.statsListener_ = new StatsListener(collection);\r\n const timeout = FIRST_STATS_MIN_TIME +\r\n (FIRST_STATS_MAX_TIME - FIRST_STATS_MIN_TIME) * Math.random();\r\n setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(timeout));\r\n }\r\n reportStats_() {\r\n const stats = this.statsListener_.get();\r\n const reportedStats = {};\r\n let haveStatsToReport = false;\r\n each(stats, (stat, value) => {\r\n if (value > 0 && contains(this.statsToReport_, stat)) {\r\n reportedStats[stat] = value;\r\n haveStatsToReport = true;\r\n }\r\n });\r\n if (haveStatsToReport) {\r\n this.server_.reportStats(reportedStats);\r\n }\r\n // queue our next run.\r\n setTimeoutNonBlocking(this.reportStats_.bind(this), Math.floor(Math.random() * 2 * REPORT_STATS_INTERVAL));\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n *\r\n * @enum\r\n */\r\nvar OperationType;\r\n(function (OperationType) {\r\n OperationType[OperationType[\"OVERWRITE\"] = 0] = \"OVERWRITE\";\r\n OperationType[OperationType[\"MERGE\"] = 1] = \"MERGE\";\r\n OperationType[OperationType[\"ACK_USER_WRITE\"] = 2] = \"ACK_USER_WRITE\";\r\n OperationType[OperationType[\"LISTEN_COMPLETE\"] = 3] = \"LISTEN_COMPLETE\";\r\n})(OperationType || (OperationType = {}));\r\nfunction newOperationSourceUser() {\r\n return {\r\n fromUser: true,\r\n fromServer: false,\r\n queryId: null,\r\n tagged: false\r\n };\r\n}\r\nfunction newOperationSourceServer() {\r\n return {\r\n fromUser: false,\r\n fromServer: true,\r\n queryId: null,\r\n tagged: false\r\n };\r\n}\r\nfunction newOperationSourceServerTaggedQuery(queryId) {\r\n return {\r\n fromUser: false,\r\n fromServer: true,\r\n queryId,\r\n tagged: true\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass AckUserWrite {\r\n /**\r\n * @param affectedTree - A tree containing true for each affected path. Affected paths can't overlap.\r\n */\r\n constructor(\r\n /** @inheritDoc */ path, \r\n /** @inheritDoc */ affectedTree, \r\n /** @inheritDoc */ revert) {\r\n this.path = path;\r\n this.affectedTree = affectedTree;\r\n this.revert = revert;\r\n /** @inheritDoc */\r\n this.type = OperationType.ACK_USER_WRITE;\r\n /** @inheritDoc */\r\n this.source = newOperationSourceUser();\r\n }\r\n operationForChild(childName) {\r\n if (!pathIsEmpty(this.path)) {\r\n assert(pathGetFront(this.path) === childName, 'operationForChild called for unrelated child.');\r\n return new AckUserWrite(pathPopFront(this.path), this.affectedTree, this.revert);\r\n }\r\n else if (this.affectedTree.value != null) {\r\n assert(this.affectedTree.children.isEmpty(), 'affectedTree should not have overlapping affected paths.');\r\n // All child locations are affected as well; just return same operation.\r\n return this;\r\n }\r\n else {\r\n const childTree = this.affectedTree.subtree(new Path(childName));\r\n return new AckUserWrite(newEmptyPath(), childTree, this.revert);\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass ListenComplete {\r\n constructor(source, path) {\r\n this.source = source;\r\n this.path = path;\r\n /** @inheritDoc */\r\n this.type = OperationType.LISTEN_COMPLETE;\r\n }\r\n operationForChild(childName) {\r\n if (pathIsEmpty(this.path)) {\r\n return new ListenComplete(this.source, newEmptyPath());\r\n }\r\n else {\r\n return new ListenComplete(this.source, pathPopFront(this.path));\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass Overwrite {\r\n constructor(source, path, snap) {\r\n this.source = source;\r\n this.path = path;\r\n this.snap = snap;\r\n /** @inheritDoc */\r\n this.type = OperationType.OVERWRITE;\r\n }\r\n operationForChild(childName) {\r\n if (pathIsEmpty(this.path)) {\r\n return new Overwrite(this.source, newEmptyPath(), this.snap.getImmediateChild(childName));\r\n }\r\n else {\r\n return new Overwrite(this.source, pathPopFront(this.path), this.snap);\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass Merge {\r\n constructor(\r\n /** @inheritDoc */ source, \r\n /** @inheritDoc */ path, \r\n /** @inheritDoc */ children) {\r\n this.source = source;\r\n this.path = path;\r\n this.children = children;\r\n /** @inheritDoc */\r\n this.type = OperationType.MERGE;\r\n }\r\n operationForChild(childName) {\r\n if (pathIsEmpty(this.path)) {\r\n const childTree = this.children.subtree(new Path(childName));\r\n if (childTree.isEmpty()) {\r\n // This child is unaffected\r\n return null;\r\n }\r\n else if (childTree.value) {\r\n // We have a snapshot for the child in question. This becomes an overwrite of the child.\r\n return new Overwrite(this.source, newEmptyPath(), childTree.value);\r\n }\r\n else {\r\n // This is a merge at a deeper level\r\n return new Merge(this.source, newEmptyPath(), childTree);\r\n }\r\n }\r\n else {\r\n assert(pathGetFront(this.path) === childName, \"Can't get a merge for a child not on the path of the operation\");\r\n return new Merge(this.source, pathPopFront(this.path), this.children);\r\n }\r\n }\r\n toString() {\r\n return ('Operation(' +\r\n this.path +\r\n ': ' +\r\n this.source.toString() +\r\n ' merge: ' +\r\n this.children.toString() +\r\n ')');\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A cache node only stores complete children. Additionally it holds a flag whether the node can be considered fully\r\n * initialized in the sense that we know at one point in time this represented a valid state of the world, e.g.\r\n * initialized with data from the server, or a complete overwrite by the client. The filtered flag also tracks\r\n * whether a node potentially had children removed due to a filter.\r\n */\r\nclass CacheNode {\r\n constructor(node_, fullyInitialized_, filtered_) {\r\n this.node_ = node_;\r\n this.fullyInitialized_ = fullyInitialized_;\r\n this.filtered_ = filtered_;\r\n }\r\n /**\r\n * Returns whether this node was fully initialized with either server data or a complete overwrite by the client\r\n */\r\n isFullyInitialized() {\r\n return this.fullyInitialized_;\r\n }\r\n /**\r\n * Returns whether this node is potentially missing children due to a filter applied to the node\r\n */\r\n isFiltered() {\r\n return this.filtered_;\r\n }\r\n isCompleteForPath(path) {\r\n if (pathIsEmpty(path)) {\r\n return this.isFullyInitialized() && !this.filtered_;\r\n }\r\n const childKey = pathGetFront(path);\r\n return this.isCompleteForChild(childKey);\r\n }\r\n isCompleteForChild(key) {\r\n return ((this.isFullyInitialized() && !this.filtered_) || this.node_.hasChild(key));\r\n }\r\n getNode() {\r\n return this.node_;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An EventGenerator is used to convert \"raw\" changes (Change) as computed by the\r\n * CacheDiffer into actual events (Event) that can be raised. See generateEventsForChanges()\r\n * for details.\r\n *\r\n */\r\nclass EventGenerator {\r\n constructor(query_) {\r\n this.query_ = query_;\r\n this.index_ = this.query_._queryParams.getIndex();\r\n }\r\n}\r\n/**\r\n * Given a set of raw changes (no moved events and prevName not specified yet), and a set of\r\n * EventRegistrations that should be notified of these changes, generate the actual events to be raised.\r\n *\r\n * Notes:\r\n * - child_moved events will be synthesized at this time for any child_changed events that affect\r\n * our index.\r\n * - prevName will be calculated based on the index ordering.\r\n */\r\nfunction eventGeneratorGenerateEventsForChanges(eventGenerator, changes, eventCache, eventRegistrations) {\r\n const events = [];\r\n const moves = [];\r\n changes.forEach(change => {\r\n if (change.type === \"child_changed\" /* CHILD_CHANGED */ &&\r\n eventGenerator.index_.indexedValueChanged(change.oldSnap, change.snapshotNode)) {\r\n moves.push(changeChildMoved(change.childName, change.snapshotNode));\r\n }\r\n });\r\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"child_removed\" /* CHILD_REMOVED */, changes, eventRegistrations, eventCache);\r\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"child_added\" /* CHILD_ADDED */, changes, eventRegistrations, eventCache);\r\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"child_moved\" /* CHILD_MOVED */, moves, eventRegistrations, eventCache);\r\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"child_changed\" /* CHILD_CHANGED */, changes, eventRegistrations, eventCache);\r\n eventGeneratorGenerateEventsForType(eventGenerator, events, \"value\" /* VALUE */, changes, eventRegistrations, eventCache);\r\n return events;\r\n}\r\n/**\r\n * Given changes of a single change type, generate the corresponding events.\r\n */\r\nfunction eventGeneratorGenerateEventsForType(eventGenerator, events, eventType, changes, registrations, eventCache) {\r\n const filteredChanges = changes.filter(change => change.type === eventType);\r\n filteredChanges.sort((a, b) => eventGeneratorCompareChanges(eventGenerator, a, b));\r\n filteredChanges.forEach(change => {\r\n const materializedChange = eventGeneratorMaterializeSingleChange(eventGenerator, change, eventCache);\r\n registrations.forEach(registration => {\r\n if (registration.respondsTo(change.type)) {\r\n events.push(registration.createEvent(materializedChange, eventGenerator.query_));\r\n }\r\n });\r\n });\r\n}\r\nfunction eventGeneratorMaterializeSingleChange(eventGenerator, change, eventCache) {\r\n if (change.type === 'value' || change.type === 'child_removed') {\r\n return change;\r\n }\r\n else {\r\n change.prevName = eventCache.getPredecessorChildName(change.childName, change.snapshotNode, eventGenerator.index_);\r\n return change;\r\n }\r\n}\r\nfunction eventGeneratorCompareChanges(eventGenerator, a, b) {\r\n if (a.childName == null || b.childName == null) {\r\n throw assertionError('Should only compare child_ events.');\r\n }\r\n const aWrapped = new NamedNode(a.childName, a.snapshotNode);\r\n const bWrapped = new NamedNode(b.childName, b.snapshotNode);\r\n return eventGenerator.index_.compare(aWrapped, bWrapped);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction newViewCache(eventCache, serverCache) {\r\n return { eventCache, serverCache };\r\n}\r\nfunction viewCacheUpdateEventSnap(viewCache, eventSnap, complete, filtered) {\r\n return newViewCache(new CacheNode(eventSnap, complete, filtered), viewCache.serverCache);\r\n}\r\nfunction viewCacheUpdateServerSnap(viewCache, serverSnap, complete, filtered) {\r\n return newViewCache(viewCache.eventCache, new CacheNode(serverSnap, complete, filtered));\r\n}\r\nfunction viewCacheGetCompleteEventSnap(viewCache) {\r\n return viewCache.eventCache.isFullyInitialized()\r\n ? viewCache.eventCache.getNode()\r\n : null;\r\n}\r\nfunction viewCacheGetCompleteServerSnap(viewCache) {\r\n return viewCache.serverCache.isFullyInitialized()\r\n ? viewCache.serverCache.getNode()\r\n : null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nlet emptyChildrenSingleton;\r\n/**\r\n * Singleton empty children collection.\r\n *\r\n */\r\nconst EmptyChildren = () => {\r\n if (!emptyChildrenSingleton) {\r\n emptyChildrenSingleton = new SortedMap(stringCompare);\r\n }\r\n return emptyChildrenSingleton;\r\n};\r\n/**\r\n * A tree with immutable elements.\r\n */\r\nclass ImmutableTree {\r\n constructor(value, children = EmptyChildren()) {\r\n this.value = value;\r\n this.children = children;\r\n }\r\n static fromObject(obj) {\r\n let tree = new ImmutableTree(null);\r\n each(obj, (childPath, childSnap) => {\r\n tree = tree.set(new Path(childPath), childSnap);\r\n });\r\n return tree;\r\n }\r\n /**\r\n * True if the value is empty and there are no children\r\n */\r\n isEmpty() {\r\n return this.value === null && this.children.isEmpty();\r\n }\r\n /**\r\n * Given a path and predicate, return the first node and the path to that node\r\n * where the predicate returns true.\r\n *\r\n * TODO Do a perf test -- If we're creating a bunch of `{path: value:}`\r\n * objects on the way back out, it may be better to pass down a pathSoFar obj.\r\n *\r\n * @param relativePath - The remainder of the path\r\n * @param predicate - The predicate to satisfy to return a node\r\n */\r\n findRootMostMatchingPathAndValue(relativePath, predicate) {\r\n if (this.value != null && predicate(this.value)) {\r\n return { path: newEmptyPath(), value: this.value };\r\n }\r\n else {\r\n if (pathIsEmpty(relativePath)) {\r\n return null;\r\n }\r\n else {\r\n const front = pathGetFront(relativePath);\r\n const child = this.children.get(front);\r\n if (child !== null) {\r\n const childExistingPathAndValue = child.findRootMostMatchingPathAndValue(pathPopFront(relativePath), predicate);\r\n if (childExistingPathAndValue != null) {\r\n const fullPath = pathChild(new Path(front), childExistingPathAndValue.path);\r\n return { path: fullPath, value: childExistingPathAndValue.value };\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Find, if it exists, the shortest subpath of the given path that points a defined\r\n * value in the tree\r\n */\r\n findRootMostValueAndPath(relativePath) {\r\n return this.findRootMostMatchingPathAndValue(relativePath, () => true);\r\n }\r\n /**\r\n * @returns The subtree at the given path\r\n */\r\n subtree(relativePath) {\r\n if (pathIsEmpty(relativePath)) {\r\n return this;\r\n }\r\n else {\r\n const front = pathGetFront(relativePath);\r\n const childTree = this.children.get(front);\r\n if (childTree !== null) {\r\n return childTree.subtree(pathPopFront(relativePath));\r\n }\r\n else {\r\n return new ImmutableTree(null);\r\n }\r\n }\r\n }\r\n /**\r\n * Sets a value at the specified path.\r\n *\r\n * @param relativePath - Path to set value at.\r\n * @param toSet - Value to set.\r\n * @returns Resulting tree.\r\n */\r\n set(relativePath, toSet) {\r\n if (pathIsEmpty(relativePath)) {\r\n return new ImmutableTree(toSet, this.children);\r\n }\r\n else {\r\n const front = pathGetFront(relativePath);\r\n const child = this.children.get(front) || new ImmutableTree(null);\r\n const newChild = child.set(pathPopFront(relativePath), toSet);\r\n const newChildren = this.children.insert(front, newChild);\r\n return new ImmutableTree(this.value, newChildren);\r\n }\r\n }\r\n /**\r\n * Removes the value at the specified path.\r\n *\r\n * @param relativePath - Path to value to remove.\r\n * @returns Resulting tree.\r\n */\r\n remove(relativePath) {\r\n if (pathIsEmpty(relativePath)) {\r\n if (this.children.isEmpty()) {\r\n return new ImmutableTree(null);\r\n }\r\n else {\r\n return new ImmutableTree(null, this.children);\r\n }\r\n }\r\n else {\r\n const front = pathGetFront(relativePath);\r\n const child = this.children.get(front);\r\n if (child) {\r\n const newChild = child.remove(pathPopFront(relativePath));\r\n let newChildren;\r\n if (newChild.isEmpty()) {\r\n newChildren = this.children.remove(front);\r\n }\r\n else {\r\n newChildren = this.children.insert(front, newChild);\r\n }\r\n if (this.value === null && newChildren.isEmpty()) {\r\n return new ImmutableTree(null);\r\n }\r\n else {\r\n return new ImmutableTree(this.value, newChildren);\r\n }\r\n }\r\n else {\r\n return this;\r\n }\r\n }\r\n }\r\n /**\r\n * Gets a value from the tree.\r\n *\r\n * @param relativePath - Path to get value for.\r\n * @returns Value at path, or null.\r\n */\r\n get(relativePath) {\r\n if (pathIsEmpty(relativePath)) {\r\n return this.value;\r\n }\r\n else {\r\n const front = pathGetFront(relativePath);\r\n const child = this.children.get(front);\r\n if (child) {\r\n return child.get(pathPopFront(relativePath));\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n }\r\n /**\r\n * Replace the subtree at the specified path with the given new tree.\r\n *\r\n * @param relativePath - Path to replace subtree for.\r\n * @param newTree - New tree.\r\n * @returns Resulting tree.\r\n */\r\n setTree(relativePath, newTree) {\r\n if (pathIsEmpty(relativePath)) {\r\n return newTree;\r\n }\r\n else {\r\n const front = pathGetFront(relativePath);\r\n const child = this.children.get(front) || new ImmutableTree(null);\r\n const newChild = child.setTree(pathPopFront(relativePath), newTree);\r\n let newChildren;\r\n if (newChild.isEmpty()) {\r\n newChildren = this.children.remove(front);\r\n }\r\n else {\r\n newChildren = this.children.insert(front, newChild);\r\n }\r\n return new ImmutableTree(this.value, newChildren);\r\n }\r\n }\r\n /**\r\n * Performs a depth first fold on this tree. Transforms a tree into a single\r\n * value, given a function that operates on the path to a node, an optional\r\n * current value, and a map of child names to folded subtrees\r\n */\r\n fold(fn) {\r\n return this.fold_(newEmptyPath(), fn);\r\n }\r\n /**\r\n * Recursive helper for public-facing fold() method\r\n */\r\n fold_(pathSoFar, fn) {\r\n const accum = {};\r\n this.children.inorderTraversal((childKey, childTree) => {\r\n accum[childKey] = childTree.fold_(pathChild(pathSoFar, childKey), fn);\r\n });\r\n return fn(pathSoFar, this.value, accum);\r\n }\r\n /**\r\n * Find the first matching value on the given path. Return the result of applying f to it.\r\n */\r\n findOnPath(path, f) {\r\n return this.findOnPath_(path, newEmptyPath(), f);\r\n }\r\n findOnPath_(pathToFollow, pathSoFar, f) {\r\n const result = this.value ? f(pathSoFar, this.value) : false;\r\n if (result) {\r\n return result;\r\n }\r\n else {\r\n if (pathIsEmpty(pathToFollow)) {\r\n return null;\r\n }\r\n else {\r\n const front = pathGetFront(pathToFollow);\r\n const nextChild = this.children.get(front);\r\n if (nextChild) {\r\n return nextChild.findOnPath_(pathPopFront(pathToFollow), pathChild(pathSoFar, front), f);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n }\r\n }\r\n foreachOnPath(path, f) {\r\n return this.foreachOnPath_(path, newEmptyPath(), f);\r\n }\r\n foreachOnPath_(pathToFollow, currentRelativePath, f) {\r\n if (pathIsEmpty(pathToFollow)) {\r\n return this;\r\n }\r\n else {\r\n if (this.value) {\r\n f(currentRelativePath, this.value);\r\n }\r\n const front = pathGetFront(pathToFollow);\r\n const nextChild = this.children.get(front);\r\n if (nextChild) {\r\n return nextChild.foreachOnPath_(pathPopFront(pathToFollow), pathChild(currentRelativePath, front), f);\r\n }\r\n else {\r\n return new ImmutableTree(null);\r\n }\r\n }\r\n }\r\n /**\r\n * Calls the given function for each node in the tree that has a value.\r\n *\r\n * @param f - A function to be called with the path from the root of the tree to\r\n * a node, and the value at that node. Called in depth-first order.\r\n */\r\n foreach(f) {\r\n this.foreach_(newEmptyPath(), f);\r\n }\r\n foreach_(currentRelativePath, f) {\r\n this.children.inorderTraversal((childName, childTree) => {\r\n childTree.foreach_(pathChild(currentRelativePath, childName), f);\r\n });\r\n if (this.value) {\r\n f(currentRelativePath, this.value);\r\n }\r\n }\r\n foreachChild(f) {\r\n this.children.inorderTraversal((childName, childTree) => {\r\n if (childTree.value) {\r\n f(childName, childTree.value);\r\n }\r\n });\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * This class holds a collection of writes that can be applied to nodes in unison. It abstracts away the logic with\r\n * dealing with priority writes and multiple nested writes. At any given path there is only allowed to be one write\r\n * modifying that path. Any write to an existing path or shadowing an existing path will modify that existing write\r\n * to reflect the write added.\r\n */\r\nclass CompoundWrite {\r\n constructor(writeTree_) {\r\n this.writeTree_ = writeTree_;\r\n }\r\n static empty() {\r\n return new CompoundWrite(new ImmutableTree(null));\r\n }\r\n}\r\nfunction compoundWriteAddWrite(compoundWrite, path, node) {\r\n if (pathIsEmpty(path)) {\r\n return new CompoundWrite(new ImmutableTree(node));\r\n }\r\n else {\r\n const rootmost = compoundWrite.writeTree_.findRootMostValueAndPath(path);\r\n if (rootmost != null) {\r\n const rootMostPath = rootmost.path;\r\n let value = rootmost.value;\r\n const relativePath = newRelativePath(rootMostPath, path);\r\n value = value.updateChild(relativePath, node);\r\n return new CompoundWrite(compoundWrite.writeTree_.set(rootMostPath, value));\r\n }\r\n else {\r\n const subtree = new ImmutableTree(node);\r\n const newWriteTree = compoundWrite.writeTree_.setTree(path, subtree);\r\n return new CompoundWrite(newWriteTree);\r\n }\r\n }\r\n}\r\nfunction compoundWriteAddWrites(compoundWrite, path, updates) {\r\n let newWrite = compoundWrite;\r\n each(updates, (childKey, node) => {\r\n newWrite = compoundWriteAddWrite(newWrite, pathChild(path, childKey), node);\r\n });\r\n return newWrite;\r\n}\r\n/**\r\n * Will remove a write at the given path and deeper paths. This will not modify a write at a higher\r\n * location, which must be removed by calling this method with that path.\r\n *\r\n * @param compoundWrite - The CompoundWrite to remove.\r\n * @param path - The path at which a write and all deeper writes should be removed\r\n * @returns The new CompoundWrite with the removed path\r\n */\r\nfunction compoundWriteRemoveWrite(compoundWrite, path) {\r\n if (pathIsEmpty(path)) {\r\n return CompoundWrite.empty();\r\n }\r\n else {\r\n const newWriteTree = compoundWrite.writeTree_.setTree(path, new ImmutableTree(null));\r\n return new CompoundWrite(newWriteTree);\r\n }\r\n}\r\n/**\r\n * Returns whether this CompoundWrite will fully overwrite a node at a given location and can therefore be\r\n * considered \"complete\".\r\n *\r\n * @param compoundWrite - The CompoundWrite to check.\r\n * @param path - The path to check for\r\n * @returns Whether there is a complete write at that path\r\n */\r\nfunction compoundWriteHasCompleteWrite(compoundWrite, path) {\r\n return compoundWriteGetCompleteNode(compoundWrite, path) != null;\r\n}\r\n/**\r\n * Returns a node for a path if and only if the node is a \"complete\" overwrite at that path. This will not aggregate\r\n * writes from deeper paths, but will return child nodes from a more shallow path.\r\n *\r\n * @param compoundWrite - The CompoundWrite to get the node from.\r\n * @param path - The path to get a complete write\r\n * @returns The node if complete at that path, or null otherwise.\r\n */\r\nfunction compoundWriteGetCompleteNode(compoundWrite, path) {\r\n const rootmost = compoundWrite.writeTree_.findRootMostValueAndPath(path);\r\n if (rootmost != null) {\r\n return compoundWrite.writeTree_\r\n .get(rootmost.path)\r\n .getChild(newRelativePath(rootmost.path, path));\r\n }\r\n else {\r\n return null;\r\n }\r\n}\r\n/**\r\n * Returns all children that are guaranteed to be a complete overwrite.\r\n *\r\n * @param compoundWrite - The CompoundWrite to get children from.\r\n * @returns A list of all complete children.\r\n */\r\nfunction compoundWriteGetCompleteChildren(compoundWrite) {\r\n const children = [];\r\n const node = compoundWrite.writeTree_.value;\r\n if (node != null) {\r\n // If it's a leaf node, it has no children; so nothing to do.\r\n if (!node.isLeafNode()) {\r\n node.forEachChild(PRIORITY_INDEX, (childName, childNode) => {\r\n children.push(new NamedNode(childName, childNode));\r\n });\r\n }\r\n }\r\n else {\r\n compoundWrite.writeTree_.children.inorderTraversal((childName, childTree) => {\r\n if (childTree.value != null) {\r\n children.push(new NamedNode(childName, childTree.value));\r\n }\r\n });\r\n }\r\n return children;\r\n}\r\nfunction compoundWriteChildCompoundWrite(compoundWrite, path) {\r\n if (pathIsEmpty(path)) {\r\n return compoundWrite;\r\n }\r\n else {\r\n const shadowingNode = compoundWriteGetCompleteNode(compoundWrite, path);\r\n if (shadowingNode != null) {\r\n return new CompoundWrite(new ImmutableTree(shadowingNode));\r\n }\r\n else {\r\n return new CompoundWrite(compoundWrite.writeTree_.subtree(path));\r\n }\r\n }\r\n}\r\n/**\r\n * Returns true if this CompoundWrite is empty and therefore does not modify any nodes.\r\n * @returns Whether this CompoundWrite is empty\r\n */\r\nfunction compoundWriteIsEmpty(compoundWrite) {\r\n return compoundWrite.writeTree_.isEmpty();\r\n}\r\n/**\r\n * Applies this CompoundWrite to a node. The node is returned with all writes from this CompoundWrite applied to the\r\n * node\r\n * @param node - The node to apply this CompoundWrite to\r\n * @returns The node with all writes applied\r\n */\r\nfunction compoundWriteApply(compoundWrite, node) {\r\n return applySubtreeWrite(newEmptyPath(), compoundWrite.writeTree_, node);\r\n}\r\nfunction applySubtreeWrite(relativePath, writeTree, node) {\r\n if (writeTree.value != null) {\r\n // Since there a write is always a leaf, we're done here\r\n return node.updateChild(relativePath, writeTree.value);\r\n }\r\n else {\r\n let priorityWrite = null;\r\n writeTree.children.inorderTraversal((childKey, childTree) => {\r\n if (childKey === '.priority') {\r\n // Apply priorities at the end so we don't update priorities for either empty nodes or forget\r\n // to apply priorities to empty nodes that are later filled\r\n assert(childTree.value !== null, 'Priority writes must always be leaf nodes');\r\n priorityWrite = childTree.value;\r\n }\r\n else {\r\n node = applySubtreeWrite(pathChild(relativePath, childKey), childTree, node);\r\n }\r\n });\r\n // If there was a priority write, we only apply it if the node is not empty\r\n if (!node.getChild(relativePath).isEmpty() && priorityWrite !== null) {\r\n node = node.updateChild(pathChild(relativePath, '.priority'), priorityWrite);\r\n }\r\n return node;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Create a new WriteTreeRef for the given path. For use with a new sync point at the given path.\r\n *\r\n */\r\nfunction writeTreeChildWrites(writeTree, path) {\r\n return newWriteTreeRef(path, writeTree);\r\n}\r\n/**\r\n * Record a new overwrite from user code.\r\n *\r\n * @param visible - This is set to false by some transactions. It should be excluded from event caches\r\n */\r\nfunction writeTreeAddOverwrite(writeTree, path, snap, writeId, visible) {\r\n assert(writeId > writeTree.lastWriteId, 'Stacking an older write on top of newer ones');\r\n if (visible === undefined) {\r\n visible = true;\r\n }\r\n writeTree.allWrites.push({\r\n path,\r\n snap,\r\n writeId,\r\n visible\r\n });\r\n if (visible) {\r\n writeTree.visibleWrites = compoundWriteAddWrite(writeTree.visibleWrites, path, snap);\r\n }\r\n writeTree.lastWriteId = writeId;\r\n}\r\n/**\r\n * Record a new merge from user code.\r\n */\r\nfunction writeTreeAddMerge(writeTree, path, changedChildren, writeId) {\r\n assert(writeId > writeTree.lastWriteId, 'Stacking an older merge on top of newer ones');\r\n writeTree.allWrites.push({\r\n path,\r\n children: changedChildren,\r\n writeId,\r\n visible: true\r\n });\r\n writeTree.visibleWrites = compoundWriteAddWrites(writeTree.visibleWrites, path, changedChildren);\r\n writeTree.lastWriteId = writeId;\r\n}\r\nfunction writeTreeGetWrite(writeTree, writeId) {\r\n for (let i = 0; i < writeTree.allWrites.length; i++) {\r\n const record = writeTree.allWrites[i];\r\n if (record.writeId === writeId) {\r\n return record;\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Remove a write (either an overwrite or merge) that has been successfully acknowledge by the server. Recalculates\r\n * the tree if necessary. We return true if it may have been visible, meaning views need to reevaluate.\r\n *\r\n * @returns true if the write may have been visible (meaning we'll need to reevaluate / raise\r\n * events as a result).\r\n */\r\nfunction writeTreeRemoveWrite(writeTree, writeId) {\r\n // Note: disabling this check. It could be a transaction that preempted another transaction, and thus was applied\r\n // out of order.\r\n //const validClear = revert || this.allWrites_.length === 0 || writeId <= this.allWrites_[0].writeId;\r\n //assert(validClear, \"Either we don't have this write, or it's the first one in the queue\");\r\n const idx = writeTree.allWrites.findIndex(s => {\r\n return s.writeId === writeId;\r\n });\r\n assert(idx >= 0, 'removeWrite called with nonexistent writeId.');\r\n const writeToRemove = writeTree.allWrites[idx];\r\n writeTree.allWrites.splice(idx, 1);\r\n let removedWriteWasVisible = writeToRemove.visible;\r\n let removedWriteOverlapsWithOtherWrites = false;\r\n let i = writeTree.allWrites.length - 1;\r\n while (removedWriteWasVisible && i >= 0) {\r\n const currentWrite = writeTree.allWrites[i];\r\n if (currentWrite.visible) {\r\n if (i >= idx &&\r\n writeTreeRecordContainsPath_(currentWrite, writeToRemove.path)) {\r\n // The removed write was completely shadowed by a subsequent write.\r\n removedWriteWasVisible = false;\r\n }\r\n else if (pathContains(writeToRemove.path, currentWrite.path)) {\r\n // Either we're covering some writes or they're covering part of us (depending on which came first).\r\n removedWriteOverlapsWithOtherWrites = true;\r\n }\r\n }\r\n i--;\r\n }\r\n if (!removedWriteWasVisible) {\r\n return false;\r\n }\r\n else if (removedWriteOverlapsWithOtherWrites) {\r\n // There's some shadowing going on. Just rebuild the visible writes from scratch.\r\n writeTreeResetTree_(writeTree);\r\n return true;\r\n }\r\n else {\r\n // There's no shadowing. We can safely just remove the write(s) from visibleWrites.\r\n if (writeToRemove.snap) {\r\n writeTree.visibleWrites = compoundWriteRemoveWrite(writeTree.visibleWrites, writeToRemove.path);\r\n }\r\n else {\r\n const children = writeToRemove.children;\r\n each(children, (childName) => {\r\n writeTree.visibleWrites = compoundWriteRemoveWrite(writeTree.visibleWrites, pathChild(writeToRemove.path, childName));\r\n });\r\n }\r\n return true;\r\n }\r\n}\r\nfunction writeTreeRecordContainsPath_(writeRecord, path) {\r\n if (writeRecord.snap) {\r\n return pathContains(writeRecord.path, path);\r\n }\r\n else {\r\n for (const childName in writeRecord.children) {\r\n if (writeRecord.children.hasOwnProperty(childName) &&\r\n pathContains(pathChild(writeRecord.path, childName), path)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n/**\r\n * Re-layer the writes and merges into a tree so we can efficiently calculate event snapshots\r\n */\r\nfunction writeTreeResetTree_(writeTree) {\r\n writeTree.visibleWrites = writeTreeLayerTree_(writeTree.allWrites, writeTreeDefaultFilter_, newEmptyPath());\r\n if (writeTree.allWrites.length > 0) {\r\n writeTree.lastWriteId =\r\n writeTree.allWrites[writeTree.allWrites.length - 1].writeId;\r\n }\r\n else {\r\n writeTree.lastWriteId = -1;\r\n }\r\n}\r\n/**\r\n * The default filter used when constructing the tree. Keep everything that's visible.\r\n */\r\nfunction writeTreeDefaultFilter_(write) {\r\n return write.visible;\r\n}\r\n/**\r\n * Static method. Given an array of WriteRecords, a filter for which ones to include, and a path, construct the tree of\r\n * event data at that path.\r\n */\r\nfunction writeTreeLayerTree_(writes, filter, treeRoot) {\r\n let compoundWrite = CompoundWrite.empty();\r\n for (let i = 0; i < writes.length; ++i) {\r\n const write = writes[i];\r\n // Theory, a later set will either:\r\n // a) abort a relevant transaction, so no need to worry about excluding it from calculating that transaction\r\n // b) not be relevant to a transaction (separate branch), so again will not affect the data for that transaction\r\n if (filter(write)) {\r\n const writePath = write.path;\r\n let relativePath;\r\n if (write.snap) {\r\n if (pathContains(treeRoot, writePath)) {\r\n relativePath = newRelativePath(treeRoot, writePath);\r\n compoundWrite = compoundWriteAddWrite(compoundWrite, relativePath, write.snap);\r\n }\r\n else if (pathContains(writePath, treeRoot)) {\r\n relativePath = newRelativePath(writePath, treeRoot);\r\n compoundWrite = compoundWriteAddWrite(compoundWrite, newEmptyPath(), write.snap.getChild(relativePath));\r\n }\r\n else ;\r\n }\r\n else if (write.children) {\r\n if (pathContains(treeRoot, writePath)) {\r\n relativePath = newRelativePath(treeRoot, writePath);\r\n compoundWrite = compoundWriteAddWrites(compoundWrite, relativePath, write.children);\r\n }\r\n else if (pathContains(writePath, treeRoot)) {\r\n relativePath = newRelativePath(writePath, treeRoot);\r\n if (pathIsEmpty(relativePath)) {\r\n compoundWrite = compoundWriteAddWrites(compoundWrite, newEmptyPath(), write.children);\r\n }\r\n else {\r\n const child = safeGet(write.children, pathGetFront(relativePath));\r\n if (child) {\r\n // There exists a child in this node that matches the root path\r\n const deepNode = child.getChild(pathPopFront(relativePath));\r\n compoundWrite = compoundWriteAddWrite(compoundWrite, newEmptyPath(), deepNode);\r\n }\r\n }\r\n }\r\n else ;\r\n }\r\n else {\r\n throw assertionError('WriteRecord should have .snap or .children');\r\n }\r\n }\r\n }\r\n return compoundWrite;\r\n}\r\n/**\r\n * Given optional, underlying server data, and an optional set of constraints (exclude some sets, include hidden\r\n * writes), attempt to calculate a complete snapshot for the given path\r\n *\r\n * @param writeIdsToExclude - An optional set to be excluded\r\n * @param includeHiddenWrites - Defaults to false, whether or not to layer on writes with visible set to false\r\n */\r\nfunction writeTreeCalcCompleteEventCache(writeTree, treePath, completeServerCache, writeIdsToExclude, includeHiddenWrites) {\r\n if (!writeIdsToExclude && !includeHiddenWrites) {\r\n const shadowingNode = compoundWriteGetCompleteNode(writeTree.visibleWrites, treePath);\r\n if (shadowingNode != null) {\r\n return shadowingNode;\r\n }\r\n else {\r\n const subMerge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\r\n if (compoundWriteIsEmpty(subMerge)) {\r\n return completeServerCache;\r\n }\r\n else if (completeServerCache == null &&\r\n !compoundWriteHasCompleteWrite(subMerge, newEmptyPath())) {\r\n // We wouldn't have a complete snapshot, since there's no underlying data and no complete shadow\r\n return null;\r\n }\r\n else {\r\n const layeredCache = completeServerCache || ChildrenNode.EMPTY_NODE;\r\n return compoundWriteApply(subMerge, layeredCache);\r\n }\r\n }\r\n }\r\n else {\r\n const merge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\r\n if (!includeHiddenWrites && compoundWriteIsEmpty(merge)) {\r\n return completeServerCache;\r\n }\r\n else {\r\n // If the server cache is null, and we don't have a complete cache, we need to return null\r\n if (!includeHiddenWrites &&\r\n completeServerCache == null &&\r\n !compoundWriteHasCompleteWrite(merge, newEmptyPath())) {\r\n return null;\r\n }\r\n else {\r\n const filter = function (write) {\r\n return ((write.visible || includeHiddenWrites) &&\r\n (!writeIdsToExclude ||\r\n !~writeIdsToExclude.indexOf(write.writeId)) &&\r\n (pathContains(write.path, treePath) ||\r\n pathContains(treePath, write.path)));\r\n };\r\n const mergeAtPath = writeTreeLayerTree_(writeTree.allWrites, filter, treePath);\r\n const layeredCache = completeServerCache || ChildrenNode.EMPTY_NODE;\r\n return compoundWriteApply(mergeAtPath, layeredCache);\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * With optional, underlying server data, attempt to return a children node of children that we have complete data for.\r\n * Used when creating new views, to pre-fill their complete event children snapshot.\r\n */\r\nfunction writeTreeCalcCompleteEventChildren(writeTree, treePath, completeServerChildren) {\r\n let completeChildren = ChildrenNode.EMPTY_NODE;\r\n const topLevelSet = compoundWriteGetCompleteNode(writeTree.visibleWrites, treePath);\r\n if (topLevelSet) {\r\n if (!topLevelSet.isLeafNode()) {\r\n // we're shadowing everything. Return the children.\r\n topLevelSet.forEachChild(PRIORITY_INDEX, (childName, childSnap) => {\r\n completeChildren = completeChildren.updateImmediateChild(childName, childSnap);\r\n });\r\n }\r\n return completeChildren;\r\n }\r\n else if (completeServerChildren) {\r\n // Layer any children we have on top of this\r\n // We know we don't have a top-level set, so just enumerate existing children\r\n const merge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\r\n completeServerChildren.forEachChild(PRIORITY_INDEX, (childName, childNode) => {\r\n const node = compoundWriteApply(compoundWriteChildCompoundWrite(merge, new Path(childName)), childNode);\r\n completeChildren = completeChildren.updateImmediateChild(childName, node);\r\n });\r\n // Add any complete children we have from the set\r\n compoundWriteGetCompleteChildren(merge).forEach(namedNode => {\r\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\r\n });\r\n return completeChildren;\r\n }\r\n else {\r\n // We don't have anything to layer on top of. Layer on any children we have\r\n // Note that we can return an empty snap if we have a defined delete\r\n const merge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\r\n compoundWriteGetCompleteChildren(merge).forEach(namedNode => {\r\n completeChildren = completeChildren.updateImmediateChild(namedNode.name, namedNode.node);\r\n });\r\n return completeChildren;\r\n }\r\n}\r\n/**\r\n * Given that the underlying server data has updated, determine what, if anything, needs to be\r\n * applied to the event cache.\r\n *\r\n * Possibilities:\r\n *\r\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\r\n *\r\n * 2. Some write is completely shadowing. No events to be raised\r\n *\r\n * 3. Is partially shadowed. Events\r\n *\r\n * Either existingEventSnap or existingServerSnap must exist\r\n */\r\nfunction writeTreeCalcEventCacheAfterServerOverwrite(writeTree, treePath, childPath, existingEventSnap, existingServerSnap) {\r\n assert(existingEventSnap || existingServerSnap, 'Either existingEventSnap or existingServerSnap must exist');\r\n const path = pathChild(treePath, childPath);\r\n if (compoundWriteHasCompleteWrite(writeTree.visibleWrites, path)) {\r\n // At this point we can probably guarantee that we're in case 2, meaning no events\r\n // May need to check visibility while doing the findRootMostValueAndPath call\r\n return null;\r\n }\r\n else {\r\n // No complete shadowing. We're either partially shadowing or not shadowing at all.\r\n const childMerge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, path);\r\n if (compoundWriteIsEmpty(childMerge)) {\r\n // We're not shadowing at all. Case 1\r\n return existingServerSnap.getChild(childPath);\r\n }\r\n else {\r\n // This could be more efficient if the serverNode + updates doesn't change the eventSnap\r\n // However this is tricky to find out, since user updates don't necessary change the server\r\n // snap, e.g. priority updates on empty nodes, or deep deletes. Another special case is if the server\r\n // adds nodes, but doesn't change any existing writes. It is therefore not enough to\r\n // only check if the updates change the serverNode.\r\n // Maybe check if the merge tree contains these special cases and only do a full overwrite in that case?\r\n return compoundWriteApply(childMerge, existingServerSnap.getChild(childPath));\r\n }\r\n }\r\n}\r\n/**\r\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\r\n * complete child for this ChildKey.\r\n */\r\nfunction writeTreeCalcCompleteChild(writeTree, treePath, childKey, existingServerSnap) {\r\n const path = pathChild(treePath, childKey);\r\n const shadowingNode = compoundWriteGetCompleteNode(writeTree.visibleWrites, path);\r\n if (shadowingNode != null) {\r\n return shadowingNode;\r\n }\r\n else {\r\n if (existingServerSnap.isCompleteForChild(childKey)) {\r\n const childMerge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, path);\r\n return compoundWriteApply(childMerge, existingServerSnap.getNode().getImmediateChild(childKey));\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n}\r\n/**\r\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\r\n * a higher path, this will return the child of that write relative to the write and this path.\r\n * Returns null if there is no write at this path.\r\n */\r\nfunction writeTreeShadowingWrite(writeTree, path) {\r\n return compoundWriteGetCompleteNode(writeTree.visibleWrites, path);\r\n}\r\n/**\r\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\r\n * the window, but may now be in the window.\r\n */\r\nfunction writeTreeCalcIndexedSlice(writeTree, treePath, completeServerData, startPost, count, reverse, index) {\r\n let toIterate;\r\n const merge = compoundWriteChildCompoundWrite(writeTree.visibleWrites, treePath);\r\n const shadowingNode = compoundWriteGetCompleteNode(merge, newEmptyPath());\r\n if (shadowingNode != null) {\r\n toIterate = shadowingNode;\r\n }\r\n else if (completeServerData != null) {\r\n toIterate = compoundWriteApply(merge, completeServerData);\r\n }\r\n else {\r\n // no children to iterate on\r\n return [];\r\n }\r\n toIterate = toIterate.withIndex(index);\r\n if (!toIterate.isEmpty() && !toIterate.isLeafNode()) {\r\n const nodes = [];\r\n const cmp = index.getCompare();\r\n const iter = reverse\r\n ? toIterate.getReverseIteratorFrom(startPost, index)\r\n : toIterate.getIteratorFrom(startPost, index);\r\n let next = iter.getNext();\r\n while (next && nodes.length < count) {\r\n if (cmp(next, startPost) !== 0) {\r\n nodes.push(next);\r\n }\r\n next = iter.getNext();\r\n }\r\n return nodes;\r\n }\r\n else {\r\n return [];\r\n }\r\n}\r\nfunction newWriteTree() {\r\n return {\r\n visibleWrites: CompoundWrite.empty(),\r\n allWrites: [],\r\n lastWriteId: -1\r\n };\r\n}\r\n/**\r\n * If possible, returns a complete event cache, using the underlying server data if possible. In addition, can be used\r\n * to get a cache that includes hidden writes, and excludes arbitrary writes. Note that customizing the returned node\r\n * can lead to a more expensive calculation.\r\n *\r\n * @param writeIdsToExclude - Optional writes to exclude.\r\n * @param includeHiddenWrites - Defaults to false, whether or not to layer on writes with visible set to false\r\n */\r\nfunction writeTreeRefCalcCompleteEventCache(writeTreeRef, completeServerCache, writeIdsToExclude, includeHiddenWrites) {\r\n return writeTreeCalcCompleteEventCache(writeTreeRef.writeTree, writeTreeRef.treePath, completeServerCache, writeIdsToExclude, includeHiddenWrites);\r\n}\r\n/**\r\n * If possible, returns a children node containing all of the complete children we have data for. The returned data is a\r\n * mix of the given server data and write data.\r\n *\r\n */\r\nfunction writeTreeRefCalcCompleteEventChildren(writeTreeRef, completeServerChildren) {\r\n return writeTreeCalcCompleteEventChildren(writeTreeRef.writeTree, writeTreeRef.treePath, completeServerChildren);\r\n}\r\n/**\r\n * Given that either the underlying server data has updated or the outstanding writes have updated, determine what,\r\n * if anything, needs to be applied to the event cache.\r\n *\r\n * Possibilities:\r\n *\r\n * 1. No writes are shadowing. Events should be raised, the snap to be applied comes from the server data\r\n *\r\n * 2. Some write is completely shadowing. No events to be raised\r\n *\r\n * 3. Is partially shadowed. Events should be raised\r\n *\r\n * Either existingEventSnap or existingServerSnap must exist, this is validated via an assert\r\n *\r\n *\r\n */\r\nfunction writeTreeRefCalcEventCacheAfterServerOverwrite(writeTreeRef, path, existingEventSnap, existingServerSnap) {\r\n return writeTreeCalcEventCacheAfterServerOverwrite(writeTreeRef.writeTree, writeTreeRef.treePath, path, existingEventSnap, existingServerSnap);\r\n}\r\n/**\r\n * Returns a node if there is a complete overwrite for this path. More specifically, if there is a write at\r\n * a higher path, this will return the child of that write relative to the write and this path.\r\n * Returns null if there is no write at this path.\r\n *\r\n */\r\nfunction writeTreeRefShadowingWrite(writeTreeRef, path) {\r\n return writeTreeShadowingWrite(writeTreeRef.writeTree, pathChild(writeTreeRef.treePath, path));\r\n}\r\n/**\r\n * This method is used when processing child remove events on a query. If we can, we pull in children that were outside\r\n * the window, but may now be in the window\r\n */\r\nfunction writeTreeRefCalcIndexedSlice(writeTreeRef, completeServerData, startPost, count, reverse, index) {\r\n return writeTreeCalcIndexedSlice(writeTreeRef.writeTree, writeTreeRef.treePath, completeServerData, startPost, count, reverse, index);\r\n}\r\n/**\r\n * Returns a complete child for a given server snap after applying all user writes or null if there is no\r\n * complete child for this ChildKey.\r\n */\r\nfunction writeTreeRefCalcCompleteChild(writeTreeRef, childKey, existingServerCache) {\r\n return writeTreeCalcCompleteChild(writeTreeRef.writeTree, writeTreeRef.treePath, childKey, existingServerCache);\r\n}\r\n/**\r\n * Return a WriteTreeRef for a child.\r\n */\r\nfunction writeTreeRefChild(writeTreeRef, childName) {\r\n return newWriteTreeRef(pathChild(writeTreeRef.treePath, childName), writeTreeRef.writeTree);\r\n}\r\nfunction newWriteTreeRef(path, writeTree) {\r\n return {\r\n treePath: path,\r\n writeTree\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass ChildChangeAccumulator {\r\n constructor() {\r\n this.changeMap = new Map();\r\n }\r\n trackChildChange(change) {\r\n const type = change.type;\r\n const childKey = change.childName;\r\n assert(type === \"child_added\" /* CHILD_ADDED */ ||\r\n type === \"child_changed\" /* CHILD_CHANGED */ ||\r\n type === \"child_removed\" /* CHILD_REMOVED */, 'Only child changes supported for tracking');\r\n assert(childKey !== '.priority', 'Only non-priority child changes can be tracked.');\r\n const oldChange = this.changeMap.get(childKey);\r\n if (oldChange) {\r\n const oldType = oldChange.type;\r\n if (type === \"child_added\" /* CHILD_ADDED */ &&\r\n oldType === \"child_removed\" /* CHILD_REMOVED */) {\r\n this.changeMap.set(childKey, changeChildChanged(childKey, change.snapshotNode, oldChange.snapshotNode));\r\n }\r\n else if (type === \"child_removed\" /* CHILD_REMOVED */ &&\r\n oldType === \"child_added\" /* CHILD_ADDED */) {\r\n this.changeMap.delete(childKey);\r\n }\r\n else if (type === \"child_removed\" /* CHILD_REMOVED */ &&\r\n oldType === \"child_changed\" /* CHILD_CHANGED */) {\r\n this.changeMap.set(childKey, changeChildRemoved(childKey, oldChange.oldSnap));\r\n }\r\n else if (type === \"child_changed\" /* CHILD_CHANGED */ &&\r\n oldType === \"child_added\" /* CHILD_ADDED */) {\r\n this.changeMap.set(childKey, changeChildAdded(childKey, change.snapshotNode));\r\n }\r\n else if (type === \"child_changed\" /* CHILD_CHANGED */ &&\r\n oldType === \"child_changed\" /* CHILD_CHANGED */) {\r\n this.changeMap.set(childKey, changeChildChanged(childKey, change.snapshotNode, oldChange.oldSnap));\r\n }\r\n else {\r\n throw assertionError('Illegal combination of changes: ' +\r\n change +\r\n ' occurred after ' +\r\n oldChange);\r\n }\r\n }\r\n else {\r\n this.changeMap.set(childKey, change);\r\n }\r\n }\r\n getChanges() {\r\n return Array.from(this.changeMap.values());\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An implementation of CompleteChildSource that never returns any additional children\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nclass NoCompleteChildSource_ {\r\n getCompleteChild(childKey) {\r\n return null;\r\n }\r\n getChildAfterChild(index, child, reverse) {\r\n return null;\r\n }\r\n}\r\n/**\r\n * Singleton instance.\r\n */\r\nconst NO_COMPLETE_CHILD_SOURCE = new NoCompleteChildSource_();\r\n/**\r\n * An implementation of CompleteChildSource that uses a WriteTree in addition to any other server data or\r\n * old event caches available to calculate complete children.\r\n */\r\nclass WriteTreeCompleteChildSource {\r\n constructor(writes_, viewCache_, optCompleteServerCache_ = null) {\r\n this.writes_ = writes_;\r\n this.viewCache_ = viewCache_;\r\n this.optCompleteServerCache_ = optCompleteServerCache_;\r\n }\r\n getCompleteChild(childKey) {\r\n const node = this.viewCache_.eventCache;\r\n if (node.isCompleteForChild(childKey)) {\r\n return node.getNode().getImmediateChild(childKey);\r\n }\r\n else {\r\n const serverNode = this.optCompleteServerCache_ != null\r\n ? new CacheNode(this.optCompleteServerCache_, true, false)\r\n : this.viewCache_.serverCache;\r\n return writeTreeRefCalcCompleteChild(this.writes_, childKey, serverNode);\r\n }\r\n }\r\n getChildAfterChild(index, child, reverse) {\r\n const completeServerData = this.optCompleteServerCache_ != null\r\n ? this.optCompleteServerCache_\r\n : viewCacheGetCompleteServerSnap(this.viewCache_);\r\n const nodes = writeTreeRefCalcIndexedSlice(this.writes_, completeServerData, child, 1, reverse, index);\r\n if (nodes.length === 0) {\r\n return null;\r\n }\r\n else {\r\n return nodes[0];\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction newViewProcessor(filter) {\r\n return { filter };\r\n}\r\nfunction viewProcessorAssertIndexed(viewProcessor, viewCache) {\r\n assert(viewCache.eventCache.getNode().isIndexed(viewProcessor.filter.getIndex()), 'Event snap not indexed');\r\n assert(viewCache.serverCache.getNode().isIndexed(viewProcessor.filter.getIndex()), 'Server snap not indexed');\r\n}\r\nfunction viewProcessorApplyOperation(viewProcessor, oldViewCache, operation, writesCache, completeCache) {\r\n const accumulator = new ChildChangeAccumulator();\r\n let newViewCache, filterServerNode;\r\n if (operation.type === OperationType.OVERWRITE) {\r\n const overwrite = operation;\r\n if (overwrite.source.fromUser) {\r\n newViewCache = viewProcessorApplyUserOverwrite(viewProcessor, oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, accumulator);\r\n }\r\n else {\r\n assert(overwrite.source.fromServer, 'Unknown source.');\r\n // We filter the node if it's a tagged update or the node has been previously filtered and the\r\n // update is not at the root in which case it is ok (and necessary) to mark the node unfiltered\r\n // again\r\n filterServerNode =\r\n overwrite.source.tagged ||\r\n (oldViewCache.serverCache.isFiltered() && !pathIsEmpty(overwrite.path));\r\n newViewCache = viewProcessorApplyServerOverwrite(viewProcessor, oldViewCache, overwrite.path, overwrite.snap, writesCache, completeCache, filterServerNode, accumulator);\r\n }\r\n }\r\n else if (operation.type === OperationType.MERGE) {\r\n const merge = operation;\r\n if (merge.source.fromUser) {\r\n newViewCache = viewProcessorApplyUserMerge(viewProcessor, oldViewCache, merge.path, merge.children, writesCache, completeCache, accumulator);\r\n }\r\n else {\r\n assert(merge.source.fromServer, 'Unknown source.');\r\n // We filter the node if it's a tagged update or the node has been previously filtered\r\n filterServerNode =\r\n merge.source.tagged || oldViewCache.serverCache.isFiltered();\r\n newViewCache = viewProcessorApplyServerMerge(viewProcessor, oldViewCache, merge.path, merge.children, writesCache, completeCache, filterServerNode, accumulator);\r\n }\r\n }\r\n else if (operation.type === OperationType.ACK_USER_WRITE) {\r\n const ackUserWrite = operation;\r\n if (!ackUserWrite.revert) {\r\n newViewCache = viewProcessorAckUserWrite(viewProcessor, oldViewCache, ackUserWrite.path, ackUserWrite.affectedTree, writesCache, completeCache, accumulator);\r\n }\r\n else {\r\n newViewCache = viewProcessorRevertUserWrite(viewProcessor, oldViewCache, ackUserWrite.path, writesCache, completeCache, accumulator);\r\n }\r\n }\r\n else if (operation.type === OperationType.LISTEN_COMPLETE) {\r\n newViewCache = viewProcessorListenComplete(viewProcessor, oldViewCache, operation.path, writesCache, accumulator);\r\n }\r\n else {\r\n throw assertionError('Unknown operation type: ' + operation.type);\r\n }\r\n const changes = accumulator.getChanges();\r\n viewProcessorMaybeAddValueEvent(oldViewCache, newViewCache, changes);\r\n return { viewCache: newViewCache, changes };\r\n}\r\nfunction viewProcessorMaybeAddValueEvent(oldViewCache, newViewCache, accumulator) {\r\n const eventSnap = newViewCache.eventCache;\r\n if (eventSnap.isFullyInitialized()) {\r\n const isLeafOrEmpty = eventSnap.getNode().isLeafNode() || eventSnap.getNode().isEmpty();\r\n const oldCompleteSnap = viewCacheGetCompleteEventSnap(oldViewCache);\r\n if (accumulator.length > 0 ||\r\n !oldViewCache.eventCache.isFullyInitialized() ||\r\n (isLeafOrEmpty && !eventSnap.getNode().equals(oldCompleteSnap)) ||\r\n !eventSnap.getNode().getPriority().equals(oldCompleteSnap.getPriority())) {\r\n accumulator.push(changeValue(viewCacheGetCompleteEventSnap(newViewCache)));\r\n }\r\n }\r\n}\r\nfunction viewProcessorGenerateEventCacheAfterServerEvent(viewProcessor, viewCache, changePath, writesCache, source, accumulator) {\r\n const oldEventSnap = viewCache.eventCache;\r\n if (writeTreeRefShadowingWrite(writesCache, changePath) != null) {\r\n // we have a shadowing write, ignore changes\r\n return viewCache;\r\n }\r\n else {\r\n let newEventCache, serverNode;\r\n if (pathIsEmpty(changePath)) {\r\n // TODO: figure out how this plays with \"sliding ack windows\"\r\n assert(viewCache.serverCache.isFullyInitialized(), 'If change path is empty, we must have complete server data');\r\n if (viewCache.serverCache.isFiltered()) {\r\n // We need to special case this, because we need to only apply writes to complete children, or\r\n // we might end up raising events for incomplete children. If the server data is filtered deep\r\n // writes cannot be guaranteed to be complete\r\n const serverCache = viewCacheGetCompleteServerSnap(viewCache);\r\n const completeChildren = serverCache instanceof ChildrenNode\r\n ? serverCache\r\n : ChildrenNode.EMPTY_NODE;\r\n const completeEventChildren = writeTreeRefCalcCompleteEventChildren(writesCache, completeChildren);\r\n newEventCache = viewProcessor.filter.updateFullNode(viewCache.eventCache.getNode(), completeEventChildren, accumulator);\r\n }\r\n else {\r\n const completeNode = writeTreeRefCalcCompleteEventCache(writesCache, viewCacheGetCompleteServerSnap(viewCache));\r\n newEventCache = viewProcessor.filter.updateFullNode(viewCache.eventCache.getNode(), completeNode, accumulator);\r\n }\r\n }\r\n else {\r\n const childKey = pathGetFront(changePath);\r\n if (childKey === '.priority') {\r\n assert(pathGetLength(changePath) === 1, \"Can't have a priority with additional path components\");\r\n const oldEventNode = oldEventSnap.getNode();\r\n serverNode = viewCache.serverCache.getNode();\r\n // we might have overwrites for this priority\r\n const updatedPriority = writeTreeRefCalcEventCacheAfterServerOverwrite(writesCache, changePath, oldEventNode, serverNode);\r\n if (updatedPriority != null) {\r\n newEventCache = viewProcessor.filter.updatePriority(oldEventNode, updatedPriority);\r\n }\r\n else {\r\n // priority didn't change, keep old node\r\n newEventCache = oldEventSnap.getNode();\r\n }\r\n }\r\n else {\r\n const childChangePath = pathPopFront(changePath);\r\n // update child\r\n let newEventChild;\r\n if (oldEventSnap.isCompleteForChild(childKey)) {\r\n serverNode = viewCache.serverCache.getNode();\r\n const eventChildUpdate = writeTreeRefCalcEventCacheAfterServerOverwrite(writesCache, changePath, oldEventSnap.getNode(), serverNode);\r\n if (eventChildUpdate != null) {\r\n newEventChild = oldEventSnap\r\n .getNode()\r\n .getImmediateChild(childKey)\r\n .updateChild(childChangePath, eventChildUpdate);\r\n }\r\n else {\r\n // Nothing changed, just keep the old child\r\n newEventChild = oldEventSnap.getNode().getImmediateChild(childKey);\r\n }\r\n }\r\n else {\r\n newEventChild = writeTreeRefCalcCompleteChild(writesCache, childKey, viewCache.serverCache);\r\n }\r\n if (newEventChild != null) {\r\n newEventCache = viewProcessor.filter.updateChild(oldEventSnap.getNode(), childKey, newEventChild, childChangePath, source, accumulator);\r\n }\r\n else {\r\n // no complete child available or no change\r\n newEventCache = oldEventSnap.getNode();\r\n }\r\n }\r\n }\r\n return viewCacheUpdateEventSnap(viewCache, newEventCache, oldEventSnap.isFullyInitialized() || pathIsEmpty(changePath), viewProcessor.filter.filtersNodes());\r\n }\r\n}\r\nfunction viewProcessorApplyServerOverwrite(viewProcessor, oldViewCache, changePath, changedSnap, writesCache, completeCache, filterServerNode, accumulator) {\r\n const oldServerSnap = oldViewCache.serverCache;\r\n let newServerCache;\r\n const serverFilter = filterServerNode\r\n ? viewProcessor.filter\r\n : viewProcessor.filter.getIndexedFilter();\r\n if (pathIsEmpty(changePath)) {\r\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), changedSnap, null);\r\n }\r\n else if (serverFilter.filtersNodes() && !oldServerSnap.isFiltered()) {\r\n // we want to filter the server node, but we didn't filter the server node yet, so simulate a full update\r\n const newServerNode = oldServerSnap\r\n .getNode()\r\n .updateChild(changePath, changedSnap);\r\n newServerCache = serverFilter.updateFullNode(oldServerSnap.getNode(), newServerNode, null);\r\n }\r\n else {\r\n const childKey = pathGetFront(changePath);\r\n if (!oldServerSnap.isCompleteForPath(changePath) &&\r\n pathGetLength(changePath) > 1) {\r\n // We don't update incomplete nodes with updates intended for other listeners\r\n return oldViewCache;\r\n }\r\n const childChangePath = pathPopFront(changePath);\r\n const childNode = oldServerSnap.getNode().getImmediateChild(childKey);\r\n const newChildNode = childNode.updateChild(childChangePath, changedSnap);\r\n if (childKey === '.priority') {\r\n newServerCache = serverFilter.updatePriority(oldServerSnap.getNode(), newChildNode);\r\n }\r\n else {\r\n newServerCache = serverFilter.updateChild(oldServerSnap.getNode(), childKey, newChildNode, childChangePath, NO_COMPLETE_CHILD_SOURCE, null);\r\n }\r\n }\r\n const newViewCache = viewCacheUpdateServerSnap(oldViewCache, newServerCache, oldServerSnap.isFullyInitialized() || pathIsEmpty(changePath), serverFilter.filtersNodes());\r\n const source = new WriteTreeCompleteChildSource(writesCache, newViewCache, completeCache);\r\n return viewProcessorGenerateEventCacheAfterServerEvent(viewProcessor, newViewCache, changePath, writesCache, source, accumulator);\r\n}\r\nfunction viewProcessorApplyUserOverwrite(viewProcessor, oldViewCache, changePath, changedSnap, writesCache, completeCache, accumulator) {\r\n const oldEventSnap = oldViewCache.eventCache;\r\n let newViewCache, newEventCache;\r\n const source = new WriteTreeCompleteChildSource(writesCache, oldViewCache, completeCache);\r\n if (pathIsEmpty(changePath)) {\r\n newEventCache = viewProcessor.filter.updateFullNode(oldViewCache.eventCache.getNode(), changedSnap, accumulator);\r\n newViewCache = viewCacheUpdateEventSnap(oldViewCache, newEventCache, true, viewProcessor.filter.filtersNodes());\r\n }\r\n else {\r\n const childKey = pathGetFront(changePath);\r\n if (childKey === '.priority') {\r\n newEventCache = viewProcessor.filter.updatePriority(oldViewCache.eventCache.getNode(), changedSnap);\r\n newViewCache = viewCacheUpdateEventSnap(oldViewCache, newEventCache, oldEventSnap.isFullyInitialized(), oldEventSnap.isFiltered());\r\n }\r\n else {\r\n const childChangePath = pathPopFront(changePath);\r\n const oldChild = oldEventSnap.getNode().getImmediateChild(childKey);\r\n let newChild;\r\n if (pathIsEmpty(childChangePath)) {\r\n // Child overwrite, we can replace the child\r\n newChild = changedSnap;\r\n }\r\n else {\r\n const childNode = source.getCompleteChild(childKey);\r\n if (childNode != null) {\r\n if (pathGetBack(childChangePath) === '.priority' &&\r\n childNode.getChild(pathParent(childChangePath)).isEmpty()) {\r\n // This is a priority update on an empty node. If this node exists on the server, the\r\n // server will send down the priority in the update, so ignore for now\r\n newChild = childNode;\r\n }\r\n else {\r\n newChild = childNode.updateChild(childChangePath, changedSnap);\r\n }\r\n }\r\n else {\r\n // There is no complete child node available\r\n newChild = ChildrenNode.EMPTY_NODE;\r\n }\r\n }\r\n if (!oldChild.equals(newChild)) {\r\n const newEventSnap = viewProcessor.filter.updateChild(oldEventSnap.getNode(), childKey, newChild, childChangePath, source, accumulator);\r\n newViewCache = viewCacheUpdateEventSnap(oldViewCache, newEventSnap, oldEventSnap.isFullyInitialized(), viewProcessor.filter.filtersNodes());\r\n }\r\n else {\r\n newViewCache = oldViewCache;\r\n }\r\n }\r\n }\r\n return newViewCache;\r\n}\r\nfunction viewProcessorCacheHasChild(viewCache, childKey) {\r\n return viewCache.eventCache.isCompleteForChild(childKey);\r\n}\r\nfunction viewProcessorApplyUserMerge(viewProcessor, viewCache, path, changedChildren, writesCache, serverCache, accumulator) {\r\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\r\n // window leaving room for new items. It's important we process these changes first, so we\r\n // iterate the changes twice, first processing any that affect items currently in view.\r\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\r\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\r\n // not the other.\r\n let curViewCache = viewCache;\r\n changedChildren.foreach((relativePath, childNode) => {\r\n const writePath = pathChild(path, relativePath);\r\n if (viewProcessorCacheHasChild(viewCache, pathGetFront(writePath))) {\r\n curViewCache = viewProcessorApplyUserOverwrite(viewProcessor, curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\r\n }\r\n });\r\n changedChildren.foreach((relativePath, childNode) => {\r\n const writePath = pathChild(path, relativePath);\r\n if (!viewProcessorCacheHasChild(viewCache, pathGetFront(writePath))) {\r\n curViewCache = viewProcessorApplyUserOverwrite(viewProcessor, curViewCache, writePath, childNode, writesCache, serverCache, accumulator);\r\n }\r\n });\r\n return curViewCache;\r\n}\r\nfunction viewProcessorApplyMerge(viewProcessor, node, merge) {\r\n merge.foreach((relativePath, childNode) => {\r\n node = node.updateChild(relativePath, childNode);\r\n });\r\n return node;\r\n}\r\nfunction viewProcessorApplyServerMerge(viewProcessor, viewCache, path, changedChildren, writesCache, serverCache, filterServerNode, accumulator) {\r\n // If we don't have a cache yet, this merge was intended for a previously listen in the same location. Ignore it and\r\n // wait for the complete data update coming soon.\r\n if (viewCache.serverCache.getNode().isEmpty() &&\r\n !viewCache.serverCache.isFullyInitialized()) {\r\n return viewCache;\r\n }\r\n // HACK: In the case of a limit query, there may be some changes that bump things out of the\r\n // window leaving room for new items. It's important we process these changes first, so we\r\n // iterate the changes twice, first processing any that affect items currently in view.\r\n // TODO: I consider an item \"in view\" if cacheHasChild is true, which checks both the server\r\n // and event snap. I'm not sure if this will result in edge cases when a child is in one but\r\n // not the other.\r\n let curViewCache = viewCache;\r\n let viewMergeTree;\r\n if (pathIsEmpty(path)) {\r\n viewMergeTree = changedChildren;\r\n }\r\n else {\r\n viewMergeTree = new ImmutableTree(null).setTree(path, changedChildren);\r\n }\r\n const serverNode = viewCache.serverCache.getNode();\r\n viewMergeTree.children.inorderTraversal((childKey, childTree) => {\r\n if (serverNode.hasChild(childKey)) {\r\n const serverChild = viewCache.serverCache\r\n .getNode()\r\n .getImmediateChild(childKey);\r\n const newChild = viewProcessorApplyMerge(viewProcessor, serverChild, childTree);\r\n curViewCache = viewProcessorApplyServerOverwrite(viewProcessor, curViewCache, new Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\r\n }\r\n });\r\n viewMergeTree.children.inorderTraversal((childKey, childMergeTree) => {\r\n const isUnknownDeepMerge = !viewCache.serverCache.isCompleteForChild(childKey) &&\r\n childMergeTree.value === undefined;\r\n if (!serverNode.hasChild(childKey) && !isUnknownDeepMerge) {\r\n const serverChild = viewCache.serverCache\r\n .getNode()\r\n .getImmediateChild(childKey);\r\n const newChild = viewProcessorApplyMerge(viewProcessor, serverChild, childMergeTree);\r\n curViewCache = viewProcessorApplyServerOverwrite(viewProcessor, curViewCache, new Path(childKey), newChild, writesCache, serverCache, filterServerNode, accumulator);\r\n }\r\n });\r\n return curViewCache;\r\n}\r\nfunction viewProcessorAckUserWrite(viewProcessor, viewCache, ackPath, affectedTree, writesCache, completeCache, accumulator) {\r\n if (writeTreeRefShadowingWrite(writesCache, ackPath) != null) {\r\n return viewCache;\r\n }\r\n // Only filter server node if it is currently filtered\r\n const filterServerNode = viewCache.serverCache.isFiltered();\r\n // Essentially we'll just get our existing server cache for the affected paths and re-apply it as a server update\r\n // now that it won't be shadowed.\r\n const serverCache = viewCache.serverCache;\r\n if (affectedTree.value != null) {\r\n // This is an overwrite.\r\n if ((pathIsEmpty(ackPath) && serverCache.isFullyInitialized()) ||\r\n serverCache.isCompleteForPath(ackPath)) {\r\n return viewProcessorApplyServerOverwrite(viewProcessor, viewCache, ackPath, serverCache.getNode().getChild(ackPath), writesCache, completeCache, filterServerNode, accumulator);\r\n }\r\n else if (pathIsEmpty(ackPath)) {\r\n // This is a goofy edge case where we are acking data at this location but don't have full data. We\r\n // should just re-apply whatever we have in our cache as a merge.\r\n let changedChildren = new ImmutableTree(null);\r\n serverCache.getNode().forEachChild(KEY_INDEX, (name, node) => {\r\n changedChildren = changedChildren.set(new Path(name), node);\r\n });\r\n return viewProcessorApplyServerMerge(viewProcessor, viewCache, ackPath, changedChildren, writesCache, completeCache, filterServerNode, accumulator);\r\n }\r\n else {\r\n return viewCache;\r\n }\r\n }\r\n else {\r\n // This is a merge.\r\n let changedChildren = new ImmutableTree(null);\r\n affectedTree.foreach((mergePath, value) => {\r\n const serverCachePath = pathChild(ackPath, mergePath);\r\n if (serverCache.isCompleteForPath(serverCachePath)) {\r\n changedChildren = changedChildren.set(mergePath, serverCache.getNode().getChild(serverCachePath));\r\n }\r\n });\r\n return viewProcessorApplyServerMerge(viewProcessor, viewCache, ackPath, changedChildren, writesCache, completeCache, filterServerNode, accumulator);\r\n }\r\n}\r\nfunction viewProcessorListenComplete(viewProcessor, viewCache, path, writesCache, accumulator) {\r\n const oldServerNode = viewCache.serverCache;\r\n const newViewCache = viewCacheUpdateServerSnap(viewCache, oldServerNode.getNode(), oldServerNode.isFullyInitialized() || pathIsEmpty(path), oldServerNode.isFiltered());\r\n return viewProcessorGenerateEventCacheAfterServerEvent(viewProcessor, newViewCache, path, writesCache, NO_COMPLETE_CHILD_SOURCE, accumulator);\r\n}\r\nfunction viewProcessorRevertUserWrite(viewProcessor, viewCache, path, writesCache, completeServerCache, accumulator) {\r\n let complete;\r\n if (writeTreeRefShadowingWrite(writesCache, path) != null) {\r\n return viewCache;\r\n }\r\n else {\r\n const source = new WriteTreeCompleteChildSource(writesCache, viewCache, completeServerCache);\r\n const oldEventCache = viewCache.eventCache.getNode();\r\n let newEventCache;\r\n if (pathIsEmpty(path) || pathGetFront(path) === '.priority') {\r\n let newNode;\r\n if (viewCache.serverCache.isFullyInitialized()) {\r\n newNode = writeTreeRefCalcCompleteEventCache(writesCache, viewCacheGetCompleteServerSnap(viewCache));\r\n }\r\n else {\r\n const serverChildren = viewCache.serverCache.getNode();\r\n assert(serverChildren instanceof ChildrenNode, 'serverChildren would be complete if leaf node');\r\n newNode = writeTreeRefCalcCompleteEventChildren(writesCache, serverChildren);\r\n }\r\n newNode = newNode;\r\n newEventCache = viewProcessor.filter.updateFullNode(oldEventCache, newNode, accumulator);\r\n }\r\n else {\r\n const childKey = pathGetFront(path);\r\n let newChild = writeTreeRefCalcCompleteChild(writesCache, childKey, viewCache.serverCache);\r\n if (newChild == null &&\r\n viewCache.serverCache.isCompleteForChild(childKey)) {\r\n newChild = oldEventCache.getImmediateChild(childKey);\r\n }\r\n if (newChild != null) {\r\n newEventCache = viewProcessor.filter.updateChild(oldEventCache, childKey, newChild, pathPopFront(path), source, accumulator);\r\n }\r\n else if (viewCache.eventCache.getNode().hasChild(childKey)) {\r\n // No complete child available, delete the existing one, if any\r\n newEventCache = viewProcessor.filter.updateChild(oldEventCache, childKey, ChildrenNode.EMPTY_NODE, pathPopFront(path), source, accumulator);\r\n }\r\n else {\r\n newEventCache = oldEventCache;\r\n }\r\n if (newEventCache.isEmpty() &&\r\n viewCache.serverCache.isFullyInitialized()) {\r\n // We might have reverted all child writes. Maybe the old event was a leaf node\r\n complete = writeTreeRefCalcCompleteEventCache(writesCache, viewCacheGetCompleteServerSnap(viewCache));\r\n if (complete.isLeafNode()) {\r\n newEventCache = viewProcessor.filter.updateFullNode(newEventCache, complete, accumulator);\r\n }\r\n }\r\n }\r\n complete =\r\n viewCache.serverCache.isFullyInitialized() ||\r\n writeTreeRefShadowingWrite(writesCache, newEmptyPath()) != null;\r\n return viewCacheUpdateEventSnap(viewCache, newEventCache, complete, viewProcessor.filter.filtersNodes());\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A view represents a specific location and query that has 1 or more event registrations.\r\n *\r\n * It does several things:\r\n * - Maintains the list of event registrations for this location/query.\r\n * - Maintains a cache of the data visible for this location/query.\r\n * - Applies new operations (via applyOperation), updates the cache, and based on the event\r\n * registrations returns the set of events to be raised.\r\n */\r\nclass View {\r\n constructor(query_, initialViewCache) {\r\n this.query_ = query_;\r\n this.eventRegistrations_ = [];\r\n const params = this.query_._queryParams;\r\n const indexFilter = new IndexedFilter(params.getIndex());\r\n const filter = queryParamsGetNodeFilter(params);\r\n this.processor_ = newViewProcessor(filter);\r\n const initialServerCache = initialViewCache.serverCache;\r\n const initialEventCache = initialViewCache.eventCache;\r\n // Don't filter server node with other filter than index, wait for tagged listen\r\n const serverSnap = indexFilter.updateFullNode(ChildrenNode.EMPTY_NODE, initialServerCache.getNode(), null);\r\n const eventSnap = filter.updateFullNode(ChildrenNode.EMPTY_NODE, initialEventCache.getNode(), null);\r\n const newServerCache = new CacheNode(serverSnap, initialServerCache.isFullyInitialized(), indexFilter.filtersNodes());\r\n const newEventCache = new CacheNode(eventSnap, initialEventCache.isFullyInitialized(), filter.filtersNodes());\r\n this.viewCache_ = newViewCache(newEventCache, newServerCache);\r\n this.eventGenerator_ = new EventGenerator(this.query_);\r\n }\r\n get query() {\r\n return this.query_;\r\n }\r\n}\r\nfunction viewGetServerCache(view) {\r\n return view.viewCache_.serverCache.getNode();\r\n}\r\nfunction viewGetCompleteNode(view) {\r\n return viewCacheGetCompleteEventSnap(view.viewCache_);\r\n}\r\nfunction viewGetCompleteServerCache(view, path) {\r\n const cache = viewCacheGetCompleteServerSnap(view.viewCache_);\r\n if (cache) {\r\n // If this isn't a \"loadsAllData\" view, then cache isn't actually a complete cache and\r\n // we need to see if it contains the child we're interested in.\r\n if (view.query._queryParams.loadsAllData() ||\r\n (!pathIsEmpty(path) &&\r\n !cache.getImmediateChild(pathGetFront(path)).isEmpty())) {\r\n return cache.getChild(path);\r\n }\r\n }\r\n return null;\r\n}\r\nfunction viewIsEmpty(view) {\r\n return view.eventRegistrations_.length === 0;\r\n}\r\nfunction viewAddEventRegistration(view, eventRegistration) {\r\n view.eventRegistrations_.push(eventRegistration);\r\n}\r\n/**\r\n * @param eventRegistration - If null, remove all callbacks.\r\n * @param cancelError - If a cancelError is provided, appropriate cancel events will be returned.\r\n * @returns Cancel events, if cancelError was provided.\r\n */\r\nfunction viewRemoveEventRegistration(view, eventRegistration, cancelError) {\r\n const cancelEvents = [];\r\n if (cancelError) {\r\n assert(eventRegistration == null, 'A cancel should cancel all event registrations.');\r\n const path = view.query._path;\r\n view.eventRegistrations_.forEach(registration => {\r\n const maybeEvent = registration.createCancelEvent(cancelError, path);\r\n if (maybeEvent) {\r\n cancelEvents.push(maybeEvent);\r\n }\r\n });\r\n }\r\n if (eventRegistration) {\r\n let remaining = [];\r\n for (let i = 0; i < view.eventRegistrations_.length; ++i) {\r\n const existing = view.eventRegistrations_[i];\r\n if (!existing.matches(eventRegistration)) {\r\n remaining.push(existing);\r\n }\r\n else if (eventRegistration.hasAnyCallback()) {\r\n // We're removing just this one\r\n remaining = remaining.concat(view.eventRegistrations_.slice(i + 1));\r\n break;\r\n }\r\n }\r\n view.eventRegistrations_ = remaining;\r\n }\r\n else {\r\n view.eventRegistrations_ = [];\r\n }\r\n return cancelEvents;\r\n}\r\n/**\r\n * Applies the given Operation, updates our cache, and returns the appropriate events.\r\n */\r\nfunction viewApplyOperation(view, operation, writesCache, completeServerCache) {\r\n if (operation.type === OperationType.MERGE &&\r\n operation.source.queryId !== null) {\r\n assert(viewCacheGetCompleteServerSnap(view.viewCache_), 'We should always have a full cache before handling merges');\r\n assert(viewCacheGetCompleteEventSnap(view.viewCache_), 'Missing event cache, even though we have a server cache');\r\n }\r\n const oldViewCache = view.viewCache_;\r\n const result = viewProcessorApplyOperation(view.processor_, oldViewCache, operation, writesCache, completeServerCache);\r\n viewProcessorAssertIndexed(view.processor_, result.viewCache);\r\n assert(result.viewCache.serverCache.isFullyInitialized() ||\r\n !oldViewCache.serverCache.isFullyInitialized(), 'Once a server snap is complete, it should never go back');\r\n view.viewCache_ = result.viewCache;\r\n return viewGenerateEventsForChanges_(view, result.changes, result.viewCache.eventCache.getNode(), null);\r\n}\r\nfunction viewGetInitialEvents(view, registration) {\r\n const eventSnap = view.viewCache_.eventCache;\r\n const initialChanges = [];\r\n if (!eventSnap.getNode().isLeafNode()) {\r\n const eventNode = eventSnap.getNode();\r\n eventNode.forEachChild(PRIORITY_INDEX, (key, childNode) => {\r\n initialChanges.push(changeChildAdded(key, childNode));\r\n });\r\n }\r\n if (eventSnap.isFullyInitialized()) {\r\n initialChanges.push(changeValue(eventSnap.getNode()));\r\n }\r\n return viewGenerateEventsForChanges_(view, initialChanges, eventSnap.getNode(), registration);\r\n}\r\nfunction viewGenerateEventsForChanges_(view, changes, eventCache, eventRegistration) {\r\n const registrations = eventRegistration\r\n ? [eventRegistration]\r\n : view.eventRegistrations_;\r\n return eventGeneratorGenerateEventsForChanges(view.eventGenerator_, changes, eventCache, registrations);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nlet referenceConstructor$1;\r\n/**\r\n * SyncPoint represents a single location in a SyncTree with 1 or more event registrations, meaning we need to\r\n * maintain 1 or more Views at this location to cache server data and raise appropriate events for server changes\r\n * and user writes (set, transaction, update).\r\n *\r\n * It's responsible for:\r\n * - Maintaining the set of 1 or more views necessary at this location (a SyncPoint with 0 views should be removed).\r\n * - Proxying user / server operations to the views as appropriate (i.e. applyServerOverwrite,\r\n * applyUserOverwrite, etc.)\r\n */\r\nclass SyncPoint {\r\n constructor() {\r\n /**\r\n * The Views being tracked at this location in the tree, stored as a map where the key is a\r\n * queryId and the value is the View for that query.\r\n *\r\n * NOTE: This list will be quite small (usually 1, but perhaps 2 or 3; any more is an odd use case).\r\n */\r\n this.views = new Map();\r\n }\r\n}\r\nfunction syncPointSetReferenceConstructor(val) {\r\n assert(!referenceConstructor$1, '__referenceConstructor has already been defined');\r\n referenceConstructor$1 = val;\r\n}\r\nfunction syncPointGetReferenceConstructor() {\r\n assert(referenceConstructor$1, 'Reference.ts has not been loaded');\r\n return referenceConstructor$1;\r\n}\r\nfunction syncPointIsEmpty(syncPoint) {\r\n return syncPoint.views.size === 0;\r\n}\r\nfunction syncPointApplyOperation(syncPoint, operation, writesCache, optCompleteServerCache) {\r\n const queryId = operation.source.queryId;\r\n if (queryId !== null) {\r\n const view = syncPoint.views.get(queryId);\r\n assert(view != null, 'SyncTree gave us an op for an invalid query.');\r\n return viewApplyOperation(view, operation, writesCache, optCompleteServerCache);\r\n }\r\n else {\r\n let events = [];\r\n for (const view of syncPoint.views.values()) {\r\n events = events.concat(viewApplyOperation(view, operation, writesCache, optCompleteServerCache));\r\n }\r\n return events;\r\n }\r\n}\r\n/**\r\n * Get a view for the specified query.\r\n *\r\n * @param query - The query to return a view for\r\n * @param writesCache\r\n * @param serverCache\r\n * @param serverCacheComplete\r\n * @returns Events to raise.\r\n */\r\nfunction syncPointGetView(syncPoint, query, writesCache, serverCache, serverCacheComplete) {\r\n const queryId = query._queryIdentifier;\r\n const view = syncPoint.views.get(queryId);\r\n if (!view) {\r\n // TODO: make writesCache take flag for complete server node\r\n let eventCache = writeTreeRefCalcCompleteEventCache(writesCache, serverCacheComplete ? serverCache : null);\r\n let eventCacheComplete = false;\r\n if (eventCache) {\r\n eventCacheComplete = true;\r\n }\r\n else if (serverCache instanceof ChildrenNode) {\r\n eventCache = writeTreeRefCalcCompleteEventChildren(writesCache, serverCache);\r\n eventCacheComplete = false;\r\n }\r\n else {\r\n eventCache = ChildrenNode.EMPTY_NODE;\r\n eventCacheComplete = false;\r\n }\r\n const viewCache = newViewCache(new CacheNode(eventCache, eventCacheComplete, false), new CacheNode(serverCache, serverCacheComplete, false));\r\n return new View(query, viewCache);\r\n }\r\n return view;\r\n}\r\n/**\r\n * Add an event callback for the specified query.\r\n *\r\n * @param query\r\n * @param eventRegistration\r\n * @param writesCache\r\n * @param serverCache - Complete server cache, if we have it.\r\n * @param serverCacheComplete\r\n * @returns Events to raise.\r\n */\r\nfunction syncPointAddEventRegistration(syncPoint, query, eventRegistration, writesCache, serverCache, serverCacheComplete) {\r\n const view = syncPointGetView(syncPoint, query, writesCache, serverCache, serverCacheComplete);\r\n if (!syncPoint.views.has(query._queryIdentifier)) {\r\n syncPoint.views.set(query._queryIdentifier, view);\r\n }\r\n // This is guaranteed to exist now, we just created anything that was missing\r\n viewAddEventRegistration(view, eventRegistration);\r\n return viewGetInitialEvents(view, eventRegistration);\r\n}\r\n/**\r\n * Remove event callback(s). Return cancelEvents if a cancelError is specified.\r\n *\r\n * If query is the default query, we'll check all views for the specified eventRegistration.\r\n * If eventRegistration is null, we'll remove all callbacks for the specified view(s).\r\n *\r\n * @param eventRegistration - If null, remove all callbacks.\r\n * @param cancelError - If a cancelError is provided, appropriate cancel events will be returned.\r\n * @returns removed queries and any cancel events\r\n */\r\nfunction syncPointRemoveEventRegistration(syncPoint, query, eventRegistration, cancelError) {\r\n const queryId = query._queryIdentifier;\r\n const removed = [];\r\n let cancelEvents = [];\r\n const hadCompleteView = syncPointHasCompleteView(syncPoint);\r\n if (queryId === 'default') {\r\n // When you do ref.off(...), we search all views for the registration to remove.\r\n for (const [viewQueryId, view] of syncPoint.views.entries()) {\r\n cancelEvents = cancelEvents.concat(viewRemoveEventRegistration(view, eventRegistration, cancelError));\r\n if (viewIsEmpty(view)) {\r\n syncPoint.views.delete(viewQueryId);\r\n // We'll deal with complete views later.\r\n if (!view.query._queryParams.loadsAllData()) {\r\n removed.push(view.query);\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n // remove the callback from the specific view.\r\n const view = syncPoint.views.get(queryId);\r\n if (view) {\r\n cancelEvents = cancelEvents.concat(viewRemoveEventRegistration(view, eventRegistration, cancelError));\r\n if (viewIsEmpty(view)) {\r\n syncPoint.views.delete(queryId);\r\n // We'll deal with complete views later.\r\n if (!view.query._queryParams.loadsAllData()) {\r\n removed.push(view.query);\r\n }\r\n }\r\n }\r\n }\r\n if (hadCompleteView && !syncPointHasCompleteView(syncPoint)) {\r\n // We removed our last complete view.\r\n removed.push(new (syncPointGetReferenceConstructor())(query._repo, query._path));\r\n }\r\n return { removed, events: cancelEvents };\r\n}\r\nfunction syncPointGetQueryViews(syncPoint) {\r\n const result = [];\r\n for (const view of syncPoint.views.values()) {\r\n if (!view.query._queryParams.loadsAllData()) {\r\n result.push(view);\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * @param path - The path to the desired complete snapshot\r\n * @returns A complete cache, if it exists\r\n */\r\nfunction syncPointGetCompleteServerCache(syncPoint, path) {\r\n let serverCache = null;\r\n for (const view of syncPoint.views.values()) {\r\n serverCache = serverCache || viewGetCompleteServerCache(view, path);\r\n }\r\n return serverCache;\r\n}\r\nfunction syncPointViewForQuery(syncPoint, query) {\r\n const params = query._queryParams;\r\n if (params.loadsAllData()) {\r\n return syncPointGetCompleteView(syncPoint);\r\n }\r\n else {\r\n const queryId = query._queryIdentifier;\r\n return syncPoint.views.get(queryId);\r\n }\r\n}\r\nfunction syncPointViewExistsForQuery(syncPoint, query) {\r\n return syncPointViewForQuery(syncPoint, query) != null;\r\n}\r\nfunction syncPointHasCompleteView(syncPoint) {\r\n return syncPointGetCompleteView(syncPoint) != null;\r\n}\r\nfunction syncPointGetCompleteView(syncPoint) {\r\n for (const view of syncPoint.views.values()) {\r\n if (view.query._queryParams.loadsAllData()) {\r\n return view;\r\n }\r\n }\r\n return null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nlet referenceConstructor;\r\nfunction syncTreeSetReferenceConstructor(val) {\r\n assert(!referenceConstructor, '__referenceConstructor has already been defined');\r\n referenceConstructor = val;\r\n}\r\nfunction syncTreeGetReferenceConstructor() {\r\n assert(referenceConstructor, 'Reference.ts has not been loaded');\r\n return referenceConstructor;\r\n}\r\n/**\r\n * Static tracker for next query tag.\r\n */\r\nlet syncTreeNextQueryTag_ = 1;\r\n/**\r\n * SyncTree is the central class for managing event callback registration, data caching, views\r\n * (query processing), and event generation. There are typically two SyncTree instances for\r\n * each Repo, one for the normal Firebase data, and one for the .info data.\r\n *\r\n * It has a number of responsibilities, including:\r\n * - Tracking all user event callbacks (registered via addEventRegistration() and removeEventRegistration()).\r\n * - Applying and caching data changes for user set(), transaction(), and update() calls\r\n * (applyUserOverwrite(), applyUserMerge()).\r\n * - Applying and caching data changes for server data changes (applyServerOverwrite(),\r\n * applyServerMerge()).\r\n * - Generating user-facing events for server and user changes (all of the apply* methods\r\n * return the set of events that need to be raised as a result).\r\n * - Maintaining the appropriate set of server listens to ensure we are always subscribed\r\n * to the correct set of paths and queries to satisfy the current set of user event\r\n * callbacks (listens are started/stopped using the provided listenProvider).\r\n *\r\n * NOTE: Although SyncTree tracks event callbacks and calculates events to raise, the actual\r\n * events are returned to the caller rather than raised synchronously.\r\n *\r\n */\r\nclass SyncTree {\r\n /**\r\n * @param listenProvider_ - Used by SyncTree to start / stop listening\r\n * to server data.\r\n */\r\n constructor(listenProvider_) {\r\n this.listenProvider_ = listenProvider_;\r\n /**\r\n * Tree of SyncPoints. There's a SyncPoint at any location that has 1 or more views.\r\n */\r\n this.syncPointTree_ = new ImmutableTree(null);\r\n /**\r\n * A tree of all pending user writes (user-initiated set()'s, transaction()'s, update()'s, etc.).\r\n */\r\n this.pendingWriteTree_ = newWriteTree();\r\n this.tagToQueryMap = new Map();\r\n this.queryToTagMap = new Map();\r\n }\r\n}\r\n/**\r\n * Apply the data changes for a user-generated set() or transaction() call.\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeApplyUserOverwrite(syncTree, path, newData, writeId, visible) {\r\n // Record pending write.\r\n writeTreeAddOverwrite(syncTree.pendingWriteTree_, path, newData, writeId, visible);\r\n if (!visible) {\r\n return [];\r\n }\r\n else {\r\n return syncTreeApplyOperationToSyncPoints_(syncTree, new Overwrite(newOperationSourceUser(), path, newData));\r\n }\r\n}\r\n/**\r\n * Apply the data from a user-generated update() call\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeApplyUserMerge(syncTree, path, changedChildren, writeId) {\r\n // Record pending merge.\r\n writeTreeAddMerge(syncTree.pendingWriteTree_, path, changedChildren, writeId);\r\n const changeTree = ImmutableTree.fromObject(changedChildren);\r\n return syncTreeApplyOperationToSyncPoints_(syncTree, new Merge(newOperationSourceUser(), path, changeTree));\r\n}\r\n/**\r\n * Acknowledge a pending user write that was previously registered with applyUserOverwrite() or applyUserMerge().\r\n *\r\n * @param revert - True if the given write failed and needs to be reverted\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeAckUserWrite(syncTree, writeId, revert = false) {\r\n const write = writeTreeGetWrite(syncTree.pendingWriteTree_, writeId);\r\n const needToReevaluate = writeTreeRemoveWrite(syncTree.pendingWriteTree_, writeId);\r\n if (!needToReevaluate) {\r\n return [];\r\n }\r\n else {\r\n let affectedTree = new ImmutableTree(null);\r\n if (write.snap != null) {\r\n // overwrite\r\n affectedTree = affectedTree.set(newEmptyPath(), true);\r\n }\r\n else {\r\n each(write.children, (pathString) => {\r\n affectedTree = affectedTree.set(new Path(pathString), true);\r\n });\r\n }\r\n return syncTreeApplyOperationToSyncPoints_(syncTree, new AckUserWrite(write.path, affectedTree, revert));\r\n }\r\n}\r\n/**\r\n * Apply new server data for the specified path..\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeApplyServerOverwrite(syncTree, path, newData) {\r\n return syncTreeApplyOperationToSyncPoints_(syncTree, new Overwrite(newOperationSourceServer(), path, newData));\r\n}\r\n/**\r\n * Apply new server data to be merged in at the specified path.\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeApplyServerMerge(syncTree, path, changedChildren) {\r\n const changeTree = ImmutableTree.fromObject(changedChildren);\r\n return syncTreeApplyOperationToSyncPoints_(syncTree, new Merge(newOperationSourceServer(), path, changeTree));\r\n}\r\n/**\r\n * Apply a listen complete for a query\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeApplyListenComplete(syncTree, path) {\r\n return syncTreeApplyOperationToSyncPoints_(syncTree, new ListenComplete(newOperationSourceServer(), path));\r\n}\r\n/**\r\n * Apply a listen complete for a tagged query\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeApplyTaggedListenComplete(syncTree, path, tag) {\r\n const queryKey = syncTreeQueryKeyForTag_(syncTree, tag);\r\n if (queryKey) {\r\n const r = syncTreeParseQueryKey_(queryKey);\r\n const queryPath = r.path, queryId = r.queryId;\r\n const relativePath = newRelativePath(queryPath, path);\r\n const op = new ListenComplete(newOperationSourceServerTaggedQuery(queryId), relativePath);\r\n return syncTreeApplyTaggedOperation_(syncTree, queryPath, op);\r\n }\r\n else {\r\n // We've already removed the query. No big deal, ignore the update\r\n return [];\r\n }\r\n}\r\n/**\r\n * Remove event callback(s).\r\n *\r\n * If query is the default query, we'll check all queries for the specified eventRegistration.\r\n * If eventRegistration is null, we'll remove all callbacks for the specified query/queries.\r\n *\r\n * @param eventRegistration - If null, all callbacks are removed.\r\n * @param cancelError - If a cancelError is provided, appropriate cancel events will be returned.\r\n * @returns Cancel events, if cancelError was provided.\r\n */\r\nfunction syncTreeRemoveEventRegistration(syncTree, query, eventRegistration, cancelError) {\r\n // Find the syncPoint first. Then deal with whether or not it has matching listeners\r\n const path = query._path;\r\n const maybeSyncPoint = syncTree.syncPointTree_.get(path);\r\n let cancelEvents = [];\r\n // A removal on a default query affects all queries at that location. A removal on an indexed query, even one without\r\n // other query constraints, does *not* affect all queries at that location. So this check must be for 'default', and\r\n // not loadsAllData().\r\n if (maybeSyncPoint &&\r\n (query._queryIdentifier === 'default' ||\r\n syncPointViewExistsForQuery(maybeSyncPoint, query))) {\r\n const removedAndEvents = syncPointRemoveEventRegistration(maybeSyncPoint, query, eventRegistration, cancelError);\r\n if (syncPointIsEmpty(maybeSyncPoint)) {\r\n syncTree.syncPointTree_ = syncTree.syncPointTree_.remove(path);\r\n }\r\n const removed = removedAndEvents.removed;\r\n cancelEvents = removedAndEvents.events;\r\n // We may have just removed one of many listeners and can short-circuit this whole process\r\n // We may also not have removed a default listener, in which case all of the descendant listeners should already be\r\n // properly set up.\r\n //\r\n // Since indexed queries can shadow if they don't have other query constraints, check for loadsAllData(), instead of\r\n // queryId === 'default'\r\n const removingDefault = -1 !==\r\n removed.findIndex(query => {\r\n return query._queryParams.loadsAllData();\r\n });\r\n const covered = syncTree.syncPointTree_.findOnPath(path, (relativePath, parentSyncPoint) => syncPointHasCompleteView(parentSyncPoint));\r\n if (removingDefault && !covered) {\r\n const subtree = syncTree.syncPointTree_.subtree(path);\r\n // There are potentially child listeners. Determine what if any listens we need to send before executing the\r\n // removal\r\n if (!subtree.isEmpty()) {\r\n // We need to fold over our subtree and collect the listeners to send\r\n const newViews = syncTreeCollectDistinctViewsForSubTree_(subtree);\r\n // Ok, we've collected all the listens we need. Set them up.\r\n for (let i = 0; i < newViews.length; ++i) {\r\n const view = newViews[i], newQuery = view.query;\r\n const listener = syncTreeCreateListenerForView_(syncTree, view);\r\n syncTree.listenProvider_.startListening(syncTreeQueryForListening_(newQuery), syncTreeTagForQuery_(syncTree, newQuery), listener.hashFn, listener.onComplete);\r\n }\r\n }\r\n }\r\n // If we removed anything and we're not covered by a higher up listen, we need to stop listening on this query\r\n // The above block has us covered in terms of making sure we're set up on listens lower in the tree.\r\n // Also, note that if we have a cancelError, it's already been removed at the provider level.\r\n if (!covered && removed.length > 0 && !cancelError) {\r\n // If we removed a default, then we weren't listening on any of the other queries here. Just cancel the one\r\n // default. Otherwise, we need to iterate through and cancel each individual query\r\n if (removingDefault) {\r\n // We don't tag default listeners\r\n const defaultTag = null;\r\n syncTree.listenProvider_.stopListening(syncTreeQueryForListening_(query), defaultTag);\r\n }\r\n else {\r\n removed.forEach((queryToRemove) => {\r\n const tagToRemove = syncTree.queryToTagMap.get(syncTreeMakeQueryKey_(queryToRemove));\r\n syncTree.listenProvider_.stopListening(syncTreeQueryForListening_(queryToRemove), tagToRemove);\r\n });\r\n }\r\n }\r\n // Now, clear all of the tags we're tracking for the removed listens\r\n syncTreeRemoveTags_(syncTree, removed);\r\n }\r\n return cancelEvents;\r\n}\r\n/**\r\n * Apply new server data for the specified tagged query.\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeApplyTaggedQueryOverwrite(syncTree, path, snap, tag) {\r\n const queryKey = syncTreeQueryKeyForTag_(syncTree, tag);\r\n if (queryKey != null) {\r\n const r = syncTreeParseQueryKey_(queryKey);\r\n const queryPath = r.path, queryId = r.queryId;\r\n const relativePath = newRelativePath(queryPath, path);\r\n const op = new Overwrite(newOperationSourceServerTaggedQuery(queryId), relativePath, snap);\r\n return syncTreeApplyTaggedOperation_(syncTree, queryPath, op);\r\n }\r\n else {\r\n // Query must have been removed already\r\n return [];\r\n }\r\n}\r\n/**\r\n * Apply server data to be merged in for the specified tagged query.\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeApplyTaggedQueryMerge(syncTree, path, changedChildren, tag) {\r\n const queryKey = syncTreeQueryKeyForTag_(syncTree, tag);\r\n if (queryKey) {\r\n const r = syncTreeParseQueryKey_(queryKey);\r\n const queryPath = r.path, queryId = r.queryId;\r\n const relativePath = newRelativePath(queryPath, path);\r\n const changeTree = ImmutableTree.fromObject(changedChildren);\r\n const op = new Merge(newOperationSourceServerTaggedQuery(queryId), relativePath, changeTree);\r\n return syncTreeApplyTaggedOperation_(syncTree, queryPath, op);\r\n }\r\n else {\r\n // We've already removed the query. No big deal, ignore the update\r\n return [];\r\n }\r\n}\r\n/**\r\n * Add an event callback for the specified query.\r\n *\r\n * @returns Events to raise.\r\n */\r\nfunction syncTreeAddEventRegistration(syncTree, query, eventRegistration) {\r\n const path = query._path;\r\n let serverCache = null;\r\n let foundAncestorDefaultView = false;\r\n // Any covering writes will necessarily be at the root, so really all we need to find is the server cache.\r\n // Consider optimizing this once there's a better understanding of what actual behavior will be.\r\n syncTree.syncPointTree_.foreachOnPath(path, (pathToSyncPoint, sp) => {\r\n const relativePath = newRelativePath(pathToSyncPoint, path);\r\n serverCache =\r\n serverCache || syncPointGetCompleteServerCache(sp, relativePath);\r\n foundAncestorDefaultView =\r\n foundAncestorDefaultView || syncPointHasCompleteView(sp);\r\n });\r\n let syncPoint = syncTree.syncPointTree_.get(path);\r\n if (!syncPoint) {\r\n syncPoint = new SyncPoint();\r\n syncTree.syncPointTree_ = syncTree.syncPointTree_.set(path, syncPoint);\r\n }\r\n else {\r\n foundAncestorDefaultView =\r\n foundAncestorDefaultView || syncPointHasCompleteView(syncPoint);\r\n serverCache =\r\n serverCache || syncPointGetCompleteServerCache(syncPoint, newEmptyPath());\r\n }\r\n let serverCacheComplete;\r\n if (serverCache != null) {\r\n serverCacheComplete = true;\r\n }\r\n else {\r\n serverCacheComplete = false;\r\n serverCache = ChildrenNode.EMPTY_NODE;\r\n const subtree = syncTree.syncPointTree_.subtree(path);\r\n subtree.foreachChild((childName, childSyncPoint) => {\r\n const completeCache = syncPointGetCompleteServerCache(childSyncPoint, newEmptyPath());\r\n if (completeCache) {\r\n serverCache = serverCache.updateImmediateChild(childName, completeCache);\r\n }\r\n });\r\n }\r\n const viewAlreadyExists = syncPointViewExistsForQuery(syncPoint, query);\r\n if (!viewAlreadyExists && !query._queryParams.loadsAllData()) {\r\n // We need to track a tag for this query\r\n const queryKey = syncTreeMakeQueryKey_(query);\r\n assert(!syncTree.queryToTagMap.has(queryKey), 'View does not exist, but we have a tag');\r\n const tag = syncTreeGetNextQueryTag_();\r\n syncTree.queryToTagMap.set(queryKey, tag);\r\n syncTree.tagToQueryMap.set(tag, queryKey);\r\n }\r\n const writesCache = writeTreeChildWrites(syncTree.pendingWriteTree_, path);\r\n let events = syncPointAddEventRegistration(syncPoint, query, eventRegistration, writesCache, serverCache, serverCacheComplete);\r\n if (!viewAlreadyExists && !foundAncestorDefaultView) {\r\n const view = syncPointViewForQuery(syncPoint, query);\r\n events = events.concat(syncTreeSetupListener_(syncTree, query, view));\r\n }\r\n return events;\r\n}\r\n/**\r\n * Returns a complete cache, if we have one, of the data at a particular path. If the location does not have a\r\n * listener above it, we will get a false \"null\". This shouldn't be a problem because transactions will always\r\n * have a listener above, and atomic operations would correctly show a jitter of ->\r\n * as the write is applied locally and then acknowledged at the server.\r\n *\r\n * Note: this method will *include* hidden writes from transaction with applyLocally set to false.\r\n *\r\n * @param path - The path to the data we want\r\n * @param writeIdsToExclude - A specific set to be excluded\r\n */\r\nfunction syncTreeCalcCompleteEventCache(syncTree, path, writeIdsToExclude) {\r\n const includeHiddenSets = true;\r\n const writeTree = syncTree.pendingWriteTree_;\r\n const serverCache = syncTree.syncPointTree_.findOnPath(path, (pathSoFar, syncPoint) => {\r\n const relativePath = newRelativePath(pathSoFar, path);\r\n const serverCache = syncPointGetCompleteServerCache(syncPoint, relativePath);\r\n if (serverCache) {\r\n return serverCache;\r\n }\r\n });\r\n return writeTreeCalcCompleteEventCache(writeTree, path, serverCache, writeIdsToExclude, includeHiddenSets);\r\n}\r\nfunction syncTreeGetServerValue(syncTree, query) {\r\n const path = query._path;\r\n let serverCache = null;\r\n // Any covering writes will necessarily be at the root, so really all we need to find is the server cache.\r\n // Consider optimizing this once there's a better understanding of what actual behavior will be.\r\n syncTree.syncPointTree_.foreachOnPath(path, (pathToSyncPoint, sp) => {\r\n const relativePath = newRelativePath(pathToSyncPoint, path);\r\n serverCache =\r\n serverCache || syncPointGetCompleteServerCache(sp, relativePath);\r\n });\r\n let syncPoint = syncTree.syncPointTree_.get(path);\r\n if (!syncPoint) {\r\n syncPoint = new SyncPoint();\r\n syncTree.syncPointTree_ = syncTree.syncPointTree_.set(path, syncPoint);\r\n }\r\n else {\r\n serverCache =\r\n serverCache || syncPointGetCompleteServerCache(syncPoint, newEmptyPath());\r\n }\r\n const serverCacheComplete = serverCache != null;\r\n const serverCacheNode = serverCacheComplete\r\n ? new CacheNode(serverCache, true, false)\r\n : null;\r\n const writesCache = writeTreeChildWrites(syncTree.pendingWriteTree_, query._path);\r\n const view = syncPointGetView(syncPoint, query, writesCache, serverCacheComplete ? serverCacheNode.getNode() : ChildrenNode.EMPTY_NODE, serverCacheComplete);\r\n return viewGetCompleteNode(view);\r\n}\r\n/**\r\n * A helper method that visits all descendant and ancestor SyncPoints, applying the operation.\r\n *\r\n * NOTES:\r\n * - Descendant SyncPoints will be visited first (since we raise events depth-first).\r\n *\r\n * - We call applyOperation() on each SyncPoint passing three things:\r\n * 1. A version of the Operation that has been made relative to the SyncPoint location.\r\n * 2. A WriteTreeRef of any writes we have cached at the SyncPoint location.\r\n * 3. A snapshot Node with cached server data, if we have it.\r\n *\r\n * - We concatenate all of the events returned by each SyncPoint and return the result.\r\n */\r\nfunction syncTreeApplyOperationToSyncPoints_(syncTree, operation) {\r\n return syncTreeApplyOperationHelper_(operation, syncTree.syncPointTree_, \r\n /*serverCache=*/ null, writeTreeChildWrites(syncTree.pendingWriteTree_, newEmptyPath()));\r\n}\r\n/**\r\n * Recursive helper for applyOperationToSyncPoints_\r\n */\r\nfunction syncTreeApplyOperationHelper_(operation, syncPointTree, serverCache, writesCache) {\r\n if (pathIsEmpty(operation.path)) {\r\n return syncTreeApplyOperationDescendantsHelper_(operation, syncPointTree, serverCache, writesCache);\r\n }\r\n else {\r\n const syncPoint = syncPointTree.get(newEmptyPath());\r\n // If we don't have cached server data, see if we can get it from this SyncPoint.\r\n if (serverCache == null && syncPoint != null) {\r\n serverCache = syncPointGetCompleteServerCache(syncPoint, newEmptyPath());\r\n }\r\n let events = [];\r\n const childName = pathGetFront(operation.path);\r\n const childOperation = operation.operationForChild(childName);\r\n const childTree = syncPointTree.children.get(childName);\r\n if (childTree && childOperation) {\r\n const childServerCache = serverCache\r\n ? serverCache.getImmediateChild(childName)\r\n : null;\r\n const childWritesCache = writeTreeRefChild(writesCache, childName);\r\n events = events.concat(syncTreeApplyOperationHelper_(childOperation, childTree, childServerCache, childWritesCache));\r\n }\r\n if (syncPoint) {\r\n events = events.concat(syncPointApplyOperation(syncPoint, operation, writesCache, serverCache));\r\n }\r\n return events;\r\n }\r\n}\r\n/**\r\n * Recursive helper for applyOperationToSyncPoints_\r\n */\r\nfunction syncTreeApplyOperationDescendantsHelper_(operation, syncPointTree, serverCache, writesCache) {\r\n const syncPoint = syncPointTree.get(newEmptyPath());\r\n // If we don't have cached server data, see if we can get it from this SyncPoint.\r\n if (serverCache == null && syncPoint != null) {\r\n serverCache = syncPointGetCompleteServerCache(syncPoint, newEmptyPath());\r\n }\r\n let events = [];\r\n syncPointTree.children.inorderTraversal((childName, childTree) => {\r\n const childServerCache = serverCache\r\n ? serverCache.getImmediateChild(childName)\r\n : null;\r\n const childWritesCache = writeTreeRefChild(writesCache, childName);\r\n const childOperation = operation.operationForChild(childName);\r\n if (childOperation) {\r\n events = events.concat(syncTreeApplyOperationDescendantsHelper_(childOperation, childTree, childServerCache, childWritesCache));\r\n }\r\n });\r\n if (syncPoint) {\r\n events = events.concat(syncPointApplyOperation(syncPoint, operation, writesCache, serverCache));\r\n }\r\n return events;\r\n}\r\nfunction syncTreeCreateListenerForView_(syncTree, view) {\r\n const query = view.query;\r\n const tag = syncTreeTagForQuery_(syncTree, query);\r\n return {\r\n hashFn: () => {\r\n const cache = viewGetServerCache(view) || ChildrenNode.EMPTY_NODE;\r\n return cache.hash();\r\n },\r\n onComplete: (status) => {\r\n if (status === 'ok') {\r\n if (tag) {\r\n return syncTreeApplyTaggedListenComplete(syncTree, query._path, tag);\r\n }\r\n else {\r\n return syncTreeApplyListenComplete(syncTree, query._path);\r\n }\r\n }\r\n else {\r\n // If a listen failed, kill all of the listeners here, not just the one that triggered the error.\r\n // Note that this may need to be scoped to just this listener if we change permissions on filtered children\r\n const error = errorForServerCode(status, query);\r\n return syncTreeRemoveEventRegistration(syncTree, query, \r\n /*eventRegistration*/ null, error);\r\n }\r\n }\r\n };\r\n}\r\n/**\r\n * Return the tag associated with the given query.\r\n */\r\nfunction syncTreeTagForQuery_(syncTree, query) {\r\n const queryKey = syncTreeMakeQueryKey_(query);\r\n return syncTree.queryToTagMap.get(queryKey);\r\n}\r\n/**\r\n * Given a query, computes a \"queryKey\" suitable for use in our queryToTagMap_.\r\n */\r\nfunction syncTreeMakeQueryKey_(query) {\r\n return query._path.toString() + '$' + query._queryIdentifier;\r\n}\r\n/**\r\n * Return the query associated with the given tag, if we have one\r\n */\r\nfunction syncTreeQueryKeyForTag_(syncTree, tag) {\r\n return syncTree.tagToQueryMap.get(tag);\r\n}\r\n/**\r\n * Given a queryKey (created by makeQueryKey), parse it back into a path and queryId.\r\n */\r\nfunction syncTreeParseQueryKey_(queryKey) {\r\n const splitIndex = queryKey.indexOf('$');\r\n assert(splitIndex !== -1 && splitIndex < queryKey.length - 1, 'Bad queryKey.');\r\n return {\r\n queryId: queryKey.substr(splitIndex + 1),\r\n path: new Path(queryKey.substr(0, splitIndex))\r\n };\r\n}\r\n/**\r\n * A helper method to apply tagged operations\r\n */\r\nfunction syncTreeApplyTaggedOperation_(syncTree, queryPath, operation) {\r\n const syncPoint = syncTree.syncPointTree_.get(queryPath);\r\n assert(syncPoint, \"Missing sync point for query tag that we're tracking\");\r\n const writesCache = writeTreeChildWrites(syncTree.pendingWriteTree_, queryPath);\r\n return syncPointApplyOperation(syncPoint, operation, writesCache, null);\r\n}\r\n/**\r\n * This collapses multiple unfiltered views into a single view, since we only need a single\r\n * listener for them.\r\n */\r\nfunction syncTreeCollectDistinctViewsForSubTree_(subtree) {\r\n return subtree.fold((relativePath, maybeChildSyncPoint, childMap) => {\r\n if (maybeChildSyncPoint && syncPointHasCompleteView(maybeChildSyncPoint)) {\r\n const completeView = syncPointGetCompleteView(maybeChildSyncPoint);\r\n return [completeView];\r\n }\r\n else {\r\n // No complete view here, flatten any deeper listens into an array\r\n let views = [];\r\n if (maybeChildSyncPoint) {\r\n views = syncPointGetQueryViews(maybeChildSyncPoint);\r\n }\r\n each(childMap, (_key, childViews) => {\r\n views = views.concat(childViews);\r\n });\r\n return views;\r\n }\r\n });\r\n}\r\n/**\r\n * Normalizes a query to a query we send the server for listening\r\n *\r\n * @returns The normalized query\r\n */\r\nfunction syncTreeQueryForListening_(query) {\r\n if (query._queryParams.loadsAllData() && !query._queryParams.isDefault()) {\r\n // We treat queries that load all data as default queries\r\n // Cast is necessary because ref() technically returns Firebase which is actually fb.api.Firebase which inherits\r\n // from Query\r\n return new (syncTreeGetReferenceConstructor())(query._repo, query._path);\r\n }\r\n else {\r\n return query;\r\n }\r\n}\r\nfunction syncTreeRemoveTags_(syncTree, queries) {\r\n for (let j = 0; j < queries.length; ++j) {\r\n const removedQuery = queries[j];\r\n if (!removedQuery._queryParams.loadsAllData()) {\r\n // We should have a tag for this\r\n const removedQueryKey = syncTreeMakeQueryKey_(removedQuery);\r\n const removedQueryTag = syncTree.queryToTagMap.get(removedQueryKey);\r\n syncTree.queryToTagMap.delete(removedQueryKey);\r\n syncTree.tagToQueryMap.delete(removedQueryTag);\r\n }\r\n }\r\n}\r\n/**\r\n * Static accessor for query tags.\r\n */\r\nfunction syncTreeGetNextQueryTag_() {\r\n return syncTreeNextQueryTag_++;\r\n}\r\n/**\r\n * For a given new listen, manage the de-duplication of outstanding subscriptions.\r\n *\r\n * @returns This method can return events to support synchronous data sources\r\n */\r\nfunction syncTreeSetupListener_(syncTree, query, view) {\r\n const path = query._path;\r\n const tag = syncTreeTagForQuery_(syncTree, query);\r\n const listener = syncTreeCreateListenerForView_(syncTree, view);\r\n const events = syncTree.listenProvider_.startListening(syncTreeQueryForListening_(query), tag, listener.hashFn, listener.onComplete);\r\n const subtree = syncTree.syncPointTree_.subtree(path);\r\n // The root of this subtree has our query. We're here because we definitely need to send a listen for that, but we\r\n // may need to shadow other listens as well.\r\n if (tag) {\r\n assert(!syncPointHasCompleteView(subtree.value), \"If we're adding a query, it shouldn't be shadowed\");\r\n }\r\n else {\r\n // Shadow everything at or below this location, this is a default listener.\r\n const queriesToStop = subtree.fold((relativePath, maybeChildSyncPoint, childMap) => {\r\n if (!pathIsEmpty(relativePath) &&\r\n maybeChildSyncPoint &&\r\n syncPointHasCompleteView(maybeChildSyncPoint)) {\r\n return [syncPointGetCompleteView(maybeChildSyncPoint).query];\r\n }\r\n else {\r\n // No default listener here, flatten any deeper queries into an array\r\n let queries = [];\r\n if (maybeChildSyncPoint) {\r\n queries = queries.concat(syncPointGetQueryViews(maybeChildSyncPoint).map(view => view.query));\r\n }\r\n each(childMap, (_key, childQueries) => {\r\n queries = queries.concat(childQueries);\r\n });\r\n return queries;\r\n }\r\n });\r\n for (let i = 0; i < queriesToStop.length; ++i) {\r\n const queryToStop = queriesToStop[i];\r\n syncTree.listenProvider_.stopListening(syncTreeQueryForListening_(queryToStop), syncTreeTagForQuery_(syncTree, queryToStop));\r\n }\r\n }\r\n return events;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass ExistingValueProvider {\r\n constructor(node_) {\r\n this.node_ = node_;\r\n }\r\n getImmediateChild(childName) {\r\n const child = this.node_.getImmediateChild(childName);\r\n return new ExistingValueProvider(child);\r\n }\r\n node() {\r\n return this.node_;\r\n }\r\n}\r\nclass DeferredValueProvider {\r\n constructor(syncTree, path) {\r\n this.syncTree_ = syncTree;\r\n this.path_ = path;\r\n }\r\n getImmediateChild(childName) {\r\n const childPath = pathChild(this.path_, childName);\r\n return new DeferredValueProvider(this.syncTree_, childPath);\r\n }\r\n node() {\r\n return syncTreeCalcCompleteEventCache(this.syncTree_, this.path_);\r\n }\r\n}\r\n/**\r\n * Generate placeholders for deferred values.\r\n */\r\nconst generateWithValues = function (values) {\r\n values = values || {};\r\n values['timestamp'] = values['timestamp'] || new Date().getTime();\r\n return values;\r\n};\r\n/**\r\n * Value to use when firing local events. When writing server values, fire\r\n * local events with an approximate value, otherwise return value as-is.\r\n */\r\nconst resolveDeferredLeafValue = function (value, existingVal, serverValues) {\r\n if (!value || typeof value !== 'object') {\r\n return value;\r\n }\r\n assert('.sv' in value, 'Unexpected leaf node or priority contents');\r\n if (typeof value['.sv'] === 'string') {\r\n return resolveScalarDeferredValue(value['.sv'], existingVal, serverValues);\r\n }\r\n else if (typeof value['.sv'] === 'object') {\r\n return resolveComplexDeferredValue(value['.sv'], existingVal);\r\n }\r\n else {\r\n assert(false, 'Unexpected server value: ' + JSON.stringify(value, null, 2));\r\n }\r\n};\r\nconst resolveScalarDeferredValue = function (op, existing, serverValues) {\r\n switch (op) {\r\n case 'timestamp':\r\n return serverValues['timestamp'];\r\n default:\r\n assert(false, 'Unexpected server value: ' + op);\r\n }\r\n};\r\nconst resolveComplexDeferredValue = function (op, existing, unused) {\r\n if (!op.hasOwnProperty('increment')) {\r\n assert(false, 'Unexpected server value: ' + JSON.stringify(op, null, 2));\r\n }\r\n const delta = op['increment'];\r\n if (typeof delta !== 'number') {\r\n assert(false, 'Unexpected increment value: ' + delta);\r\n }\r\n const existingNode = existing.node();\r\n assert(existingNode !== null && typeof existingNode !== 'undefined', 'Expected ChildrenNode.EMPTY_NODE for nulls');\r\n // Incrementing a non-number sets the value to the incremented amount\r\n if (!existingNode.isLeafNode()) {\r\n return delta;\r\n }\r\n const leaf = existingNode;\r\n const existingVal = leaf.getValue();\r\n if (typeof existingVal !== 'number') {\r\n return delta;\r\n }\r\n // No need to do over/underflow arithmetic here because JS only handles floats under the covers\r\n return existingVal + delta;\r\n};\r\n/**\r\n * Recursively replace all deferred values and priorities in the tree with the\r\n * specified generated replacement values.\r\n * @param path - path to which write is relative\r\n * @param node - new data written at path\r\n * @param syncTree - current data\r\n */\r\nconst resolveDeferredValueTree = function (path, node, syncTree, serverValues) {\r\n return resolveDeferredValue(node, new DeferredValueProvider(syncTree, path), serverValues);\r\n};\r\n/**\r\n * Recursively replace all deferred values and priorities in the node with the\r\n * specified generated replacement values. If there are no server values in the node,\r\n * it'll be returned as-is.\r\n */\r\nconst resolveDeferredValueSnapshot = function (node, existing, serverValues) {\r\n return resolveDeferredValue(node, new ExistingValueProvider(existing), serverValues);\r\n};\r\nfunction resolveDeferredValue(node, existingVal, serverValues) {\r\n const rawPri = node.getPriority().val();\r\n const priority = resolveDeferredLeafValue(rawPri, existingVal.getImmediateChild('.priority'), serverValues);\r\n let newNode;\r\n if (node.isLeafNode()) {\r\n const leafNode = node;\r\n const value = resolveDeferredLeafValue(leafNode.getValue(), existingVal, serverValues);\r\n if (value !== leafNode.getValue() ||\r\n priority !== leafNode.getPriority().val()) {\r\n return new LeafNode(value, nodeFromJSON(priority));\r\n }\r\n else {\r\n return node;\r\n }\r\n }\r\n else {\r\n const childrenNode = node;\r\n newNode = childrenNode;\r\n if (priority !== childrenNode.getPriority().val()) {\r\n newNode = newNode.updatePriority(new LeafNode(priority));\r\n }\r\n childrenNode.forEachChild(PRIORITY_INDEX, (childName, childNode) => {\r\n const newChildNode = resolveDeferredValue(childNode, existingVal.getImmediateChild(childName), serverValues);\r\n if (newChildNode !== childNode) {\r\n newNode = newNode.updateImmediateChild(childName, newChildNode);\r\n }\r\n });\r\n return newNode;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A light-weight tree, traversable by path. Nodes can have both values and children.\r\n * Nodes are not enumerated (by forEachChild) unless they have a value or non-empty\r\n * children.\r\n */\r\nclass Tree {\r\n /**\r\n * @param name - Optional name of the node.\r\n * @param parent - Optional parent node.\r\n * @param node - Optional node to wrap.\r\n */\r\n constructor(name = '', parent = null, node = { children: {}, childCount: 0 }) {\r\n this.name = name;\r\n this.parent = parent;\r\n this.node = node;\r\n }\r\n}\r\n/**\r\n * Returns a sub-Tree for the given path.\r\n *\r\n * @param pathObj - Path to look up.\r\n * @returns Tree for path.\r\n */\r\nfunction treeSubTree(tree, pathObj) {\r\n // TODO: Require pathObj to be Path?\r\n let path = pathObj instanceof Path ? pathObj : new Path(pathObj);\r\n let child = tree, next = pathGetFront(path);\r\n while (next !== null) {\r\n const childNode = safeGet(child.node.children, next) || {\r\n children: {},\r\n childCount: 0\r\n };\r\n child = new Tree(next, child, childNode);\r\n path = pathPopFront(path);\r\n next = pathGetFront(path);\r\n }\r\n return child;\r\n}\r\n/**\r\n * Returns the data associated with this tree node.\r\n *\r\n * @returns The data or null if no data exists.\r\n */\r\nfunction treeGetValue(tree) {\r\n return tree.node.value;\r\n}\r\n/**\r\n * Sets data to this tree node.\r\n *\r\n * @param value - Value to set.\r\n */\r\nfunction treeSetValue(tree, value) {\r\n tree.node.value = value;\r\n treeUpdateParents(tree);\r\n}\r\n/**\r\n * @returns Whether the tree has any children.\r\n */\r\nfunction treeHasChildren(tree) {\r\n return tree.node.childCount > 0;\r\n}\r\n/**\r\n * @returns Whethe rthe tree is empty (no value or children).\r\n */\r\nfunction treeIsEmpty(tree) {\r\n return treeGetValue(tree) === undefined && !treeHasChildren(tree);\r\n}\r\n/**\r\n * Calls action for each child of this tree node.\r\n *\r\n * @param action - Action to be called for each child.\r\n */\r\nfunction treeForEachChild(tree, action) {\r\n each(tree.node.children, (child, childTree) => {\r\n action(new Tree(child, tree, childTree));\r\n });\r\n}\r\n/**\r\n * Does a depth-first traversal of this node's descendants, calling action for each one.\r\n *\r\n * @param action - Action to be called for each child.\r\n * @param includeSelf - Whether to call action on this node as well. Defaults to\r\n * false.\r\n * @param childrenFirst - Whether to call action on children before calling it on\r\n * parent.\r\n */\r\nfunction treeForEachDescendant(tree, action, includeSelf, childrenFirst) {\r\n if (includeSelf && !childrenFirst) {\r\n action(tree);\r\n }\r\n treeForEachChild(tree, child => {\r\n treeForEachDescendant(child, action, true, childrenFirst);\r\n });\r\n if (includeSelf && childrenFirst) {\r\n action(tree);\r\n }\r\n}\r\n/**\r\n * Calls action on each ancestor node.\r\n *\r\n * @param action - Action to be called on each parent; return\r\n * true to abort.\r\n * @param includeSelf - Whether to call action on this node as well.\r\n * @returns true if the action callback returned true.\r\n */\r\nfunction treeForEachAncestor(tree, action, includeSelf) {\r\n let node = includeSelf ? tree : tree.parent;\r\n while (node !== null) {\r\n if (action(node)) {\r\n return true;\r\n }\r\n node = node.parent;\r\n }\r\n return false;\r\n}\r\n/**\r\n * @returns The path of this tree node, as a Path.\r\n */\r\nfunction treeGetPath(tree) {\r\n return new Path(tree.parent === null\r\n ? tree.name\r\n : treeGetPath(tree.parent) + '/' + tree.name);\r\n}\r\n/**\r\n * Adds or removes this child from its parent based on whether it's empty or not.\r\n */\r\nfunction treeUpdateParents(tree) {\r\n if (tree.parent !== null) {\r\n treeUpdateChild(tree.parent, tree.name, tree);\r\n }\r\n}\r\n/**\r\n * Adds or removes the passed child to this tree node, depending on whether it's empty.\r\n *\r\n * @param childName - The name of the child to update.\r\n * @param child - The child to update.\r\n */\r\nfunction treeUpdateChild(tree, childName, child) {\r\n const childEmpty = treeIsEmpty(child);\r\n const childExists = contains(tree.node.children, childName);\r\n if (childEmpty && childExists) {\r\n delete tree.node.children[childName];\r\n tree.node.childCount--;\r\n treeUpdateParents(tree);\r\n }\r\n else if (!childEmpty && !childExists) {\r\n tree.node.children[childName] = child.node;\r\n tree.node.childCount++;\r\n treeUpdateParents(tree);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * True for invalid Firebase keys\r\n */\r\nconst INVALID_KEY_REGEX_ = /[\\[\\].#$\\/\\u0000-\\u001F\\u007F]/;\r\n/**\r\n * True for invalid Firebase paths.\r\n * Allows '/' in paths.\r\n */\r\nconst INVALID_PATH_REGEX_ = /[\\[\\].#$\\u0000-\\u001F\\u007F]/;\r\n/**\r\n * Maximum number of characters to allow in leaf value\r\n */\r\nconst MAX_LEAF_SIZE_ = 10 * 1024 * 1024;\r\nconst isValidKey = function (key) {\r\n return (typeof key === 'string' && key.length !== 0 && !INVALID_KEY_REGEX_.test(key));\r\n};\r\nconst isValidPathString = function (pathString) {\r\n return (typeof pathString === 'string' &&\r\n pathString.length !== 0 &&\r\n !INVALID_PATH_REGEX_.test(pathString));\r\n};\r\nconst isValidRootPathString = function (pathString) {\r\n if (pathString) {\r\n // Allow '/.info/' at the beginning.\r\n pathString = pathString.replace(/^\\/*\\.info(\\/|$)/, '/');\r\n }\r\n return isValidPathString(pathString);\r\n};\r\nconst isValidPriority = function (priority) {\r\n return (priority === null ||\r\n typeof priority === 'string' ||\r\n (typeof priority === 'number' && !isInvalidJSONNumber(priority)) ||\r\n (priority &&\r\n typeof priority === 'object' &&\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n contains(priority, '.sv')));\r\n};\r\n/**\r\n * Pre-validate a datum passed as an argument to Firebase function.\r\n */\r\nconst validateFirebaseDataArg = function (fnName, value, path, optional) {\r\n if (optional && value === undefined) {\r\n return;\r\n }\r\n validateFirebaseData(errorPrefix(fnName, 'value'), value, path);\r\n};\r\n/**\r\n * Validate a data object client-side before sending to server.\r\n */\r\nconst validateFirebaseData = function (errorPrefix, data, path_) {\r\n const path = path_ instanceof Path ? new ValidationPath(path_, errorPrefix) : path_;\r\n if (data === undefined) {\r\n throw new Error(errorPrefix + 'contains undefined ' + validationPathToErrorString(path));\r\n }\r\n if (typeof data === 'function') {\r\n throw new Error(errorPrefix +\r\n 'contains a function ' +\r\n validationPathToErrorString(path) +\r\n ' with contents = ' +\r\n data.toString());\r\n }\r\n if (isInvalidJSONNumber(data)) {\r\n throw new Error(errorPrefix +\r\n 'contains ' +\r\n data.toString() +\r\n ' ' +\r\n validationPathToErrorString(path));\r\n }\r\n // Check max leaf size, but try to avoid the utf8 conversion if we can.\r\n if (typeof data === 'string' &&\r\n data.length > MAX_LEAF_SIZE_ / 3 &&\r\n stringLength(data) > MAX_LEAF_SIZE_) {\r\n throw new Error(errorPrefix +\r\n 'contains a string greater than ' +\r\n MAX_LEAF_SIZE_ +\r\n ' utf8 bytes ' +\r\n validationPathToErrorString(path) +\r\n \" ('\" +\r\n data.substring(0, 50) +\r\n \"...')\");\r\n }\r\n // TODO = Perf = Consider combining the recursive validation of keys into NodeFromJSON\r\n // to save extra walking of large objects.\r\n if (data && typeof data === 'object') {\r\n let hasDotValue = false;\r\n let hasActualChild = false;\r\n each(data, (key, value) => {\r\n if (key === '.value') {\r\n hasDotValue = true;\r\n }\r\n else if (key !== '.priority' && key !== '.sv') {\r\n hasActualChild = true;\r\n if (!isValidKey(key)) {\r\n throw new Error(errorPrefix +\r\n ' contains an invalid key (' +\r\n key +\r\n ') ' +\r\n validationPathToErrorString(path) +\r\n '. Keys must be non-empty strings ' +\r\n 'and can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\"');\r\n }\r\n }\r\n validationPathPush(path, key);\r\n validateFirebaseData(errorPrefix, value, path);\r\n validationPathPop(path);\r\n });\r\n if (hasDotValue && hasActualChild) {\r\n throw new Error(errorPrefix +\r\n ' contains \".value\" child ' +\r\n validationPathToErrorString(path) +\r\n ' in addition to actual children.');\r\n }\r\n }\r\n};\r\n/**\r\n * Pre-validate paths passed in the firebase function.\r\n */\r\nconst validateFirebaseMergePaths = function (errorPrefix, mergePaths) {\r\n let i, curPath;\r\n for (i = 0; i < mergePaths.length; i++) {\r\n curPath = mergePaths[i];\r\n const keys = pathSlice(curPath);\r\n for (let j = 0; j < keys.length; j++) {\r\n if (keys[j] === '.priority' && j === keys.length - 1) ;\r\n else if (!isValidKey(keys[j])) {\r\n throw new Error(errorPrefix +\r\n 'contains an invalid key (' +\r\n keys[j] +\r\n ') in path ' +\r\n curPath.toString() +\r\n '. Keys must be non-empty strings ' +\r\n 'and can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\"');\r\n }\r\n }\r\n }\r\n // Check that update keys are not descendants of each other.\r\n // We rely on the property that sorting guarantees that ancestors come\r\n // right before descendants.\r\n mergePaths.sort(pathCompare);\r\n let prevPath = null;\r\n for (i = 0; i < mergePaths.length; i++) {\r\n curPath = mergePaths[i];\r\n if (prevPath !== null && pathContains(prevPath, curPath)) {\r\n throw new Error(errorPrefix +\r\n 'contains a path ' +\r\n prevPath.toString() +\r\n ' that is ancestor of another path ' +\r\n curPath.toString());\r\n }\r\n prevPath = curPath;\r\n }\r\n};\r\n/**\r\n * pre-validate an object passed as an argument to firebase function (\r\n * must be an object - e.g. for firebase.update()).\r\n */\r\nconst validateFirebaseMergeDataArg = function (fnName, data, path, optional) {\r\n if (optional && data === undefined) {\r\n return;\r\n }\r\n const errorPrefix$1 = errorPrefix(fnName, 'values');\r\n if (!(data && typeof data === 'object') || Array.isArray(data)) {\r\n throw new Error(errorPrefix$1 + ' must be an object containing the children to replace.');\r\n }\r\n const mergePaths = [];\r\n each(data, (key, value) => {\r\n const curPath = new Path(key);\r\n validateFirebaseData(errorPrefix$1, value, pathChild(path, curPath));\r\n if (pathGetBack(curPath) === '.priority') {\r\n if (!isValidPriority(value)) {\r\n throw new Error(errorPrefix$1 +\r\n \"contains an invalid value for '\" +\r\n curPath.toString() +\r\n \"', which must be a valid \" +\r\n 'Firebase priority (a string, finite number, server value, or null).');\r\n }\r\n }\r\n mergePaths.push(curPath);\r\n });\r\n validateFirebaseMergePaths(errorPrefix$1, mergePaths);\r\n};\r\nconst validatePriority = function (fnName, priority, optional) {\r\n if (optional && priority === undefined) {\r\n return;\r\n }\r\n if (isInvalidJSONNumber(priority)) {\r\n throw new Error(errorPrefix(fnName, 'priority') +\r\n 'is ' +\r\n priority.toString() +\r\n ', but must be a valid Firebase priority (a string, finite number, ' +\r\n 'server value, or null).');\r\n }\r\n // Special case to allow importing data with a .sv.\r\n if (!isValidPriority(priority)) {\r\n throw new Error(errorPrefix(fnName, 'priority') +\r\n 'must be a valid Firebase priority ' +\r\n '(a string, finite number, server value, or null).');\r\n }\r\n};\r\nconst validateKey = function (fnName, argumentName, key, optional) {\r\n if (optional && key === undefined) {\r\n return;\r\n }\r\n if (!isValidKey(key)) {\r\n throw new Error(errorPrefix(fnName, argumentName) +\r\n 'was an invalid key = \"' +\r\n key +\r\n '\". Firebase keys must be non-empty strings and ' +\r\n 'can\\'t contain \".\", \"#\", \"$\", \"/\", \"[\", or \"]\").');\r\n }\r\n};\r\n/**\r\n * @internal\r\n */\r\nconst validatePathString = function (fnName, argumentName, pathString, optional) {\r\n if (optional && pathString === undefined) {\r\n return;\r\n }\r\n if (!isValidPathString(pathString)) {\r\n throw new Error(errorPrefix(fnName, argumentName) +\r\n 'was an invalid path = \"' +\r\n pathString +\r\n '\". Paths must be non-empty strings and ' +\r\n 'can\\'t contain \".\", \"#\", \"$\", \"[\", or \"]\"');\r\n }\r\n};\r\nconst validateRootPathString = function (fnName, argumentName, pathString, optional) {\r\n if (pathString) {\r\n // Allow '/.info/' at the beginning.\r\n pathString = pathString.replace(/^\\/*\\.info(\\/|$)/, '/');\r\n }\r\n validatePathString(fnName, argumentName, pathString, optional);\r\n};\r\n/**\r\n * @internal\r\n */\r\nconst validateWritablePath = function (fnName, path) {\r\n if (pathGetFront(path) === '.info') {\r\n throw new Error(fnName + \" failed = Can't modify data under /.info/\");\r\n }\r\n};\r\nconst validateUrl = function (fnName, parsedUrl) {\r\n // TODO = Validate server better.\r\n const pathString = parsedUrl.path.toString();\r\n if (!(typeof parsedUrl.repoInfo.host === 'string') ||\r\n parsedUrl.repoInfo.host.length === 0 ||\r\n (!isValidKey(parsedUrl.repoInfo.namespace) &&\r\n parsedUrl.repoInfo.host.split(':')[0] !== 'localhost') ||\r\n (pathString.length !== 0 && !isValidRootPathString(pathString))) {\r\n throw new Error(errorPrefix(fnName, 'url') +\r\n 'must be a valid firebase URL and ' +\r\n 'the path can\\'t contain \".\", \"#\", \"$\", \"[\", or \"]\".');\r\n }\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The event queue serves a few purposes:\r\n * 1. It ensures we maintain event order in the face of event callbacks doing operations that result in more\r\n * events being queued.\r\n * 2. raiseQueuedEvents() handles being called reentrantly nicely. That is, if in the course of raising events,\r\n * raiseQueuedEvents() is called again, the \"inner\" call will pick up raising events where the \"outer\" call\r\n * left off, ensuring that the events are still raised synchronously and in order.\r\n * 3. You can use raiseEventsAtPath and raiseEventsForChangedPath to ensure only relevant previously-queued\r\n * events are raised synchronously.\r\n *\r\n * NOTE: This can all go away if/when we move to async events.\r\n *\r\n */\r\nclass EventQueue {\r\n constructor() {\r\n this.eventLists_ = [];\r\n /**\r\n * Tracks recursion depth of raiseQueuedEvents_, for debugging purposes.\r\n */\r\n this.recursionDepth_ = 0;\r\n }\r\n}\r\n/**\r\n * @param eventDataList - The new events to queue.\r\n */\r\nfunction eventQueueQueueEvents(eventQueue, eventDataList) {\r\n // We group events by path, storing them in a single EventList, to make it easier to skip over them quickly.\r\n let currList = null;\r\n for (let i = 0; i < eventDataList.length; i++) {\r\n const data = eventDataList[i];\r\n const path = data.getPath();\r\n if (currList !== null && !pathEquals(path, currList.path)) {\r\n eventQueue.eventLists_.push(currList);\r\n currList = null;\r\n }\r\n if (currList === null) {\r\n currList = { events: [], path };\r\n }\r\n currList.events.push(data);\r\n }\r\n if (currList) {\r\n eventQueue.eventLists_.push(currList);\r\n }\r\n}\r\n/**\r\n * Queues the specified events and synchronously raises all events (including previously queued ones)\r\n * for the specified path.\r\n *\r\n * It is assumed that the new events are all for the specified path.\r\n *\r\n * @param path - The path to raise events for.\r\n * @param eventDataList - The new events to raise.\r\n */\r\nfunction eventQueueRaiseEventsAtPath(eventQueue, path, eventDataList) {\r\n eventQueueQueueEvents(eventQueue, eventDataList);\r\n eventQueueRaiseQueuedEventsMatchingPredicate(eventQueue, eventPath => pathEquals(eventPath, path));\r\n}\r\n/**\r\n * Queues the specified events and synchronously raises all events (including previously queued ones) for\r\n * locations related to the specified change path (i.e. all ancestors and descendants).\r\n *\r\n * It is assumed that the new events are all related (ancestor or descendant) to the specified path.\r\n *\r\n * @param changedPath - The path to raise events for.\r\n * @param eventDataList - The events to raise\r\n */\r\nfunction eventQueueRaiseEventsForChangedPath(eventQueue, changedPath, eventDataList) {\r\n eventQueueQueueEvents(eventQueue, eventDataList);\r\n eventQueueRaiseQueuedEventsMatchingPredicate(eventQueue, eventPath => pathContains(eventPath, changedPath) ||\r\n pathContains(changedPath, eventPath));\r\n}\r\nfunction eventQueueRaiseQueuedEventsMatchingPredicate(eventQueue, predicate) {\r\n eventQueue.recursionDepth_++;\r\n let sentAll = true;\r\n for (let i = 0; i < eventQueue.eventLists_.length; i++) {\r\n const eventList = eventQueue.eventLists_[i];\r\n if (eventList) {\r\n const eventPath = eventList.path;\r\n if (predicate(eventPath)) {\r\n eventListRaise(eventQueue.eventLists_[i]);\r\n eventQueue.eventLists_[i] = null;\r\n }\r\n else {\r\n sentAll = false;\r\n }\r\n }\r\n }\r\n if (sentAll) {\r\n eventQueue.eventLists_ = [];\r\n }\r\n eventQueue.recursionDepth_--;\r\n}\r\n/**\r\n * Iterates through the list and raises each event\r\n */\r\nfunction eventListRaise(eventList) {\r\n for (let i = 0; i < eventList.events.length; i++) {\r\n const eventData = eventList.events[i];\r\n if (eventData !== null) {\r\n eventList.events[i] = null;\r\n const eventFn = eventData.getEventRunner();\r\n if (logger) {\r\n log('event: ' + eventData.toString());\r\n }\r\n exceptionGuard(eventFn);\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst INTERRUPT_REASON = 'repo_interrupt';\r\n/**\r\n * If a transaction does not succeed after 25 retries, we abort it. Among other\r\n * things this ensure that if there's ever a bug causing a mismatch between\r\n * client / server hashes for some data, we won't retry indefinitely.\r\n */\r\nconst MAX_TRANSACTION_RETRIES = 25;\r\n/**\r\n * A connection to a single data repository.\r\n */\r\nclass Repo {\r\n constructor(repoInfo_, forceRestClient_, authTokenProvider_, appCheckProvider_) {\r\n this.repoInfo_ = repoInfo_;\r\n this.forceRestClient_ = forceRestClient_;\r\n this.authTokenProvider_ = authTokenProvider_;\r\n this.appCheckProvider_ = appCheckProvider_;\r\n this.dataUpdateCount = 0;\r\n this.statsListener_ = null;\r\n this.eventQueue_ = new EventQueue();\r\n this.nextWriteId_ = 1;\r\n this.interceptServerDataCallback_ = null;\r\n /** A list of data pieces and paths to be set when this client disconnects. */\r\n this.onDisconnect_ = newSparseSnapshotTree();\r\n /** Stores queues of outstanding transactions for Firebase locations. */\r\n this.transactionQueueTree_ = new Tree();\r\n // TODO: This should be @private but it's used by test_access.js and internal.js\r\n this.persistentConnection_ = null;\r\n // This key is intentionally not updated if RepoInfo is later changed or replaced\r\n this.key = this.repoInfo_.toURLString();\r\n }\r\n /**\r\n * @returns The URL corresponding to the root of this Firebase.\r\n */\r\n toString() {\r\n return ((this.repoInfo_.secure ? 'https://' : 'http://') + this.repoInfo_.host);\r\n }\r\n}\r\nfunction repoStart(repo, appId, authOverride) {\r\n repo.stats_ = statsManagerGetCollection(repo.repoInfo_);\r\n if (repo.forceRestClient_ || beingCrawled()) {\r\n repo.server_ = new ReadonlyRestClient(repo.repoInfo_, (pathString, data, isMerge, tag) => {\r\n repoOnDataUpdate(repo, pathString, data, isMerge, tag);\r\n }, repo.authTokenProvider_, repo.appCheckProvider_);\r\n // Minor hack: Fire onConnect immediately, since there's no actual connection.\r\n setTimeout(() => repoOnConnectStatus(repo, /* connectStatus= */ true), 0);\r\n }\r\n else {\r\n // Validate authOverride\r\n if (typeof authOverride !== 'undefined' && authOverride !== null) {\r\n if (typeof authOverride !== 'object') {\r\n throw new Error('Only objects are supported for option databaseAuthVariableOverride');\r\n }\r\n try {\r\n stringify(authOverride);\r\n }\r\n catch (e) {\r\n throw new Error('Invalid authOverride provided: ' + e);\r\n }\r\n }\r\n repo.persistentConnection_ = new PersistentConnection(repo.repoInfo_, appId, (pathString, data, isMerge, tag) => {\r\n repoOnDataUpdate(repo, pathString, data, isMerge, tag);\r\n }, (connectStatus) => {\r\n repoOnConnectStatus(repo, connectStatus);\r\n }, (updates) => {\r\n repoOnServerInfoUpdate(repo, updates);\r\n }, repo.authTokenProvider_, repo.appCheckProvider_, authOverride);\r\n repo.server_ = repo.persistentConnection_;\r\n }\r\n repo.authTokenProvider_.addTokenChangeListener(token => {\r\n repo.server_.refreshAuthToken(token);\r\n });\r\n repo.appCheckProvider_.addTokenChangeListener(result => {\r\n repo.server_.refreshAppCheckToken(result.token);\r\n });\r\n // In the case of multiple Repos for the same repoInfo (i.e. there are multiple Firebase.Contexts being used),\r\n // we only want to create one StatsReporter. As such, we'll report stats over the first Repo created.\r\n repo.statsReporter_ = statsManagerGetOrCreateReporter(repo.repoInfo_, () => new StatsReporter(repo.stats_, repo.server_));\r\n // Used for .info.\r\n repo.infoData_ = new SnapshotHolder();\r\n repo.infoSyncTree_ = new SyncTree({\r\n startListening: (query, tag, currentHashFn, onComplete) => {\r\n let infoEvents = [];\r\n const node = repo.infoData_.getNode(query._path);\r\n // This is possibly a hack, but we have different semantics for .info endpoints. We don't raise null events\r\n // on initial data...\r\n if (!node.isEmpty()) {\r\n infoEvents = syncTreeApplyServerOverwrite(repo.infoSyncTree_, query._path, node);\r\n setTimeout(() => {\r\n onComplete('ok');\r\n }, 0);\r\n }\r\n return infoEvents;\r\n },\r\n stopListening: () => { }\r\n });\r\n repoUpdateInfo(repo, 'connected', false);\r\n repo.serverSyncTree_ = new SyncTree({\r\n startListening: (query, tag, currentHashFn, onComplete) => {\r\n repo.server_.listen(query, currentHashFn, tag, (status, data) => {\r\n const events = onComplete(status, data);\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, query._path, events);\r\n });\r\n // No synchronous events for network-backed sync trees\r\n return [];\r\n },\r\n stopListening: (query, tag) => {\r\n repo.server_.unlisten(query, tag);\r\n }\r\n });\r\n}\r\n/**\r\n * @returns The time in milliseconds, taking the server offset into account if we have one.\r\n */\r\nfunction repoServerTime(repo) {\r\n const offsetNode = repo.infoData_.getNode(new Path('.info/serverTimeOffset'));\r\n const offset = offsetNode.val() || 0;\r\n return new Date().getTime() + offset;\r\n}\r\n/**\r\n * Generate ServerValues using some variables from the repo object.\r\n */\r\nfunction repoGenerateServerValues(repo) {\r\n return generateWithValues({\r\n timestamp: repoServerTime(repo)\r\n });\r\n}\r\n/**\r\n * Called by realtime when we get new messages from the server.\r\n */\r\nfunction repoOnDataUpdate(repo, pathString, data, isMerge, tag) {\r\n // For testing.\r\n repo.dataUpdateCount++;\r\n const path = new Path(pathString);\r\n data = repo.interceptServerDataCallback_\r\n ? repo.interceptServerDataCallback_(pathString, data)\r\n : data;\r\n let events = [];\r\n if (tag) {\r\n if (isMerge) {\r\n const taggedChildren = map(data, (raw) => nodeFromJSON(raw));\r\n events = syncTreeApplyTaggedQueryMerge(repo.serverSyncTree_, path, taggedChildren, tag);\r\n }\r\n else {\r\n const taggedSnap = nodeFromJSON(data);\r\n events = syncTreeApplyTaggedQueryOverwrite(repo.serverSyncTree_, path, taggedSnap, tag);\r\n }\r\n }\r\n else if (isMerge) {\r\n const changedChildren = map(data, (raw) => nodeFromJSON(raw));\r\n events = syncTreeApplyServerMerge(repo.serverSyncTree_, path, changedChildren);\r\n }\r\n else {\r\n const snap = nodeFromJSON(data);\r\n events = syncTreeApplyServerOverwrite(repo.serverSyncTree_, path, snap);\r\n }\r\n let affectedPath = path;\r\n if (events.length > 0) {\r\n // Since we have a listener outstanding for each transaction, receiving any events\r\n // is a proxy for some change having occurred.\r\n affectedPath = repoRerunTransactions(repo, path);\r\n }\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, affectedPath, events);\r\n}\r\nfunction repoOnConnectStatus(repo, connectStatus) {\r\n repoUpdateInfo(repo, 'connected', connectStatus);\r\n if (connectStatus === false) {\r\n repoRunOnDisconnectEvents(repo);\r\n }\r\n}\r\nfunction repoOnServerInfoUpdate(repo, updates) {\r\n each(updates, (key, value) => {\r\n repoUpdateInfo(repo, key, value);\r\n });\r\n}\r\nfunction repoUpdateInfo(repo, pathString, value) {\r\n const path = new Path('/.info/' + pathString);\r\n const newNode = nodeFromJSON(value);\r\n repo.infoData_.updateSnapshot(path, newNode);\r\n const events = syncTreeApplyServerOverwrite(repo.infoSyncTree_, path, newNode);\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, events);\r\n}\r\nfunction repoGetNextWriteId(repo) {\r\n return repo.nextWriteId_++;\r\n}\r\n/**\r\n * The purpose of `getValue` is to return the latest known value\r\n * satisfying `query`.\r\n *\r\n * This method will first check for in-memory cached values\r\n * belonging to active listeners. If they are found, such values\r\n * are considered to be the most up-to-date.\r\n *\r\n * If the client is not connected, this method will try to\r\n * establish a connection and request the value for `query`. If\r\n * the client is not able to retrieve the query result, it reports\r\n * an error.\r\n *\r\n * @param query - The query to surface a value for.\r\n */\r\nfunction repoGetValue(repo, query) {\r\n // Only active queries are cached. There is no persisted cache.\r\n const cached = syncTreeGetServerValue(repo.serverSyncTree_, query);\r\n if (cached != null) {\r\n return Promise.resolve(cached);\r\n }\r\n return repo.server_.get(query).then(payload => {\r\n const node = nodeFromJSON(payload).withIndex(query._queryParams.getIndex());\r\n const events = syncTreeApplyServerOverwrite(repo.serverSyncTree_, query._path, node);\r\n eventQueueRaiseEventsAtPath(repo.eventQueue_, query._path, events);\r\n return Promise.resolve(node);\r\n }, err => {\r\n repoLog(repo, 'get for query ' + stringify(query) + ' failed: ' + err);\r\n return Promise.reject(new Error(err));\r\n });\r\n}\r\nfunction repoSetWithPriority(repo, path, newVal, newPriority, onComplete) {\r\n repoLog(repo, 'set', {\r\n path: path.toString(),\r\n value: newVal,\r\n priority: newPriority\r\n });\r\n // TODO: Optimize this behavior to either (a) store flag to skip resolving where possible and / or\r\n // (b) store unresolved paths on JSON parse\r\n const serverValues = repoGenerateServerValues(repo);\r\n const newNodeUnresolved = nodeFromJSON(newVal, newPriority);\r\n const existing = syncTreeCalcCompleteEventCache(repo.serverSyncTree_, path);\r\n const newNode = resolveDeferredValueSnapshot(newNodeUnresolved, existing, serverValues);\r\n const writeId = repoGetNextWriteId(repo);\r\n const events = syncTreeApplyUserOverwrite(repo.serverSyncTree_, path, newNode, writeId, true);\r\n eventQueueQueueEvents(repo.eventQueue_, events);\r\n repo.server_.put(path.toString(), newNodeUnresolved.val(/*export=*/ true), (status, errorReason) => {\r\n const success = status === 'ok';\r\n if (!success) {\r\n warn('set at ' + path + ' failed: ' + status);\r\n }\r\n const clearEvents = syncTreeAckUserWrite(repo.serverSyncTree_, writeId, !success);\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, clearEvents);\r\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\r\n });\r\n const affectedPath = repoAbortTransactions(repo, path);\r\n repoRerunTransactions(repo, affectedPath);\r\n // We queued the events above, so just flush the queue here\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, affectedPath, []);\r\n}\r\nfunction repoUpdate(repo, path, childrenToMerge, onComplete) {\r\n repoLog(repo, 'update', { path: path.toString(), value: childrenToMerge });\r\n // Start with our existing data and merge each child into it.\r\n let empty = true;\r\n const serverValues = repoGenerateServerValues(repo);\r\n const changedChildren = {};\r\n each(childrenToMerge, (changedKey, changedValue) => {\r\n empty = false;\r\n changedChildren[changedKey] = resolveDeferredValueTree(pathChild(path, changedKey), nodeFromJSON(changedValue), repo.serverSyncTree_, serverValues);\r\n });\r\n if (!empty) {\r\n const writeId = repoGetNextWriteId(repo);\r\n const events = syncTreeApplyUserMerge(repo.serverSyncTree_, path, changedChildren, writeId);\r\n eventQueueQueueEvents(repo.eventQueue_, events);\r\n repo.server_.merge(path.toString(), childrenToMerge, (status, errorReason) => {\r\n const success = status === 'ok';\r\n if (!success) {\r\n warn('update at ' + path + ' failed: ' + status);\r\n }\r\n const clearEvents = syncTreeAckUserWrite(repo.serverSyncTree_, writeId, !success);\r\n const affectedPath = clearEvents.length > 0 ? repoRerunTransactions(repo, path) : path;\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, affectedPath, clearEvents);\r\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\r\n });\r\n each(childrenToMerge, (changedPath) => {\r\n const affectedPath = repoAbortTransactions(repo, pathChild(path, changedPath));\r\n repoRerunTransactions(repo, affectedPath);\r\n });\r\n // We queued the events above, so just flush the queue here\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, []);\r\n }\r\n else {\r\n log(\"update() called with empty data. Don't do anything.\");\r\n repoCallOnCompleteCallback(repo, onComplete, 'ok', undefined);\r\n }\r\n}\r\n/**\r\n * Applies all of the changes stored up in the onDisconnect_ tree.\r\n */\r\nfunction repoRunOnDisconnectEvents(repo) {\r\n repoLog(repo, 'onDisconnectEvents');\r\n const serverValues = repoGenerateServerValues(repo);\r\n const resolvedOnDisconnectTree = newSparseSnapshotTree();\r\n sparseSnapshotTreeForEachTree(repo.onDisconnect_, newEmptyPath(), (path, node) => {\r\n const resolved = resolveDeferredValueTree(path, node, repo.serverSyncTree_, serverValues);\r\n sparseSnapshotTreeRemember(resolvedOnDisconnectTree, path, resolved);\r\n });\r\n let events = [];\r\n sparseSnapshotTreeForEachTree(resolvedOnDisconnectTree, newEmptyPath(), (path, snap) => {\r\n events = events.concat(syncTreeApplyServerOverwrite(repo.serverSyncTree_, path, snap));\r\n const affectedPath = repoAbortTransactions(repo, path);\r\n repoRerunTransactions(repo, affectedPath);\r\n });\r\n repo.onDisconnect_ = newSparseSnapshotTree();\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, newEmptyPath(), events);\r\n}\r\nfunction repoOnDisconnectCancel(repo, path, onComplete) {\r\n repo.server_.onDisconnectCancel(path.toString(), (status, errorReason) => {\r\n if (status === 'ok') {\r\n sparseSnapshotTreeForget(repo.onDisconnect_, path);\r\n }\r\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\r\n });\r\n}\r\nfunction repoOnDisconnectSet(repo, path, value, onComplete) {\r\n const newNode = nodeFromJSON(value);\r\n repo.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), (status, errorReason) => {\r\n if (status === 'ok') {\r\n sparseSnapshotTreeRemember(repo.onDisconnect_, path, newNode);\r\n }\r\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\r\n });\r\n}\r\nfunction repoOnDisconnectSetWithPriority(repo, path, value, priority, onComplete) {\r\n const newNode = nodeFromJSON(value, priority);\r\n repo.server_.onDisconnectPut(path.toString(), newNode.val(/*export=*/ true), (status, errorReason) => {\r\n if (status === 'ok') {\r\n sparseSnapshotTreeRemember(repo.onDisconnect_, path, newNode);\r\n }\r\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\r\n });\r\n}\r\nfunction repoOnDisconnectUpdate(repo, path, childrenToMerge, onComplete) {\r\n if (isEmpty(childrenToMerge)) {\r\n log(\"onDisconnect().update() called with empty data. Don't do anything.\");\r\n repoCallOnCompleteCallback(repo, onComplete, 'ok', undefined);\r\n return;\r\n }\r\n repo.server_.onDisconnectMerge(path.toString(), childrenToMerge, (status, errorReason) => {\r\n if (status === 'ok') {\r\n each(childrenToMerge, (childName, childNode) => {\r\n const newChildNode = nodeFromJSON(childNode);\r\n sparseSnapshotTreeRemember(repo.onDisconnect_, pathChild(path, childName), newChildNode);\r\n });\r\n }\r\n repoCallOnCompleteCallback(repo, onComplete, status, errorReason);\r\n });\r\n}\r\nfunction repoAddEventCallbackForQuery(repo, query, eventRegistration) {\r\n let events;\r\n if (pathGetFront(query._path) === '.info') {\r\n events = syncTreeAddEventRegistration(repo.infoSyncTree_, query, eventRegistration);\r\n }\r\n else {\r\n events = syncTreeAddEventRegistration(repo.serverSyncTree_, query, eventRegistration);\r\n }\r\n eventQueueRaiseEventsAtPath(repo.eventQueue_, query._path, events);\r\n}\r\nfunction repoRemoveEventCallbackForQuery(repo, query, eventRegistration) {\r\n // These are guaranteed not to raise events, since we're not passing in a cancelError. However, we can future-proof\r\n // a little bit by handling the return values anyways.\r\n let events;\r\n if (pathGetFront(query._path) === '.info') {\r\n events = syncTreeRemoveEventRegistration(repo.infoSyncTree_, query, eventRegistration);\r\n }\r\n else {\r\n events = syncTreeRemoveEventRegistration(repo.serverSyncTree_, query, eventRegistration);\r\n }\r\n eventQueueRaiseEventsAtPath(repo.eventQueue_, query._path, events);\r\n}\r\nfunction repoInterrupt(repo) {\r\n if (repo.persistentConnection_) {\r\n repo.persistentConnection_.interrupt(INTERRUPT_REASON);\r\n }\r\n}\r\nfunction repoResume(repo) {\r\n if (repo.persistentConnection_) {\r\n repo.persistentConnection_.resume(INTERRUPT_REASON);\r\n }\r\n}\r\nfunction repoLog(repo, ...varArgs) {\r\n let prefix = '';\r\n if (repo.persistentConnection_) {\r\n prefix = repo.persistentConnection_.id + ':';\r\n }\r\n log(prefix, ...varArgs);\r\n}\r\nfunction repoCallOnCompleteCallback(repo, callback, status, errorReason) {\r\n if (callback) {\r\n exceptionGuard(() => {\r\n if (status === 'ok') {\r\n callback(null);\r\n }\r\n else {\r\n const code = (status || 'error').toUpperCase();\r\n let message = code;\r\n if (errorReason) {\r\n message += ': ' + errorReason;\r\n }\r\n const error = new Error(message);\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error.code = code;\r\n callback(error);\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Creates a new transaction, adds it to the transactions we're tracking, and\r\n * sends it to the server if possible.\r\n *\r\n * @param path - Path at which to do transaction.\r\n * @param transactionUpdate - Update callback.\r\n * @param onComplete - Completion callback.\r\n * @param unwatcher - Function that will be called when the transaction no longer\r\n * need data updates for `path`.\r\n * @param applyLocally - Whether or not to make intermediate results visible\r\n */\r\nfunction repoStartTransaction(repo, path, transactionUpdate, onComplete, unwatcher, applyLocally) {\r\n repoLog(repo, 'transaction on ' + path);\r\n // Initialize transaction.\r\n const transaction = {\r\n path,\r\n update: transactionUpdate,\r\n onComplete,\r\n // One of TransactionStatus enums.\r\n status: null,\r\n // Used when combining transactions at different locations to figure out\r\n // which one goes first.\r\n order: LUIDGenerator(),\r\n // Whether to raise local events for this transaction.\r\n applyLocally,\r\n // Count of how many times we've retried the transaction.\r\n retryCount: 0,\r\n // Function to call to clean up our .on() listener.\r\n unwatcher,\r\n // Stores why a transaction was aborted.\r\n abortReason: null,\r\n currentWriteId: null,\r\n currentInputSnapshot: null,\r\n currentOutputSnapshotRaw: null,\r\n currentOutputSnapshotResolved: null\r\n };\r\n // Run transaction initially.\r\n const currentState = repoGetLatestState(repo, path, undefined);\r\n transaction.currentInputSnapshot = currentState;\r\n const newVal = transaction.update(currentState.val());\r\n if (newVal === undefined) {\r\n // Abort transaction.\r\n transaction.unwatcher();\r\n transaction.currentOutputSnapshotRaw = null;\r\n transaction.currentOutputSnapshotResolved = null;\r\n if (transaction.onComplete) {\r\n transaction.onComplete(null, false, transaction.currentInputSnapshot);\r\n }\r\n }\r\n else {\r\n validateFirebaseData('transaction failed: Data returned ', newVal, transaction.path);\r\n // Mark as run and add to our queue.\r\n transaction.status = 0 /* RUN */;\r\n const queueNode = treeSubTree(repo.transactionQueueTree_, path);\r\n const nodeQueue = treeGetValue(queueNode) || [];\r\n nodeQueue.push(transaction);\r\n treeSetValue(queueNode, nodeQueue);\r\n // Update visibleData and raise events\r\n // Note: We intentionally raise events after updating all of our\r\n // transaction state, since the user could start new transactions from the\r\n // event callbacks.\r\n let priorityForNode;\r\n if (typeof newVal === 'object' &&\r\n newVal !== null &&\r\n contains(newVal, '.priority')) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n priorityForNode = safeGet(newVal, '.priority');\r\n assert(isValidPriority(priorityForNode), 'Invalid priority returned by transaction. ' +\r\n 'Priority must be a valid string, finite number, server value, or null.');\r\n }\r\n else {\r\n const currentNode = syncTreeCalcCompleteEventCache(repo.serverSyncTree_, path) ||\r\n ChildrenNode.EMPTY_NODE;\r\n priorityForNode = currentNode.getPriority().val();\r\n }\r\n const serverValues = repoGenerateServerValues(repo);\r\n const newNodeUnresolved = nodeFromJSON(newVal, priorityForNode);\r\n const newNode = resolveDeferredValueSnapshot(newNodeUnresolved, currentState, serverValues);\r\n transaction.currentOutputSnapshotRaw = newNodeUnresolved;\r\n transaction.currentOutputSnapshotResolved = newNode;\r\n transaction.currentWriteId = repoGetNextWriteId(repo);\r\n const events = syncTreeApplyUserOverwrite(repo.serverSyncTree_, path, newNode, transaction.currentWriteId, transaction.applyLocally);\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, events);\r\n repoSendReadyTransactions(repo, repo.transactionQueueTree_);\r\n }\r\n}\r\n/**\r\n * @param excludeSets - A specific set to exclude\r\n */\r\nfunction repoGetLatestState(repo, path, excludeSets) {\r\n return (syncTreeCalcCompleteEventCache(repo.serverSyncTree_, path, excludeSets) ||\r\n ChildrenNode.EMPTY_NODE);\r\n}\r\n/**\r\n * Sends any already-run transactions that aren't waiting for outstanding\r\n * transactions to complete.\r\n *\r\n * Externally it's called with no arguments, but it calls itself recursively\r\n * with a particular transactionQueueTree node to recurse through the tree.\r\n *\r\n * @param node - transactionQueueTree node to start at.\r\n */\r\nfunction repoSendReadyTransactions(repo, node = repo.transactionQueueTree_) {\r\n // Before recursing, make sure any completed transactions are removed.\r\n if (!node) {\r\n repoPruneCompletedTransactionsBelowNode(repo, node);\r\n }\r\n if (treeGetValue(node)) {\r\n const queue = repoBuildTransactionQueue(repo, node);\r\n assert(queue.length > 0, 'Sending zero length transaction queue');\r\n const allRun = queue.every((transaction) => transaction.status === 0 /* RUN */);\r\n // If they're all run (and not sent), we can send them. Else, we must wait.\r\n if (allRun) {\r\n repoSendTransactionQueue(repo, treeGetPath(node), queue);\r\n }\r\n }\r\n else if (treeHasChildren(node)) {\r\n treeForEachChild(node, childNode => {\r\n repoSendReadyTransactions(repo, childNode);\r\n });\r\n }\r\n}\r\n/**\r\n * Given a list of run transactions, send them to the server and then handle\r\n * the result (success or failure).\r\n *\r\n * @param path - The location of the queue.\r\n * @param queue - Queue of transactions under the specified location.\r\n */\r\nfunction repoSendTransactionQueue(repo, path, queue) {\r\n // Mark transactions as sent and increment retry count!\r\n const setsToIgnore = queue.map(txn => {\r\n return txn.currentWriteId;\r\n });\r\n const latestState = repoGetLatestState(repo, path, setsToIgnore);\r\n let snapToSend = latestState;\r\n const latestHash = latestState.hash();\r\n for (let i = 0; i < queue.length; i++) {\r\n const txn = queue[i];\r\n assert(txn.status === 0 /* RUN */, 'tryToSendTransactionQueue_: items in queue should all be run.');\r\n txn.status = 1 /* SENT */;\r\n txn.retryCount++;\r\n const relativePath = newRelativePath(path, txn.path);\r\n // If we've gotten to this point, the output snapshot must be defined.\r\n snapToSend = snapToSend.updateChild(relativePath /** @type {!Node} */, txn.currentOutputSnapshotRaw);\r\n }\r\n const dataToSend = snapToSend.val(true);\r\n const pathToSend = path;\r\n // Send the put.\r\n repo.server_.put(pathToSend.toString(), dataToSend, (status) => {\r\n repoLog(repo, 'transaction put response', {\r\n path: pathToSend.toString(),\r\n status\r\n });\r\n let events = [];\r\n if (status === 'ok') {\r\n // Queue up the callbacks and fire them after cleaning up all of our\r\n // transaction state, since the callback could trigger more\r\n // transactions or sets.\r\n const callbacks = [];\r\n for (let i = 0; i < queue.length; i++) {\r\n queue[i].status = 2 /* COMPLETED */;\r\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, queue[i].currentWriteId));\r\n if (queue[i].onComplete) {\r\n // We never unset the output snapshot, and given that this\r\n // transaction is complete, it should be set\r\n callbacks.push(() => queue[i].onComplete(null, true, queue[i].currentOutputSnapshotResolved));\r\n }\r\n queue[i].unwatcher();\r\n }\r\n // Now remove the completed transactions.\r\n repoPruneCompletedTransactionsBelowNode(repo, treeSubTree(repo.transactionQueueTree_, path));\r\n // There may be pending transactions that we can now send.\r\n repoSendReadyTransactions(repo, repo.transactionQueueTree_);\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, events);\r\n // Finally, trigger onComplete callbacks.\r\n for (let i = 0; i < callbacks.length; i++) {\r\n exceptionGuard(callbacks[i]);\r\n }\r\n }\r\n else {\r\n // transactions are no longer sent. Update their status appropriately.\r\n if (status === 'datastale') {\r\n for (let i = 0; i < queue.length; i++) {\r\n if (queue[i].status === 3 /* SENT_NEEDS_ABORT */) {\r\n queue[i].status = 4 /* NEEDS_ABORT */;\r\n }\r\n else {\r\n queue[i].status = 0 /* RUN */;\r\n }\r\n }\r\n }\r\n else {\r\n warn('transaction at ' + pathToSend.toString() + ' failed: ' + status);\r\n for (let i = 0; i < queue.length; i++) {\r\n queue[i].status = 4 /* NEEDS_ABORT */;\r\n queue[i].abortReason = status;\r\n }\r\n }\r\n repoRerunTransactions(repo, path);\r\n }\r\n }, latestHash);\r\n}\r\n/**\r\n * Finds all transactions dependent on the data at changedPath and reruns them.\r\n *\r\n * Should be called any time cached data changes.\r\n *\r\n * Return the highest path that was affected by rerunning transactions. This\r\n * is the path at which events need to be raised for.\r\n *\r\n * @param changedPath - The path in mergedData that changed.\r\n * @returns The rootmost path that was affected by rerunning transactions.\r\n */\r\nfunction repoRerunTransactions(repo, changedPath) {\r\n const rootMostTransactionNode = repoGetAncestorTransactionNode(repo, changedPath);\r\n const path = treeGetPath(rootMostTransactionNode);\r\n const queue = repoBuildTransactionQueue(repo, rootMostTransactionNode);\r\n repoRerunTransactionQueue(repo, queue, path);\r\n return path;\r\n}\r\n/**\r\n * Does all the work of rerunning transactions (as well as cleans up aborted\r\n * transactions and whatnot).\r\n *\r\n * @param queue - The queue of transactions to run.\r\n * @param path - The path the queue is for.\r\n */\r\nfunction repoRerunTransactionQueue(repo, queue, path) {\r\n if (queue.length === 0) {\r\n return; // Nothing to do!\r\n }\r\n // Queue up the callbacks and fire them after cleaning up all of our\r\n // transaction state, since the callback could trigger more transactions or\r\n // sets.\r\n const callbacks = [];\r\n let events = [];\r\n // Ignore all of the sets we're going to re-run.\r\n const txnsToRerun = queue.filter(q => {\r\n return q.status === 0 /* RUN */;\r\n });\r\n const setsToIgnore = txnsToRerun.map(q => {\r\n return q.currentWriteId;\r\n });\r\n for (let i = 0; i < queue.length; i++) {\r\n const transaction = queue[i];\r\n const relativePath = newRelativePath(path, transaction.path);\r\n let abortTransaction = false, abortReason;\r\n assert(relativePath !== null, 'rerunTransactionsUnderNode_: relativePath should not be null.');\r\n if (transaction.status === 4 /* NEEDS_ABORT */) {\r\n abortTransaction = true;\r\n abortReason = transaction.abortReason;\r\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, transaction.currentWriteId, true));\r\n }\r\n else if (transaction.status === 0 /* RUN */) {\r\n if (transaction.retryCount >= MAX_TRANSACTION_RETRIES) {\r\n abortTransaction = true;\r\n abortReason = 'maxretry';\r\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, transaction.currentWriteId, true));\r\n }\r\n else {\r\n // This code reruns a transaction\r\n const currentNode = repoGetLatestState(repo, transaction.path, setsToIgnore);\r\n transaction.currentInputSnapshot = currentNode;\r\n const newData = queue[i].update(currentNode.val());\r\n if (newData !== undefined) {\r\n validateFirebaseData('transaction failed: Data returned ', newData, transaction.path);\r\n let newDataNode = nodeFromJSON(newData);\r\n const hasExplicitPriority = typeof newData === 'object' &&\r\n newData != null &&\r\n contains(newData, '.priority');\r\n if (!hasExplicitPriority) {\r\n // Keep the old priority if there wasn't a priority explicitly specified.\r\n newDataNode = newDataNode.updatePriority(currentNode.getPriority());\r\n }\r\n const oldWriteId = transaction.currentWriteId;\r\n const serverValues = repoGenerateServerValues(repo);\r\n const newNodeResolved = resolveDeferredValueSnapshot(newDataNode, currentNode, serverValues);\r\n transaction.currentOutputSnapshotRaw = newDataNode;\r\n transaction.currentOutputSnapshotResolved = newNodeResolved;\r\n transaction.currentWriteId = repoGetNextWriteId(repo);\r\n // Mutates setsToIgnore in place\r\n setsToIgnore.splice(setsToIgnore.indexOf(oldWriteId), 1);\r\n events = events.concat(syncTreeApplyUserOverwrite(repo.serverSyncTree_, transaction.path, newNodeResolved, transaction.currentWriteId, transaction.applyLocally));\r\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, oldWriteId, true));\r\n }\r\n else {\r\n abortTransaction = true;\r\n abortReason = 'nodata';\r\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, transaction.currentWriteId, true));\r\n }\r\n }\r\n }\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, path, events);\r\n events = [];\r\n if (abortTransaction) {\r\n // Abort.\r\n queue[i].status = 2 /* COMPLETED */;\r\n // Removing a listener can trigger pruning which can muck with\r\n // mergedData/visibleData (as it prunes data). So defer the unwatcher\r\n // until we're done.\r\n (function (unwatcher) {\r\n setTimeout(unwatcher, Math.floor(0));\r\n })(queue[i].unwatcher);\r\n if (queue[i].onComplete) {\r\n if (abortReason === 'nodata') {\r\n callbacks.push(() => queue[i].onComplete(null, false, queue[i].currentInputSnapshot));\r\n }\r\n else {\r\n callbacks.push(() => queue[i].onComplete(new Error(abortReason), false, null));\r\n }\r\n }\r\n }\r\n }\r\n // Clean up completed transactions.\r\n repoPruneCompletedTransactionsBelowNode(repo, repo.transactionQueueTree_);\r\n // Now fire callbacks, now that we're in a good, known state.\r\n for (let i = 0; i < callbacks.length; i++) {\r\n exceptionGuard(callbacks[i]);\r\n }\r\n // Try to send the transaction result to the server.\r\n repoSendReadyTransactions(repo, repo.transactionQueueTree_);\r\n}\r\n/**\r\n * Returns the rootmost ancestor node of the specified path that has a pending\r\n * transaction on it, or just returns the node for the given path if there are\r\n * no pending transactions on any ancestor.\r\n *\r\n * @param path - The location to start at.\r\n * @returns The rootmost node with a transaction.\r\n */\r\nfunction repoGetAncestorTransactionNode(repo, path) {\r\n let front;\r\n // Start at the root and walk deeper into the tree towards path until we\r\n // find a node with pending transactions.\r\n let transactionNode = repo.transactionQueueTree_;\r\n front = pathGetFront(path);\r\n while (front !== null && treeGetValue(transactionNode) === undefined) {\r\n transactionNode = treeSubTree(transactionNode, front);\r\n path = pathPopFront(path);\r\n front = pathGetFront(path);\r\n }\r\n return transactionNode;\r\n}\r\n/**\r\n * Builds the queue of all transactions at or below the specified\r\n * transactionNode.\r\n *\r\n * @param transactionNode\r\n * @returns The generated queue.\r\n */\r\nfunction repoBuildTransactionQueue(repo, transactionNode) {\r\n // Walk any child transaction queues and aggregate them into a single queue.\r\n const transactionQueue = [];\r\n repoAggregateTransactionQueuesForNode(repo, transactionNode, transactionQueue);\r\n // Sort them by the order the transactions were created.\r\n transactionQueue.sort((a, b) => a.order - b.order);\r\n return transactionQueue;\r\n}\r\nfunction repoAggregateTransactionQueuesForNode(repo, node, queue) {\r\n const nodeQueue = treeGetValue(node);\r\n if (nodeQueue) {\r\n for (let i = 0; i < nodeQueue.length; i++) {\r\n queue.push(nodeQueue[i]);\r\n }\r\n }\r\n treeForEachChild(node, child => {\r\n repoAggregateTransactionQueuesForNode(repo, child, queue);\r\n });\r\n}\r\n/**\r\n * Remove COMPLETED transactions at or below this node in the transactionQueueTree_.\r\n */\r\nfunction repoPruneCompletedTransactionsBelowNode(repo, node) {\r\n const queue = treeGetValue(node);\r\n if (queue) {\r\n let to = 0;\r\n for (let from = 0; from < queue.length; from++) {\r\n if (queue[from].status !== 2 /* COMPLETED */) {\r\n queue[to] = queue[from];\r\n to++;\r\n }\r\n }\r\n queue.length = to;\r\n treeSetValue(node, queue.length > 0 ? queue : undefined);\r\n }\r\n treeForEachChild(node, childNode => {\r\n repoPruneCompletedTransactionsBelowNode(repo, childNode);\r\n });\r\n}\r\n/**\r\n * Aborts all transactions on ancestors or descendants of the specified path.\r\n * Called when doing a set() or update() since we consider them incompatible\r\n * with transactions.\r\n *\r\n * @param path - Path for which we want to abort related transactions.\r\n */\r\nfunction repoAbortTransactions(repo, path) {\r\n const affectedPath = treeGetPath(repoGetAncestorTransactionNode(repo, path));\r\n const transactionNode = treeSubTree(repo.transactionQueueTree_, path);\r\n treeForEachAncestor(transactionNode, (node) => {\r\n repoAbortTransactionsOnNode(repo, node);\r\n });\r\n repoAbortTransactionsOnNode(repo, transactionNode);\r\n treeForEachDescendant(transactionNode, (node) => {\r\n repoAbortTransactionsOnNode(repo, node);\r\n });\r\n return affectedPath;\r\n}\r\n/**\r\n * Abort transactions stored in this transaction queue node.\r\n *\r\n * @param node - Node to abort transactions for.\r\n */\r\nfunction repoAbortTransactionsOnNode(repo, node) {\r\n const queue = treeGetValue(node);\r\n if (queue) {\r\n // Queue up the callbacks and fire them after cleaning up all of our\r\n // transaction state, since the callback could trigger more transactions\r\n // or sets.\r\n const callbacks = [];\r\n // Go through queue. Any already-sent transactions must be marked for\r\n // abort, while the unsent ones can be immediately aborted and removed.\r\n let events = [];\r\n let lastSent = -1;\r\n for (let i = 0; i < queue.length; i++) {\r\n if (queue[i].status === 3 /* SENT_NEEDS_ABORT */) ;\r\n else if (queue[i].status === 1 /* SENT */) {\r\n assert(lastSent === i - 1, 'All SENT items should be at beginning of queue.');\r\n lastSent = i;\r\n // Mark transaction for abort when it comes back.\r\n queue[i].status = 3 /* SENT_NEEDS_ABORT */;\r\n queue[i].abortReason = 'set';\r\n }\r\n else {\r\n assert(queue[i].status === 0 /* RUN */, 'Unexpected transaction status in abort');\r\n // We can abort it immediately.\r\n queue[i].unwatcher();\r\n events = events.concat(syncTreeAckUserWrite(repo.serverSyncTree_, queue[i].currentWriteId, true));\r\n if (queue[i].onComplete) {\r\n callbacks.push(queue[i].onComplete.bind(null, new Error('set'), false, null));\r\n }\r\n }\r\n }\r\n if (lastSent === -1) {\r\n // We're not waiting for any sent transactions. We can clear the queue.\r\n treeSetValue(node, undefined);\r\n }\r\n else {\r\n // Remove the transactions we aborted.\r\n queue.length = lastSent + 1;\r\n }\r\n // Now fire the callbacks.\r\n eventQueueRaiseEventsForChangedPath(repo.eventQueue_, treeGetPath(node), events);\r\n for (let i = 0; i < callbacks.length; i++) {\r\n exceptionGuard(callbacks[i]);\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction decodePath(pathString) {\r\n let pathStringDecoded = '';\r\n const pieces = pathString.split('/');\r\n for (let i = 0; i < pieces.length; i++) {\r\n if (pieces[i].length > 0) {\r\n let piece = pieces[i];\r\n try {\r\n piece = decodeURIComponent(piece.replace(/\\+/g, ' '));\r\n }\r\n catch (e) { }\r\n pathStringDecoded += '/' + piece;\r\n }\r\n }\r\n return pathStringDecoded;\r\n}\r\n/**\r\n * @returns key value hash\r\n */\r\nfunction decodeQuery(queryString) {\r\n const results = {};\r\n if (queryString.charAt(0) === '?') {\r\n queryString = queryString.substring(1);\r\n }\r\n for (const segment of queryString.split('&')) {\r\n if (segment.length === 0) {\r\n continue;\r\n }\r\n const kv = segment.split('=');\r\n if (kv.length === 2) {\r\n results[decodeURIComponent(kv[0])] = decodeURIComponent(kv[1]);\r\n }\r\n else {\r\n warn(`Invalid query segment '${segment}' in query '${queryString}'`);\r\n }\r\n }\r\n return results;\r\n}\r\nconst parseRepoInfo = function (dataURL, nodeAdmin) {\r\n const parsedUrl = parseDatabaseURL(dataURL), namespace = parsedUrl.namespace;\r\n if (parsedUrl.domain === 'firebase.com') {\r\n fatal(parsedUrl.host +\r\n ' is no longer supported. ' +\r\n 'Please use .firebaseio.com instead');\r\n }\r\n // Catch common error of uninitialized namespace value.\r\n if ((!namespace || namespace === 'undefined') &&\r\n parsedUrl.domain !== 'localhost') {\r\n fatal('Cannot parse Firebase url. Please use https://.firebaseio.com');\r\n }\r\n if (!parsedUrl.secure) {\r\n warnIfPageIsSecure();\r\n }\r\n const webSocketOnly = parsedUrl.scheme === 'ws' || parsedUrl.scheme === 'wss';\r\n return {\r\n repoInfo: new RepoInfo(parsedUrl.host, parsedUrl.secure, namespace, nodeAdmin, webSocketOnly, \r\n /*persistenceKey=*/ '', \r\n /*includeNamespaceInQueryParams=*/ namespace !== parsedUrl.subdomain),\r\n path: new Path(parsedUrl.pathString)\r\n };\r\n};\r\nconst parseDatabaseURL = function (dataURL) {\r\n // Default to empty strings in the event of a malformed string.\r\n let host = '', domain = '', subdomain = '', pathString = '', namespace = '';\r\n // Always default to SSL, unless otherwise specified.\r\n let secure = true, scheme = 'https', port = 443;\r\n // Don't do any validation here. The caller is responsible for validating the result of parsing.\r\n if (typeof dataURL === 'string') {\r\n // Parse scheme.\r\n let colonInd = dataURL.indexOf('//');\r\n if (colonInd >= 0) {\r\n scheme = dataURL.substring(0, colonInd - 1);\r\n dataURL = dataURL.substring(colonInd + 2);\r\n }\r\n // Parse host, path, and query string.\r\n let slashInd = dataURL.indexOf('/');\r\n if (slashInd === -1) {\r\n slashInd = dataURL.length;\r\n }\r\n let questionMarkInd = dataURL.indexOf('?');\r\n if (questionMarkInd === -1) {\r\n questionMarkInd = dataURL.length;\r\n }\r\n host = dataURL.substring(0, Math.min(slashInd, questionMarkInd));\r\n if (slashInd < questionMarkInd) {\r\n // For pathString, questionMarkInd will always come after slashInd\r\n pathString = decodePath(dataURL.substring(slashInd, questionMarkInd));\r\n }\r\n const queryParams = decodeQuery(dataURL.substring(Math.min(dataURL.length, questionMarkInd)));\r\n // If we have a port, use scheme for determining if it's secure.\r\n colonInd = host.indexOf(':');\r\n if (colonInd >= 0) {\r\n secure = scheme === 'https' || scheme === 'wss';\r\n port = parseInt(host.substring(colonInd + 1), 10);\r\n }\r\n else {\r\n colonInd = host.length;\r\n }\r\n const hostWithoutPort = host.slice(0, colonInd);\r\n if (hostWithoutPort.toLowerCase() === 'localhost') {\r\n domain = 'localhost';\r\n }\r\n else if (hostWithoutPort.split('.').length <= 2) {\r\n domain = hostWithoutPort;\r\n }\r\n else {\r\n // Interpret the subdomain of a 3 or more component URL as the namespace name.\r\n const dotInd = host.indexOf('.');\r\n subdomain = host.substring(0, dotInd).toLowerCase();\r\n domain = host.substring(dotInd + 1);\r\n // Normalize namespaces to lowercase to share storage / connection.\r\n namespace = subdomain;\r\n }\r\n // Always treat the value of the `ns` as the namespace name if it is present.\r\n if ('ns' in queryParams) {\r\n namespace = queryParams['ns'];\r\n }\r\n }\r\n return {\r\n host,\r\n port,\r\n domain,\r\n subdomain,\r\n secure,\r\n scheme,\r\n pathString,\r\n namespace\r\n };\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Encapsulates the data needed to raise an event\r\n */\r\nclass DataEvent {\r\n /**\r\n * @param eventType - One of: value, child_added, child_changed, child_moved, child_removed\r\n * @param eventRegistration - The function to call to with the event data. User provided\r\n * @param snapshot - The data backing the event\r\n * @param prevName - Optional, the name of the previous child for child_* events.\r\n */\r\n constructor(eventType, eventRegistration, snapshot, prevName) {\r\n this.eventType = eventType;\r\n this.eventRegistration = eventRegistration;\r\n this.snapshot = snapshot;\r\n this.prevName = prevName;\r\n }\r\n getPath() {\r\n const ref = this.snapshot.ref;\r\n if (this.eventType === 'value') {\r\n return ref._path;\r\n }\r\n else {\r\n return ref.parent._path;\r\n }\r\n }\r\n getEventType() {\r\n return this.eventType;\r\n }\r\n getEventRunner() {\r\n return this.eventRegistration.getEventRunner(this);\r\n }\r\n toString() {\r\n return (this.getPath().toString() +\r\n ':' +\r\n this.eventType +\r\n ':' +\r\n stringify(this.snapshot.exportVal()));\r\n }\r\n}\r\nclass CancelEvent {\r\n constructor(eventRegistration, error, path) {\r\n this.eventRegistration = eventRegistration;\r\n this.error = error;\r\n this.path = path;\r\n }\r\n getPath() {\r\n return this.path;\r\n }\r\n getEventType() {\r\n return 'cancel';\r\n }\r\n getEventRunner() {\r\n return this.eventRegistration.getEventRunner(this);\r\n }\r\n toString() {\r\n return this.path.toString() + ':cancel';\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A wrapper class that converts events from the database@exp SDK to the legacy\r\n * Database SDK. Events are not converted directly as event registration relies\r\n * on reference comparison of the original user callback (see `matches()`) and\r\n * relies on equality of the legacy SDK's `context` object.\r\n */\r\nclass CallbackContext {\r\n constructor(snapshotCallback, cancelCallback) {\r\n this.snapshotCallback = snapshotCallback;\r\n this.cancelCallback = cancelCallback;\r\n }\r\n onValue(expDataSnapshot, previousChildName) {\r\n this.snapshotCallback.call(null, expDataSnapshot, previousChildName);\r\n }\r\n onCancel(error) {\r\n assert(this.hasCancelCallback, 'Raising a cancel event on a listener with no cancel callback');\r\n return this.cancelCallback.call(null, error);\r\n }\r\n get hasCancelCallback() {\r\n return !!this.cancelCallback;\r\n }\r\n matches(other) {\r\n return (this.snapshotCallback === other.snapshotCallback ||\r\n (this.snapshotCallback.userCallback !== undefined &&\r\n this.snapshotCallback.userCallback ===\r\n other.snapshotCallback.userCallback &&\r\n this.snapshotCallback.context === other.snapshotCallback.context));\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The `onDisconnect` class allows you to write or clear data when your client\r\n * disconnects from the Database server. These updates occur whether your\r\n * client disconnects cleanly or not, so you can rely on them to clean up data\r\n * even if a connection is dropped or a client crashes.\r\n *\r\n * The `onDisconnect` class is most commonly used to manage presence in\r\n * applications where it is useful to detect how many clients are connected and\r\n * when other clients disconnect. See\r\n * {@link https://firebase.google.com/docs/database/web/offline-capabilities | Enabling Offline Capabilities in JavaScript}\r\n * for more information.\r\n *\r\n * To avoid problems when a connection is dropped before the requests can be\r\n * transferred to the Database server, these functions should be called before\r\n * writing any data.\r\n *\r\n * Note that `onDisconnect` operations are only triggered once. If you want an\r\n * operation to occur each time a disconnect occurs, you'll need to re-establish\r\n * the `onDisconnect` operations each time you reconnect.\r\n */\r\nclass OnDisconnect {\r\n /** @hideconstructor */\r\n constructor(_repo, _path) {\r\n this._repo = _repo;\r\n this._path = _path;\r\n }\r\n /**\r\n * Cancels all previously queued `onDisconnect()` set or update events for this\r\n * location and all children.\r\n *\r\n * If a write has been queued for this location via a `set()` or `update()` at a\r\n * parent location, the write at this location will be canceled, though writes\r\n * to sibling locations will still occur.\r\n *\r\n * @returns Resolves when synchronization to the server is complete.\r\n */\r\n cancel() {\r\n const deferred = new Deferred();\r\n repoOnDisconnectCancel(this._repo, this._path, deferred.wrapCallback(() => { }));\r\n return deferred.promise;\r\n }\r\n /**\r\n * Ensures the data at this location is deleted when the client is disconnected\r\n * (due to closing the browser, navigating to a new page, or network issues).\r\n *\r\n * @returns Resolves when synchronization to the server is complete.\r\n */\r\n remove() {\r\n validateWritablePath('OnDisconnect.remove', this._path);\r\n const deferred = new Deferred();\r\n repoOnDisconnectSet(this._repo, this._path, null, deferred.wrapCallback(() => { }));\r\n return deferred.promise;\r\n }\r\n /**\r\n * Ensures the data at this location is set to the specified value when the\r\n * client is disconnected (due to closing the browser, navigating to a new page,\r\n * or network issues).\r\n *\r\n * `set()` is especially useful for implementing \"presence\" systems, where a\r\n * value should be changed or cleared when a user disconnects so that they\r\n * appear \"offline\" to other users. See\r\n * {@link https://firebase.google.com/docs/database/web/offline-capabilities | Enabling Offline Capabilities in JavaScript}\r\n * for more information.\r\n *\r\n * Note that `onDisconnect` operations are only triggered once. If you want an\r\n * operation to occur each time a disconnect occurs, you'll need to re-establish\r\n * the `onDisconnect` operations each time.\r\n *\r\n * @param value - The value to be written to this location on disconnect (can\r\n * be an object, array, string, number, boolean, or null).\r\n * @returns Resolves when synchronization to the Database is complete.\r\n */\r\n set(value) {\r\n validateWritablePath('OnDisconnect.set', this._path);\r\n validateFirebaseDataArg('OnDisconnect.set', value, this._path, false);\r\n const deferred = new Deferred();\r\n repoOnDisconnectSet(this._repo, this._path, value, deferred.wrapCallback(() => { }));\r\n return deferred.promise;\r\n }\r\n /**\r\n * Ensures the data at this location is set to the specified value and priority\r\n * when the client is disconnected (due to closing the browser, navigating to a\r\n * new page, or network issues).\r\n *\r\n * @param value - The value to be written to this location on disconnect (can\r\n * be an object, array, string, number, boolean, or null).\r\n * @param priority - The priority to be written (string, number, or null).\r\n * @returns Resolves when synchronization to the Database is complete.\r\n */\r\n setWithPriority(value, priority) {\r\n validateWritablePath('OnDisconnect.setWithPriority', this._path);\r\n validateFirebaseDataArg('OnDisconnect.setWithPriority', value, this._path, false);\r\n validatePriority('OnDisconnect.setWithPriority', priority, false);\r\n const deferred = new Deferred();\r\n repoOnDisconnectSetWithPriority(this._repo, this._path, value, priority, deferred.wrapCallback(() => { }));\r\n return deferred.promise;\r\n }\r\n /**\r\n * Writes multiple values at this location when the client is disconnected (due\r\n * to closing the browser, navigating to a new page, or network issues).\r\n *\r\n * The `values` argument contains multiple property-value pairs that will be\r\n * written to the Database together. Each child property can either be a simple\r\n * property (for example, \"name\") or a relative path (for example, \"name/first\")\r\n * from the current location to the data to update.\r\n *\r\n * As opposed to the `set()` method, `update()` can be use to selectively update\r\n * only the referenced properties at the current location (instead of replacing\r\n * all the child properties at the current location).\r\n *\r\n * @param values - Object containing multiple values.\r\n * @returns Resolves when synchronization to the Database is complete.\r\n */\r\n update(values) {\r\n validateWritablePath('OnDisconnect.update', this._path);\r\n validateFirebaseMergeDataArg('OnDisconnect.update', values, this._path, false);\r\n const deferred = new Deferred();\r\n repoOnDisconnectUpdate(this._repo, this._path, values, deferred.wrapCallback(() => { }));\r\n return deferred.promise;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @internal\r\n */\r\nclass QueryImpl {\r\n /**\r\n * @hideconstructor\r\n */\r\n constructor(_repo, _path, _queryParams, _orderByCalled) {\r\n this._repo = _repo;\r\n this._path = _path;\r\n this._queryParams = _queryParams;\r\n this._orderByCalled = _orderByCalled;\r\n }\r\n get key() {\r\n if (pathIsEmpty(this._path)) {\r\n return null;\r\n }\r\n else {\r\n return pathGetBack(this._path);\r\n }\r\n }\r\n get ref() {\r\n return new ReferenceImpl(this._repo, this._path);\r\n }\r\n get _queryIdentifier() {\r\n const obj = queryParamsGetQueryObject(this._queryParams);\r\n const id = ObjectToUniqueKey(obj);\r\n return id === '{}' ? 'default' : id;\r\n }\r\n /**\r\n * An object representation of the query parameters used by this Query.\r\n */\r\n get _queryObject() {\r\n return queryParamsGetQueryObject(this._queryParams);\r\n }\r\n isEqual(other) {\r\n other = getModularInstance(other);\r\n if (!(other instanceof QueryImpl)) {\r\n return false;\r\n }\r\n const sameRepo = this._repo === other._repo;\r\n const samePath = pathEquals(this._path, other._path);\r\n const sameQueryIdentifier = this._queryIdentifier === other._queryIdentifier;\r\n return sameRepo && samePath && sameQueryIdentifier;\r\n }\r\n toJSON() {\r\n return this.toString();\r\n }\r\n toString() {\r\n return this._repo.toString() + pathToUrlEncodedString(this._path);\r\n }\r\n}\r\n/**\r\n * Validates that no other order by call has been made\r\n */\r\nfunction validateNoPreviousOrderByCall(query, fnName) {\r\n if (query._orderByCalled === true) {\r\n throw new Error(fnName + \": You can't combine multiple orderBy calls.\");\r\n }\r\n}\r\n/**\r\n * Validates start/end values for queries.\r\n */\r\nfunction validateQueryEndpoints(params) {\r\n let startNode = null;\r\n let endNode = null;\r\n if (params.hasStart()) {\r\n startNode = params.getIndexStartValue();\r\n }\r\n if (params.hasEnd()) {\r\n endNode = params.getIndexEndValue();\r\n }\r\n if (params.getIndex() === KEY_INDEX) {\r\n const tooManyArgsError = 'Query: When ordering by key, you may only pass one argument to ' +\r\n 'startAt(), endAt(), or equalTo().';\r\n const wrongArgTypeError = 'Query: When ordering by key, the argument passed to startAt(), startAfter(), ' +\r\n 'endAt(), endBefore(), or equalTo() must be a string.';\r\n if (params.hasStart()) {\r\n const startName = params.getIndexStartName();\r\n if (startName !== MIN_NAME) {\r\n throw new Error(tooManyArgsError);\r\n }\r\n else if (typeof startNode !== 'string') {\r\n throw new Error(wrongArgTypeError);\r\n }\r\n }\r\n if (params.hasEnd()) {\r\n const endName = params.getIndexEndName();\r\n if (endName !== MAX_NAME) {\r\n throw new Error(tooManyArgsError);\r\n }\r\n else if (typeof endNode !== 'string') {\r\n throw new Error(wrongArgTypeError);\r\n }\r\n }\r\n }\r\n else if (params.getIndex() === PRIORITY_INDEX) {\r\n if ((startNode != null && !isValidPriority(startNode)) ||\r\n (endNode != null && !isValidPriority(endNode))) {\r\n throw new Error('Query: When ordering by priority, the first argument passed to startAt(), ' +\r\n 'startAfter() endAt(), endBefore(), or equalTo() must be a valid priority value ' +\r\n '(null, a number, or a string).');\r\n }\r\n }\r\n else {\r\n assert(params.getIndex() instanceof PathIndex ||\r\n params.getIndex() === VALUE_INDEX, 'unknown index type.');\r\n if ((startNode != null && typeof startNode === 'object') ||\r\n (endNode != null && typeof endNode === 'object')) {\r\n throw new Error('Query: First argument passed to startAt(), startAfter(), endAt(), endBefore(), or ' +\r\n 'equalTo() cannot be an object.');\r\n }\r\n }\r\n}\r\n/**\r\n * Validates that limit* has been called with the correct combination of parameters\r\n */\r\nfunction validateLimit(params) {\r\n if (params.hasStart() &&\r\n params.hasEnd() &&\r\n params.hasLimit() &&\r\n !params.hasAnchoredLimit()) {\r\n throw new Error(\"Query: Can't combine startAt(), startAfter(), endAt(), endBefore(), and limit(). Use \" +\r\n 'limitToFirst() or limitToLast() instead.');\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nclass ReferenceImpl extends QueryImpl {\r\n /** @hideconstructor */\r\n constructor(repo, path) {\r\n super(repo, path, new QueryParams(), false);\r\n }\r\n get parent() {\r\n const parentPath = pathParent(this._path);\r\n return parentPath === null\r\n ? null\r\n : new ReferenceImpl(this._repo, parentPath);\r\n }\r\n get root() {\r\n let ref = this;\r\n while (ref.parent !== null) {\r\n ref = ref.parent;\r\n }\r\n return ref;\r\n }\r\n}\r\n/**\r\n * A `DataSnapshot` contains data from a Database location.\r\n *\r\n * Any time you read data from the Database, you receive the data as a\r\n * `DataSnapshot`. A `DataSnapshot` is passed to the event callbacks you attach\r\n * with `on()` or `once()`. You can extract the contents of the snapshot as a\r\n * JavaScript object by calling the `val()` method. Alternatively, you can\r\n * traverse into the snapshot by calling `child()` to return child snapshots\r\n * (which you could then call `val()` on).\r\n *\r\n * A `DataSnapshot` is an efficiently generated, immutable copy of the data at\r\n * a Database location. It cannot be modified and will never change (to modify\r\n * data, you always call the `set()` method on a `Reference` directly).\r\n */\r\nclass DataSnapshot {\r\n /**\r\n * @param _node - A SnapshotNode to wrap.\r\n * @param ref - The location this snapshot came from.\r\n * @param _index - The iteration order for this snapshot\r\n * @hideconstructor\r\n */\r\n constructor(_node, \r\n /**\r\n * The location of this DataSnapshot.\r\n */\r\n ref, _index) {\r\n this._node = _node;\r\n this.ref = ref;\r\n this._index = _index;\r\n }\r\n /**\r\n * Gets the priority value of the data in this `DataSnapshot`.\r\n *\r\n * Applications need not use priority but can order collections by\r\n * ordinary properties (see\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data |Sorting and filtering data}\r\n * ).\r\n */\r\n get priority() {\r\n // typecast here because we never return deferred values or internal priorities (MAX_PRIORITY)\r\n return this._node.getPriority().val();\r\n }\r\n /**\r\n * The key (last part of the path) of the location of this `DataSnapshot`.\r\n *\r\n * The last token in a Database location is considered its key. For example,\r\n * \"ada\" is the key for the /users/ada/ node. Accessing the key on any\r\n * `DataSnapshot` will return the key for the location that generated it.\r\n * However, accessing the key on the root URL of a Database will return\r\n * `null`.\r\n */\r\n get key() {\r\n return this.ref.key;\r\n }\r\n /** Returns the number of child properties of this `DataSnapshot`. */\r\n get size() {\r\n return this._node.numChildren();\r\n }\r\n /**\r\n * Gets another `DataSnapshot` for the location at the specified relative path.\r\n *\r\n * Passing a relative path to the `child()` method of a DataSnapshot returns\r\n * another `DataSnapshot` for the location at the specified relative path. The\r\n * relative path can either be a simple child name (for example, \"ada\") or a\r\n * deeper, slash-separated path (for example, \"ada/name/first\"). If the child\r\n * location has no data, an empty `DataSnapshot` (that is, a `DataSnapshot`\r\n * whose value is `null`) is returned.\r\n *\r\n * @param path - A relative path to the location of child data.\r\n */\r\n child(path) {\r\n const childPath = new Path(path);\r\n const childRef = child(this.ref, path);\r\n return new DataSnapshot(this._node.getChild(childPath), childRef, PRIORITY_INDEX);\r\n }\r\n /**\r\n * Returns true if this `DataSnapshot` contains any data. It is slightly more\r\n * efficient than using `snapshot.val() !== null`.\r\n */\r\n exists() {\r\n return !this._node.isEmpty();\r\n }\r\n /**\r\n * Exports the entire contents of the DataSnapshot as a JavaScript object.\r\n *\r\n * The `exportVal()` method is similar to `val()`, except priority information\r\n * is included (if available), making it suitable for backing up your data.\r\n *\r\n * @returns The DataSnapshot's contents as a JavaScript value (Object,\r\n * Array, string, number, boolean, or `null`).\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n exportVal() {\r\n return this._node.val(true);\r\n }\r\n /**\r\n * Enumerates the top-level children in the `DataSnapshot`.\r\n *\r\n * Because of the way JavaScript objects work, the ordering of data in the\r\n * JavaScript object returned by `val()` is not guaranteed to match the\r\n * ordering on the server nor the ordering of `onChildAdded()` events. That is\r\n * where `forEach()` comes in handy. It guarantees the children of a\r\n * `DataSnapshot` will be iterated in their query order.\r\n *\r\n * If no explicit `orderBy*()` method is used, results are returned\r\n * ordered by key (unless priorities are used, in which case, results are\r\n * returned by priority).\r\n *\r\n * @param action - A function that will be called for each child DataSnapshot.\r\n * The callback can return true to cancel further enumeration.\r\n * @returns true if enumeration was canceled due to your callback returning\r\n * true.\r\n */\r\n forEach(action) {\r\n if (this._node.isLeafNode()) {\r\n return false;\r\n }\r\n const childrenNode = this._node;\r\n // Sanitize the return value to a boolean. ChildrenNode.forEachChild has a weird return type...\r\n return !!childrenNode.forEachChild(this._index, (key, node) => {\r\n return action(new DataSnapshot(node, child(this.ref, key), PRIORITY_INDEX));\r\n });\r\n }\r\n /**\r\n * Returns true if the specified child path has (non-null) data.\r\n *\r\n * @param path - A relative path to the location of a potential child.\r\n * @returns `true` if data exists at the specified child path; else\r\n * `false`.\r\n */\r\n hasChild(path) {\r\n const childPath = new Path(path);\r\n return !this._node.getChild(childPath).isEmpty();\r\n }\r\n /**\r\n * Returns whether or not the `DataSnapshot` has any non-`null` child\r\n * properties.\r\n *\r\n * You can use `hasChildren()` to determine if a `DataSnapshot` has any\r\n * children. If it does, you can enumerate them using `forEach()`. If it\r\n * doesn't, then either this snapshot contains a primitive value (which can be\r\n * retrieved with `val()`) or it is empty (in which case, `val()` will return\r\n * `null`).\r\n *\r\n * @returns true if this snapshot has any children; else false.\r\n */\r\n hasChildren() {\r\n if (this._node.isLeafNode()) {\r\n return false;\r\n }\r\n else {\r\n return !this._node.isEmpty();\r\n }\r\n }\r\n /**\r\n * Returns a JSON-serializable representation of this object.\r\n */\r\n toJSON() {\r\n return this.exportVal();\r\n }\r\n /**\r\n * Extracts a JavaScript value from a `DataSnapshot`.\r\n *\r\n * Depending on the data in a `DataSnapshot`, the `val()` method may return a\r\n * scalar type (string, number, or boolean), an array, or an object. It may\r\n * also return null, indicating that the `DataSnapshot` is empty (contains no\r\n * data).\r\n *\r\n * @returns The DataSnapshot's contents as a JavaScript value (Object,\r\n * Array, string, number, boolean, or `null`).\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n val() {\r\n return this._node.val();\r\n }\r\n}\r\n/**\r\n *\r\n * Returns a `Reference` representing the location in the Database\r\n * corresponding to the provided path. If no path is provided, the `Reference`\r\n * will point to the root of the Database.\r\n *\r\n * @param db - The database instance to obtain a reference for.\r\n * @param path - Optional path representing the location the returned\r\n * `Reference` will point. If not provided, the returned `Reference` will\r\n * point to the root of the Database.\r\n * @returns If a path is provided, a `Reference`\r\n * pointing to the provided path. Otherwise, a `Reference` pointing to the\r\n * root of the Database.\r\n */\r\nfunction ref(db, path) {\r\n db = getModularInstance(db);\r\n db._checkNotDeleted('ref');\r\n return path !== undefined ? child(db._root, path) : db._root;\r\n}\r\n/**\r\n * Returns a `Reference` representing the location in the Database\r\n * corresponding to the provided Firebase URL.\r\n *\r\n * An exception is thrown if the URL is not a valid Firebase Database URL or it\r\n * has a different domain than the current `Database` instance.\r\n *\r\n * Note that all query parameters (`orderBy`, `limitToLast`, etc.) are ignored\r\n * and are not applied to the returned `Reference`.\r\n *\r\n * @param db - The database instance to obtain a reference for.\r\n * @param url - The Firebase URL at which the returned `Reference` will\r\n * point.\r\n * @returns A `Reference` pointing to the provided\r\n * Firebase URL.\r\n */\r\nfunction refFromURL(db, url) {\r\n db = getModularInstance(db);\r\n db._checkNotDeleted('refFromURL');\r\n const parsedURL = parseRepoInfo(url, db._repo.repoInfo_.nodeAdmin);\r\n validateUrl('refFromURL', parsedURL);\r\n const repoInfo = parsedURL.repoInfo;\r\n if (!db._repo.repoInfo_.isCustomHost() &&\r\n repoInfo.host !== db._repo.repoInfo_.host) {\r\n fatal('refFromURL' +\r\n ': Host name does not match the current database: ' +\r\n '(found ' +\r\n repoInfo.host +\r\n ' but expected ' +\r\n db._repo.repoInfo_.host +\r\n ')');\r\n }\r\n return ref(db, parsedURL.path.toString());\r\n}\r\n/**\r\n * Gets a `Reference` for the location at the specified relative path.\r\n *\r\n * The relative path can either be a simple child name (for example, \"ada\") or\r\n * a deeper slash-separated path (for example, \"ada/name/first\").\r\n *\r\n * @param parent - The parent location.\r\n * @param path - A relative path from this location to the desired child\r\n * location.\r\n * @returns The specified child location.\r\n */\r\nfunction child(parent, path) {\r\n parent = getModularInstance(parent);\r\n if (pathGetFront(parent._path) === null) {\r\n validateRootPathString('child', 'path', path, false);\r\n }\r\n else {\r\n validatePathString('child', 'path', path, false);\r\n }\r\n return new ReferenceImpl(parent._repo, pathChild(parent._path, path));\r\n}\r\n/**\r\n * Returns an `OnDisconnect` object - see\r\n * {@link https://firebase.google.com/docs/database/web/offline-capabilities | Enabling Offline Capabilities in JavaScript}\r\n * for more information on how to use it.\r\n *\r\n * @param ref - The reference to add OnDisconnect triggers for.\r\n */\r\nfunction onDisconnect(ref) {\r\n ref = getModularInstance(ref);\r\n return new OnDisconnect(ref._repo, ref._path);\r\n}\r\n/**\r\n * Generates a new child location using a unique key and returns its\r\n * `Reference`.\r\n *\r\n * This is the most common pattern for adding data to a collection of items.\r\n *\r\n * If you provide a value to `push()`, the value is written to the\r\n * generated location. If you don't pass a value, nothing is written to the\r\n * database and the child remains empty (but you can use the `Reference`\r\n * elsewhere).\r\n *\r\n * The unique keys generated by `push()` are ordered by the current time, so the\r\n * resulting list of items is chronologically sorted. The keys are also\r\n * designed to be unguessable (they contain 72 random bits of entropy).\r\n *\r\n * See {@link https://firebase.google.com/docs/database/web/lists-of-data#append_to_a_list_of_data | Append to a list of data}\r\n *
See {@link ttps://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html | The 2^120 Ways to Ensure Unique Identifiers}\r\n *\r\n * @param parent - The parent location.\r\n * @param value - Optional value to be written at the generated location.\r\n * @returns Combined `Promise` and `Reference`; resolves when write is complete,\r\n * but can be used immediately as the `Reference` to the child location.\r\n */\r\nfunction push(parent, value) {\r\n parent = getModularInstance(parent);\r\n validateWritablePath('push', parent._path);\r\n validateFirebaseDataArg('push', value, parent._path, true);\r\n const now = repoServerTime(parent._repo);\r\n const name = nextPushId(now);\r\n // push() returns a ThennableReference whose promise is fulfilled with a\r\n // regular Reference. We use child() to create handles to two different\r\n // references. The first is turned into a ThennableReference below by adding\r\n // then() and catch() methods and is used as the return value of push(). The\r\n // second remains a regular Reference and is used as the fulfilled value of\r\n // the first ThennableReference.\r\n const thennablePushRef = child(parent, name);\r\n const pushRef = child(parent, name);\r\n let promise;\r\n if (value != null) {\r\n promise = set(pushRef, value).then(() => pushRef);\r\n }\r\n else {\r\n promise = Promise.resolve(pushRef);\r\n }\r\n thennablePushRef.then = promise.then.bind(promise);\r\n thennablePushRef.catch = promise.then.bind(promise, undefined);\r\n return thennablePushRef;\r\n}\r\n/**\r\n * Removes the data at this Database location.\r\n *\r\n * Any data at child locations will also be deleted.\r\n *\r\n * The effect of the remove will be visible immediately and the corresponding\r\n * event 'value' will be triggered. Synchronization of the remove to the\r\n * Firebase servers will also be started, and the returned Promise will resolve\r\n * when complete. If provided, the onComplete callback will be called\r\n * asynchronously after synchronization has finished.\r\n *\r\n * @param ref - The location to remove.\r\n * @returns Resolves when remove on server is complete.\r\n */\r\nfunction remove(ref) {\r\n validateWritablePath('remove', ref._path);\r\n return set(ref, null);\r\n}\r\n/**\r\n * Writes data to this Database location.\r\n *\r\n * This will overwrite any data at this location and all child locations.\r\n *\r\n * The effect of the write will be visible immediately, and the corresponding\r\n * events (\"value\", \"child_added\", etc.) will be triggered. Synchronization of\r\n * the data to the Firebase servers will also be started, and the returned\r\n * Promise will resolve when complete. If provided, the `onComplete` callback\r\n * will be called asynchronously after synchronization has finished.\r\n *\r\n * Passing `null` for the new value is equivalent to calling `remove()`; namely,\r\n * all data at this location and all child locations will be deleted.\r\n *\r\n * `set()` will remove any priority stored at this location, so if priority is\r\n * meant to be preserved, you need to use `setWithPriority()` instead.\r\n *\r\n * Note that modifying data with `set()` will cancel any pending transactions\r\n * at that location, so extreme care should be taken if mixing `set()` and\r\n * `transaction()` to modify the same data.\r\n *\r\n * A single `set()` will generate a single \"value\" event at the location where\r\n * the `set()` was performed.\r\n *\r\n * @param ref - The location to write to.\r\n * @param value - The value to be written (string, number, boolean, object,\r\n * array, or null).\r\n * @returns Resolves when write to server is complete.\r\n */\r\nfunction set(ref, value) {\r\n ref = getModularInstance(ref);\r\n validateWritablePath('set', ref._path);\r\n validateFirebaseDataArg('set', value, ref._path, false);\r\n const deferred = new Deferred();\r\n repoSetWithPriority(ref._repo, ref._path, value, \r\n /*priority=*/ null, deferred.wrapCallback(() => { }));\r\n return deferred.promise;\r\n}\r\n/**\r\n * Sets a priority for the data at this Database location.\r\n *\r\n * Applications need not use priority but can order collections by\r\n * ordinary properties (see\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data | Sorting and filtering data}\r\n * ).\r\n *\r\n * @param ref - The location to write to.\r\n * @param priority - The priority to be written (string, number, or null).\r\n * @returns Resolves when write to server is complete.\r\n */\r\nfunction setPriority(ref, priority) {\r\n ref = getModularInstance(ref);\r\n validateWritablePath('setPriority', ref._path);\r\n validatePriority('setPriority', priority, false);\r\n const deferred = new Deferred();\r\n repoSetWithPriority(ref._repo, pathChild(ref._path, '.priority'), priority, null, deferred.wrapCallback(() => { }));\r\n return deferred.promise;\r\n}\r\n/**\r\n * Writes data the Database location. Like `set()` but also specifies the\r\n * priority for that data.\r\n *\r\n * Applications need not use priority but can order collections by\r\n * ordinary properties (see\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data | Sorting and filtering data}\r\n * ).\r\n *\r\n * @param ref - The location to write to.\r\n * @param value - The value to be written (string, number, boolean, object,\r\n * array, or null).\r\n * @param priority - The priority to be written (string, number, or null).\r\n * @returns Resolves when write to server is complete.\r\n */\r\nfunction setWithPriority(ref, value, priority) {\r\n validateWritablePath('setWithPriority', ref._path);\r\n validateFirebaseDataArg('setWithPriority', value, ref._path, false);\r\n validatePriority('setWithPriority', priority, false);\r\n if (ref.key === '.length' || ref.key === '.keys') {\r\n throw 'setWithPriority failed: ' + ref.key + ' is a read-only object.';\r\n }\r\n const deferred = new Deferred();\r\n repoSetWithPriority(ref._repo, ref._path, value, priority, deferred.wrapCallback(() => { }));\r\n return deferred.promise;\r\n}\r\n/**\r\n * Writes multiple values to the Database at once.\r\n *\r\n * The `values` argument contains multiple property-value pairs that will be\r\n * written to the Database together. Each child property can either be a simple\r\n * property (for example, \"name\") or a relative path (for example,\r\n * \"name/first\") from the current location to the data to update.\r\n *\r\n * As opposed to the `set()` method, `update()` can be use to selectively update\r\n * only the referenced properties at the current location (instead of replacing\r\n * all the child properties at the current location).\r\n *\r\n * The effect of the write will be visible immediately, and the corresponding\r\n * events ('value', 'child_added', etc.) will be triggered. Synchronization of\r\n * the data to the Firebase servers will also be started, and the returned\r\n * Promise will resolve when complete. If provided, the `onComplete` callback\r\n * will be called asynchronously after synchronization has finished.\r\n *\r\n * A single `update()` will generate a single \"value\" event at the location\r\n * where the `update()` was performed, regardless of how many children were\r\n * modified.\r\n *\r\n * Note that modifying data with `update()` will cancel any pending\r\n * transactions at that location, so extreme care should be taken if mixing\r\n * `update()` and `transaction()` to modify the same data.\r\n *\r\n * Passing `null` to `update()` will remove the data at this location.\r\n *\r\n * See\r\n * {@link https://firebase.googleblog.com/2015/09/introducing-multi-location-updates-and_86.html | Introducing multi-location updates and more}.\r\n *\r\n * @param ref - The location to write to.\r\n * @param values - Object containing multiple values.\r\n * @returns Resolves when update on server is complete.\r\n */\r\nfunction update(ref, values) {\r\n validateFirebaseMergeDataArg('update', values, ref._path, false);\r\n const deferred = new Deferred();\r\n repoUpdate(ref._repo, ref._path, values, deferred.wrapCallback(() => { }));\r\n return deferred.promise;\r\n}\r\n/**\r\n * Gets the most up-to-date result for this query.\r\n *\r\n * @param query - The query to run.\r\n * @returns A `Promise` which resolves to the resulting DataSnapshot if a value is\r\n * available, or rejects if the client is unable to return a value (e.g., if the\r\n * server is unreachable and there is nothing cached).\r\n */\r\nfunction get(query) {\r\n query = getModularInstance(query);\r\n return repoGetValue(query._repo, query).then(node => {\r\n return new DataSnapshot(node, new ReferenceImpl(query._repo, query._path), query._queryParams.getIndex());\r\n });\r\n}\r\n/**\r\n * Represents registration for 'value' events.\r\n */\r\nclass ValueEventRegistration {\r\n constructor(callbackContext) {\r\n this.callbackContext = callbackContext;\r\n }\r\n respondsTo(eventType) {\r\n return eventType === 'value';\r\n }\r\n createEvent(change, query) {\r\n const index = query._queryParams.getIndex();\r\n return new DataEvent('value', this, new DataSnapshot(change.snapshotNode, new ReferenceImpl(query._repo, query._path), index));\r\n }\r\n getEventRunner(eventData) {\r\n if (eventData.getEventType() === 'cancel') {\r\n return () => this.callbackContext.onCancel(eventData.error);\r\n }\r\n else {\r\n return () => this.callbackContext.onValue(eventData.snapshot, null);\r\n }\r\n }\r\n createCancelEvent(error, path) {\r\n if (this.callbackContext.hasCancelCallback) {\r\n return new CancelEvent(this, error, path);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n matches(other) {\r\n if (!(other instanceof ValueEventRegistration)) {\r\n return false;\r\n }\r\n else if (!other.callbackContext || !this.callbackContext) {\r\n // If no callback specified, we consider it to match any callback.\r\n return true;\r\n }\r\n else {\r\n return other.callbackContext.matches(this.callbackContext);\r\n }\r\n }\r\n hasAnyCallback() {\r\n return this.callbackContext !== null;\r\n }\r\n}\r\n/**\r\n * Represents the registration of a child_x event.\r\n */\r\nclass ChildEventRegistration {\r\n constructor(eventType, callbackContext) {\r\n this.eventType = eventType;\r\n this.callbackContext = callbackContext;\r\n }\r\n respondsTo(eventType) {\r\n let eventToCheck = eventType === 'children_added' ? 'child_added' : eventType;\r\n eventToCheck =\r\n eventToCheck === 'children_removed' ? 'child_removed' : eventToCheck;\r\n return this.eventType === eventToCheck;\r\n }\r\n createCancelEvent(error, path) {\r\n if (this.callbackContext.hasCancelCallback) {\r\n return new CancelEvent(this, error, path);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n createEvent(change, query) {\r\n assert(change.childName != null, 'Child events should have a childName.');\r\n const childRef = child(new ReferenceImpl(query._repo, query._path), change.childName);\r\n const index = query._queryParams.getIndex();\r\n return new DataEvent(change.type, this, new DataSnapshot(change.snapshotNode, childRef, index), change.prevName);\r\n }\r\n getEventRunner(eventData) {\r\n if (eventData.getEventType() === 'cancel') {\r\n return () => this.callbackContext.onCancel(eventData.error);\r\n }\r\n else {\r\n return () => this.callbackContext.onValue(eventData.snapshot, eventData.prevName);\r\n }\r\n }\r\n matches(other) {\r\n if (other instanceof ChildEventRegistration) {\r\n return (this.eventType === other.eventType &&\r\n (!this.callbackContext ||\r\n !other.callbackContext ||\r\n this.callbackContext.matches(other.callbackContext)));\r\n }\r\n return false;\r\n }\r\n hasAnyCallback() {\r\n return !!this.callbackContext;\r\n }\r\n}\r\nfunction addEventListener(query, eventType, callback, cancelCallbackOrListenOptions, options) {\r\n let cancelCallback;\r\n if (typeof cancelCallbackOrListenOptions === 'object') {\r\n cancelCallback = undefined;\r\n options = cancelCallbackOrListenOptions;\r\n }\r\n if (typeof cancelCallbackOrListenOptions === 'function') {\r\n cancelCallback = cancelCallbackOrListenOptions;\r\n }\r\n if (options && options.onlyOnce) {\r\n const userCallback = callback;\r\n const onceCallback = (dataSnapshot, previousChildName) => {\r\n repoRemoveEventCallbackForQuery(query._repo, query, container);\r\n userCallback(dataSnapshot, previousChildName);\r\n };\r\n onceCallback.userCallback = callback.userCallback;\r\n onceCallback.context = callback.context;\r\n callback = onceCallback;\r\n }\r\n const callbackContext = new CallbackContext(callback, cancelCallback || undefined);\r\n const container = eventType === 'value'\r\n ? new ValueEventRegistration(callbackContext)\r\n : new ChildEventRegistration(eventType, callbackContext);\r\n repoAddEventCallbackForQuery(query._repo, query, container);\r\n return () => repoRemoveEventCallbackForQuery(query._repo, query, container);\r\n}\r\nfunction onValue(query, callback, cancelCallbackOrListenOptions, options) {\r\n return addEventListener(query, 'value', callback, cancelCallbackOrListenOptions, options);\r\n}\r\nfunction onChildAdded(query, callback, cancelCallbackOrListenOptions, options) {\r\n return addEventListener(query, 'child_added', callback, cancelCallbackOrListenOptions, options);\r\n}\r\nfunction onChildChanged(query, callback, cancelCallbackOrListenOptions, options) {\r\n return addEventListener(query, 'child_changed', callback, cancelCallbackOrListenOptions, options);\r\n}\r\nfunction onChildMoved(query, callback, cancelCallbackOrListenOptions, options) {\r\n return addEventListener(query, 'child_moved', callback, cancelCallbackOrListenOptions, options);\r\n}\r\nfunction onChildRemoved(query, callback, cancelCallbackOrListenOptions, options) {\r\n return addEventListener(query, 'child_removed', callback, cancelCallbackOrListenOptions, options);\r\n}\r\n/**\r\n * Detaches a callback previously attached with `on()`.\r\n *\r\n * Detach a callback previously attached with `on()`. Note that if `on()` was\r\n * called multiple times with the same eventType and callback, the callback\r\n * will be called multiple times for each event, and `off()` must be called\r\n * multiple times to remove the callback. Calling `off()` on a parent listener\r\n * will not automatically remove listeners registered on child nodes, `off()`\r\n * must also be called on any child listeners to remove the callback.\r\n *\r\n * If a callback is not specified, all callbacks for the specified eventType\r\n * will be removed. Similarly, if no eventType is specified, all callbacks\r\n * for the `Reference` will be removed.\r\n *\r\n * Individual listeners can also be removed by invoking their unsubscribe\r\n * callbacks.\r\n *\r\n * @param query - The query that the listener was registered with.\r\n * @param eventType - One of the following strings: \"value\", \"child_added\",\r\n * \"child_changed\", \"child_removed\", or \"child_moved.\" If omitted, all callbacks\r\n * for the `Reference` will be removed.\r\n * @param callback - The callback function that was passed to `on()` or\r\n * `undefined` to remove all callbacks.\r\n */\r\nfunction off(query, eventType, callback) {\r\n let container = null;\r\n const expCallback = callback ? new CallbackContext(callback) : null;\r\n if (eventType === 'value') {\r\n container = new ValueEventRegistration(expCallback);\r\n }\r\n else if (eventType) {\r\n container = new ChildEventRegistration(eventType, expCallback);\r\n }\r\n repoRemoveEventCallbackForQuery(query._repo, query, container);\r\n}\r\n/**\r\n * A `QueryConstraint` is used to narrow the set of documents returned by a\r\n * Database query. `QueryConstraint`s are created by invoking {@link endAt},\r\n * {@link endBefore}, {@link startAt}, {@link startAfter}, {@link\r\n * limitToFirst}, {@link limitToLast}, {@link orderByChild},\r\n * {@link orderByChild}, {@link orderByKey} , {@link orderByPriority} ,\r\n * {@link orderByValue} or {@link equalTo} and\r\n * can then be passed to {@link query} to create a new query instance that\r\n * also contains this `QueryConstraint`.\r\n */\r\nclass QueryConstraint {\r\n}\r\nclass QueryEndAtConstraint extends QueryConstraint {\r\n constructor(_value, _key) {\r\n super();\r\n this._value = _value;\r\n this._key = _key;\r\n }\r\n _apply(query) {\r\n validateFirebaseDataArg('endAt', this._value, query._path, true);\r\n const newParams = queryParamsEndAt(query._queryParams, this._value, this._key);\r\n validateLimit(newParams);\r\n validateQueryEndpoints(newParams);\r\n if (query._queryParams.hasEnd()) {\r\n throw new Error('endAt: Starting point was already set (by another call to endAt, ' +\r\n 'endBefore or equalTo).');\r\n }\r\n return new QueryImpl(query._repo, query._path, newParams, query._orderByCalled);\r\n }\r\n}\r\n/**\r\n * Creates a `QueryConstraint` with the specified ending point.\r\n *\r\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\r\n * allows you to choose arbitrary starting and ending points for your queries.\r\n *\r\n * The ending point is inclusive, so children with exactly the specified value\r\n * will be included in the query. The optional key argument can be used to\r\n * further limit the range of the query. If it is specified, then children that\r\n * have exactly the specified value must also have a key name less than or equal\r\n * to the specified key.\r\n *\r\n * You can read more about `endAt()` in\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\r\n *\r\n * @param value - The value to end at. The argument type depends on which\r\n * `orderBy*()` function was used in this query. Specify a value that matches\r\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\r\n * value must be a string.\r\n * @param key - The child key to end at, among the children with the previously\r\n * specified priority. This argument is only allowed if ordering by child,\r\n * value, or priority.\r\n */\r\nfunction endAt(value, key) {\r\n validateKey('endAt', 'key', key, true);\r\n return new QueryEndAtConstraint(value, key);\r\n}\r\nclass QueryEndBeforeConstraint extends QueryConstraint {\r\n constructor(_value, _key) {\r\n super();\r\n this._value = _value;\r\n this._key = _key;\r\n }\r\n _apply(query) {\r\n validateFirebaseDataArg('endBefore', this._value, query._path, false);\r\n const newParams = queryParamsEndBefore(query._queryParams, this._value, this._key);\r\n validateLimit(newParams);\r\n validateQueryEndpoints(newParams);\r\n if (query._queryParams.hasEnd()) {\r\n throw new Error('endBefore: Starting point was already set (by another call to endAt, ' +\r\n 'endBefore or equalTo).');\r\n }\r\n return new QueryImpl(query._repo, query._path, newParams, query._orderByCalled);\r\n }\r\n}\r\n/**\r\n * Creates a `QueryConstraint` with the specified ending point (exclusive).\r\n *\r\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\r\n * allows you to choose arbitrary starting and ending points for your queries.\r\n *\r\n * The ending point is exclusive. If only a value is provided, children\r\n * with a value less than the specified value will be included in the query.\r\n * If a key is specified, then children must have a value lesss than or equal\r\n * to the specified value and a a key name less than the specified key.\r\n *\r\n * @param value - The value to end before. The argument type depends on which\r\n * `orderBy*()` function was used in this query. Specify a value that matches\r\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\r\n * value must be a string.\r\n * @param key - The child key to end before, among the children with the\r\n * previously specified priority. This argument is only allowed if ordering by\r\n * child, value, or priority.\r\n */\r\nfunction endBefore(value, key) {\r\n validateKey('endBefore', 'key', key, true);\r\n return new QueryEndBeforeConstraint(value, key);\r\n}\r\nclass QueryStartAtConstraint extends QueryConstraint {\r\n constructor(_value, _key) {\r\n super();\r\n this._value = _value;\r\n this._key = _key;\r\n }\r\n _apply(query) {\r\n validateFirebaseDataArg('startAt', this._value, query._path, true);\r\n const newParams = queryParamsStartAt(query._queryParams, this._value, this._key);\r\n validateLimit(newParams);\r\n validateQueryEndpoints(newParams);\r\n if (query._queryParams.hasStart()) {\r\n throw new Error('startAt: Starting point was already set (by another call to startAt, ' +\r\n 'startBefore or equalTo).');\r\n }\r\n return new QueryImpl(query._repo, query._path, newParams, query._orderByCalled);\r\n }\r\n}\r\n/**\r\n * Creates a `QueryConstraint` with the specified starting point.\r\n *\r\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\r\n * allows you to choose arbitrary starting and ending points for your queries.\r\n *\r\n * The starting point is inclusive, so children with exactly the specified value\r\n * will be included in the query. The optional key argument can be used to\r\n * further limit the range of the query. If it is specified, then children that\r\n * have exactly the specified value must also have a key name greater than or\r\n * equal to the specified key.\r\n *\r\n * You can read more about `startAt()` in\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\r\n *\r\n * @param value - The value to start at. The argument type depends on which\r\n * `orderBy*()` function was used in this query. Specify a value that matches\r\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\r\n * value must be a string.\r\n * @param key - The child key to start at. This argument is only allowed if\r\n * ordering by child, value, or priority.\r\n */\r\nfunction startAt(value = null, key) {\r\n validateKey('startAt', 'key', key, true);\r\n return new QueryStartAtConstraint(value, key);\r\n}\r\nclass QueryStartAfterConstraint extends QueryConstraint {\r\n constructor(_value, _key) {\r\n super();\r\n this._value = _value;\r\n this._key = _key;\r\n }\r\n _apply(query) {\r\n validateFirebaseDataArg('startAfter', this._value, query._path, false);\r\n const newParams = queryParamsStartAfter(query._queryParams, this._value, this._key);\r\n validateLimit(newParams);\r\n validateQueryEndpoints(newParams);\r\n if (query._queryParams.hasStart()) {\r\n throw new Error('startAfter: Starting point was already set (by another call to startAt, ' +\r\n 'startAfter, or equalTo).');\r\n }\r\n return new QueryImpl(query._repo, query._path, newParams, query._orderByCalled);\r\n }\r\n}\r\n/**\r\n * Creates a `QueryConstraint` with the specified starting point (exclusive).\r\n *\r\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\r\n * allows you to choose arbitrary starting and ending points for your queries.\r\n *\r\n * The starting point is exclusive. If only a value is provided, children\r\n * with a value greater than the specified value will be included in the query.\r\n * If a key is specified, then children must have a value greater than or equal\r\n * to the specified value and a a key name greater than the specified key.\r\n *\r\n * @param value - The value to start after. The argument type depends on which\r\n * `orderBy*()` function was used in this query. Specify a value that matches\r\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\r\n * value must be a string.\r\n * @param key - The child key to start after. This argument is only allowed if\r\n * ordering by child, value, or priority.\r\n */\r\nfunction startAfter(value, key) {\r\n validateKey('startAfter', 'key', key, true);\r\n return new QueryStartAfterConstraint(value, key);\r\n}\r\nclass QueryLimitToFirstConstraint extends QueryConstraint {\r\n constructor(_limit) {\r\n super();\r\n this._limit = _limit;\r\n }\r\n _apply(query) {\r\n if (query._queryParams.hasLimit()) {\r\n throw new Error('limitToFirst: Limit was already set (by another call to limitToFirst ' +\r\n 'or limitToLast).');\r\n }\r\n return new QueryImpl(query._repo, query._path, queryParamsLimitToFirst(query._queryParams, this._limit), query._orderByCalled);\r\n }\r\n}\r\n/**\r\n * Creates a new `QueryConstraint` that if limited to the first specific number\r\n * of children.\r\n *\r\n * The `limitToFirst()` method is used to set a maximum number of children to be\r\n * synced for a given callback. If we set a limit of 100, we will initially only\r\n * receive up to 100 `child_added` events. If we have fewer than 100 messages\r\n * stored in our Database, a `child_added` event will fire for each message.\r\n * However, if we have over 100 messages, we will only receive a `child_added`\r\n * event for the first 100 ordered messages. As items change, we will receive\r\n * `child_removed` events for each item that drops out of the active list so\r\n * that the total number stays at 100.\r\n *\r\n * You can read more about `limitToFirst()` in\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\r\n *\r\n * @param limit - The maximum number of nodes to include in this query.\r\n */\r\nfunction limitToFirst(limit) {\r\n if (typeof limit !== 'number' || Math.floor(limit) !== limit || limit <= 0) {\r\n throw new Error('limitToFirst: First argument must be a positive integer.');\r\n }\r\n return new QueryLimitToFirstConstraint(limit);\r\n}\r\nclass QueryLimitToLastConstraint extends QueryConstraint {\r\n constructor(_limit) {\r\n super();\r\n this._limit = _limit;\r\n }\r\n _apply(query) {\r\n if (query._queryParams.hasLimit()) {\r\n throw new Error('limitToLast: Limit was already set (by another call to limitToFirst ' +\r\n 'or limitToLast).');\r\n }\r\n return new QueryImpl(query._repo, query._path, queryParamsLimitToLast(query._queryParams, this._limit), query._orderByCalled);\r\n }\r\n}\r\n/**\r\n * Creates a new `QueryConstraint` that is limited to return only the last\r\n * specified number of children.\r\n *\r\n * The `limitToLast()` method is used to set a maximum number of children to be\r\n * synced for a given callback. If we set a limit of 100, we will initially only\r\n * receive up to 100 `child_added` events. If we have fewer than 100 messages\r\n * stored in our Database, a `child_added` event will fire for each message.\r\n * However, if we have over 100 messages, we will only receive a `child_added`\r\n * event for the last 100 ordered messages. As items change, we will receive\r\n * `child_removed` events for each item that drops out of the active list so\r\n * that the total number stays at 100.\r\n *\r\n * You can read more about `limitToLast()` in\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\r\n *\r\n * @param limit - The maximum number of nodes to include in this query.\r\n */\r\nfunction limitToLast(limit) {\r\n if (typeof limit !== 'number' || Math.floor(limit) !== limit || limit <= 0) {\r\n throw new Error('limitToLast: First argument must be a positive integer.');\r\n }\r\n return new QueryLimitToLastConstraint(limit);\r\n}\r\nclass QueryOrderByChildConstraint extends QueryConstraint {\r\n constructor(_path) {\r\n super();\r\n this._path = _path;\r\n }\r\n _apply(query) {\r\n validateNoPreviousOrderByCall(query, 'orderByChild');\r\n const parsedPath = new Path(this._path);\r\n if (pathIsEmpty(parsedPath)) {\r\n throw new Error('orderByChild: cannot pass in empty path. Use orderByValue() instead.');\r\n }\r\n const index = new PathIndex(parsedPath);\r\n const newParams = queryParamsOrderBy(query._queryParams, index);\r\n validateQueryEndpoints(newParams);\r\n return new QueryImpl(query._repo, query._path, newParams, \r\n /*orderByCalled=*/ true);\r\n }\r\n}\r\n/**\r\n * Creates a new `QueryConstraint` that orders by the specified child key.\r\n *\r\n * Queries can only order by one key at a time. Calling `orderByChild()`\r\n * multiple times on the same query is an error.\r\n *\r\n * Firebase queries allow you to order your data by any child key on the fly.\r\n * However, if you know in advance what your indexes will be, you can define\r\n * them via the .indexOn rule in your Security Rules for better performance. See\r\n * the{@link https://firebase.google.com/docs/database/security/indexing-data}\r\n * rule for more information.\r\n *\r\n * You can read more about `orderByChild()` in\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sort_data | Sort data}.\r\n *\r\n * @param path - The path to order by.\r\n */\r\nfunction orderByChild(path) {\r\n if (path === '$key') {\r\n throw new Error('orderByChild: \"$key\" is invalid. Use orderByKey() instead.');\r\n }\r\n else if (path === '$priority') {\r\n throw new Error('orderByChild: \"$priority\" is invalid. Use orderByPriority() instead.');\r\n }\r\n else if (path === '$value') {\r\n throw new Error('orderByChild: \"$value\" is invalid. Use orderByValue() instead.');\r\n }\r\n validatePathString('orderByChild', 'path', path, false);\r\n return new QueryOrderByChildConstraint(path);\r\n}\r\nclass QueryOrderByKeyConstraint extends QueryConstraint {\r\n _apply(query) {\r\n validateNoPreviousOrderByCall(query, 'orderByKey');\r\n const newParams = queryParamsOrderBy(query._queryParams, KEY_INDEX);\r\n validateQueryEndpoints(newParams);\r\n return new QueryImpl(query._repo, query._path, newParams, \r\n /*orderByCalled=*/ true);\r\n }\r\n}\r\n/**\r\n * Creates a new `QueryConstraint` that orders by the key.\r\n *\r\n * Sorts the results of a query by their (ascending) key values.\r\n *\r\n * You can read more about `orderByKey()` in\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sort_data | Sort data}.\r\n */\r\nfunction orderByKey() {\r\n return new QueryOrderByKeyConstraint();\r\n}\r\nclass QueryOrderByPriorityConstraint extends QueryConstraint {\r\n _apply(query) {\r\n validateNoPreviousOrderByCall(query, 'orderByPriority');\r\n const newParams = queryParamsOrderBy(query._queryParams, PRIORITY_INDEX);\r\n validateQueryEndpoints(newParams);\r\n return new QueryImpl(query._repo, query._path, newParams, \r\n /*orderByCalled=*/ true);\r\n }\r\n}\r\n/**\r\n * Creates a new `QueryConstraint` that orders by priority.\r\n *\r\n * Applications need not use priority but can order collections by\r\n * ordinary properties (see\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sort_data | Sort data}\r\n * for alternatives to priority.\r\n */\r\nfunction orderByPriority() {\r\n return new QueryOrderByPriorityConstraint();\r\n}\r\nclass QueryOrderByValueConstraint extends QueryConstraint {\r\n _apply(query) {\r\n validateNoPreviousOrderByCall(query, 'orderByValue');\r\n const newParams = queryParamsOrderBy(query._queryParams, VALUE_INDEX);\r\n validateQueryEndpoints(newParams);\r\n return new QueryImpl(query._repo, query._path, newParams, \r\n /*orderByCalled=*/ true);\r\n }\r\n}\r\n/**\r\n * Creates a new `QueryConstraint` that orders by value.\r\n *\r\n * If the children of a query are all scalar values (string, number, or\r\n * boolean), you can order the results by their (ascending) values.\r\n *\r\n * You can read more about `orderByValue()` in\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#sort_data | Sort data}.\r\n */\r\nfunction orderByValue() {\r\n return new QueryOrderByValueConstraint();\r\n}\r\nclass QueryEqualToValueConstraint extends QueryConstraint {\r\n constructor(_value, _key) {\r\n super();\r\n this._value = _value;\r\n this._key = _key;\r\n }\r\n _apply(query) {\r\n validateFirebaseDataArg('equalTo', this._value, query._path, false);\r\n if (query._queryParams.hasStart()) {\r\n throw new Error('equalTo: Starting point was already set (by another call to startAt/startAfter or ' +\r\n 'equalTo).');\r\n }\r\n if (query._queryParams.hasEnd()) {\r\n throw new Error('equalTo: Ending point was already set (by another call to endAt/endBefore or ' +\r\n 'equalTo).');\r\n }\r\n return new QueryEndAtConstraint(this._value, this._key)._apply(new QueryStartAtConstraint(this._value, this._key)._apply(query));\r\n }\r\n}\r\n/**\r\n * Creates a `QueryConstraint` that includes children that match the specified\r\n * value.\r\n *\r\n * Using `startAt()`, `startAfter()`, `endBefore()`, `endAt()` and `equalTo()`\r\n * allows you to choose arbitrary starting and ending points for your queries.\r\n *\r\n * The optional key argument can be used to further limit the range of the\r\n * query. If it is specified, then children that have exactly the specified\r\n * value must also have exactly the specified key as their key name. This can be\r\n * used to filter result sets with many matches for the same value.\r\n *\r\n * You can read more about `equalTo()` in\r\n * {@link https://firebase.google.com/docs/database/web/lists-of-data#filtering_data | Filtering data}.\r\n *\r\n * @param value - The value to match for. The argument type depends on which\r\n * `orderBy*()` function was used in this query. Specify a value that matches\r\n * the `orderBy*()` type. When used in combination with `orderByKey()`, the\r\n * value must be a string.\r\n * @param key - The child key to start at, among the children with the\r\n * previously specified priority. This argument is only allowed if ordering by\r\n * child, value, or priority.\r\n */\r\nfunction equalTo(value, key) {\r\n validateKey('equalTo', 'key', key, true);\r\n return new QueryEqualToValueConstraint(value, key);\r\n}\r\n/**\r\n * Creates a new immutable instance of `Query` that is extended to also include\r\n * additional query constraints.\r\n *\r\n * @param query - The Query instance to use as a base for the new constraints.\r\n * @param queryConstraints - The list of `QueryConstraint`s to apply.\r\n * @throws if any of the provided query constraints cannot be combined with the\r\n * existing or new constraints.\r\n */\r\nfunction query(query, ...queryConstraints) {\r\n let queryImpl = getModularInstance(query);\r\n for (const constraint of queryConstraints) {\r\n queryImpl = constraint._apply(queryImpl);\r\n }\r\n return queryImpl;\r\n}\r\n/**\r\n * Define reference constructor in various modules\r\n *\r\n * We are doing this here to avoid several circular\r\n * dependency issues\r\n */\r\nsyncPointSetReferenceConstructor(ReferenceImpl);\r\nsyncTreeSetReferenceConstructor(ReferenceImpl);\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * This variable is also defined in the firebase Node.js Admin SDK. Before\r\n * modifying this definition, consult the definition in:\r\n *\r\n * https://github.com/firebase/firebase-admin-node\r\n *\r\n * and make sure the two are consistent.\r\n */\r\nconst FIREBASE_DATABASE_EMULATOR_HOST_VAR = 'FIREBASE_DATABASE_EMULATOR_HOST';\r\n/**\r\n * Creates and caches `Repo` instances.\r\n */\r\nconst repos = {};\r\n/**\r\n * If true, any new `Repo` will be created to use `ReadonlyRestClient` (for testing purposes).\r\n */\r\nlet useRestClient = false;\r\n/**\r\n * Update an existing `Repo` in place to point to a new host/port.\r\n */\r\nfunction repoManagerApplyEmulatorSettings(repo, host, port, tokenProvider) {\r\n repo.repoInfo_ = new RepoInfo(`${host}:${port}`, \r\n /* secure= */ false, repo.repoInfo_.namespace, repo.repoInfo_.webSocketOnly, repo.repoInfo_.nodeAdmin, repo.repoInfo_.persistenceKey, repo.repoInfo_.includeNamespaceInQueryParams);\r\n if (tokenProvider) {\r\n repo.authTokenProvider_ = tokenProvider;\r\n }\r\n}\r\n/**\r\n * This function should only ever be called to CREATE a new database instance.\r\n * @internal\r\n */\r\nfunction repoManagerDatabaseFromApp(app, authProvider, appCheckProvider, url, nodeAdmin) {\r\n let dbUrl = url || app.options.databaseURL;\r\n if (dbUrl === undefined) {\r\n if (!app.options.projectId) {\r\n fatal(\"Can't determine Firebase Database URL. Be sure to include \" +\r\n ' a Project ID when calling firebase.initializeApp().');\r\n }\r\n log('Using default host for project ', app.options.projectId);\r\n dbUrl = `${app.options.projectId}-default-rtdb.firebaseio.com`;\r\n }\r\n let parsedUrl = parseRepoInfo(dbUrl, nodeAdmin);\r\n let repoInfo = parsedUrl.repoInfo;\r\n let isEmulator;\r\n let dbEmulatorHost = undefined;\r\n if (typeof process !== 'undefined') {\r\n dbEmulatorHost = process.env[FIREBASE_DATABASE_EMULATOR_HOST_VAR];\r\n }\r\n if (dbEmulatorHost) {\r\n isEmulator = true;\r\n dbUrl = `http://${dbEmulatorHost}?ns=${repoInfo.namespace}`;\r\n parsedUrl = parseRepoInfo(dbUrl, nodeAdmin);\r\n repoInfo = parsedUrl.repoInfo;\r\n }\r\n else {\r\n isEmulator = !parsedUrl.repoInfo.secure;\r\n }\r\n const authTokenProvider = nodeAdmin && isEmulator\r\n ? new EmulatorTokenProvider(EmulatorTokenProvider.OWNER)\r\n : new FirebaseAuthTokenProvider(app.name, app.options, authProvider);\r\n validateUrl('Invalid Firebase Database URL', parsedUrl);\r\n if (!pathIsEmpty(parsedUrl.path)) {\r\n fatal('Database URL must point to the root of a Firebase Database ' +\r\n '(not including a child path).');\r\n }\r\n const repo = repoManagerCreateRepo(repoInfo, app, authTokenProvider, new AppCheckTokenProvider(app.name, appCheckProvider));\r\n return new Database(repo, app);\r\n}\r\n/**\r\n * Remove the repo and make sure it is disconnected.\r\n *\r\n */\r\nfunction repoManagerDeleteRepo(repo, appName) {\r\n const appRepos = repos[appName];\r\n // This should never happen...\r\n if (!appRepos || appRepos[repo.key] !== repo) {\r\n fatal(`Database ${appName}(${repo.repoInfo_}) has already been deleted.`);\r\n }\r\n repoInterrupt(repo);\r\n delete appRepos[repo.key];\r\n}\r\n/**\r\n * Ensures a repo doesn't already exist and then creates one using the\r\n * provided app.\r\n *\r\n * @param repoInfo - The metadata about the Repo\r\n * @returns The Repo object for the specified server / repoName.\r\n */\r\nfunction repoManagerCreateRepo(repoInfo, app, authTokenProvider, appCheckProvider) {\r\n let appRepos = repos[app.name];\r\n if (!appRepos) {\r\n appRepos = {};\r\n repos[app.name] = appRepos;\r\n }\r\n let repo = appRepos[repoInfo.toURLString()];\r\n if (repo) {\r\n fatal('Database initialized multiple times. Please make sure the format of the database URL matches with each database() call.');\r\n }\r\n repo = new Repo(repoInfo, useRestClient, authTokenProvider, appCheckProvider);\r\n appRepos[repoInfo.toURLString()] = repo;\r\n return repo;\r\n}\r\n/**\r\n * Forces us to use ReadonlyRestClient instead of PersistentConnection for new Repos.\r\n */\r\nfunction repoManagerForceRestClient(forceRestClient) {\r\n useRestClient = forceRestClient;\r\n}\r\n/**\r\n * Class representing a Firebase Realtime Database.\r\n */\r\nclass Database {\r\n /** @hideconstructor */\r\n constructor(_repoInternal, \r\n /** The {@link @firebase/app#FirebaseApp} associated with this Realtime Database instance. */\r\n app) {\r\n this._repoInternal = _repoInternal;\r\n this.app = app;\r\n /** Represents a `Database` instance. */\r\n this['type'] = 'database';\r\n /** Track if the instance has been used (root or repo accessed) */\r\n this._instanceStarted = false;\r\n }\r\n get _repo() {\r\n if (!this._instanceStarted) {\r\n repoStart(this._repoInternal, this.app.options.appId, this.app.options['databaseAuthVariableOverride']);\r\n this._instanceStarted = true;\r\n }\r\n return this._repoInternal;\r\n }\r\n get _root() {\r\n if (!this._rootInternal) {\r\n this._rootInternal = new ReferenceImpl(this._repo, newEmptyPath());\r\n }\r\n return this._rootInternal;\r\n }\r\n _delete() {\r\n if (this._rootInternal !== null) {\r\n repoManagerDeleteRepo(this._repo, this.app.name);\r\n this._repoInternal = null;\r\n this._rootInternal = null;\r\n }\r\n return Promise.resolve();\r\n }\r\n _checkNotDeleted(apiName) {\r\n if (this._rootInternal === null) {\r\n fatal('Cannot call ' + apiName + ' on a deleted database.');\r\n }\r\n }\r\n}\r\n/**\r\n * Returns the instance of the Realtime Database SDK that is associated\r\n * with the provided {@link @firebase/app#FirebaseApp}. Initializes a new instance with\r\n * with default settings if no instance exists or if the existing instance uses\r\n * a custom database URL.\r\n *\r\n * @param app - The {@link @firebase/app#FirebaseApp} instance that the returned Realtime\r\n * Database instance is associated with.\r\n * @param url - The URL of the Realtime Database instance to connect to. If not\r\n * provided, the SDK connects to the default instance of the Firebase App.\r\n * @returns The `Database` instance of the provided app.\r\n */\r\nfunction getDatabase(app = getApp(), url) {\r\n return _getProvider(app, 'database').getImmediate({\r\n identifier: url\r\n });\r\n}\r\n/**\r\n * Modify the provided instance to communicate with the Realtime Database\r\n * emulator.\r\n *\r\n *

Note: This method must be called before performing any other operation.\r\n *\r\n * @param db - The instance to modify.\r\n * @param host - The emulator host (ex: localhost)\r\n * @param port - The emulator port (ex: 8080)\r\n * @param options.mockUserToken - the mock auth token to use for unit testing Security Rules\r\n */\r\nfunction connectDatabaseEmulator(db, host, port, options = {}) {\r\n db = getModularInstance(db);\r\n db._checkNotDeleted('useEmulator');\r\n if (db._instanceStarted) {\r\n fatal('Cannot call useEmulator() after instance has already been initialized.');\r\n }\r\n const repo = db._repoInternal;\r\n let tokenProvider = undefined;\r\n if (repo.repoInfo_.nodeAdmin) {\r\n if (options.mockUserToken) {\r\n fatal('mockUserToken is not supported by the Admin SDK. For client access with mock users, please use the \"firebase\" package instead of \"firebase-admin\".');\r\n }\r\n tokenProvider = new EmulatorTokenProvider(EmulatorTokenProvider.OWNER);\r\n }\r\n else if (options.mockUserToken) {\r\n const token = typeof options.mockUserToken === 'string'\r\n ? options.mockUserToken\r\n : createMockUserToken(options.mockUserToken, db.app.options.projectId);\r\n tokenProvider = new EmulatorTokenProvider(token);\r\n }\r\n // Modify the repo to apply emulator settings\r\n repoManagerApplyEmulatorSettings(repo, host, port, tokenProvider);\r\n}\r\n/**\r\n * Disconnects from the server (all Database operations will be completed\r\n * offline).\r\n *\r\n * The client automatically maintains a persistent connection to the Database\r\n * server, which will remain active indefinitely and reconnect when\r\n * disconnected. However, the `goOffline()` and `goOnline()` methods may be used\r\n * to control the client connection in cases where a persistent connection is\r\n * undesirable.\r\n *\r\n * While offline, the client will no longer receive data updates from the\r\n * Database. However, all Database operations performed locally will continue to\r\n * immediately fire events, allowing your application to continue behaving\r\n * normally. Additionally, each operation performed locally will automatically\r\n * be queued and retried upon reconnection to the Database server.\r\n *\r\n * To reconnect to the Database and begin receiving remote events, see\r\n * `goOnline()`.\r\n *\r\n * @param db - The instance to disconnect.\r\n */\r\nfunction goOffline(db) {\r\n db = getModularInstance(db);\r\n db._checkNotDeleted('goOffline');\r\n repoInterrupt(db._repo);\r\n}\r\n/**\r\n * Reconnects to the server and synchronizes the offline Database state\r\n * with the server state.\r\n *\r\n * This method should be used after disabling the active connection with\r\n * `goOffline()`. Once reconnected, the client will transmit the proper data\r\n * and fire the appropriate events so that your client \"catches up\"\r\n * automatically.\r\n *\r\n * @param db - The instance to reconnect.\r\n */\r\nfunction goOnline(db) {\r\n db = getModularInstance(db);\r\n db._checkNotDeleted('goOnline');\r\n repoResume(db._repo);\r\n}\r\nfunction enableLogging(logger, persistent) {\r\n enableLogging$1(logger, persistent);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction registerDatabase(variant) {\r\n setSDKVersion(SDK_VERSION$1);\r\n _registerComponent(new Component('database', (container, { instanceIdentifier: url }) => {\r\n const app = container.getProvider('app').getImmediate();\r\n const authProvider = container.getProvider('auth-internal');\r\n const appCheckProvider = container.getProvider('app-check-internal');\r\n return repoManagerDatabaseFromApp(app, authProvider, appCheckProvider, url);\r\n }, \"PUBLIC\" /* PUBLIC */).setMultipleInstances(true));\r\n registerVersion(name, version, variant);\r\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\n registerVersion(name, version, 'esm2017');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst SERVER_TIMESTAMP = {\r\n '.sv': 'timestamp'\r\n};\r\n/**\r\n * Returns a placeholder value for auto-populating the current timestamp (time\r\n * since the Unix epoch, in milliseconds) as determined by the Firebase\r\n * servers.\r\n */\r\nfunction serverTimestamp() {\r\n return SERVER_TIMESTAMP;\r\n}\r\n/**\r\n * Returns a placeholder value that can be used to atomically increment the\r\n * current database value by the provided delta.\r\n *\r\n * @param delta - the amount to modify the current value atomically.\r\n * @returns A placeholder value for modifying data atomically server-side.\r\n */\r\nfunction increment(delta) {\r\n return {\r\n '.sv': {\r\n 'increment': delta\r\n }\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A type for the resolve value of {@link runTransaction}.\r\n */\r\nclass TransactionResult {\r\n /** @hideconstructor */\r\n constructor(\r\n /** Whether the transaction was successfully committed. */\r\n committed, \r\n /** The resulting data snapshot. */\r\n snapshot) {\r\n this.committed = committed;\r\n this.snapshot = snapshot;\r\n }\r\n /** Returns a JSON-serializable representation of this object. */\r\n toJSON() {\r\n return { committed: this.committed, snapshot: this.snapshot.toJSON() };\r\n }\r\n}\r\n/**\r\n * Atomically modifies the data at this location.\r\n *\r\n * Atomically modify the data at this location. Unlike a normal `set()`, which\r\n * just overwrites the data regardless of its previous value, `runTransaction()` is\r\n * used to modify the existing value to a new value, ensuring there are no\r\n * conflicts with other clients writing to the same location at the same time.\r\n *\r\n * To accomplish this, you pass `runTransaction()` an update function which is\r\n * used to transform the current value into a new value. If another client\r\n * writes to the location before your new value is successfully written, your\r\n * update function will be called again with the new current value, and the\r\n * write will be retried. This will happen repeatedly until your write succeeds\r\n * without conflict or you abort the transaction by not returning a value from\r\n * your update function.\r\n *\r\n * Note: Modifying data with `set()` will cancel any pending transactions at\r\n * that location, so extreme care should be taken if mixing `set()` and\r\n * `runTransaction()` to update the same data.\r\n *\r\n * Note: When using transactions with Security and Firebase Rules in place, be\r\n * aware that a client needs `.read` access in addition to `.write` access in\r\n * order to perform a transaction. This is because the client-side nature of\r\n * transactions requires the client to read the data in order to transactionally\r\n * update it.\r\n *\r\n * @param ref - The location to atomically modify.\r\n * @param transactionUpdate - A developer-supplied function which will be passed\r\n * the current data stored at this location (as a JavaScript object). The\r\n * function should return the new value it would like written (as a JavaScript\r\n * object). If `undefined` is returned (i.e. you return with no arguments) the\r\n * transaction will be aborted and the data at this location will not be\r\n * modified.\r\n * @param options - An options object to configure transactions.\r\n * @returns A `Promise` that can optionally be used instead of the `onComplete`\r\n * callback to handle success and failure.\r\n */\r\nfunction runTransaction(ref, \r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\ntransactionUpdate, options) {\r\n var _a;\r\n ref = getModularInstance(ref);\r\n validateWritablePath('Reference.transaction', ref._path);\r\n if (ref.key === '.length' || ref.key === '.keys') {\r\n throw ('Reference.transaction failed: ' + ref.key + ' is a read-only object.');\r\n }\r\n const applyLocally = (_a = options === null || options === void 0 ? void 0 : options.applyLocally) !== null && _a !== void 0 ? _a : true;\r\n const deferred = new Deferred();\r\n const promiseComplete = (error, committed, node) => {\r\n let dataSnapshot = null;\r\n if (error) {\r\n deferred.reject(error);\r\n }\r\n else {\r\n dataSnapshot = new DataSnapshot(node, new ReferenceImpl(ref._repo, ref._path), PRIORITY_INDEX);\r\n deferred.resolve(new TransactionResult(committed, dataSnapshot));\r\n }\r\n };\r\n // Add a watch to make sure we get server updates.\r\n const unwatcher = onValue(ref, () => { });\r\n repoStartTransaction(ref._repo, ref._path, transactionUpdate, promiseComplete, unwatcher, applyLocally);\r\n return deferred.promise;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nPersistentConnection;\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nPersistentConnection.prototype.simpleListen = function (pathString, onComplete) {\r\n this.sendRequest('q', { p: pathString }, onComplete);\r\n};\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nPersistentConnection.prototype.echo = function (data, onEcho) {\r\n this.sendRequest('echo', { d: data }, onEcho);\r\n};\r\n// RealTimeConnection properties that we use in tests.\r\nConnection;\r\n/**\r\n * @internal\r\n */\r\nconst hijackHash = function (newHash) {\r\n const oldPut = PersistentConnection.prototype.put;\r\n PersistentConnection.prototype.put = function (pathString, data, onComplete, hash) {\r\n if (hash !== undefined) {\r\n hash = newHash();\r\n }\r\n oldPut.call(this, pathString, data, onComplete, hash);\r\n };\r\n return function () {\r\n PersistentConnection.prototype.put = oldPut;\r\n };\r\n};\r\nRepoInfo;\r\n/**\r\n * Forces the RepoManager to create Repos that use ReadonlyRestClient instead of PersistentConnection.\r\n * @internal\r\n */\r\nconst forceRestClient = function (forceRestClient) {\r\n repoManagerForceRestClient(forceRestClient);\r\n};\n\n/**\r\n * Firebase Realtime Database\r\n *\r\n * @packageDocumentation\r\n */\r\nregisterDatabase();\n\nexport { DataSnapshot, Database, OnDisconnect, QueryConstraint, TransactionResult, QueryImpl as _QueryImpl, QueryParams as _QueryParams, ReferenceImpl as _ReferenceImpl, forceRestClient as _TEST_ACCESS_forceRestClient, hijackHash as _TEST_ACCESS_hijackHash, repoManagerDatabaseFromApp as _repoManagerDatabaseFromApp, setSDKVersion as _setSDKVersion, validatePathString as _validatePathString, validateWritablePath as _validateWritablePath, child, connectDatabaseEmulator, enableLogging, endAt, endBefore, equalTo, get, getDatabase, goOffline, goOnline, increment, limitToFirst, limitToLast, off, onChildAdded, onChildChanged, onChildMoved, onChildRemoved, onDisconnect, onValue, orderByChild, orderByKey, orderByPriority, orderByValue, push, query, ref, refFromURL, remove, runTransaction, serverTimestamp, set, setPriority, setWithPriority, startAfter, startAt, update };\n","import firebase from '@firebase/app-compat';\nimport { Provider, ComponentContainer, Component } from '@firebase/component';\nimport { _validatePathString, onChildMoved, onChildChanged, onChildRemoved, onChildAdded, onValue, off, get, query, limitToFirst, limitToLast, orderByChild, orderByKey, orderByPriority, orderByValue, startAt, startAfter, endAt, endBefore, equalTo, _ReferenceImpl, _QueryImpl, _QueryParams, child, set, _validateWritablePath, update, setWithPriority, remove, runTransaction, setPriority, push, OnDisconnect as OnDisconnect$1, connectDatabaseEmulator, refFromURL, ref, goOffline, goOnline, serverTimestamp, increment, _setSDKVersion, _repoManagerDatabaseFromApp, enableLogging } from '@firebase/database';\nimport { errorPrefix, validateArgCount, validateCallback, validateContextObject, Deferred } from '@firebase/util';\nimport { Logger } from '@firebase/logger';\n\nconst name = \"@firebase/database-compat\";\nconst version = \"0.1.5\";\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst logClient = new Logger('@firebase/database-compat');\r\nconst warn = function (msg) {\r\n const message = 'FIREBASE WARNING: ' + msg;\r\n logClient.warn(message);\r\n};\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst validateBoolean = function (fnName, argumentName, bool, optional) {\r\n if (optional && bool === undefined) {\r\n return;\r\n }\r\n if (typeof bool !== 'boolean') {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a boolean.');\r\n }\r\n};\r\nconst validateEventType = function (fnName, eventType, optional) {\r\n if (optional && eventType === undefined) {\r\n return;\r\n }\r\n switch (eventType) {\r\n case 'value':\r\n case 'child_added':\r\n case 'child_removed':\r\n case 'child_changed':\r\n case 'child_moved':\r\n break;\r\n default:\r\n throw new Error(errorPrefix(fnName, 'eventType') +\r\n 'must be a valid event type = \"value\", \"child_added\", \"child_removed\", ' +\r\n '\"child_changed\", or \"child_moved\".');\r\n }\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass OnDisconnect {\r\n constructor(_delegate) {\r\n this._delegate = _delegate;\r\n }\r\n cancel(onComplete) {\r\n validateArgCount('OnDisconnect.cancel', 0, 1, arguments.length);\r\n validateCallback('OnDisconnect.cancel', 'onComplete', onComplete, true);\r\n const result = this._delegate.cancel();\r\n if (onComplete) {\r\n result.then(() => onComplete(null), error => onComplete(error));\r\n }\r\n return result;\r\n }\r\n remove(onComplete) {\r\n validateArgCount('OnDisconnect.remove', 0, 1, arguments.length);\r\n validateCallback('OnDisconnect.remove', 'onComplete', onComplete, true);\r\n const result = this._delegate.remove();\r\n if (onComplete) {\r\n result.then(() => onComplete(null), error => onComplete(error));\r\n }\r\n return result;\r\n }\r\n set(value, onComplete) {\r\n validateArgCount('OnDisconnect.set', 1, 2, arguments.length);\r\n validateCallback('OnDisconnect.set', 'onComplete', onComplete, true);\r\n const result = this._delegate.set(value);\r\n if (onComplete) {\r\n result.then(() => onComplete(null), error => onComplete(error));\r\n }\r\n return result;\r\n }\r\n setWithPriority(value, priority, onComplete) {\r\n validateArgCount('OnDisconnect.setWithPriority', 2, 3, arguments.length);\r\n validateCallback('OnDisconnect.setWithPriority', 'onComplete', onComplete, true);\r\n const result = this._delegate.setWithPriority(value, priority);\r\n if (onComplete) {\r\n result.then(() => onComplete(null), error => onComplete(error));\r\n }\r\n return result;\r\n }\r\n update(objectToMerge, onComplete) {\r\n validateArgCount('OnDisconnect.update', 1, 2, arguments.length);\r\n if (Array.isArray(objectToMerge)) {\r\n const newObjectToMerge = {};\r\n for (let i = 0; i < objectToMerge.length; ++i) {\r\n newObjectToMerge['' + i] = objectToMerge[i];\r\n }\r\n objectToMerge = newObjectToMerge;\r\n warn('Passing an Array to firebase.database.onDisconnect().update() is deprecated. Use set() if you want to overwrite the ' +\r\n 'existing data, or an Object with integer keys if you really do want to only update some of the children.');\r\n }\r\n validateCallback('OnDisconnect.update', 'onComplete', onComplete, true);\r\n const result = this._delegate.update(objectToMerge);\r\n if (onComplete) {\r\n result.then(() => onComplete(null), error => onComplete(error));\r\n }\r\n return result;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass TransactionResult {\r\n /**\r\n * A type for the resolve value of Firebase.transaction.\r\n */\r\n constructor(committed, snapshot) {\r\n this.committed = committed;\r\n this.snapshot = snapshot;\r\n }\r\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\r\n // for end-users\r\n toJSON() {\r\n validateArgCount('TransactionResult.toJSON', 0, 1, arguments.length);\r\n return { committed: this.committed, snapshot: this.snapshot.toJSON() };\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Class representing a firebase data snapshot. It wraps a SnapshotNode and\r\n * surfaces the public methods (val, forEach, etc.) we want to expose.\r\n */\r\nclass DataSnapshot {\r\n constructor(_database, _delegate) {\r\n this._database = _database;\r\n this._delegate = _delegate;\r\n }\r\n /**\r\n * Retrieves the snapshot contents as JSON. Returns null if the snapshot is\r\n * empty.\r\n *\r\n * @returns JSON representation of the DataSnapshot contents, or null if empty.\r\n */\r\n val() {\r\n validateArgCount('DataSnapshot.val', 0, 0, arguments.length);\r\n return this._delegate.val();\r\n }\r\n /**\r\n * Returns the snapshot contents as JSON, including priorities of node. Suitable for exporting\r\n * the entire node contents.\r\n * @returns JSON representation of the DataSnapshot contents, or null if empty.\r\n */\r\n exportVal() {\r\n validateArgCount('DataSnapshot.exportVal', 0, 0, arguments.length);\r\n return this._delegate.exportVal();\r\n }\r\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\r\n // for end-users\r\n toJSON() {\r\n // Optional spacer argument is unnecessary because we're depending on recursion rather than stringifying the content\r\n validateArgCount('DataSnapshot.toJSON', 0, 1, arguments.length);\r\n return this._delegate.toJSON();\r\n }\r\n /**\r\n * Returns whether the snapshot contains a non-null value.\r\n *\r\n * @returns Whether the snapshot contains a non-null value, or is empty.\r\n */\r\n exists() {\r\n validateArgCount('DataSnapshot.exists', 0, 0, arguments.length);\r\n return this._delegate.exists();\r\n }\r\n /**\r\n * Returns a DataSnapshot of the specified child node's contents.\r\n *\r\n * @param path - Path to a child.\r\n * @returns DataSnapshot for child node.\r\n */\r\n child(path) {\r\n validateArgCount('DataSnapshot.child', 0, 1, arguments.length);\r\n // Ensure the childPath is a string (can be a number)\r\n path = String(path);\r\n _validatePathString('DataSnapshot.child', 'path', path, false);\r\n return new DataSnapshot(this._database, this._delegate.child(path));\r\n }\r\n /**\r\n * Returns whether the snapshot contains a child at the specified path.\r\n *\r\n * @param path - Path to a child.\r\n * @returns Whether the child exists.\r\n */\r\n hasChild(path) {\r\n validateArgCount('DataSnapshot.hasChild', 1, 1, arguments.length);\r\n _validatePathString('DataSnapshot.hasChild', 'path', path, false);\r\n return this._delegate.hasChild(path);\r\n }\r\n /**\r\n * Returns the priority of the object, or null if no priority was set.\r\n *\r\n * @returns The priority.\r\n */\r\n getPriority() {\r\n validateArgCount('DataSnapshot.getPriority', 0, 0, arguments.length);\r\n return this._delegate.priority;\r\n }\r\n /**\r\n * Iterates through child nodes and calls the specified action for each one.\r\n *\r\n * @param action - Callback function to be called\r\n * for each child.\r\n * @returns True if forEach was canceled by action returning true for\r\n * one of the child nodes.\r\n */\r\n forEach(action) {\r\n validateArgCount('DataSnapshot.forEach', 1, 1, arguments.length);\r\n validateCallback('DataSnapshot.forEach', 'action', action, false);\r\n return this._delegate.forEach(expDataSnapshot => action(new DataSnapshot(this._database, expDataSnapshot)));\r\n }\r\n /**\r\n * Returns whether this DataSnapshot has children.\r\n * @returns True if the DataSnapshot contains 1 or more child nodes.\r\n */\r\n hasChildren() {\r\n validateArgCount('DataSnapshot.hasChildren', 0, 0, arguments.length);\r\n return this._delegate.hasChildren();\r\n }\r\n get key() {\r\n return this._delegate.key;\r\n }\r\n /**\r\n * Returns the number of children for this DataSnapshot.\r\n * @returns The number of children that this DataSnapshot contains.\r\n */\r\n numChildren() {\r\n validateArgCount('DataSnapshot.numChildren', 0, 0, arguments.length);\r\n return this._delegate.size;\r\n }\r\n /**\r\n * @returns The Firebase reference for the location this snapshot's data came\r\n * from.\r\n */\r\n getRef() {\r\n validateArgCount('DataSnapshot.ref', 0, 0, arguments.length);\r\n return new Reference(this._database, this._delegate.ref);\r\n }\r\n get ref() {\r\n return this.getRef();\r\n }\r\n}\r\n/**\r\n * A Query represents a filter to be applied to a firebase location. This object purely represents the\r\n * query expression (and exposes our public API to build the query). The actual query logic is in ViewBase.js.\r\n *\r\n * Since every Firebase reference is a query, Firebase inherits from this object.\r\n */\r\nclass Query {\r\n constructor(database, _delegate) {\r\n this.database = database;\r\n this._delegate = _delegate;\r\n }\r\n on(eventType, callback, cancelCallbackOrContext, context) {\r\n var _a;\r\n validateArgCount('Query.on', 2, 4, arguments.length);\r\n validateCallback('Query.on', 'callback', callback, false);\r\n const ret = Query.getCancelAndContextArgs_('Query.on', cancelCallbackOrContext, context);\r\n const valueCallback = (expSnapshot, previousChildName) => {\r\n callback.call(ret.context, new DataSnapshot(this.database, expSnapshot), previousChildName);\r\n };\r\n valueCallback.userCallback = callback;\r\n valueCallback.context = ret.context;\r\n const cancelCallback = (_a = ret.cancel) === null || _a === void 0 ? void 0 : _a.bind(ret.context);\r\n switch (eventType) {\r\n case 'value':\r\n onValue(this._delegate, valueCallback, cancelCallback);\r\n return callback;\r\n case 'child_added':\r\n onChildAdded(this._delegate, valueCallback, cancelCallback);\r\n return callback;\r\n case 'child_removed':\r\n onChildRemoved(this._delegate, valueCallback, cancelCallback);\r\n return callback;\r\n case 'child_changed':\r\n onChildChanged(this._delegate, valueCallback, cancelCallback);\r\n return callback;\r\n case 'child_moved':\r\n onChildMoved(this._delegate, valueCallback, cancelCallback);\r\n return callback;\r\n default:\r\n throw new Error(errorPrefix('Query.on', 'eventType') +\r\n 'must be a valid event type = \"value\", \"child_added\", \"child_removed\", ' +\r\n '\"child_changed\", or \"child_moved\".');\r\n }\r\n }\r\n off(eventType, callback, context) {\r\n validateArgCount('Query.off', 0, 3, arguments.length);\r\n validateEventType('Query.off', eventType, true);\r\n validateCallback('Query.off', 'callback', callback, true);\r\n validateContextObject('Query.off', 'context', context, true);\r\n if (callback) {\r\n const valueCallback = () => { };\r\n valueCallback.userCallback = callback;\r\n valueCallback.context = context;\r\n off(this._delegate, eventType, valueCallback);\r\n }\r\n else {\r\n off(this._delegate, eventType);\r\n }\r\n }\r\n /**\r\n * Get the server-value for this query, or return a cached value if not connected.\r\n */\r\n get() {\r\n return get(this._delegate).then(expSnapshot => {\r\n return new DataSnapshot(this.database, expSnapshot);\r\n });\r\n }\r\n /**\r\n * Attaches a listener, waits for the first event, and then removes the listener\r\n */\r\n once(eventType, callback, failureCallbackOrContext, context) {\r\n validateArgCount('Query.once', 1, 4, arguments.length);\r\n validateCallback('Query.once', 'callback', callback, true);\r\n const ret = Query.getCancelAndContextArgs_('Query.once', failureCallbackOrContext, context);\r\n const deferred = new Deferred();\r\n const valueCallback = (expSnapshot, previousChildName) => {\r\n const result = new DataSnapshot(this.database, expSnapshot);\r\n if (callback) {\r\n callback.call(ret.context, result, previousChildName);\r\n }\r\n deferred.resolve(result);\r\n };\r\n valueCallback.userCallback = callback;\r\n valueCallback.context = ret.context;\r\n const cancelCallback = (error) => {\r\n if (ret.cancel) {\r\n ret.cancel.call(ret.context, error);\r\n }\r\n deferred.reject(error);\r\n };\r\n switch (eventType) {\r\n case 'value':\r\n onValue(this._delegate, valueCallback, cancelCallback, {\r\n onlyOnce: true\r\n });\r\n break;\r\n case 'child_added':\r\n onChildAdded(this._delegate, valueCallback, cancelCallback, {\r\n onlyOnce: true\r\n });\r\n break;\r\n case 'child_removed':\r\n onChildRemoved(this._delegate, valueCallback, cancelCallback, {\r\n onlyOnce: true\r\n });\r\n break;\r\n case 'child_changed':\r\n onChildChanged(this._delegate, valueCallback, cancelCallback, {\r\n onlyOnce: true\r\n });\r\n break;\r\n case 'child_moved':\r\n onChildMoved(this._delegate, valueCallback, cancelCallback, {\r\n onlyOnce: true\r\n });\r\n break;\r\n default:\r\n throw new Error(errorPrefix('Query.once', 'eventType') +\r\n 'must be a valid event type = \"value\", \"child_added\", \"child_removed\", ' +\r\n '\"child_changed\", or \"child_moved\".');\r\n }\r\n return deferred.promise;\r\n }\r\n /**\r\n * Set a limit and anchor it to the start of the window.\r\n */\r\n limitToFirst(limit) {\r\n validateArgCount('Query.limitToFirst', 1, 1, arguments.length);\r\n return new Query(this.database, query(this._delegate, limitToFirst(limit)));\r\n }\r\n /**\r\n * Set a limit and anchor it to the end of the window.\r\n */\r\n limitToLast(limit) {\r\n validateArgCount('Query.limitToLast', 1, 1, arguments.length);\r\n return new Query(this.database, query(this._delegate, limitToLast(limit)));\r\n }\r\n /**\r\n * Given a child path, return a new query ordered by the specified grandchild path.\r\n */\r\n orderByChild(path) {\r\n validateArgCount('Query.orderByChild', 1, 1, arguments.length);\r\n return new Query(this.database, query(this._delegate, orderByChild(path)));\r\n }\r\n /**\r\n * Return a new query ordered by the KeyIndex\r\n */\r\n orderByKey() {\r\n validateArgCount('Query.orderByKey', 0, 0, arguments.length);\r\n return new Query(this.database, query(this._delegate, orderByKey()));\r\n }\r\n /**\r\n * Return a new query ordered by the PriorityIndex\r\n */\r\n orderByPriority() {\r\n validateArgCount('Query.orderByPriority', 0, 0, arguments.length);\r\n return new Query(this.database, query(this._delegate, orderByPriority()));\r\n }\r\n /**\r\n * Return a new query ordered by the ValueIndex\r\n */\r\n orderByValue() {\r\n validateArgCount('Query.orderByValue', 0, 0, arguments.length);\r\n return new Query(this.database, query(this._delegate, orderByValue()));\r\n }\r\n startAt(value = null, name) {\r\n validateArgCount('Query.startAt', 0, 2, arguments.length);\r\n return new Query(this.database, query(this._delegate, startAt(value, name)));\r\n }\r\n startAfter(value = null, name) {\r\n validateArgCount('Query.startAfter', 0, 2, arguments.length);\r\n return new Query(this.database, query(this._delegate, startAfter(value, name)));\r\n }\r\n endAt(value = null, name) {\r\n validateArgCount('Query.endAt', 0, 2, arguments.length);\r\n return new Query(this.database, query(this._delegate, endAt(value, name)));\r\n }\r\n endBefore(value = null, name) {\r\n validateArgCount('Query.endBefore', 0, 2, arguments.length);\r\n return new Query(this.database, query(this._delegate, endBefore(value, name)));\r\n }\r\n /**\r\n * Load the selection of children with exactly the specified value, and, optionally,\r\n * the specified name.\r\n */\r\n equalTo(value, name) {\r\n validateArgCount('Query.equalTo', 1, 2, arguments.length);\r\n return new Query(this.database, query(this._delegate, equalTo(value, name)));\r\n }\r\n /**\r\n * @returns URL for this location.\r\n */\r\n toString() {\r\n validateArgCount('Query.toString', 0, 0, arguments.length);\r\n return this._delegate.toString();\r\n }\r\n // Do not create public documentation. This is intended to make JSON serialization work but is otherwise unnecessary\r\n // for end-users.\r\n toJSON() {\r\n // An optional spacer argument is unnecessary for a string.\r\n validateArgCount('Query.toJSON', 0, 1, arguments.length);\r\n return this._delegate.toJSON();\r\n }\r\n /**\r\n * Return true if this query and the provided query are equivalent; otherwise, return false.\r\n */\r\n isEqual(other) {\r\n validateArgCount('Query.isEqual', 1, 1, arguments.length);\r\n if (!(other instanceof Query)) {\r\n const error = 'Query.isEqual failed: First argument must be an instance of firebase.database.Query.';\r\n throw new Error(error);\r\n }\r\n return this._delegate.isEqual(other._delegate);\r\n }\r\n /**\r\n * Helper used by .on and .once to extract the context and or cancel arguments.\r\n * @param fnName - The function name (on or once)\r\n *\r\n */\r\n static getCancelAndContextArgs_(fnName, cancelOrContext, context) {\r\n const ret = { cancel: undefined, context: undefined };\r\n if (cancelOrContext && context) {\r\n ret.cancel = cancelOrContext;\r\n validateCallback(fnName, 'cancel', ret.cancel, true);\r\n ret.context = context;\r\n validateContextObject(fnName, 'context', ret.context, true);\r\n }\r\n else if (cancelOrContext) {\r\n // we have either a cancel callback or a context.\r\n if (typeof cancelOrContext === 'object' && cancelOrContext !== null) {\r\n // it's a context!\r\n ret.context = cancelOrContext;\r\n }\r\n else if (typeof cancelOrContext === 'function') {\r\n ret.cancel = cancelOrContext;\r\n }\r\n else {\r\n throw new Error(errorPrefix(fnName, 'cancelOrContext') +\r\n ' must either be a cancel callback or a context object.');\r\n }\r\n }\r\n return ret;\r\n }\r\n get ref() {\r\n return new Reference(this.database, new _ReferenceImpl(this._delegate._repo, this._delegate._path));\r\n }\r\n}\r\nclass Reference extends Query {\r\n /**\r\n * Call options:\r\n * new Reference(Repo, Path) or\r\n * new Reference(url: string, string|RepoManager)\r\n *\r\n * Externally - this is the firebase.database.Reference type.\r\n */\r\n constructor(database, _delegate) {\r\n super(database, new _QueryImpl(_delegate._repo, _delegate._path, new _QueryParams(), false));\r\n this.database = database;\r\n this._delegate = _delegate;\r\n }\r\n /** @returns {?string} */\r\n getKey() {\r\n validateArgCount('Reference.key', 0, 0, arguments.length);\r\n return this._delegate.key;\r\n }\r\n child(pathString) {\r\n validateArgCount('Reference.child', 1, 1, arguments.length);\r\n if (typeof pathString === 'number') {\r\n pathString = String(pathString);\r\n }\r\n return new Reference(this.database, child(this._delegate, pathString));\r\n }\r\n /** @returns {?Reference} */\r\n getParent() {\r\n validateArgCount('Reference.parent', 0, 0, arguments.length);\r\n const parent = this._delegate.parent;\r\n return parent ? new Reference(this.database, parent) : null;\r\n }\r\n /** @returns {!Reference} */\r\n getRoot() {\r\n validateArgCount('Reference.root', 0, 0, arguments.length);\r\n return new Reference(this.database, this._delegate.root);\r\n }\r\n set(newVal, onComplete) {\r\n validateArgCount('Reference.set', 1, 2, arguments.length);\r\n validateCallback('Reference.set', 'onComplete', onComplete, true);\r\n const result = set(this._delegate, newVal);\r\n if (onComplete) {\r\n result.then(() => onComplete(null), error => onComplete(error));\r\n }\r\n return result;\r\n }\r\n update(values, onComplete) {\r\n validateArgCount('Reference.update', 1, 2, arguments.length);\r\n if (Array.isArray(values)) {\r\n const newObjectToMerge = {};\r\n for (let i = 0; i < values.length; ++i) {\r\n newObjectToMerge['' + i] = values[i];\r\n }\r\n values = newObjectToMerge;\r\n warn('Passing an Array to Firebase.update() is deprecated. ' +\r\n 'Use set() if you want to overwrite the existing data, or ' +\r\n 'an Object with integer keys if you really do want to ' +\r\n 'only update some of the children.');\r\n }\r\n _validateWritablePath('Reference.update', this._delegate._path);\r\n validateCallback('Reference.update', 'onComplete', onComplete, true);\r\n const result = update(this._delegate, values);\r\n if (onComplete) {\r\n result.then(() => onComplete(null), error => onComplete(error));\r\n }\r\n return result;\r\n }\r\n setWithPriority(newVal, newPriority, onComplete) {\r\n validateArgCount('Reference.setWithPriority', 2, 3, arguments.length);\r\n validateCallback('Reference.setWithPriority', 'onComplete', onComplete, true);\r\n const result = setWithPriority(this._delegate, newVal, newPriority);\r\n if (onComplete) {\r\n result.then(() => onComplete(null), error => onComplete(error));\r\n }\r\n return result;\r\n }\r\n remove(onComplete) {\r\n validateArgCount('Reference.remove', 0, 1, arguments.length);\r\n validateCallback('Reference.remove', 'onComplete', onComplete, true);\r\n const result = remove(this._delegate);\r\n if (onComplete) {\r\n result.then(() => onComplete(null), error => onComplete(error));\r\n }\r\n return result;\r\n }\r\n transaction(transactionUpdate, onComplete, applyLocally) {\r\n validateArgCount('Reference.transaction', 1, 3, arguments.length);\r\n validateCallback('Reference.transaction', 'transactionUpdate', transactionUpdate, false);\r\n validateCallback('Reference.transaction', 'onComplete', onComplete, true);\r\n validateBoolean('Reference.transaction', 'applyLocally', applyLocally, true);\r\n const result = runTransaction(this._delegate, transactionUpdate, {\r\n applyLocally\r\n }).then(transactionResult => new TransactionResult(transactionResult.committed, new DataSnapshot(this.database, transactionResult.snapshot)));\r\n if (onComplete) {\r\n result.then(transactionResult => onComplete(null, transactionResult.committed, transactionResult.snapshot), error => onComplete(error, false, null));\r\n }\r\n return result;\r\n }\r\n setPriority(priority, onComplete) {\r\n validateArgCount('Reference.setPriority', 1, 2, arguments.length);\r\n validateCallback('Reference.setPriority', 'onComplete', onComplete, true);\r\n const result = setPriority(this._delegate, priority);\r\n if (onComplete) {\r\n result.then(() => onComplete(null), error => onComplete(error));\r\n }\r\n return result;\r\n }\r\n push(value, onComplete) {\r\n validateArgCount('Reference.push', 0, 2, arguments.length);\r\n validateCallback('Reference.push', 'onComplete', onComplete, true);\r\n const expPromise = push(this._delegate, value);\r\n const promise = expPromise.then(expRef => new Reference(this.database, expRef));\r\n if (onComplete) {\r\n promise.then(() => onComplete(null), error => onComplete(error));\r\n }\r\n const result = new Reference(this.database, expPromise);\r\n result.then = promise.then.bind(promise);\r\n result.catch = promise.catch.bind(promise, undefined);\r\n return result;\r\n }\r\n onDisconnect() {\r\n _validateWritablePath('Reference.onDisconnect', this._delegate._path);\r\n return new OnDisconnect(new OnDisconnect$1(this._delegate._repo, this._delegate._path));\r\n }\r\n get key() {\r\n return this.getKey();\r\n }\r\n get parent() {\r\n return this.getParent();\r\n }\r\n get root() {\r\n return this.getRoot();\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Class representing a firebase database.\r\n */\r\nclass Database {\r\n /**\r\n * The constructor should not be called by users of our public API.\r\n */\r\n constructor(_delegate, app) {\r\n this._delegate = _delegate;\r\n this.app = app;\r\n this.INTERNAL = {\r\n delete: () => this._delegate._delete()\r\n };\r\n }\r\n /**\r\n * Modify this instance to communicate with the Realtime Database emulator.\r\n *\r\n *

Note: This method must be called before performing any other operation.\r\n *\r\n * @param host - the emulator host (ex: localhost)\r\n * @param port - the emulator port (ex: 8080)\r\n * @param options.mockUserToken - the mock auth token to use for unit testing Security Rules\r\n */\r\n useEmulator(host, port, options = {}) {\r\n connectDatabaseEmulator(this._delegate, host, port, options);\r\n }\r\n ref(path) {\r\n validateArgCount('database.ref', 0, 1, arguments.length);\r\n if (path instanceof Reference) {\r\n const childRef = refFromURL(this._delegate, path.toString());\r\n return new Reference(this, childRef);\r\n }\r\n else {\r\n const childRef = ref(this._delegate, path);\r\n return new Reference(this, childRef);\r\n }\r\n }\r\n /**\r\n * Returns a reference to the root or the path specified in url.\r\n * We throw a exception if the url is not in the same domain as the\r\n * current repo.\r\n * @returns Firebase reference.\r\n */\r\n refFromURL(url) {\r\n const apiName = 'database.refFromURL';\r\n validateArgCount(apiName, 1, 1, arguments.length);\r\n const childRef = refFromURL(this._delegate, url);\r\n return new Reference(this, childRef);\r\n }\r\n // Make individual repo go offline.\r\n goOffline() {\r\n validateArgCount('database.goOffline', 0, 0, arguments.length);\r\n return goOffline(this._delegate);\r\n }\r\n goOnline() {\r\n validateArgCount('database.goOnline', 0, 0, arguments.length);\r\n return goOnline(this._delegate);\r\n }\r\n}\r\nDatabase.ServerValue = {\r\n TIMESTAMP: serverTimestamp(),\r\n increment: (delta) => increment(delta)\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Used by console to create a database based on the app,\r\n * passed database URL and a custom auth implementation.\r\n *\r\n * @param app - A valid FirebaseApp-like object\r\n * @param url - A valid Firebase databaseURL\r\n * @param version - custom version e.g. firebase-admin version\r\n * @param customAuthImpl - custom auth implementation\r\n */\r\nfunction initStandalone({ app, url, version, customAuthImpl, namespace, nodeAdmin = false }) {\r\n _setSDKVersion(version);\r\n /**\r\n * ComponentContainer('database-standalone') is just a placeholder that doesn't perform\r\n * any actual function.\r\n */\r\n const authProvider = new Provider('auth-internal', new ComponentContainer('database-standalone'));\r\n authProvider.setComponent(new Component('auth-internal', () => customAuthImpl, \"PRIVATE\" /* PRIVATE */));\r\n return {\r\n instance: new Database(_repoManagerDatabaseFromApp(app, authProvider, \r\n /* appCheckProvider= */ undefined, url, nodeAdmin), app),\r\n namespace\r\n };\r\n}\n\nvar INTERNAL = /*#__PURE__*/Object.freeze({\n __proto__: null,\n initStandalone: initStandalone\n});\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ServerValue = Database.ServerValue;\r\nfunction registerDatabase(instance) {\r\n // Register the Database Service with the 'firebase' namespace.\r\n instance.INTERNAL.registerComponent(new Component('database-compat', (container, { instanceIdentifier: url }) => {\r\n /* Dependencies */\r\n // getImmediate for FirebaseApp will always succeed\r\n const app = container.getProvider('app-compat').getImmediate();\r\n const databaseExp = container\r\n .getProvider('database')\r\n .getImmediate({ identifier: url });\r\n return new Database(databaseExp, app);\r\n }, \"PUBLIC\" /* PUBLIC */)\r\n .setServiceProps(\r\n // firebase.database namespace properties\r\n {\r\n Reference,\r\n Query,\r\n Database,\r\n DataSnapshot,\r\n enableLogging,\r\n INTERNAL,\r\n ServerValue\r\n })\r\n .setMultipleInstances(true));\r\n instance.registerVersion(name, version);\r\n}\r\nregisterDatabase(firebase);\n\nexport { registerDatabase };\n","import { switchMap } from './switchMap';\nimport { isFunction } from '../util/isFunction';\nexport function switchMapTo(innerObservable, resultSelector) {\n return isFunction(resultSelector) ? switchMap(() => innerObservable, resultSelector) : switchMap(() => innerObservable);\n}\n","import { getApps as getApps$1, getApp as getApp$1, registerVersion as registerVersion$1, deleteApp as deleteApp$1, initializeApp as initializeApp$1, onLog as onLog$1, setLogLevel as setLogLevel$1 } from 'firebase/app';\nexport * from 'firebase/app';\nimport { timer, from } from 'rxjs';\nimport { concatMap, distinct } from 'rxjs/operators';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Optional, VERSION as VERSION$1, PLATFORM_ID, NgModule, Inject, NgZone, Injector } from '@angular/core';\nimport { VERSION, ɵAngularFireSchedulers, ɵzoneWrap } from '@angular/fire';\n\nclass FirebaseApp {\n constructor(app) {\n return app;\n }\n}\nclass FirebaseApps {\n constructor() {\n return getApps$1();\n }\n}\nconst firebaseApp$ = timer(0, 300).pipe(concatMap(() => from(getApps$1())), distinct());\n\nfunction defaultFirebaseAppFactory(provided) {\n // Use the provided app, if there is only one, otherwise fetch the default app\n if (provided && provided.length === 1) {\n return provided[0];\n }\n return new FirebaseApp(getApp$1());\n}\n// With FIREBASE_APPS I wanted to capture the default app instance, if it is initialized by\n// the reserved URL; ɵPROVIDED_FIREBASE_APPS is not for public consumption and serves to ensure that all\n// provideFirebaseApp(...) calls are satisfied before FirebaseApp$ or FirebaseApp is resolved\nconst PROVIDED_FIREBASE_APPS = new InjectionToken('angularfire2._apps');\n// Injecting FirebaseApp will now only inject the default Firebase App\n// this allows allows beginners to import /__/firebase/init.js to auto initialize Firebase App\n// from the reserved URL.\nconst DEFAULT_FIREBASE_APP_PROVIDER = {\n provide: FirebaseApp,\n useFactory: defaultFirebaseAppFactory,\n deps: [\n [new Optional(), PROVIDED_FIREBASE_APPS],\n ],\n};\nconst FIREBASE_APPS_PROVIDER = {\n provide: FirebaseApps,\n deps: [\n [new Optional(), PROVIDED_FIREBASE_APPS],\n ],\n};\nfunction firebaseAppFactory(fn) {\n return (zone, injector) => {\n const app = zone.runOutsideAngular(() => fn(injector));\n return new FirebaseApp(app);\n };\n}\nclass FirebaseAppModule {\n // tslint:disable-next-line:ban-types\n constructor(platformId) {\n registerVersion$1('angularfire', VERSION.full, 'core');\n registerVersion$1('angularfire', VERSION.full, 'app');\n registerVersion$1('angular', VERSION$1.full, platformId.toString());\n }\n}\nFirebaseAppModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: FirebaseAppModule, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.NgModule });\nFirebaseAppModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: FirebaseAppModule });\nFirebaseAppModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: FirebaseAppModule, providers: [\n DEFAULT_FIREBASE_APP_PROVIDER,\n FIREBASE_APPS_PROVIDER,\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: FirebaseAppModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [\n DEFAULT_FIREBASE_APP_PROVIDER,\n FIREBASE_APPS_PROVIDER,\n ]\n }]\n }], ctorParameters: function () { return [{ type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; } });\n// Calling initializeApp({ ... }, 'name') multiple times will add more FirebaseApps into the FIREBASE_APPS\n// injection scope. This allows developers to more easily work with multiple Firebase Applications. Downside\n// is that DI for app name and options doesn't really make sense anymore.\nfunction provideFirebaseApp(fn, ...deps) {\n return {\n ngModule: FirebaseAppModule,\n providers: [{\n provide: PROVIDED_FIREBASE_APPS,\n useFactory: firebaseAppFactory(fn),\n multi: true,\n deps: [\n NgZone,\n Injector,\n ɵAngularFireSchedulers,\n ...deps,\n ],\n }],\n };\n}\n\n// DO NOT MODIFY, this file is autogenerated by tools/build.ts\nconst deleteApp = ɵzoneWrap(deleteApp$1, true);\nconst getApp = ɵzoneWrap(getApp$1, true);\nconst getApps = ɵzoneWrap(getApps$1, true);\nconst initializeApp = ɵzoneWrap(initializeApp$1, true);\nconst onLog = ɵzoneWrap(onLog$1, true);\nconst registerVersion = ɵzoneWrap(registerVersion$1, true);\nconst setLogLevel = ɵzoneWrap(setLogLevel$1, true);\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FirebaseApp, FirebaseAppModule, FirebaseApps, deleteApp, firebaseApp$, getApp, getApps, initializeApp, onLog, provideFirebaseApp, registerVersion, setLogLevel };\n","import { _getProvider, getApp, _registerComponent, registerVersion } from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { Deferred, ErrorFactory, isIndexedDBAvailable, getGlobal, base64, issuedAtTime, calculateBackoffMillis, getModularInstance } from '@firebase/util';\nimport { Logger } from '@firebase/logger';\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst APP_CHECK_STATES = new Map();\r\nconst DEFAULT_STATE = {\r\n activated: false,\r\n tokenObservers: []\r\n};\r\nconst DEBUG_STATE = {\r\n initialized: false,\r\n enabled: false\r\n};\r\nfunction getState(app) {\r\n return APP_CHECK_STATES.get(app) || DEFAULT_STATE;\r\n}\r\nfunction setState(app, state) {\r\n APP_CHECK_STATES.set(app, state);\r\n}\r\nfunction getDebugState() {\r\n return DEBUG_STATE;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst BASE_ENDPOINT = 'https://content-firebaseappcheck.googleapis.com/v1beta';\r\nconst EXCHANGE_RECAPTCHA_TOKEN_METHOD = 'exchangeRecaptchaToken';\r\nconst EXCHANGE_RECAPTCHA_ENTERPRISE_TOKEN_METHOD = 'exchangeRecaptchaEnterpriseToken';\r\nconst EXCHANGE_DEBUG_TOKEN_METHOD = 'exchangeDebugToken';\r\nconst TOKEN_REFRESH_TIME = {\r\n /**\r\n * The offset time before token natural expiration to run the refresh.\r\n * This is currently 5 minutes.\r\n */\r\n OFFSET_DURATION: 5 * 60 * 1000,\r\n /**\r\n * This is the first retrial wait after an error. This is currently\r\n * 30 seconds.\r\n */\r\n RETRIAL_MIN_WAIT: 30 * 1000,\r\n /**\r\n * This is the maximum retrial wait, currently 16 minutes.\r\n */\r\n RETRIAL_MAX_WAIT: 16 * 60 * 1000\r\n};\r\n/**\r\n * One day in millis, for certain error code backoffs.\r\n */\r\nconst ONE_DAY = 24 * 60 * 60 * 1000;\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Port from auth proactiverefresh.js\r\n *\r\n */\r\n// TODO: move it to @firebase/util?\r\n// TODO: allow to config whether refresh should happen in the background\r\nclass Refresher {\r\n constructor(operation, retryPolicy, getWaitDuration, lowerBound, upperBound) {\r\n this.operation = operation;\r\n this.retryPolicy = retryPolicy;\r\n this.getWaitDuration = getWaitDuration;\r\n this.lowerBound = lowerBound;\r\n this.upperBound = upperBound;\r\n this.pending = null;\r\n this.nextErrorWaitInterval = lowerBound;\r\n if (lowerBound > upperBound) {\r\n throw new Error('Proactive refresh lower bound greater than upper bound!');\r\n }\r\n }\r\n start() {\r\n this.nextErrorWaitInterval = this.lowerBound;\r\n this.process(true).catch(() => {\r\n /* we don't care about the result */\r\n });\r\n }\r\n stop() {\r\n if (this.pending) {\r\n this.pending.reject('cancelled');\r\n this.pending = null;\r\n }\r\n }\r\n isRunning() {\r\n return !!this.pending;\r\n }\r\n async process(hasSucceeded) {\r\n this.stop();\r\n try {\r\n this.pending = new Deferred();\r\n await sleep(this.getNextRun(hasSucceeded));\r\n // Why do we resolve a promise, then immediate wait for it?\r\n // We do it to make the promise chain cancellable.\r\n // We can call stop() which rejects the promise before the following line execute, which makes\r\n // the code jump to the catch block.\r\n // TODO: unit test this\r\n this.pending.resolve();\r\n await this.pending.promise;\r\n this.pending = new Deferred();\r\n await this.operation();\r\n this.pending.resolve();\r\n await this.pending.promise;\r\n this.process(true).catch(() => {\r\n /* we don't care about the result */\r\n });\r\n }\r\n catch (error) {\r\n if (this.retryPolicy(error)) {\r\n this.process(false).catch(() => {\r\n /* we don't care about the result */\r\n });\r\n }\r\n else {\r\n this.stop();\r\n }\r\n }\r\n }\r\n getNextRun(hasSucceeded) {\r\n if (hasSucceeded) {\r\n // If last operation succeeded, reset next error wait interval and return\r\n // the default wait duration.\r\n this.nextErrorWaitInterval = this.lowerBound;\r\n // Return typical wait duration interval after a successful operation.\r\n return this.getWaitDuration();\r\n }\r\n else {\r\n // Get next error wait interval.\r\n const currentErrorWaitInterval = this.nextErrorWaitInterval;\r\n // Double interval for next consecutive error.\r\n this.nextErrorWaitInterval *= 2;\r\n // Make sure next wait interval does not exceed the maximum upper bound.\r\n if (this.nextErrorWaitInterval > this.upperBound) {\r\n this.nextErrorWaitInterval = this.upperBound;\r\n }\r\n return currentErrorWaitInterval;\r\n }\r\n }\r\n}\r\nfunction sleep(ms) {\r\n return new Promise(resolve => {\r\n setTimeout(resolve, ms);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERRORS = {\r\n [\"already-initialized\" /* ALREADY_INITIALIZED */]: 'You have already called initializeAppCheck() for FirebaseApp {$appName} with ' +\r\n 'different options. To avoid this error, call initializeAppCheck() with the ' +\r\n 'same options as when it was originally called. This will return the ' +\r\n 'already initialized instance.',\r\n [\"use-before-activation\" /* USE_BEFORE_ACTIVATION */]: 'App Check is being used before initializeAppCheck() is called for FirebaseApp {$appName}. ' +\r\n 'Call initializeAppCheck() before instantiating other Firebase services.',\r\n [\"fetch-network-error\" /* FETCH_NETWORK_ERROR */]: 'Fetch failed to connect to a network. Check Internet connection. ' +\r\n 'Original error: {$originalErrorMessage}.',\r\n [\"fetch-parse-error\" /* FETCH_PARSE_ERROR */]: 'Fetch client could not parse response.' +\r\n ' Original error: {$originalErrorMessage}.',\r\n [\"fetch-status-error\" /* FETCH_STATUS_ERROR */]: 'Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.',\r\n [\"storage-open\" /* STORAGE_OPEN */]: 'Error thrown when opening storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-get\" /* STORAGE_GET */]: 'Error thrown when reading from storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-set\" /* STORAGE_WRITE */]: 'Error thrown when writing to storage. Original error: {$originalErrorMessage}.',\r\n [\"recaptcha-error\" /* RECAPTCHA_ERROR */]: 'ReCAPTCHA error.',\r\n [\"throttled\" /* THROTTLED */]: `Requests throttled due to {$httpStatus} error. Attempts allowed again after {$time}`\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('appCheck', 'AppCheck', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getRecaptcha(isEnterprise = false) {\r\n var _a;\r\n if (isEnterprise) {\r\n return (_a = self.grecaptcha) === null || _a === void 0 ? void 0 : _a.enterprise;\r\n }\r\n return self.grecaptcha;\r\n}\r\nfunction ensureActivated(app) {\r\n if (!getState(app).activated) {\r\n throw ERROR_FACTORY.create(\"use-before-activation\" /* USE_BEFORE_ACTIVATION */, {\r\n appName: app.name\r\n });\r\n }\r\n}\r\n/**\r\n * Copied from https://stackoverflow.com/a/2117523\r\n */\r\nfunction uuidv4() {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n const r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n}\r\nfunction getDurationString(durationInMillis) {\r\n const totalSeconds = Math.round(durationInMillis / 1000);\r\n const days = Math.floor(totalSeconds / (3600 * 24));\r\n const hours = Math.floor((totalSeconds - days * 3600 * 24) / 3600);\r\n const minutes = Math.floor((totalSeconds - days * 3600 * 24 - hours * 3600) / 60);\r\n const seconds = totalSeconds - days * 3600 * 24 - hours * 3600 - minutes * 60;\r\n let result = '';\r\n if (days) {\r\n result += pad(days) + 'd:';\r\n }\r\n if (hours) {\r\n result += pad(hours) + 'h:';\r\n }\r\n result += pad(minutes) + 'm:' + pad(seconds) + 's';\r\n return result;\r\n}\r\nfunction pad(value) {\r\n if (value === 0) {\r\n return '00';\r\n }\r\n return value >= 10 ? value.toString() : '0' + value;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function exchangeToken({ url, body }, platformLoggerProvider) {\r\n const headers = {\r\n 'Content-Type': 'application/json'\r\n };\r\n // If platform logger exists, add the platform info string to the header.\r\n const platformLogger = platformLoggerProvider.getImmediate({\r\n optional: true\r\n });\r\n if (platformLogger) {\r\n headers['X-Firebase-Client'] = platformLogger.getPlatformInfoString();\r\n }\r\n const options = {\r\n method: 'POST',\r\n body: JSON.stringify(body),\r\n headers\r\n };\r\n let response;\r\n try {\r\n response = await fetch(url, options);\r\n }\r\n catch (originalError) {\r\n throw ERROR_FACTORY.create(\"fetch-network-error\" /* FETCH_NETWORK_ERROR */, {\r\n originalErrorMessage: originalError.message\r\n });\r\n }\r\n if (response.status !== 200) {\r\n throw ERROR_FACTORY.create(\"fetch-status-error\" /* FETCH_STATUS_ERROR */, {\r\n httpStatus: response.status\r\n });\r\n }\r\n let responseBody;\r\n try {\r\n // JSON parsing throws SyntaxError if the response body isn't a JSON string.\r\n responseBody = await response.json();\r\n }\r\n catch (originalError) {\r\n throw ERROR_FACTORY.create(\"fetch-parse-error\" /* FETCH_PARSE_ERROR */, {\r\n originalErrorMessage: originalError.message\r\n });\r\n }\r\n // Protobuf duration format.\r\n // https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/Duration\r\n const match = responseBody.ttl.match(/^([\\d.]+)(s)$/);\r\n if (!match || !match[2] || isNaN(Number(match[1]))) {\r\n throw ERROR_FACTORY.create(\"fetch-parse-error\" /* FETCH_PARSE_ERROR */, {\r\n originalErrorMessage: `ttl field (timeToLive) is not in standard Protobuf Duration ` +\r\n `format: ${responseBody.ttl}`\r\n });\r\n }\r\n const timeToLiveAsNumber = Number(match[1]) * 1000;\r\n const now = Date.now();\r\n return {\r\n token: responseBody.attestationToken,\r\n expireTimeMillis: now + timeToLiveAsNumber,\r\n issuedAtTimeMillis: now\r\n };\r\n}\r\nfunction getExchangeRecaptchaV3TokenRequest(app, reCAPTCHAToken) {\r\n const { projectId, appId, apiKey } = app.options;\r\n return {\r\n url: `${BASE_ENDPOINT}/projects/${projectId}/apps/${appId}:${EXCHANGE_RECAPTCHA_TOKEN_METHOD}?key=${apiKey}`,\r\n body: {\r\n 'recaptcha_token': reCAPTCHAToken\r\n }\r\n };\r\n}\r\nfunction getExchangeRecaptchaEnterpriseTokenRequest(app, reCAPTCHAToken) {\r\n const { projectId, appId, apiKey } = app.options;\r\n return {\r\n url: `${BASE_ENDPOINT}/projects/${projectId}/apps/${appId}:${EXCHANGE_RECAPTCHA_ENTERPRISE_TOKEN_METHOD}?key=${apiKey}`,\r\n body: {\r\n 'recaptcha_enterprise_token': reCAPTCHAToken\r\n }\r\n };\r\n}\r\nfunction getExchangeDebugTokenRequest(app, debugToken) {\r\n const { projectId, appId, apiKey } = app.options;\r\n return {\r\n url: `${BASE_ENDPOINT}/projects/${projectId}/apps/${appId}:${EXCHANGE_DEBUG_TOKEN_METHOD}?key=${apiKey}`,\r\n body: {\r\n // eslint-disable-next-line\r\n debug_token: debugToken\r\n }\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DB_NAME = 'firebase-app-check-database';\r\nconst DB_VERSION = 1;\r\nconst STORE_NAME = 'firebase-app-check-store';\r\nconst DEBUG_TOKEN_KEY = 'debug-token';\r\nlet dbPromise = null;\r\nfunction getDBPromise() {\r\n if (dbPromise) {\r\n return dbPromise;\r\n }\r\n dbPromise = new Promise((resolve, reject) => {\r\n try {\r\n const request = indexedDB.open(DB_NAME, DB_VERSION);\r\n request.onsuccess = event => {\r\n resolve(event.target.result);\r\n };\r\n request.onerror = event => {\r\n var _a;\r\n reject(ERROR_FACTORY.create(\"storage-open\" /* STORAGE_OPEN */, {\r\n originalErrorMessage: (_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message\r\n }));\r\n };\r\n request.onupgradeneeded = event => {\r\n const db = event.target.result;\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (event.oldVersion) {\r\n case 0:\r\n db.createObjectStore(STORE_NAME, {\r\n keyPath: 'compositeKey'\r\n });\r\n }\r\n };\r\n }\r\n catch (e) {\r\n reject(ERROR_FACTORY.create(\"storage-open\" /* STORAGE_OPEN */, {\r\n originalErrorMessage: e.message\r\n }));\r\n }\r\n });\r\n return dbPromise;\r\n}\r\nfunction readTokenFromIndexedDB(app) {\r\n return read(computeKey(app));\r\n}\r\nfunction writeTokenToIndexedDB(app, token) {\r\n return write(computeKey(app), token);\r\n}\r\nfunction writeDebugTokenToIndexedDB(token) {\r\n return write(DEBUG_TOKEN_KEY, token);\r\n}\r\nfunction readDebugTokenFromIndexedDB() {\r\n return read(DEBUG_TOKEN_KEY);\r\n}\r\nasync function write(key, value) {\r\n const db = await getDBPromise();\r\n const transaction = db.transaction(STORE_NAME, 'readwrite');\r\n const store = transaction.objectStore(STORE_NAME);\r\n const request = store.put({\r\n compositeKey: key,\r\n value\r\n });\r\n return new Promise((resolve, reject) => {\r\n request.onsuccess = _event => {\r\n resolve();\r\n };\r\n transaction.onerror = event => {\r\n var _a;\r\n reject(ERROR_FACTORY.create(\"storage-set\" /* STORAGE_WRITE */, {\r\n originalErrorMessage: (_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message\r\n }));\r\n };\r\n });\r\n}\r\nasync function read(key) {\r\n const db = await getDBPromise();\r\n const transaction = db.transaction(STORE_NAME, 'readonly');\r\n const store = transaction.objectStore(STORE_NAME);\r\n const request = store.get(key);\r\n return new Promise((resolve, reject) => {\r\n request.onsuccess = event => {\r\n const result = event.target.result;\r\n if (result) {\r\n resolve(result.value);\r\n }\r\n else {\r\n resolve(undefined);\r\n }\r\n };\r\n transaction.onerror = event => {\r\n var _a;\r\n reject(ERROR_FACTORY.create(\"storage-get\" /* STORAGE_GET */, {\r\n originalErrorMessage: (_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message\r\n }));\r\n };\r\n });\r\n}\r\nfunction computeKey(app) {\r\n return `${app.options.appId}-${app.name}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst logger = new Logger('@firebase/app-check');\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Always resolves. In case of an error reading from indexeddb, resolve with undefined\r\n */\r\nasync function readTokenFromStorage(app) {\r\n if (isIndexedDBAvailable()) {\r\n let token = undefined;\r\n try {\r\n token = await readTokenFromIndexedDB(app);\r\n }\r\n catch (e) {\r\n // swallow the error and return undefined\r\n logger.warn(`Failed to read token from IndexedDB. Error: ${e}`);\r\n }\r\n return token;\r\n }\r\n return undefined;\r\n}\r\n/**\r\n * Always resolves. In case of an error writing to indexeddb, print a warning and resolve the promise\r\n */\r\nfunction writeTokenToStorage(app, token) {\r\n if (isIndexedDBAvailable()) {\r\n return writeTokenToIndexedDB(app, token).catch(e => {\r\n // swallow the error and resolve the promise\r\n logger.warn(`Failed to write token to IndexedDB. Error: ${e}`);\r\n });\r\n }\r\n return Promise.resolve();\r\n}\r\nasync function readOrCreateDebugTokenFromStorage() {\r\n /**\r\n * Theoretically race condition can happen if we read, then write in 2 separate transactions.\r\n * But it won't happen here, because this function will be called exactly once.\r\n */\r\n let existingDebugToken = undefined;\r\n try {\r\n existingDebugToken = await readDebugTokenFromIndexedDB();\r\n }\r\n catch (_e) {\r\n // failed to read from indexeddb. We assume there is no existing debug token, and generate a new one.\r\n }\r\n if (!existingDebugToken) {\r\n // create a new debug token\r\n const newToken = uuidv4();\r\n // We don't need to block on writing to indexeddb\r\n // In case persistence failed, a new debug token will be generated everytime the page is refreshed.\r\n // It renders the debug token useless because you have to manually register(whitelist) the new token in the firebase console again and again.\r\n // If you see this error trying to use debug token, it probably means you are using a browser that doesn't support indexeddb.\r\n // You should switch to a different browser that supports indexeddb\r\n writeDebugTokenToIndexedDB(newToken).catch(e => logger.warn(`Failed to persist debug token to IndexedDB. Error: ${e}`));\r\n return newToken;\r\n }\r\n else {\r\n return existingDebugToken;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isDebugMode() {\r\n const debugState = getDebugState();\r\n return debugState.enabled;\r\n}\r\nasync function getDebugToken() {\r\n const state = getDebugState();\r\n if (state.enabled && state.token) {\r\n return state.token.promise;\r\n }\r\n else {\r\n // should not happen!\r\n throw Error(`\n Can't get debug token in production mode.\n `);\r\n }\r\n}\r\nfunction initializeDebugMode() {\r\n const globals = getGlobal();\r\n const debugState = getDebugState();\r\n // Set to true if this function has been called, whether or not\r\n // it enabled debug mode.\r\n debugState.initialized = true;\r\n if (typeof globals.FIREBASE_APPCHECK_DEBUG_TOKEN !== 'string' &&\r\n globals.FIREBASE_APPCHECK_DEBUG_TOKEN !== true) {\r\n return;\r\n }\r\n debugState.enabled = true;\r\n const deferredToken = new Deferred();\r\n debugState.token = deferredToken;\r\n if (typeof globals.FIREBASE_APPCHECK_DEBUG_TOKEN === 'string') {\r\n deferredToken.resolve(globals.FIREBASE_APPCHECK_DEBUG_TOKEN);\r\n }\r\n else {\r\n deferredToken.resolve(readOrCreateDebugTokenFromStorage());\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Initial hardcoded value agreed upon across platforms for initial launch.\r\n// Format left open for possible dynamic error values and other fields in the future.\r\nconst defaultTokenErrorData = { error: 'UNKNOWN_ERROR' };\r\n/**\r\n * Stringify and base64 encode token error data.\r\n *\r\n * @param tokenError Error data, currently hardcoded.\r\n */\r\nfunction formatDummyToken(tokenErrorData) {\r\n return base64.encodeString(JSON.stringify(tokenErrorData), \r\n /* webSafe= */ false);\r\n}\r\n/**\r\n * This function always resolves.\r\n * The result will contain an error field if there is any error.\r\n * In case there is an error, the token field in the result will be populated with a dummy value\r\n */\r\nasync function getToken$2(appCheck, forceRefresh = false) {\r\n const app = appCheck.app;\r\n ensureActivated(app);\r\n const state = getState(app);\r\n /**\r\n * First check if there is a token in memory from a previous `getToken()` call.\r\n */\r\n let token = state.token;\r\n let error = undefined;\r\n /**\r\n * If there is no token in memory, try to load token from indexedDB.\r\n */\r\n if (!token) {\r\n // cachedTokenPromise contains the token found in IndexedDB or undefined if not found.\r\n const cachedToken = await state.cachedTokenPromise;\r\n if (cachedToken && isValid(cachedToken)) {\r\n token = cachedToken;\r\n }\r\n }\r\n // Return the cached token (from either memory or indexedDB) if it's valid\r\n if (!forceRefresh && token && isValid(token)) {\r\n return {\r\n token: token.token\r\n };\r\n }\r\n // Only set to true if this `getToken()` call is making the actual\r\n // REST call to the exchange endpoint, versus waiting for an already\r\n // in-flight call (see debug and regular exchange endpoint paths below)\r\n let shouldCallListeners = false;\r\n /**\r\n * DEBUG MODE\r\n * If debug mode is set, and there is no cached token, fetch a new App\r\n * Check token using the debug token, and return it directly.\r\n */\r\n if (isDebugMode()) {\r\n // Avoid making another call to the exchange endpoint if one is in flight.\r\n if (!state.exchangeTokenPromise) {\r\n state.exchangeTokenPromise = exchangeToken(getExchangeDebugTokenRequest(app, await getDebugToken()), appCheck.platformLoggerProvider).then(token => {\r\n state.exchangeTokenPromise = undefined;\r\n return token;\r\n });\r\n shouldCallListeners = true;\r\n }\r\n const tokenFromDebugExchange = await state.exchangeTokenPromise;\r\n // Write debug token to indexedDB.\r\n await writeTokenToStorage(app, tokenFromDebugExchange);\r\n // Write debug token to state.\r\n setState(app, Object.assign(Object.assign({}, state), { token: tokenFromDebugExchange }));\r\n return { token: tokenFromDebugExchange.token };\r\n }\r\n /**\r\n * request a new token\r\n */\r\n try {\r\n // Avoid making another call to the exchange endpoint if one is in flight.\r\n if (!state.exchangeTokenPromise) {\r\n // state.provider is populated in initializeAppCheck()\r\n // ensureActivated() at the top of this function checks that\r\n // initializeAppCheck() has been called.\r\n state.exchangeTokenPromise = state.provider.getToken().then(token => {\r\n state.exchangeTokenPromise = undefined;\r\n return token;\r\n });\r\n shouldCallListeners = true;\r\n }\r\n token = await state.exchangeTokenPromise;\r\n }\r\n catch (e) {\r\n if (e.code === `appCheck/${\"throttled\" /* THROTTLED */}`) {\r\n // Warn if throttled, but do not treat it as an error.\r\n logger.warn(e.message);\r\n }\r\n else {\r\n // `getToken()` should never throw, but logging error text to console will aid debugging.\r\n logger.error(e);\r\n }\r\n // Always save error to be added to dummy token.\r\n error = e;\r\n }\r\n let interopTokenResult;\r\n if (!token) {\r\n // if token is undefined, there must be an error.\r\n // we return a dummy token along with the error\r\n interopTokenResult = makeDummyTokenResult(error);\r\n }\r\n else {\r\n interopTokenResult = {\r\n token: token.token\r\n };\r\n // write the new token to the memory state as well as the persistent storage.\r\n // Only do it if we got a valid new token\r\n setState(app, Object.assign(Object.assign({}, state), { token }));\r\n await writeTokenToStorage(app, token);\r\n }\r\n if (shouldCallListeners) {\r\n notifyTokenListeners(app, interopTokenResult);\r\n }\r\n return interopTokenResult;\r\n}\r\nfunction addTokenListener(appCheck, type, listener, onError) {\r\n const { app } = appCheck;\r\n const state = getState(app);\r\n const tokenObserver = {\r\n next: listener,\r\n error: onError,\r\n type\r\n };\r\n setState(app, Object.assign(Object.assign({}, state), { tokenObservers: [...state.tokenObservers, tokenObserver] }));\r\n // Invoke the listener async immediately if there is a valid token\r\n // in memory.\r\n if (state.token && isValid(state.token)) {\r\n const validToken = state.token;\r\n Promise.resolve()\r\n .then(() => {\r\n listener({ token: validToken.token });\r\n initTokenRefresher(appCheck);\r\n })\r\n .catch(() => {\r\n /* we don't care about exceptions thrown in listeners */\r\n });\r\n }\r\n /**\r\n * Wait for any cached token promise to resolve before starting the token\r\n * refresher. The refresher checks to see if there is an existing token\r\n * in state and calls the exchange endpoint if not. We should first let the\r\n * IndexedDB check have a chance to populate state if it can.\r\n *\r\n * Listener call isn't needed here because cachedTokenPromise will call any\r\n * listeners that exist when it resolves.\r\n */\r\n // state.cachedTokenPromise is always populated in `activate()`.\r\n void state.cachedTokenPromise.then(() => initTokenRefresher(appCheck));\r\n}\r\nfunction removeTokenListener(app, listener) {\r\n const state = getState(app);\r\n const newObservers = state.tokenObservers.filter(tokenObserver => tokenObserver.next !== listener);\r\n if (newObservers.length === 0 &&\r\n state.tokenRefresher &&\r\n state.tokenRefresher.isRunning()) {\r\n state.tokenRefresher.stop();\r\n }\r\n setState(app, Object.assign(Object.assign({}, state), { tokenObservers: newObservers }));\r\n}\r\n/**\r\n * Logic to create and start refresher as needed.\r\n */\r\nfunction initTokenRefresher(appCheck) {\r\n const { app } = appCheck;\r\n const state = getState(app);\r\n // Create the refresher but don't start it if `isTokenAutoRefreshEnabled`\r\n // is not true.\r\n let refresher = state.tokenRefresher;\r\n if (!refresher) {\r\n refresher = createTokenRefresher(appCheck);\r\n setState(app, Object.assign(Object.assign({}, state), { tokenRefresher: refresher }));\r\n }\r\n if (!refresher.isRunning() && state.isTokenAutoRefreshEnabled) {\r\n refresher.start();\r\n }\r\n}\r\nfunction createTokenRefresher(appCheck) {\r\n const { app } = appCheck;\r\n return new Refresher(\r\n // Keep in mind when this fails for any reason other than the ones\r\n // for which we should retry, it will effectively stop the proactive refresh.\r\n async () => {\r\n const state = getState(app);\r\n // If there is no token, we will try to load it from storage and use it\r\n // If there is a token, we force refresh it because we know it's going to expire soon\r\n let result;\r\n if (!state.token) {\r\n result = await getToken$2(appCheck);\r\n }\r\n else {\r\n result = await getToken$2(appCheck, true);\r\n }\r\n // getToken() always resolves. In case the result has an error field defined, it means the operation failed, and we should retry.\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n }, () => {\r\n return true;\r\n }, () => {\r\n const state = getState(app);\r\n if (state.token) {\r\n // issuedAtTime + (50% * total TTL) + 5 minutes\r\n let nextRefreshTimeMillis = state.token.issuedAtTimeMillis +\r\n (state.token.expireTimeMillis - state.token.issuedAtTimeMillis) *\r\n 0.5 +\r\n 5 * 60 * 1000;\r\n // Do not allow refresh time to be past (expireTime - 5 minutes)\r\n const latestAllowableRefresh = state.token.expireTimeMillis - 5 * 60 * 1000;\r\n nextRefreshTimeMillis = Math.min(nextRefreshTimeMillis, latestAllowableRefresh);\r\n return Math.max(0, nextRefreshTimeMillis - Date.now());\r\n }\r\n else {\r\n return 0;\r\n }\r\n }, TOKEN_REFRESH_TIME.RETRIAL_MIN_WAIT, TOKEN_REFRESH_TIME.RETRIAL_MAX_WAIT);\r\n}\r\nfunction notifyTokenListeners(app, token) {\r\n const observers = getState(app).tokenObservers;\r\n for (const observer of observers) {\r\n try {\r\n if (observer.type === \"EXTERNAL\" /* EXTERNAL */ && token.error != null) {\r\n // If this listener was added by a 3P call, send any token error to\r\n // the supplied error handler. A 3P observer always has an error\r\n // handler.\r\n observer.error(token.error);\r\n }\r\n else {\r\n // If the token has no error field, always return the token.\r\n // If this is a 2P listener, return the token, whether or not it\r\n // has an error field.\r\n observer.next(token);\r\n }\r\n }\r\n catch (e) {\r\n // Errors in the listener function itself are always ignored.\r\n }\r\n }\r\n}\r\nfunction isValid(token) {\r\n return token.expireTimeMillis - Date.now() > 0;\r\n}\r\nfunction makeDummyTokenResult(error) {\r\n return {\r\n token: formatDummyToken(defaultTokenErrorData),\r\n error\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * AppCheck Service class.\r\n */\r\nclass AppCheckService {\r\n constructor(app, platformLoggerProvider) {\r\n this.app = app;\r\n this.platformLoggerProvider = platformLoggerProvider;\r\n }\r\n _delete() {\r\n const { tokenObservers } = getState(this.app);\r\n for (const tokenObserver of tokenObservers) {\r\n removeTokenListener(this.app, tokenObserver.next);\r\n }\r\n return Promise.resolve();\r\n }\r\n}\r\nfunction factory(app, platformLoggerProvider) {\r\n return new AppCheckService(app, platformLoggerProvider);\r\n}\r\nfunction internalFactory(appCheck) {\r\n return {\r\n getToken: forceRefresh => getToken$2(appCheck, forceRefresh),\r\n addTokenListener: listener => addTokenListener(appCheck, \"INTERNAL\" /* INTERNAL */, listener),\r\n removeTokenListener: listener => removeTokenListener(appCheck.app, listener)\r\n };\r\n}\n\nconst name = \"@firebase/app-check\";\nconst version = \"0.5.3\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst RECAPTCHA_URL = 'https://www.google.com/recaptcha/api.js';\r\nconst RECAPTCHA_ENTERPRISE_URL = 'https://www.google.com/recaptcha/enterprise.js';\r\nfunction initializeV3(app, siteKey) {\r\n const state = getState(app);\r\n const initialized = new Deferred();\r\n setState(app, Object.assign(Object.assign({}, state), { reCAPTCHAState: { initialized } }));\r\n const divId = makeDiv(app);\r\n const grecaptcha = getRecaptcha(false);\r\n if (!grecaptcha) {\r\n loadReCAPTCHAV3Script(() => {\r\n const grecaptcha = getRecaptcha(false);\r\n if (!grecaptcha) {\r\n // it shouldn't happen.\r\n throw new Error('no recaptcha');\r\n }\r\n queueWidgetRender(app, siteKey, grecaptcha, divId, initialized);\r\n });\r\n }\r\n else {\r\n queueWidgetRender(app, siteKey, grecaptcha, divId, initialized);\r\n }\r\n return initialized.promise;\r\n}\r\nfunction initializeEnterprise(app, siteKey) {\r\n const state = getState(app);\r\n const initialized = new Deferred();\r\n setState(app, Object.assign(Object.assign({}, state), { reCAPTCHAState: { initialized } }));\r\n const divId = makeDiv(app);\r\n const grecaptcha = getRecaptcha(true);\r\n if (!grecaptcha) {\r\n loadReCAPTCHAEnterpriseScript(() => {\r\n const grecaptcha = getRecaptcha(true);\r\n if (!grecaptcha) {\r\n // it shouldn't happen.\r\n throw new Error('no recaptcha');\r\n }\r\n queueWidgetRender(app, siteKey, grecaptcha, divId, initialized);\r\n });\r\n }\r\n else {\r\n queueWidgetRender(app, siteKey, grecaptcha, divId, initialized);\r\n }\r\n return initialized.promise;\r\n}\r\n/**\r\n * Add listener to render the widget and resolve the promise when\r\n * the grecaptcha.ready() event fires.\r\n */\r\nfunction queueWidgetRender(app, siteKey, grecaptcha, container, initialized) {\r\n grecaptcha.ready(() => {\r\n // Invisible widgets allow us to set a different siteKey for each widget,\r\n // so we use them to support multiple apps\r\n renderInvisibleWidget(app, siteKey, grecaptcha, container);\r\n initialized.resolve(grecaptcha);\r\n });\r\n}\r\n/**\r\n * Add invisible div to page.\r\n */\r\nfunction makeDiv(app) {\r\n const divId = `fire_app_check_${app.name}`;\r\n const invisibleDiv = document.createElement('div');\r\n invisibleDiv.id = divId;\r\n invisibleDiv.style.display = 'none';\r\n document.body.appendChild(invisibleDiv);\r\n return divId;\r\n}\r\nasync function getToken$1(app) {\r\n ensureActivated(app);\r\n // ensureActivated() guarantees that reCAPTCHAState is set\r\n const reCAPTCHAState = getState(app).reCAPTCHAState;\r\n const recaptcha = await reCAPTCHAState.initialized.promise;\r\n return new Promise((resolve, _reject) => {\r\n // Updated after initialization is complete.\r\n const reCAPTCHAState = getState(app).reCAPTCHAState;\r\n recaptcha.ready(() => {\r\n resolve(\r\n // widgetId is guaranteed to be available if reCAPTCHAState.initialized.promise resolved.\r\n recaptcha.execute(reCAPTCHAState.widgetId, {\r\n action: 'fire_app_check'\r\n }));\r\n });\r\n });\r\n}\r\n/**\r\n *\r\n * @param app\r\n * @param container - Id of a HTML element.\r\n */\r\nfunction renderInvisibleWidget(app, siteKey, grecaptcha, container) {\r\n const widgetId = grecaptcha.render(container, {\r\n sitekey: siteKey,\r\n size: 'invisible'\r\n });\r\n const state = getState(app);\r\n setState(app, Object.assign(Object.assign({}, state), { reCAPTCHAState: Object.assign(Object.assign({}, state.reCAPTCHAState), { // state.reCAPTCHAState is set in the initialize()\r\n widgetId }) }));\r\n}\r\nfunction loadReCAPTCHAV3Script(onload) {\r\n const script = document.createElement('script');\r\n script.src = RECAPTCHA_URL;\r\n script.onload = onload;\r\n document.head.appendChild(script);\r\n}\r\nfunction loadReCAPTCHAEnterpriseScript(onload) {\r\n const script = document.createElement('script');\r\n script.src = RECAPTCHA_ENTERPRISE_URL;\r\n script.onload = onload;\r\n document.head.appendChild(script);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * App Check provider that can obtain a reCAPTCHA V3 token and exchange it\r\n * for an App Check token.\r\n *\r\n * @public\r\n */\r\nclass ReCaptchaV3Provider {\r\n /**\r\n * Create a ReCaptchaV3Provider instance.\r\n * @param siteKey - ReCAPTCHA V3 siteKey.\r\n */\r\n constructor(_siteKey) {\r\n this._siteKey = _siteKey;\r\n /**\r\n * Throttle requests on certain error codes to prevent too many retries\r\n * in a short time.\r\n */\r\n this._throttleData = null;\r\n }\r\n /**\r\n * Returns an App Check token.\r\n * @internal\r\n */\r\n async getToken() {\r\n var _a;\r\n throwIfThrottled(this._throttleData);\r\n // Top-level `getToken()` has already checked that App Check is initialized\r\n // and therefore this._app and this._platformLoggerProvider are available.\r\n const attestedClaimsToken = await getToken$1(this._app).catch(_e => {\r\n // reCaptcha.execute() throws null which is not very descriptive.\r\n throw ERROR_FACTORY.create(\"recaptcha-error\" /* RECAPTCHA_ERROR */);\r\n });\r\n let result;\r\n try {\r\n result = await exchangeToken(getExchangeRecaptchaV3TokenRequest(this._app, attestedClaimsToken), this._platformLoggerProvider);\r\n }\r\n catch (e) {\r\n if (e.code === \"fetch-status-error\" /* FETCH_STATUS_ERROR */) {\r\n this._throttleData = setBackoff(Number((_a = e.customData) === null || _a === void 0 ? void 0 : _a.httpStatus), this._throttleData);\r\n throw ERROR_FACTORY.create(\"throttled\" /* THROTTLED */, {\r\n time: getDurationString(this._throttleData.allowRequestsAfter - Date.now()),\r\n httpStatus: this._throttleData.httpStatus\r\n });\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n // If successful, clear throttle data.\r\n this._throttleData = null;\r\n return result;\r\n }\r\n /**\r\n * @internal\r\n */\r\n initialize(app) {\r\n this._app = app;\r\n this._platformLoggerProvider = _getProvider(app, 'platform-logger');\r\n initializeV3(app, this._siteKey).catch(() => {\r\n /* we don't care about the initialization result */\r\n });\r\n }\r\n /**\r\n * @internal\r\n */\r\n isEqual(otherProvider) {\r\n if (otherProvider instanceof ReCaptchaV3Provider) {\r\n return this._siteKey === otherProvider._siteKey;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n}\r\n/**\r\n * App Check provider that can obtain a reCAPTCHA Enterprise token and exchange it\r\n * for an App Check token.\r\n *\r\n * @public\r\n */\r\nclass ReCaptchaEnterpriseProvider {\r\n /**\r\n * Create a ReCaptchaEnterpriseProvider instance.\r\n * @param siteKey - reCAPTCHA Enterprise score-based site key.\r\n */\r\n constructor(_siteKey) {\r\n this._siteKey = _siteKey;\r\n /**\r\n * Throttle requests on certain error codes to prevent too many retries\r\n * in a short time.\r\n */\r\n this._throttleData = null;\r\n }\r\n /**\r\n * Returns an App Check token.\r\n * @internal\r\n */\r\n async getToken() {\r\n var _a;\r\n throwIfThrottled(this._throttleData);\r\n // Top-level `getToken()` has already checked that App Check is initialized\r\n // and therefore this._app and this._platformLoggerProvider are available.\r\n const attestedClaimsToken = await getToken$1(this._app).catch(_e => {\r\n // reCaptcha.execute() throws null which is not very descriptive.\r\n throw ERROR_FACTORY.create(\"recaptcha-error\" /* RECAPTCHA_ERROR */);\r\n });\r\n let result;\r\n try {\r\n result = await exchangeToken(getExchangeRecaptchaEnterpriseTokenRequest(this._app, attestedClaimsToken), this._platformLoggerProvider);\r\n }\r\n catch (e) {\r\n if (e.code === \"fetch-status-error\" /* FETCH_STATUS_ERROR */) {\r\n this._throttleData = setBackoff(Number((_a = e.customData) === null || _a === void 0 ? void 0 : _a.httpStatus), this._throttleData);\r\n throw ERROR_FACTORY.create(\"throttled\" /* THROTTLED */, {\r\n time: getDurationString(this._throttleData.allowRequestsAfter - Date.now()),\r\n httpStatus: this._throttleData.httpStatus\r\n });\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n // If successful, clear throttle data.\r\n this._throttleData = null;\r\n return result;\r\n }\r\n /**\r\n * @internal\r\n */\r\n initialize(app) {\r\n this._app = app;\r\n this._platformLoggerProvider = _getProvider(app, 'platform-logger');\r\n initializeEnterprise(app, this._siteKey).catch(() => {\r\n /* we don't care about the initialization result */\r\n });\r\n }\r\n /**\r\n * @internal\r\n */\r\n isEqual(otherProvider) {\r\n if (otherProvider instanceof ReCaptchaEnterpriseProvider) {\r\n return this._siteKey === otherProvider._siteKey;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n}\r\n/**\r\n * Custom provider class.\r\n * @public\r\n */\r\nclass CustomProvider {\r\n constructor(_customProviderOptions) {\r\n this._customProviderOptions = _customProviderOptions;\r\n }\r\n /**\r\n * @internal\r\n */\r\n async getToken() {\r\n // custom provider\r\n const customToken = await this._customProviderOptions.getToken();\r\n // Try to extract IAT from custom token, in case this token is not\r\n // being newly issued. JWT timestamps are in seconds since epoch.\r\n const issuedAtTimeSeconds = issuedAtTime(customToken.token);\r\n // Very basic validation, use current timestamp as IAT if JWT\r\n // has no `iat` field or value is out of bounds.\r\n const issuedAtTimeMillis = issuedAtTimeSeconds !== null &&\r\n issuedAtTimeSeconds < Date.now() &&\r\n issuedAtTimeSeconds > 0\r\n ? issuedAtTimeSeconds * 1000\r\n : Date.now();\r\n return Object.assign(Object.assign({}, customToken), { issuedAtTimeMillis });\r\n }\r\n /**\r\n * @internal\r\n */\r\n initialize(app) {\r\n this._app = app;\r\n }\r\n /**\r\n * @internal\r\n */\r\n isEqual(otherProvider) {\r\n if (otherProvider instanceof CustomProvider) {\r\n return (this._customProviderOptions.getToken.toString() ===\r\n otherProvider._customProviderOptions.getToken.toString());\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n}\r\n/**\r\n * Set throttle data to block requests until after a certain time\r\n * depending on the failed request's status code.\r\n * @param httpStatus - Status code of failed request.\r\n * @param throttleData - `ThrottleData` object containing previous throttle\r\n * data state.\r\n * @returns Data about current throttle state and expiration time.\r\n */\r\nfunction setBackoff(httpStatus, throttleData) {\r\n /**\r\n * Block retries for 1 day for the following error codes:\r\n *\r\n * 404: Likely malformed URL.\r\n *\r\n * 403:\r\n * - Attestation failed\r\n * - Wrong API key\r\n * - Project deleted\r\n */\r\n if (httpStatus === 404 || httpStatus === 403) {\r\n return {\r\n backoffCount: 1,\r\n allowRequestsAfter: Date.now() + ONE_DAY,\r\n httpStatus\r\n };\r\n }\r\n else {\r\n /**\r\n * For all other error codes, the time when it is ok to retry again\r\n * is based on exponential backoff.\r\n */\r\n const backoffCount = throttleData ? throttleData.backoffCount : 0;\r\n const backoffMillis = calculateBackoffMillis(backoffCount, 1000, 2);\r\n return {\r\n backoffCount: backoffCount + 1,\r\n allowRequestsAfter: Date.now() + backoffMillis,\r\n httpStatus\r\n };\r\n }\r\n}\r\nfunction throwIfThrottled(throttleData) {\r\n if (throttleData) {\r\n if (Date.now() - throttleData.allowRequestsAfter <= 0) {\r\n // If before, throw.\r\n throw ERROR_FACTORY.create(\"throttled\" /* THROTTLED */, {\r\n time: getDurationString(throttleData.allowRequestsAfter - Date.now()),\r\n httpStatus: throttleData.httpStatus\r\n });\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Activate App Check for the given app. Can be called only once per app.\r\n * @param app - the {@link @firebase/app#FirebaseApp} to activate App Check for\r\n * @param options - App Check initialization options\r\n * @public\r\n */\r\nfunction initializeAppCheck(app = getApp(), options) {\r\n app = getModularInstance(app);\r\n const provider = _getProvider(app, 'app-check');\r\n // Ensure initializeDebugMode() is only called once.\r\n if (!getDebugState().initialized) {\r\n initializeDebugMode();\r\n }\r\n // Log a message containing the debug token when `initializeAppCheck()`\r\n // is called in debug mode.\r\n if (isDebugMode()) {\r\n // Do not block initialization to get the token for the message.\r\n void getDebugToken().then(token => \r\n // Not using logger because I don't think we ever want this accidentally hidden.\r\n console.log(`App Check debug token: ${token}. You will need to add it to your app's App Check settings in the Firebase console for it to work.`));\r\n }\r\n if (provider.isInitialized()) {\r\n const existingInstance = provider.getImmediate();\r\n const initialOptions = provider.getOptions();\r\n if (initialOptions.isTokenAutoRefreshEnabled ===\r\n options.isTokenAutoRefreshEnabled &&\r\n initialOptions.provider.isEqual(options.provider)) {\r\n return existingInstance;\r\n }\r\n else {\r\n throw ERROR_FACTORY.create(\"already-initialized\" /* ALREADY_INITIALIZED */, {\r\n appName: app.name\r\n });\r\n }\r\n }\r\n const appCheck = provider.initialize({ options });\r\n _activate(app, options.provider, options.isTokenAutoRefreshEnabled);\r\n // If isTokenAutoRefreshEnabled is false, do not send any requests to the\r\n // exchange endpoint without an explicit call from the user either directly\r\n // or through another Firebase library (storage, functions, etc.)\r\n if (getState(app).isTokenAutoRefreshEnabled) {\r\n // Adding a listener will start the refresher and fetch a token if needed.\r\n // This gets a token ready and prevents a delay when an internal library\r\n // requests the token.\r\n // Listener function does not need to do anything, its base functionality\r\n // of calling getToken() already fetches token and writes it to memory/storage.\r\n addTokenListener(appCheck, \"INTERNAL\" /* INTERNAL */, () => { });\r\n }\r\n return appCheck;\r\n}\r\n/**\r\n * Activate App Check\r\n * @param app - Firebase app to activate App Check for.\r\n * @param provider - reCAPTCHA v3 provider or\r\n * custom token provider.\r\n * @param isTokenAutoRefreshEnabled - If true, the SDK automatically\r\n * refreshes App Check tokens as needed. If undefined, defaults to the\r\n * value of `app.automaticDataCollectionEnabled`, which defaults to\r\n * false and can be set in the app config.\r\n */\r\nfunction _activate(app, provider, isTokenAutoRefreshEnabled) {\r\n const state = getState(app);\r\n const newState = Object.assign(Object.assign({}, state), { activated: true });\r\n newState.provider = provider; // Read cached token from storage if it exists and store it in memory.\r\n newState.cachedTokenPromise = readTokenFromStorage(app).then(cachedToken => {\r\n if (cachedToken && isValid(cachedToken)) {\r\n setState(app, Object.assign(Object.assign({}, getState(app)), { token: cachedToken }));\r\n // notify all listeners with the cached token\r\n notifyTokenListeners(app, { token: cachedToken.token });\r\n }\r\n return cachedToken;\r\n });\r\n // Use value of global `automaticDataCollectionEnabled` (which\r\n // itself defaults to false if not specified in config) if\r\n // `isTokenAutoRefreshEnabled` param was not provided by user.\r\n newState.isTokenAutoRefreshEnabled =\r\n isTokenAutoRefreshEnabled === undefined\r\n ? app.automaticDataCollectionEnabled\r\n : isTokenAutoRefreshEnabled;\r\n setState(app, newState);\r\n newState.provider.initialize(app);\r\n}\r\n/**\r\n * Set whether App Check will automatically refresh tokens as needed.\r\n *\r\n * @param appCheckInstance - The App Check service instance.\r\n * @param isTokenAutoRefreshEnabled - If true, the SDK automatically\r\n * refreshes App Check tokens as needed. This overrides any value set\r\n * during `initializeAppCheck()`.\r\n * @public\r\n */\r\nfunction setTokenAutoRefreshEnabled(appCheckInstance, isTokenAutoRefreshEnabled) {\r\n const app = appCheckInstance.app;\r\n const state = getState(app);\r\n // This will exist if any product libraries have called\r\n // `addTokenListener()`\r\n if (state.tokenRefresher) {\r\n if (isTokenAutoRefreshEnabled === true) {\r\n state.tokenRefresher.start();\r\n }\r\n else {\r\n state.tokenRefresher.stop();\r\n }\r\n }\r\n setState(app, Object.assign(Object.assign({}, state), { isTokenAutoRefreshEnabled }));\r\n}\r\n/**\r\n * Get the current App Check token. Attaches to the most recent\r\n * in-flight request if one is present. Returns null if no token\r\n * is present and no token requests are in-flight.\r\n *\r\n * @param appCheckInstance - The App Check service instance.\r\n * @param forceRefresh - If true, will always try to fetch a fresh token.\r\n * If false, will use a cached token if found in storage.\r\n * @public\r\n */\r\nasync function getToken(appCheckInstance, forceRefresh) {\r\n const result = await getToken$2(appCheckInstance, forceRefresh);\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n return { token: result.token };\r\n}\r\n/**\r\n * Wraps `addTokenListener`/`removeTokenListener` methods in an `Observer`\r\n * pattern for public use.\r\n */\r\nfunction onTokenChanged(appCheckInstance, onNextOrObserver, onError, \r\n/**\r\n * NOTE: Although an `onCompletion` callback can be provided, it will\r\n * never be called because the token stream is never-ending.\r\n * It is added only for API consistency with the observer pattern, which\r\n * we follow in JS APIs.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nonCompletion) {\r\n let nextFn = () => { };\r\n let errorFn = () => { };\r\n if (onNextOrObserver.next != null) {\r\n nextFn = onNextOrObserver.next.bind(onNextOrObserver);\r\n }\r\n else {\r\n nextFn = onNextOrObserver;\r\n }\r\n if (onNextOrObserver.error != null) {\r\n errorFn = onNextOrObserver.error.bind(onNextOrObserver);\r\n }\r\n else if (onError) {\r\n errorFn = onError;\r\n }\r\n addTokenListener(appCheckInstance, \"EXTERNAL\" /* EXTERNAL */, nextFn, errorFn);\r\n return () => removeTokenListener(appCheckInstance.app, nextFn);\r\n}\n\n/**\r\n * Firebase App Check\r\n *\r\n * @packageDocumentation\r\n */\r\nconst APP_CHECK_NAME = 'app-check';\r\nconst APP_CHECK_NAME_INTERNAL = 'app-check-internal';\r\nfunction registerAppCheck() {\r\n // The public interface\r\n _registerComponent(new Component(APP_CHECK_NAME, container => {\r\n // getImmediate for FirebaseApp will always succeed\r\n const app = container.getProvider('app').getImmediate();\r\n const platformLoggerProvider = container.getProvider('platform-logger');\r\n return factory(app, platformLoggerProvider);\r\n }, \"PUBLIC\" /* PUBLIC */)\r\n .setInstantiationMode(\"EXPLICIT\" /* EXPLICIT */)\r\n /**\r\n * Initialize app-check-internal after app-check is initialized to make AppCheck available to\r\n * other Firebase SDKs\r\n */\r\n .setInstanceCreatedCallback((container, _identifier, _appcheckService) => {\r\n container.getProvider(APP_CHECK_NAME_INTERNAL).initialize();\r\n }));\r\n // The internal interface used by other Firebase products\r\n _registerComponent(new Component(APP_CHECK_NAME_INTERNAL, container => {\r\n const appCheck = container.getProvider('app-check').getImmediate();\r\n return internalFactory(appCheck);\r\n }, \"PUBLIC\" /* PUBLIC */).setInstantiationMode(\"EXPLICIT\" /* EXPLICIT */));\r\n registerVersion(name, version);\r\n}\r\nregisterAppCheck();\n\nexport { CustomProvider, ReCaptchaEnterpriseProvider, ReCaptchaV3Provider, getToken, initializeAppCheck, onTokenChanged, setTokenAutoRefreshEnabled };\n","import { ɵgetAllInstancesOf, ɵgetDefaultInstanceOf, VERSION, ɵAngularFireSchedulers, ɵzoneWrap } from '@angular/fire';\nimport { timer, from } from 'rxjs';\nimport { concatMap, distinct } from 'rxjs/operators';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, isDevMode, Optional, PLATFORM_ID, NgModule, NgZone, Injector } from '@angular/core';\nimport { FirebaseApp, FirebaseApps } from '@angular/fire/app';\nimport { registerVersion } from 'firebase/app';\nimport { isPlatformServer } from '@angular/common';\nimport { getToken as getToken$1, initializeAppCheck as initializeAppCheck$1, onTokenChanged as onTokenChanged$1, setTokenAutoRefreshEnabled as setTokenAutoRefreshEnabled$1 } from 'firebase/app-check';\nexport * from 'firebase/app-check';\n\nconst APP_CHECK_PROVIDER_NAME = 'app-check';\nclass AppCheck {\n constructor(appCheck) {\n return appCheck;\n }\n}\nclass AppCheckInstances {\n constructor() {\n return ɵgetAllInstancesOf(APP_CHECK_PROVIDER_NAME);\n }\n}\nconst appCheckInstance$ = timer(0, 300).pipe(concatMap(() => from(ɵgetAllInstancesOf(APP_CHECK_PROVIDER_NAME))), distinct());\n\nconst PROVIDED_APP_CHECK_INSTANCES = new InjectionToken('angularfire2.app-check-instances');\nconst APP_CHECK_NAMESPACE_SYMBOL = Symbol('angularfire2.app-check.namespace');\nfunction defaultAppCheckInstanceFactory(provided, defaultApp) {\n const defaultAppCheck = ɵgetDefaultInstanceOf(APP_CHECK_PROVIDER_NAME, provided, defaultApp);\n return defaultAppCheck && new AppCheck(defaultAppCheck);\n}\nconst LOCALHOSTS = ['localhost', '0.0.0.0', '127.0.0.1'];\nconst isLocalhost = typeof window !== 'undefined' && LOCALHOSTS.includes(window.location.hostname);\nfunction appCheckInstanceFactory(fn) {\n // tslint:disable-next-line:ban-types\n return (zone, injector, platformId) => {\n var _a;\n // Node should use admin token provider, browser devmode and localhost should use debug token\n if (!isPlatformServer(platformId) && (isDevMode() || isLocalhost)) {\n (_a = globalThis.FIREBASE_APPCHECK_DEBUG_TOKEN) !== null && _a !== void 0 ? _a : (globalThis.FIREBASE_APPCHECK_DEBUG_TOKEN = true);\n }\n const appCheck = zone.runOutsideAngular(() => fn(injector));\n return new AppCheck(appCheck);\n };\n}\nconst APP_CHECK_INSTANCES_PROVIDER = {\n provide: AppCheckInstances,\n deps: [\n [new Optional(), PROVIDED_APP_CHECK_INSTANCES],\n ]\n};\nconst DEFAULT_APP_CHECK_INSTANCE_PROVIDER = {\n provide: AppCheck,\n useFactory: defaultAppCheckInstanceFactory,\n deps: [\n [new Optional(), PROVIDED_APP_CHECK_INSTANCES],\n FirebaseApp,\n PLATFORM_ID,\n ]\n};\nclass AppCheckModule {\n constructor() {\n registerVersion('angularfire', VERSION.full, 'app-check');\n }\n}\nAppCheckModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AppCheckModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAppCheckModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AppCheckModule });\nAppCheckModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AppCheckModule, providers: [\n DEFAULT_APP_CHECK_INSTANCE_PROVIDER,\n APP_CHECK_INSTANCES_PROVIDER,\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AppCheckModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [\n DEFAULT_APP_CHECK_INSTANCE_PROVIDER,\n APP_CHECK_INSTANCES_PROVIDER,\n ]\n }]\n }], ctorParameters: function () { return []; } });\nfunction provideAppCheck(fn, ...deps) {\n return {\n ngModule: AppCheckModule,\n providers: [{\n provide: PROVIDED_APP_CHECK_INSTANCES,\n useFactory: appCheckInstanceFactory(fn),\n multi: true,\n deps: [\n NgZone,\n Injector,\n PLATFORM_ID,\n ɵAngularFireSchedulers,\n FirebaseApps,\n ...deps,\n ]\n }]\n };\n}\n\n// DO NOT MODIFY, this file is autogenerated by tools/build.ts\nconst getToken = ɵzoneWrap(getToken$1, true);\nconst initializeAppCheck = ɵzoneWrap(initializeAppCheck$1, true);\nconst onTokenChanged = ɵzoneWrap(onTokenChanged$1, true);\nconst setTokenAutoRefreshEnabled = ɵzoneWrap(setTokenAutoRefreshEnabled$1, true);\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AppCheck, AppCheckInstances, AppCheckModule, appCheckInstance$, getToken, initializeAppCheck, onTokenChanged, provideAppCheck, setTokenAutoRefreshEnabled };\n","\nimport * as i0 from '@angular/core';\nimport { InjectionToken, PLATFORM_ID, Injectable, Inject, Optional, NgModule } from '@angular/core';\nimport { Subject, of, Observable, from, merge } from 'rxjs';\nimport { observeOn, switchMap, map, shareReplay, first, switchMapTo, subscribeOn, filter } from 'rxjs/operators';\nimport * as i1 from '@angular/fire';\nimport { keepUnstableUntilFirst, VERSION } from '@angular/fire';\nimport { ɵcacheInstance, ɵfirebaseAppFactory, ɵlazySDKProxy, FIREBASE_OPTIONS, FIREBASE_APP_NAME, ɵapplyMixins } from '@angular/fire/compat';\nimport { isPlatformServer } from '@angular/common';\nimport * as i2 from '@angular/fire/app-check';\nimport firebase from 'firebase/compat/app';\n\n// DO NOT MODIFY, this file is autogenerated by tools/build.ts\n// Export a null object with the same keys as firebase/compat/auth, so Proxy can work with proxy-polyfill in Internet Explorer\nconst proxyPolyfillCompat = {\n name: null,\n config: null,\n emulatorConfig: null,\n app: null,\n applyActionCode: null,\n checkActionCode: null,\n confirmPasswordReset: null,\n createUserWithEmailAndPassword: null,\n currentUser: null,\n fetchSignInMethodsForEmail: null,\n isSignInWithEmailLink: null,\n getRedirectResult: null,\n languageCode: null,\n settings: null,\n onAuthStateChanged: null,\n onIdTokenChanged: null,\n sendSignInLinkToEmail: null,\n sendPasswordResetEmail: null,\n setPersistence: null,\n signInAndRetrieveDataWithCredential: null,\n signInAnonymously: null,\n signInWithCredential: null,\n signInWithCustomToken: null,\n signInWithEmailAndPassword: null,\n signInWithPhoneNumber: null,\n signInWithEmailLink: null,\n signInWithPopup: null,\n signInWithRedirect: null,\n signOut: null,\n tenantId: null,\n updateCurrentUser: null,\n useDeviceLanguage: null,\n useEmulator: null,\n verifyPasswordResetCode: null,\n};\n\nconst USE_EMULATOR = new InjectionToken('angularfire2.auth.use-emulator');\nconst SETTINGS = new InjectionToken('angularfire2.auth.settings');\nconst TENANT_ID = new InjectionToken('angularfire2.auth.tenant-id');\nconst LANGUAGE_CODE = new InjectionToken('angularfire2.auth.langugage-code');\nconst USE_DEVICE_LANGUAGE = new InjectionToken('angularfire2.auth.use-device-language');\nconst PERSISTENCE = new InjectionToken('angularfire.auth.persistence');\nconst ɵauthFactory = (app, zone, useEmulator, tenantId, languageCode, useDeviceLanguage, settings, persistence) => ɵcacheInstance(`${app.name}.auth`, 'AngularFireAuth', app.name, () => {\n const auth = zone.runOutsideAngular(() => app.auth());\n if (useEmulator) {\n auth.useEmulator(...useEmulator);\n }\n if (tenantId) {\n auth.tenantId = tenantId;\n }\n auth.languageCode = languageCode;\n if (useDeviceLanguage) {\n auth.useDeviceLanguage();\n }\n if (settings) {\n for (const [k, v] of Object.entries(settings)) {\n auth.settings[k] = v;\n }\n }\n if (persistence) {\n auth.setPersistence(persistence);\n }\n return auth;\n}, [useEmulator, tenantId, languageCode, useDeviceLanguage, settings, persistence]);\nclass AngularFireAuth {\n constructor(options, name, \n // tslint:disable-next-line:ban-types\n platformId, zone, schedulers, useEmulator, // can't use the tuple here\n settings, // can't use firebase.auth.AuthSettings here\n tenantId, languageCode, useDeviceLanguage, persistence, _appCheckInstances) {\n const logins = new Subject();\n const auth = of(undefined).pipe(observeOn(schedulers.outsideAngular), switchMap(() => zone.runOutsideAngular(() => import('firebase/compat/auth'))), map(() => ɵfirebaseAppFactory(options, zone, name)), map(app => ɵauthFactory(app, zone, useEmulator, tenantId, languageCode, useDeviceLanguage, settings, persistence)), shareReplay({ bufferSize: 1, refCount: false }));\n if (isPlatformServer(platformId)) {\n this.authState = this.user = this.idToken = this.idTokenResult = this.credential = of(null);\n }\n else {\n // HACK, as we're exporting auth.Auth, rather than auth, developers importing firebase.auth\n // (e.g, `import { auth } from 'firebase/compat/app'`) are getting an undefined auth object unexpectedly\n // as we're completely lazy. Let's eagerly load the Auth SDK here.\n // There could potentially be race conditions still... but this greatly decreases the odds while\n // we reevaluate the API.\n const _ = auth.pipe(first()).subscribe();\n const redirectResult = auth.pipe(switchMap(auth => auth.getRedirectResult().then(it => it, () => null)), keepUnstableUntilFirst, shareReplay({ bufferSize: 1, refCount: false }));\n const authStateChanged = auth.pipe(switchMap(auth => new Observable(sub => ({ unsubscribe: zone.runOutsideAngular(() => auth.onAuthStateChanged(next => sub.next(next), err => sub.error(err), () => sub.complete())) }))));\n const idTokenChanged = auth.pipe(switchMap(auth => new Observable(sub => ({ unsubscribe: zone.runOutsideAngular(() => auth.onIdTokenChanged(next => sub.next(next), err => sub.error(err), () => sub.complete())) }))));\n this.authState = redirectResult.pipe(switchMapTo(authStateChanged), subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular));\n this.user = redirectResult.pipe(switchMapTo(idTokenChanged), subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular));\n this.idToken = this.user.pipe(switchMap(user => user ? from(user.getIdToken()) : of(null)));\n this.idTokenResult = this.user.pipe(switchMap(user => user ? from(user.getIdTokenResult()) : of(null)));\n this.credential = merge(redirectResult, logins, \n // pipe in null authState to make credential zipable, just a weird devexp if\n // authState and user go null to still have a credential\n this.authState.pipe(filter(it => !it))).pipe(\n // handle the { user: { } } when a user is already logged in, rather have null\n // TODO handle the type corcersion better\n map(credential => (credential === null || credential === void 0 ? void 0 : credential.user) ? credential : null), subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular));\n }\n return ɵlazySDKProxy(this, auth, zone, { spy: {\n apply: (name, _, val) => {\n // If they call a signIn or createUser function listen into the promise\n // this will give us the user credential, push onto the logins Subject\n // to be consumed in .credential\n if (name.startsWith('signIn') || name.startsWith('createUser')) {\n // TODO fix the types, the trouble is UserCredential has everything optional\n val.then((user) => logins.next(user));\n }\n }\n } });\n }\n}\nAngularFireAuth.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireAuth, deps: [{ token: FIREBASE_OPTIONS }, { token: FIREBASE_APP_NAME, optional: true }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: i1.ɵAngularFireSchedulers }, { token: USE_EMULATOR, optional: true }, { token: SETTINGS, optional: true }, { token: TENANT_ID, optional: true }, { token: LANGUAGE_CODE, optional: true }, { token: USE_DEVICE_LANGUAGE, optional: true }, { token: PERSISTENCE, optional: true }, { token: i2.AppCheckInstances, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nAngularFireAuth.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireAuth, providedIn: 'any' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireAuth, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'any'\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [FIREBASE_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FIREBASE_APP_NAME]\n }] }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.NgZone }, { type: i1.ɵAngularFireSchedulers }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [USE_EMULATOR]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [SETTINGS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TENANT_ID]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LANGUAGE_CODE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [USE_DEVICE_LANGUAGE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [PERSISTENCE]\n }] }, { type: i2.AppCheckInstances, decorators: [{\n type: Optional\n }] }]; } });\nɵapplyMixins(AngularFireAuth, [proxyPolyfillCompat]);\n\nclass AngularFireAuthModule {\n constructor() {\n firebase.registerVersion('angularfire', VERSION.full, 'auth-compat');\n }\n}\nAngularFireAuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAngularFireAuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireAuthModule });\nAngularFireAuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireAuthModule, providers: [AngularFireAuth] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireAuthModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [AngularFireAuth]\n }]\n }], ctorParameters: function () { return []; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AngularFireAuth, AngularFireAuthModule, LANGUAGE_CODE, PERSISTENCE, SETTINGS, TENANT_ID, USE_DEVICE_LANGUAGE, USE_EMULATOR, ɵauthFactory };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, PLATFORM_ID, Injectable, Inject, Optional, NgModule } from '@angular/core';\nimport { asyncScheduler, Observable, of, merge } from 'rxjs';\nimport { map, share, switchMap, scan, distinctUntilChanged, withLatestFrom, skipWhile } from 'rxjs/operators';\nimport * as i1 from '@angular/fire';\nimport { keepUnstableUntilFirst, VERSION } from '@angular/fire';\nimport { ɵfirebaseAppFactory, ɵcacheInstance, FIREBASE_OPTIONS, FIREBASE_APP_NAME } from '@angular/fire/compat';\nimport 'firebase/compat/auth';\nimport 'firebase/compat/database';\nimport * as i2 from '@angular/fire/compat/auth';\nimport { ɵauthFactory, USE_EMULATOR as USE_EMULATOR$1, SETTINGS, TENANT_ID, LANGUAGE_CODE, USE_DEVICE_LANGUAGE, PERSISTENCE } from '@angular/fire/compat/auth';\nimport * as i3 from '@angular/fire/app-check';\nimport firebase from 'firebase/compat/app';\n\nfunction isString(value) {\n return typeof value === 'string';\n}\nfunction isFirebaseDataSnapshot(value) {\n return typeof value.exportVal === 'function';\n}\nfunction isNil(obj) {\n return obj === undefined || obj === null;\n}\nfunction isFirebaseRef(value) {\n return typeof value.set === 'function';\n}\n/**\n * Returns a database reference given a Firebase App and an\n * absolute or relative path.\n * @param database - Firebase Database\n * @param pathRef - Database path, relative or absolute\n */\nfunction getRef(database, pathRef) {\n // if a db ref was passed in, just return it\n return isFirebaseRef(pathRef) ? pathRef\n : database.ref(pathRef);\n}\nfunction checkOperationCases(item, cases) {\n if (isString(item)) {\n return cases.stringCase();\n }\n else if (isFirebaseRef(item)) {\n return cases.firebaseCase();\n }\n else if (isFirebaseDataSnapshot(item)) {\n return cases.snapshotCase();\n }\n throw new Error(`Expects a string, snapshot, or reference. Got: ${typeof item}`);\n}\n\n/**\n * Create an observable from a Database Reference or Database Query.\n * @param ref Database Reference\n * @param event Listen event type ('value', 'added', 'changed', 'removed', 'moved')\n * @param listenType 'on' or 'once'\n * @param scheduler - Rxjs scheduler\n */\nfunction fromRef(ref, event, listenType = 'on', scheduler = asyncScheduler) {\n return new Observable(subscriber => {\n let fn = null;\n fn = ref[listenType](event, (snapshot, prevKey) => {\n scheduler.schedule(() => {\n subscriber.next({ snapshot, prevKey });\n });\n if (listenType === 'once') {\n scheduler.schedule(() => subscriber.complete());\n }\n }, err => {\n scheduler.schedule(() => subscriber.error(err));\n });\n if (listenType === 'on') {\n return {\n unsubscribe() {\n if (fn != null) {\n ref.off(event, fn);\n }\n }\n };\n }\n else {\n return {\n unsubscribe() {\n }\n };\n }\n }).pipe(map(payload => {\n const { snapshot, prevKey } = payload;\n let key = null;\n if (snapshot.exists()) {\n key = snapshot.key;\n }\n return { type: event, payload: snapshot, prevKey, key };\n }), share());\n}\n\nfunction listChanges(ref, events, scheduler) {\n return fromRef(ref, 'value', 'once', scheduler).pipe(switchMap(snapshotAction => {\n const childEvent$ = [of(snapshotAction)];\n events.forEach(event => childEvent$.push(fromRef(ref, event, 'on', scheduler)));\n return merge(...childEvent$).pipe(scan(buildView, []));\n }), distinctUntilChanged());\n}\nfunction positionFor(changes, key) {\n const len = changes.length;\n for (let i = 0; i < len; i++) {\n if (changes[i].payload.key === key) {\n return i;\n }\n }\n return -1;\n}\nfunction positionAfter(changes, prevKey) {\n if (isNil(prevKey)) {\n return 0;\n }\n else {\n const i = positionFor(changes, prevKey);\n if (i === -1) {\n return changes.length;\n }\n else {\n return i + 1;\n }\n }\n}\nfunction buildView(current, action) {\n const { payload, prevKey, key } = action;\n const currentKeyPosition = positionFor(current, key);\n const afterPreviousKeyPosition = positionAfter(current, prevKey);\n switch (action.type) {\n case 'value':\n if (action.payload && action.payload.exists()) {\n let prevKey = null;\n action.payload.forEach(payload => {\n const action = { payload, type: 'value', prevKey, key: payload.key };\n prevKey = payload.key;\n current = [...current, action];\n return false;\n });\n }\n return current;\n case 'child_added':\n if (currentKeyPosition > -1) {\n // check that the previouskey is what we expect, else reorder\n const previous = current[currentKeyPosition - 1];\n if ((previous && previous.key || null) !== prevKey) {\n current = current.filter(x => x.payload.key !== payload.key);\n current.splice(afterPreviousKeyPosition, 0, action);\n }\n }\n else if (prevKey == null) {\n return [action, ...current];\n }\n else {\n current = current.slice();\n current.splice(afterPreviousKeyPosition, 0, action);\n }\n return current;\n case 'child_removed':\n return current.filter(x => x.payload.key !== payload.key);\n case 'child_changed':\n return current.map(x => x.payload.key === key ? action : x);\n case 'child_moved':\n if (currentKeyPosition > -1) {\n const data = current.splice(currentKeyPosition, 1)[0];\n current = current.slice();\n current.splice(afterPreviousKeyPosition, 0, data);\n return current;\n }\n return current;\n // default will also remove null results\n default:\n return current;\n }\n}\n\nfunction validateEventsArray(events) {\n if (isNil(events) || events.length === 0) {\n events = ['child_added', 'child_removed', 'child_changed', 'child_moved'];\n }\n return events;\n}\n\nfunction snapshotChanges(query, events, scheduler) {\n events = validateEventsArray(events);\n return listChanges(query, events, scheduler);\n}\n\nfunction stateChanges(query, events, scheduler) {\n events = validateEventsArray(events);\n const childEvent$ = events.map(event => fromRef(query, event, 'on', scheduler));\n return merge(...childEvent$);\n}\n\nfunction auditTrail(query, events, scheduler) {\n const auditTrail$ = stateChanges(query, events)\n .pipe(scan((current, action) => [...current, action], []));\n return waitForLoaded(query, auditTrail$, scheduler);\n}\nfunction loadedData(query, scheduler) {\n // Create an observable of loaded values to retrieve the\n // known dataset. This will allow us to know what key to\n // emit the \"whole\" array at when listening for child events.\n return fromRef(query, 'value', 'on', scheduler)\n .pipe(map(data => {\n // Store the last key in the data set\n let lastKeyToLoad;\n // Loop through loaded dataset to find the last key\n data.payload.forEach(child => {\n lastKeyToLoad = child.key;\n return false;\n });\n // return data set and the current last key loaded\n return { data, lastKeyToLoad };\n }));\n}\nfunction waitForLoaded(query, action$, scheduler) {\n const loaded$ = loadedData(query, scheduler);\n return loaded$\n .pipe(withLatestFrom(action$), \n // Get the latest values from the \"loaded\" and \"child\" datasets\n // We can use both datasets to form an array of the latest values.\n map(([loaded, actions]) => {\n // Store the last key in the data set\n const lastKeyToLoad = loaded.lastKeyToLoad;\n // Store all child keys loaded at this point\n const loadedKeys = actions.map(snap => snap.key);\n return { actions, lastKeyToLoad, loadedKeys };\n }), \n // This is the magical part, only emit when the last load key\n // in the dataset has been loaded by a child event. At this point\n // we can assume the dataset is \"whole\".\n skipWhile(meta => meta.loadedKeys.indexOf(meta.lastKeyToLoad) === -1), \n // Pluck off the meta data because the user only cares\n // to iterate through the snapshots\n map(meta => meta.actions));\n}\n\nfunction createDataOperationMethod(ref, operation) {\n return function dataOperation(item, value) {\n return checkOperationCases(item, {\n stringCase: () => ref.child(item)[operation](value),\n firebaseCase: () => item[operation](value),\n snapshotCase: () => item.ref[operation](value)\n });\n };\n}\n\n// TODO(davideast): Find out why TS thinks this returns firebase.Primise\n// instead of Promise.\nfunction createRemoveMethod(ref) {\n return function remove(item) {\n if (!item) {\n return ref.remove();\n }\n return checkOperationCases(item, {\n stringCase: () => ref.child(item).remove(),\n firebaseCase: () => item.remove(),\n snapshotCase: () => item.ref.remove()\n });\n };\n}\n\nfunction createListReference(query, afDatabase) {\n const outsideAngularScheduler = afDatabase.schedulers.outsideAngular;\n const refInZone = afDatabase.schedulers.ngZone.run(() => query.ref);\n return {\n query,\n update: createDataOperationMethod(refInZone, 'update'),\n set: createDataOperationMethod(refInZone, 'set'),\n push: (data) => refInZone.push(data),\n remove: createRemoveMethod(refInZone),\n snapshotChanges(events) {\n return snapshotChanges(query, events, outsideAngularScheduler).pipe(keepUnstableUntilFirst);\n },\n stateChanges(events) {\n return stateChanges(query, events, outsideAngularScheduler).pipe(keepUnstableUntilFirst);\n },\n auditTrail(events) {\n return auditTrail(query, events, outsideAngularScheduler).pipe(keepUnstableUntilFirst);\n },\n valueChanges(events, options) {\n const snapshotChanges$ = snapshotChanges(query, events, outsideAngularScheduler);\n return snapshotChanges$.pipe(map(actions => actions.map(a => {\n if (options && options.idField) {\n return Object.assign(Object.assign({}, a.payload.val()), {\n [options.idField]: a.key\n });\n }\n else {\n return a.payload.val();\n }\n })), keepUnstableUntilFirst);\n }\n };\n}\n\nfunction createObjectSnapshotChanges(query, scheduler) {\n return function snapshotChanges() {\n return fromRef(query, 'value', 'on', scheduler);\n };\n}\n\nfunction createObjectReference(query, afDatabase) {\n return {\n query,\n snapshotChanges() {\n return createObjectSnapshotChanges(query, afDatabase.schedulers.outsideAngular)().pipe(keepUnstableUntilFirst);\n },\n update(data) { return query.ref.update(data); },\n set(data) { return query.ref.set(data); },\n remove() { return query.ref.remove(); },\n valueChanges() {\n const snapshotChanges$ = createObjectSnapshotChanges(query, afDatabase.schedulers.outsideAngular)();\n return snapshotChanges$.pipe(keepUnstableUntilFirst, map(action => action.payload.exists() ? action.payload.val() : null));\n },\n };\n}\n\nconst URL = new InjectionToken('angularfire2.realtimeDatabaseURL');\nconst USE_EMULATOR = new InjectionToken('angularfire2.database.use-emulator');\nclass AngularFireDatabase {\n constructor(options, name, databaseURL, \n // tslint:disable-next-line:ban-types\n platformId, zone, schedulers, _useEmulator, // tuple isn't working here\n auth, useAuthEmulator, authSettings, // can't use firebase.auth.AuthSettings here\n tenantId, languageCode, useDeviceLanguage, persistence, _appCheckInstances) {\n this.schedulers = schedulers;\n const useEmulator = _useEmulator;\n const app = ɵfirebaseAppFactory(options, zone, name);\n if (auth) {\n ɵauthFactory(app, zone, useAuthEmulator, tenantId, languageCode, useDeviceLanguage, authSettings, persistence);\n }\n this.database = ɵcacheInstance(`${app.name}.database.${databaseURL}`, 'AngularFireDatabase', app.name, () => {\n const database = zone.runOutsideAngular(() => app.database(databaseURL || undefined));\n if (useEmulator) {\n database.useEmulator(...useEmulator);\n }\n return database;\n }, [useEmulator]);\n }\n list(pathOrRef, queryFn) {\n const ref = this.schedulers.ngZone.runOutsideAngular(() => getRef(this.database, pathOrRef));\n let query = ref;\n if (queryFn) {\n query = queryFn(ref);\n }\n return createListReference(query, this);\n }\n object(pathOrRef) {\n const ref = this.schedulers.ngZone.runOutsideAngular(() => getRef(this.database, pathOrRef));\n return createObjectReference(ref, this);\n }\n createPushId() {\n const ref = this.schedulers.ngZone.runOutsideAngular(() => this.database.ref());\n return ref.push().key;\n }\n}\nAngularFireDatabase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireDatabase, deps: [{ token: FIREBASE_OPTIONS }, { token: FIREBASE_APP_NAME, optional: true }, { token: URL, optional: true }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: i1.ɵAngularFireSchedulers }, { token: USE_EMULATOR, optional: true }, { token: i2.AngularFireAuth, optional: true }, { token: USE_EMULATOR$1, optional: true }, { token: SETTINGS, optional: true }, { token: TENANT_ID, optional: true }, { token: LANGUAGE_CODE, optional: true }, { token: USE_DEVICE_LANGUAGE, optional: true }, { token: PERSISTENCE, optional: true }, { token: i3.AppCheckInstances, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nAngularFireDatabase.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireDatabase, providedIn: 'any' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireDatabase, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'any'\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [FIREBASE_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FIREBASE_APP_NAME]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [URL]\n }] }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.NgZone }, { type: i1.ɵAngularFireSchedulers }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [USE_EMULATOR]\n }] }, { type: i2.AngularFireAuth, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [USE_EMULATOR$1]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [SETTINGS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TENANT_ID]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LANGUAGE_CODE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [USE_DEVICE_LANGUAGE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [PERSISTENCE]\n }] }, { type: i3.AppCheckInstances, decorators: [{\n type: Optional\n }] }]; } });\n\nclass AngularFireDatabaseModule {\n constructor() {\n firebase.registerVersion('angularfire', VERSION.full, 'rtdb-compat');\n }\n}\nAngularFireDatabaseModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireDatabaseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAngularFireDatabaseModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireDatabaseModule });\nAngularFireDatabaseModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireDatabaseModule, providers: [AngularFireDatabase] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireDatabaseModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [AngularFireDatabase]\n }]\n }], ctorParameters: function () { return []; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AngularFireDatabase, AngularFireDatabaseModule, URL, USE_EMULATOR, auditTrail, createListReference, fromRef, listChanges, snapshotChanges, stateChanges };\n","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { identity } from '../util/identity';\nimport { noop } from '../util/noop';\nimport { popResultSelector } from '../util/args';\nexport function withLatestFrom(...inputs) {\n const project = popResultSelector(inputs);\n return operate((source, subscriber) => {\n const len = inputs.length;\n const otherValues = new Array(len);\n let hasValue = inputs.map(() => false);\n let ready = false;\n for (let i = 0; i < len; i++) {\n innerFrom(inputs[i]).subscribe(new OperatorSubscriber(subscriber, (value) => {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n hasValue[i] = true;\n (ready = hasValue.every(identity)) && (hasValue = null);\n }\n }, noop));\n }\n source.subscribe(new OperatorSubscriber(subscriber, (value) => {\n if (ready) {\n const values = [value, ...otherValues];\n subscriber.next(project ? project(...values) : values);\n }\n }));\n });\n}\n","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function skipWhile(predicate) {\n return operate((source, subscriber) => {\n let taking = false;\n let index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, (value) => (taking || (taking = !predicate(value, index++))) && subscriber.next(value)));\n });\n}\n","import * as i0 from '@angular/core';\nimport { InjectionToken, isDevMode, NgZone, Optional, VERSION as VERSION$1, PLATFORM_ID, NgModule, Inject } from '@angular/core';\nimport firebase from 'firebase/compat/app';\nimport { VERSION } from '@angular/fire';\n\n// DEBUG quick debugger function for inline logging that typescript doesn't complain about\n// wrote it for debugging the ɵlazySDKProxy, commenting out for now; should consider exposing a\n// verbose mode for AngularFire in a future release that uses something like this in multiple places\n// usage: () => log('something') || returnValue\n// const log = (...args: any[]): false => { console.log(...args); return false }\n// The problem here are things like ngOnDestroy are missing, then triggering the service\n// rather than dig too far; I'm capturing these as I go.\nconst noopFunctions = ['ngOnDestroy'];\n// INVESTIGATE should we make the Proxy revokable and do some cleanup?\n// right now it's fairly simple but I'm sure this will grow in complexity\nconst ɵlazySDKProxy = (klass, observable, zone, options = {}) => {\n return new Proxy(klass, {\n get: (_, name) => zone.runOutsideAngular(() => {\n var _a;\n if (klass[name]) {\n if ((_a = options === null || options === void 0 ? void 0 : options.spy) === null || _a === void 0 ? void 0 : _a.get) {\n options.spy.get(name, klass[name]);\n }\n return klass[name];\n }\n if (noopFunctions.indexOf(name) > -1) {\n return () => {\n };\n }\n const promise = observable.toPromise().then(mod => {\n const ret = mod && mod[name];\n // TODO move to proper type guards\n if (typeof ret === 'function') {\n return ret.bind(mod);\n }\n else if (ret && ret.then) {\n return ret.then((res) => zone.run(() => res));\n }\n else {\n return zone.run(() => ret);\n }\n });\n // recurse the proxy\n return new Proxy(() => { }, {\n get: (_, name) => promise[name],\n // TODO handle callbacks as transparently as I can\n apply: (self, _, args) => promise.then(it => {\n var _a;\n const res = it && it(...args);\n if ((_a = options === null || options === void 0 ? void 0 : options.spy) === null || _a === void 0 ? void 0 : _a.apply) {\n options.spy.apply(name, args, res);\n }\n return res;\n })\n });\n })\n });\n};\nconst ɵapplyMixins = (derivedCtor, constructors) => {\n constructors.forEach((baseCtor) => {\n Object.getOwnPropertyNames(baseCtor.prototype || baseCtor).forEach((name) => {\n Object.defineProperty(derivedCtor.prototype, name, Object.getOwnPropertyDescriptor(baseCtor.prototype || baseCtor, name));\n });\n });\n};\n\nclass FirebaseApp {\n constructor(app) {\n return app;\n }\n}\n\nconst FIREBASE_OPTIONS = new InjectionToken('angularfire2.app.options');\nconst FIREBASE_APP_NAME = new InjectionToken('angularfire2.app.name');\nfunction ɵfirebaseAppFactory(options, zone, nameOrConfig) {\n const name = typeof nameOrConfig === 'string' && nameOrConfig || '[DEFAULT]';\n const config = typeof nameOrConfig === 'object' && nameOrConfig || {};\n config.name = config.name || name;\n // Added any due to some inconsistency between @firebase/app and firebase types\n const existingApp = firebase.apps.filter(app => app && app.name === config.name)[0];\n // We support FirebaseConfig, initializeApp's public type only accepts string; need to cast as any\n // Could be solved with https://github.com/firebase/firebase-js-sdk/pull/1206\n const app = (existingApp || zone.runOutsideAngular(() => firebase.initializeApp(options, config)));\n try {\n if (JSON.stringify(options) !== JSON.stringify(app.options)) {\n const hmr = !!module.hot;\n log$1('error', `${app.name} Firebase App already initialized with different options${hmr ? ', you may need to reload as Firebase is not HMR aware.' : '.'}`);\n }\n }\n catch (e) { }\n return new FirebaseApp(app);\n}\nconst log$1 = (level, ...args) => {\n if (isDevMode() && typeof console !== 'undefined') {\n console[level](...args);\n }\n};\nconst FIREBASE_APP_PROVIDER = {\n provide: FirebaseApp,\n useFactory: ɵfirebaseAppFactory,\n deps: [\n FIREBASE_OPTIONS,\n NgZone,\n [new Optional(), FIREBASE_APP_NAME]\n ]\n};\nclass AngularFireModule {\n // tslint:disable-next-line:ban-types\n constructor(platformId) {\n firebase.registerVersion('angularfire', VERSION.full, 'core');\n firebase.registerVersion('angularfire', VERSION.full, 'app-compat');\n firebase.registerVersion('angular', VERSION$1.full, platformId.toString());\n }\n static initializeApp(options, nameOrConfig) {\n return {\n ngModule: AngularFireModule,\n providers: [\n { provide: FIREBASE_OPTIONS, useValue: options },\n { provide: FIREBASE_APP_NAME, useValue: nameOrConfig }\n ]\n };\n }\n}\nAngularFireModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireModule, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.NgModule });\nAngularFireModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireModule });\nAngularFireModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireModule, providers: [FIREBASE_APP_PROVIDER] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [FIREBASE_APP_PROVIDER]\n }]\n }], ctorParameters: function () { return [{ type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; } });\n\nfunction ɵcacheInstance(cacheKey, moduleName, appName, fn, deps) {\n const [, instance, cachedDeps] = globalThis.ɵAngularfireInstanceCache.find((it) => it[0] === cacheKey) || [];\n if (instance) {\n if (!matchDep(deps, cachedDeps)) {\n log('error', `${moduleName} was already initialized on the ${appName} Firebase App with different settings.${IS_HMR ? ' You may need to reload as Firebase is not HMR aware.' : ''}`);\n log('warn', { is: deps, was: cachedDeps });\n }\n return instance;\n }\n else {\n const newInstance = fn();\n globalThis.ɵAngularfireInstanceCache.push([cacheKey, newInstance, deps]);\n return newInstance;\n }\n}\nfunction matchDep(a, b) {\n try {\n return a.toString() === b.toString();\n }\n catch (_) {\n return a === b;\n }\n}\nconst IS_HMR = !!module.hot;\nconst log = (level, ...args) => {\n if (isDevMode() && typeof console !== 'undefined') {\n console[level](...args);\n }\n};\nglobalThis.ɵAngularfireInstanceCache || (globalThis.ɵAngularfireInstanceCache = []);\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AngularFireModule, FIREBASE_APP_NAME, FIREBASE_OPTIONS, FirebaseApp, ɵapplyMixins, ɵcacheInstance, ɵfirebaseAppFactory, ɵlazySDKProxy };\n","import { getApp, _getProvider, _registerComponent, registerVersion } from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { ErrorFactory, FirebaseError } from '@firebase/util';\nimport { openDb } from 'idb';\n\nconst name = \"@firebase/installations\";\nconst version = \"0.5.5\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst PENDING_TIMEOUT_MS = 10000;\r\nconst PACKAGE_VERSION = `w:${version}`;\r\nconst INTERNAL_AUTH_VERSION = 'FIS_v2';\r\nconst INSTALLATIONS_API_URL = 'https://firebaseinstallations.googleapis.com/v1';\r\nconst TOKEN_EXPIRATION_BUFFER = 60 * 60 * 1000; // One hour\r\nconst SERVICE = 'installations';\r\nconst SERVICE_NAME = 'Installations';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERROR_DESCRIPTION_MAP = {\r\n [\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */]: 'Missing App configuration value: \"{$valueName}\"',\r\n [\"not-registered\" /* NOT_REGISTERED */]: 'Firebase Installation is not registered.',\r\n [\"installation-not-found\" /* INSTALLATION_NOT_FOUND */]: 'Firebase Installation not found.',\r\n [\"request-failed\" /* REQUEST_FAILED */]: '{$requestName} request failed with error \"{$serverCode} {$serverStatus}: {$serverMessage}\"',\r\n [\"app-offline\" /* APP_OFFLINE */]: 'Could not process request. Application offline.',\r\n [\"delete-pending-registration\" /* DELETE_PENDING_REGISTRATION */]: \"Can't delete installation while there is a pending registration request.\"\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory(SERVICE, SERVICE_NAME, ERROR_DESCRIPTION_MAP);\r\n/** Returns true if error is a FirebaseError that is based on an error from the server. */\r\nfunction isServerError(error) {\r\n return (error instanceof FirebaseError &&\r\n error.code.includes(\"request-failed\" /* REQUEST_FAILED */));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getInstallationsEndpoint({ projectId }) {\r\n return `${INSTALLATIONS_API_URL}/projects/${projectId}/installations`;\r\n}\r\nfunction extractAuthTokenInfoFromResponse(response) {\r\n return {\r\n token: response.token,\r\n requestStatus: 2 /* COMPLETED */,\r\n expiresIn: getExpiresInFromResponseExpiresIn(response.expiresIn),\r\n creationTime: Date.now()\r\n };\r\n}\r\nasync function getErrorFromResponse(requestName, response) {\r\n const responseJson = await response.json();\r\n const errorData = responseJson.error;\r\n return ERROR_FACTORY.create(\"request-failed\" /* REQUEST_FAILED */, {\r\n requestName,\r\n serverCode: errorData.code,\r\n serverMessage: errorData.message,\r\n serverStatus: errorData.status\r\n });\r\n}\r\nfunction getHeaders({ apiKey }) {\r\n return new Headers({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n 'x-goog-api-key': apiKey\r\n });\r\n}\r\nfunction getHeadersWithAuth(appConfig, { refreshToken }) {\r\n const headers = getHeaders(appConfig);\r\n headers.append('Authorization', getAuthorizationHeader(refreshToken));\r\n return headers;\r\n}\r\n/**\r\n * Calls the passed in fetch wrapper and returns the response.\r\n * If the returned response has a status of 5xx, re-runs the function once and\r\n * returns the response.\r\n */\r\nasync function retryIfServerError(fn) {\r\n const result = await fn();\r\n if (result.status >= 500 && result.status < 600) {\r\n // Internal Server Error. Retry request.\r\n return fn();\r\n }\r\n return result;\r\n}\r\nfunction getExpiresInFromResponseExpiresIn(responseExpiresIn) {\r\n // This works because the server will never respond with fractions of a second.\r\n return Number(responseExpiresIn.replace('s', '000'));\r\n}\r\nfunction getAuthorizationHeader(refreshToken) {\r\n return `${INTERNAL_AUTH_VERSION} ${refreshToken}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function createInstallationRequest(appConfig, { fid }) {\r\n const endpoint = getInstallationsEndpoint(appConfig);\r\n const headers = getHeaders(appConfig);\r\n const body = {\r\n fid,\r\n authVersion: INTERNAL_AUTH_VERSION,\r\n appId: appConfig.appId,\r\n sdkVersion: PACKAGE_VERSION\r\n };\r\n const request = {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(body)\r\n };\r\n const response = await retryIfServerError(() => fetch(endpoint, request));\r\n if (response.ok) {\r\n const responseValue = await response.json();\r\n const registeredInstallationEntry = {\r\n fid: responseValue.fid || fid,\r\n registrationStatus: 2 /* COMPLETED */,\r\n refreshToken: responseValue.refreshToken,\r\n authToken: extractAuthTokenInfoFromResponse(responseValue.authToken)\r\n };\r\n return registeredInstallationEntry;\r\n }\r\n else {\r\n throw await getErrorFromResponse('Create Installation', response);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a promise that resolves after given time passes. */\r\nfunction sleep(ms) {\r\n return new Promise(resolve => {\r\n setTimeout(resolve, ms);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction bufferToBase64UrlSafe(array) {\r\n const b64 = btoa(String.fromCharCode(...array));\r\n return b64.replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst VALID_FID_PATTERN = /^[cdef][\\w-]{21}$/;\r\nconst INVALID_FID = '';\r\n/**\r\n * Generates a new FID using random values from Web Crypto API.\r\n * Returns an empty string if FID generation fails for any reason.\r\n */\r\nfunction generateFid() {\r\n try {\r\n // A valid FID has exactly 22 base64 characters, which is 132 bits, or 16.5\r\n // bytes. our implementation generates a 17 byte array instead.\r\n const fidByteArray = new Uint8Array(17);\r\n const crypto = self.crypto || self.msCrypto;\r\n crypto.getRandomValues(fidByteArray);\r\n // Replace the first 4 random bits with the constant FID header of 0b0111.\r\n fidByteArray[0] = 0b01110000 + (fidByteArray[0] % 0b00010000);\r\n const fid = encode(fidByteArray);\r\n return VALID_FID_PATTERN.test(fid) ? fid : INVALID_FID;\r\n }\r\n catch (_a) {\r\n // FID generation errored\r\n return INVALID_FID;\r\n }\r\n}\r\n/** Converts a FID Uint8Array to a base64 string representation. */\r\nfunction encode(fidByteArray) {\r\n const b64String = bufferToBase64UrlSafe(fidByteArray);\r\n // Remove the 23rd character that was added because of the extra 4 bits at the\r\n // end of our 17 byte array, and the '=' padding.\r\n return b64String.substr(0, 22);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a string key that can be used to identify the app. */\r\nfunction getKey(appConfig) {\r\n return `${appConfig.appName}!${appConfig.appId}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst fidChangeCallbacks = new Map();\r\n/**\r\n * Calls the onIdChange callbacks with the new FID value, and broadcasts the\r\n * change to other tabs.\r\n */\r\nfunction fidChanged(appConfig, fid) {\r\n const key = getKey(appConfig);\r\n callFidChangeCallbacks(key, fid);\r\n broadcastFidChange(key, fid);\r\n}\r\nfunction addCallback(appConfig, callback) {\r\n // Open the broadcast channel if it's not already open,\r\n // to be able to listen to change events from other tabs.\r\n getBroadcastChannel();\r\n const key = getKey(appConfig);\r\n let callbackSet = fidChangeCallbacks.get(key);\r\n if (!callbackSet) {\r\n callbackSet = new Set();\r\n fidChangeCallbacks.set(key, callbackSet);\r\n }\r\n callbackSet.add(callback);\r\n}\r\nfunction removeCallback(appConfig, callback) {\r\n const key = getKey(appConfig);\r\n const callbackSet = fidChangeCallbacks.get(key);\r\n if (!callbackSet) {\r\n return;\r\n }\r\n callbackSet.delete(callback);\r\n if (callbackSet.size === 0) {\r\n fidChangeCallbacks.delete(key);\r\n }\r\n // Close broadcast channel if there are no more callbacks.\r\n closeBroadcastChannel();\r\n}\r\nfunction callFidChangeCallbacks(key, fid) {\r\n const callbacks = fidChangeCallbacks.get(key);\r\n if (!callbacks) {\r\n return;\r\n }\r\n for (const callback of callbacks) {\r\n callback(fid);\r\n }\r\n}\r\nfunction broadcastFidChange(key, fid) {\r\n const channel = getBroadcastChannel();\r\n if (channel) {\r\n channel.postMessage({ key, fid });\r\n }\r\n closeBroadcastChannel();\r\n}\r\nlet broadcastChannel = null;\r\n/** Opens and returns a BroadcastChannel if it is supported by the browser. */\r\nfunction getBroadcastChannel() {\r\n if (!broadcastChannel && 'BroadcastChannel' in self) {\r\n broadcastChannel = new BroadcastChannel('[Firebase] FID Change');\r\n broadcastChannel.onmessage = e => {\r\n callFidChangeCallbacks(e.data.key, e.data.fid);\r\n };\r\n }\r\n return broadcastChannel;\r\n}\r\nfunction closeBroadcastChannel() {\r\n if (fidChangeCallbacks.size === 0 && broadcastChannel) {\r\n broadcastChannel.close();\r\n broadcastChannel = null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DATABASE_NAME = 'firebase-installations-database';\r\nconst DATABASE_VERSION = 1;\r\nconst OBJECT_STORE_NAME = 'firebase-installations-store';\r\nlet dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDb(DATABASE_NAME, DATABASE_VERSION, upgradeDB => {\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (upgradeDB.oldVersion) {\r\n case 0:\r\n upgradeDB.createObjectStore(OBJECT_STORE_NAME);\r\n }\r\n });\r\n }\r\n return dbPromise;\r\n}\r\n/** Assigns or overwrites the record for the given key with the given value. */\r\nasync function set(appConfig, value) {\r\n const key = getKey(appConfig);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n const objectStore = tx.objectStore(OBJECT_STORE_NAME);\r\n const oldValue = await objectStore.get(key);\r\n await objectStore.put(value, key);\r\n await tx.complete;\r\n if (!oldValue || oldValue.fid !== value.fid) {\r\n fidChanged(appConfig, value.fid);\r\n }\r\n return value;\r\n}\r\n/** Removes record(s) from the objectStore that match the given key. */\r\nasync function remove(appConfig) {\r\n const key = getKey(appConfig);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n await tx.objectStore(OBJECT_STORE_NAME).delete(key);\r\n await tx.complete;\r\n}\r\n/**\r\n * Atomically updates a record with the result of updateFn, which gets\r\n * called with the current value. If newValue is undefined, the record is\r\n * deleted instead.\r\n * @return Updated value\r\n */\r\nasync function update(appConfig, updateFn) {\r\n const key = getKey(appConfig);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n const store = tx.objectStore(OBJECT_STORE_NAME);\r\n const oldValue = await store.get(key);\r\n const newValue = updateFn(oldValue);\r\n if (newValue === undefined) {\r\n await store.delete(key);\r\n }\r\n else {\r\n await store.put(newValue, key);\r\n }\r\n await tx.complete;\r\n if (newValue && (!oldValue || oldValue.fid !== newValue.fid)) {\r\n fidChanged(appConfig, newValue.fid);\r\n }\r\n return newValue;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Updates and returns the InstallationEntry from the database.\r\n * Also triggers a registration request if it is necessary and possible.\r\n */\r\nasync function getInstallationEntry(appConfig) {\r\n let registrationPromise;\r\n const installationEntry = await update(appConfig, oldEntry => {\r\n const installationEntry = updateOrCreateInstallationEntry(oldEntry);\r\n const entryWithPromise = triggerRegistrationIfNecessary(appConfig, installationEntry);\r\n registrationPromise = entryWithPromise.registrationPromise;\r\n return entryWithPromise.installationEntry;\r\n });\r\n if (installationEntry.fid === INVALID_FID) {\r\n // FID generation failed. Waiting for the FID from the server.\r\n return { installationEntry: await registrationPromise };\r\n }\r\n return {\r\n installationEntry,\r\n registrationPromise\r\n };\r\n}\r\n/**\r\n * Creates a new Installation Entry if one does not exist.\r\n * Also clears timed out pending requests.\r\n */\r\nfunction updateOrCreateInstallationEntry(oldEntry) {\r\n const entry = oldEntry || {\r\n fid: generateFid(),\r\n registrationStatus: 0 /* NOT_STARTED */\r\n };\r\n return clearTimedOutRequest(entry);\r\n}\r\n/**\r\n * If the Firebase Installation is not registered yet, this will trigger the\r\n * registration and return an InProgressInstallationEntry.\r\n *\r\n * If registrationPromise does not exist, the installationEntry is guaranteed\r\n * to be registered.\r\n */\r\nfunction triggerRegistrationIfNecessary(appConfig, installationEntry) {\r\n if (installationEntry.registrationStatus === 0 /* NOT_STARTED */) {\r\n if (!navigator.onLine) {\r\n // Registration required but app is offline.\r\n const registrationPromiseWithError = Promise.reject(ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */));\r\n return {\r\n installationEntry,\r\n registrationPromise: registrationPromiseWithError\r\n };\r\n }\r\n // Try registering. Change status to IN_PROGRESS.\r\n const inProgressEntry = {\r\n fid: installationEntry.fid,\r\n registrationStatus: 1 /* IN_PROGRESS */,\r\n registrationTime: Date.now()\r\n };\r\n const registrationPromise = registerInstallation(appConfig, inProgressEntry);\r\n return { installationEntry: inProgressEntry, registrationPromise };\r\n }\r\n else if (installationEntry.registrationStatus === 1 /* IN_PROGRESS */) {\r\n return {\r\n installationEntry,\r\n registrationPromise: waitUntilFidRegistration(appConfig)\r\n };\r\n }\r\n else {\r\n return { installationEntry };\r\n }\r\n}\r\n/** This will be executed only once for each new Firebase Installation. */\r\nasync function registerInstallation(appConfig, installationEntry) {\r\n try {\r\n const registeredInstallationEntry = await createInstallationRequest(appConfig, installationEntry);\r\n return set(appConfig, registeredInstallationEntry);\r\n }\r\n catch (e) {\r\n if (isServerError(e) && e.customData.serverCode === 409) {\r\n // Server returned a \"FID can not be used\" error.\r\n // Generate a new ID next time.\r\n await remove(appConfig);\r\n }\r\n else {\r\n // Registration failed. Set FID as not registered.\r\n await set(appConfig, {\r\n fid: installationEntry.fid,\r\n registrationStatus: 0 /* NOT_STARTED */\r\n });\r\n }\r\n throw e;\r\n }\r\n}\r\n/** Call if FID registration is pending in another request. */\r\nasync function waitUntilFidRegistration(appConfig) {\r\n // Unfortunately, there is no way of reliably observing when a value in\r\n // IndexedDB changes (yet, see https://github.com/WICG/indexed-db-observers),\r\n // so we need to poll.\r\n let entry = await updateInstallationRequest(appConfig);\r\n while (entry.registrationStatus === 1 /* IN_PROGRESS */) {\r\n // createInstallation request still in progress.\r\n await sleep(100);\r\n entry = await updateInstallationRequest(appConfig);\r\n }\r\n if (entry.registrationStatus === 0 /* NOT_STARTED */) {\r\n // The request timed out or failed in a different call. Try again.\r\n const { installationEntry, registrationPromise } = await getInstallationEntry(appConfig);\r\n if (registrationPromise) {\r\n return registrationPromise;\r\n }\r\n else {\r\n // if there is no registrationPromise, entry is registered.\r\n return installationEntry;\r\n }\r\n }\r\n return entry;\r\n}\r\n/**\r\n * Called only if there is a CreateInstallation request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * CreateInstallation request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\r\nfunction updateInstallationRequest(appConfig) {\r\n return update(appConfig, oldEntry => {\r\n if (!oldEntry) {\r\n throw ERROR_FACTORY.create(\"installation-not-found\" /* INSTALLATION_NOT_FOUND */);\r\n }\r\n return clearTimedOutRequest(oldEntry);\r\n });\r\n}\r\nfunction clearTimedOutRequest(entry) {\r\n if (hasInstallationRequestTimedOut(entry)) {\r\n return {\r\n fid: entry.fid,\r\n registrationStatus: 0 /* NOT_STARTED */\r\n };\r\n }\r\n return entry;\r\n}\r\nfunction hasInstallationRequestTimedOut(installationEntry) {\r\n return (installationEntry.registrationStatus === 1 /* IN_PROGRESS */ &&\r\n installationEntry.registrationTime + PENDING_TIMEOUT_MS < Date.now());\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function generateAuthTokenRequest({ appConfig, platformLoggerProvider }, installationEntry) {\r\n const endpoint = getGenerateAuthTokenEndpoint(appConfig, installationEntry);\r\n const headers = getHeadersWithAuth(appConfig, installationEntry);\r\n // If platform logger exists, add the platform info string to the header.\r\n const platformLogger = platformLoggerProvider.getImmediate({\r\n optional: true\r\n });\r\n if (platformLogger) {\r\n headers.append('x-firebase-client', platformLogger.getPlatformInfoString());\r\n }\r\n const body = {\r\n installation: {\r\n sdkVersion: PACKAGE_VERSION\r\n }\r\n };\r\n const request = {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(body)\r\n };\r\n const response = await retryIfServerError(() => fetch(endpoint, request));\r\n if (response.ok) {\r\n const responseValue = await response.json();\r\n const completedAuthToken = extractAuthTokenInfoFromResponse(responseValue);\r\n return completedAuthToken;\r\n }\r\n else {\r\n throw await getErrorFromResponse('Generate Auth Token', response);\r\n }\r\n}\r\nfunction getGenerateAuthTokenEndpoint(appConfig, { fid }) {\r\n return `${getInstallationsEndpoint(appConfig)}/${fid}/authTokens:generate`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a valid authentication token for the installation. Generates a new\r\n * token if one doesn't exist, is expired or about to expire.\r\n *\r\n * Should only be called if the Firebase Installation is registered.\r\n */\r\nasync function refreshAuthToken(installations, forceRefresh = false) {\r\n let tokenPromise;\r\n const entry = await update(installations.appConfig, oldEntry => {\r\n if (!isEntryRegistered(oldEntry)) {\r\n throw ERROR_FACTORY.create(\"not-registered\" /* NOT_REGISTERED */);\r\n }\r\n const oldAuthToken = oldEntry.authToken;\r\n if (!forceRefresh && isAuthTokenValid(oldAuthToken)) {\r\n // There is a valid token in the DB.\r\n return oldEntry;\r\n }\r\n else if (oldAuthToken.requestStatus === 1 /* IN_PROGRESS */) {\r\n // There already is a token request in progress.\r\n tokenPromise = waitUntilAuthTokenRequest(installations, forceRefresh);\r\n return oldEntry;\r\n }\r\n else {\r\n // No token or token expired.\r\n if (!navigator.onLine) {\r\n throw ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */);\r\n }\r\n const inProgressEntry = makeAuthTokenRequestInProgressEntry(oldEntry);\r\n tokenPromise = fetchAuthTokenFromServer(installations, inProgressEntry);\r\n return inProgressEntry;\r\n }\r\n });\r\n const authToken = tokenPromise\r\n ? await tokenPromise\r\n : entry.authToken;\r\n return authToken;\r\n}\r\n/**\r\n * Call only if FID is registered and Auth Token request is in progress.\r\n *\r\n * Waits until the current pending request finishes. If the request times out,\r\n * tries once in this thread as well.\r\n */\r\nasync function waitUntilAuthTokenRequest(installations, forceRefresh) {\r\n // Unfortunately, there is no way of reliably observing when a value in\r\n // IndexedDB changes (yet, see https://github.com/WICG/indexed-db-observers),\r\n // so we need to poll.\r\n let entry = await updateAuthTokenRequest(installations.appConfig);\r\n while (entry.authToken.requestStatus === 1 /* IN_PROGRESS */) {\r\n // generateAuthToken still in progress.\r\n await sleep(100);\r\n entry = await updateAuthTokenRequest(installations.appConfig);\r\n }\r\n const authToken = entry.authToken;\r\n if (authToken.requestStatus === 0 /* NOT_STARTED */) {\r\n // The request timed out or failed in a different call. Try again.\r\n return refreshAuthToken(installations, forceRefresh);\r\n }\r\n else {\r\n return authToken;\r\n }\r\n}\r\n/**\r\n * Called only if there is a GenerateAuthToken request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * GenerateAuthToken request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\r\nfunction updateAuthTokenRequest(appConfig) {\r\n return update(appConfig, oldEntry => {\r\n if (!isEntryRegistered(oldEntry)) {\r\n throw ERROR_FACTORY.create(\"not-registered\" /* NOT_REGISTERED */);\r\n }\r\n const oldAuthToken = oldEntry.authToken;\r\n if (hasAuthTokenRequestTimedOut(oldAuthToken)) {\r\n return Object.assign(Object.assign({}, oldEntry), { authToken: { requestStatus: 0 /* NOT_STARTED */ } });\r\n }\r\n return oldEntry;\r\n });\r\n}\r\nasync function fetchAuthTokenFromServer(installations, installationEntry) {\r\n try {\r\n const authToken = await generateAuthTokenRequest(installations, installationEntry);\r\n const updatedInstallationEntry = Object.assign(Object.assign({}, installationEntry), { authToken });\r\n await set(installations.appConfig, updatedInstallationEntry);\r\n return authToken;\r\n }\r\n catch (e) {\r\n if (isServerError(e) &&\r\n (e.customData.serverCode === 401 || e.customData.serverCode === 404)) {\r\n // Server returned a \"FID not found\" or a \"Invalid authentication\" error.\r\n // Generate a new ID next time.\r\n await remove(installations.appConfig);\r\n }\r\n else {\r\n const updatedInstallationEntry = Object.assign(Object.assign({}, installationEntry), { authToken: { requestStatus: 0 /* NOT_STARTED */ } });\r\n await set(installations.appConfig, updatedInstallationEntry);\r\n }\r\n throw e;\r\n }\r\n}\r\nfunction isEntryRegistered(installationEntry) {\r\n return (installationEntry !== undefined &&\r\n installationEntry.registrationStatus === 2 /* COMPLETED */);\r\n}\r\nfunction isAuthTokenValid(authToken) {\r\n return (authToken.requestStatus === 2 /* COMPLETED */ &&\r\n !isAuthTokenExpired(authToken));\r\n}\r\nfunction isAuthTokenExpired(authToken) {\r\n const now = Date.now();\r\n return (now < authToken.creationTime ||\r\n authToken.creationTime + authToken.expiresIn < now + TOKEN_EXPIRATION_BUFFER);\r\n}\r\n/** Returns an updated InstallationEntry with an InProgressAuthToken. */\r\nfunction makeAuthTokenRequestInProgressEntry(oldEntry) {\r\n const inProgressAuthToken = {\r\n requestStatus: 1 /* IN_PROGRESS */,\r\n requestTime: Date.now()\r\n };\r\n return Object.assign(Object.assign({}, oldEntry), { authToken: inProgressAuthToken });\r\n}\r\nfunction hasAuthTokenRequestTimedOut(authToken) {\r\n return (authToken.requestStatus === 1 /* IN_PROGRESS */ &&\r\n authToken.requestTime + PENDING_TIMEOUT_MS < Date.now());\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Creates a Firebase Installation if there isn't one for the app and\r\n * returns the Installation ID.\r\n * @param installations - The `Installations` instance.\r\n *\r\n * @public\r\n */\r\nasync function getId(installations) {\r\n const installationsImpl = installations;\r\n const { installationEntry, registrationPromise } = await getInstallationEntry(installationsImpl.appConfig);\r\n if (registrationPromise) {\r\n registrationPromise.catch(console.error);\r\n }\r\n else {\r\n // If the installation is already registered, update the authentication\r\n // token if needed.\r\n refreshAuthToken(installationsImpl).catch(console.error);\r\n }\r\n return installationEntry.fid;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a Firebase Installations auth token, identifying the current\r\n * Firebase Installation.\r\n * @param installations - The `Installations` instance.\r\n * @param forceRefresh - Force refresh regardless of token expiration.\r\n *\r\n * @public\r\n */\r\nasync function getToken(installations, forceRefresh = false) {\r\n const installationsImpl = installations;\r\n await completeInstallationRegistration(installationsImpl.appConfig);\r\n // At this point we either have a Registered Installation in the DB, or we've\r\n // already thrown an error.\r\n const authToken = await refreshAuthToken(installationsImpl, forceRefresh);\r\n return authToken.token;\r\n}\r\nasync function completeInstallationRegistration(appConfig) {\r\n const { registrationPromise } = await getInstallationEntry(appConfig);\r\n if (registrationPromise) {\r\n // A createInstallation request is in progress. Wait until it finishes.\r\n await registrationPromise;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function deleteInstallationRequest(appConfig, installationEntry) {\r\n const endpoint = getDeleteEndpoint(appConfig, installationEntry);\r\n const headers = getHeadersWithAuth(appConfig, installationEntry);\r\n const request = {\r\n method: 'DELETE',\r\n headers\r\n };\r\n const response = await retryIfServerError(() => fetch(endpoint, request));\r\n if (!response.ok) {\r\n throw await getErrorFromResponse('Delete Installation', response);\r\n }\r\n}\r\nfunction getDeleteEndpoint(appConfig, { fid }) {\r\n return `${getInstallationsEndpoint(appConfig)}/${fid}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Deletes the Firebase Installation and all associated data.\r\n * @param installations - The `Installations` instance.\r\n *\r\n * @public\r\n */\r\nasync function deleteInstallations(installations) {\r\n const { appConfig } = installations;\r\n const entry = await update(appConfig, oldEntry => {\r\n if (oldEntry && oldEntry.registrationStatus === 0 /* NOT_STARTED */) {\r\n // Delete the unregistered entry without sending a deleteInstallation request.\r\n return undefined;\r\n }\r\n return oldEntry;\r\n });\r\n if (entry) {\r\n if (entry.registrationStatus === 1 /* IN_PROGRESS */) {\r\n // Can't delete while trying to register.\r\n throw ERROR_FACTORY.create(\"delete-pending-registration\" /* DELETE_PENDING_REGISTRATION */);\r\n }\r\n else if (entry.registrationStatus === 2 /* COMPLETED */) {\r\n if (!navigator.onLine) {\r\n throw ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */);\r\n }\r\n else {\r\n await deleteInstallationRequest(appConfig, entry);\r\n await remove(appConfig);\r\n }\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Sets a new callback that will get called when Installation ID changes.\r\n * Returns an unsubscribe function that will remove the callback when called.\r\n * @param installations - The `Installations` instance.\r\n * @param callback - The callback function that is invoked when FID changes.\r\n * @returns A function that can be called to unsubscribe.\r\n *\r\n * @public\r\n */\r\nfunction onIdChange(installations, callback) {\r\n const { appConfig } = installations;\r\n addCallback(appConfig, callback);\r\n return () => {\r\n removeCallback(appConfig, callback);\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns an instance of {@link Installations} associated with the given\r\n * {@link @firebase/app#FirebaseApp} instance.\r\n * @param app - The {@link @firebase/app#FirebaseApp} instance.\r\n *\r\n * @public\r\n */\r\nfunction getInstallations(app = getApp()) {\r\n const installationsImpl = _getProvider(app, 'installations').getImmediate();\r\n return installationsImpl;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction extractAppConfig(app) {\r\n if (!app || !app.options) {\r\n throw getMissingValueError('App Configuration');\r\n }\r\n if (!app.name) {\r\n throw getMissingValueError('App Name');\r\n }\r\n // Required app config keys\r\n const configKeys = [\r\n 'projectId',\r\n 'apiKey',\r\n 'appId'\r\n ];\r\n for (const keyName of configKeys) {\r\n if (!app.options[keyName]) {\r\n throw getMissingValueError(keyName);\r\n }\r\n }\r\n return {\r\n appName: app.name,\r\n projectId: app.options.projectId,\r\n apiKey: app.options.apiKey,\r\n appId: app.options.appId\r\n };\r\n}\r\nfunction getMissingValueError(valueName) {\r\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */, {\r\n valueName\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst INSTALLATIONS_NAME = 'installations';\r\nconst INSTALLATIONS_NAME_INTERNAL = 'installations-internal';\r\nconst publicFactory = (container) => {\r\n const app = container.getProvider('app').getImmediate();\r\n // Throws if app isn't configured properly.\r\n const appConfig = extractAppConfig(app);\r\n const platformLoggerProvider = _getProvider(app, 'platform-logger');\r\n const installationsImpl = {\r\n app,\r\n appConfig,\r\n platformLoggerProvider,\r\n _delete: () => Promise.resolve()\r\n };\r\n return installationsImpl;\r\n};\r\nconst internalFactory = (container) => {\r\n const app = container.getProvider('app').getImmediate();\r\n // Internal FIS instance relies on public FIS instance.\r\n const installations = _getProvider(app, INSTALLATIONS_NAME).getImmediate();\r\n const installationsInternal = {\r\n getId: () => getId(installations),\r\n getToken: (forceRefresh) => getToken(installations, forceRefresh)\r\n };\r\n return installationsInternal;\r\n};\r\nfunction registerInstallations() {\r\n _registerComponent(new Component(INSTALLATIONS_NAME, publicFactory, \"PUBLIC\" /* PUBLIC */));\r\n _registerComponent(new Component(INSTALLATIONS_NAME_INTERNAL, internalFactory, \"PRIVATE\" /* PRIVATE */));\r\n}\n\n/**\r\n * Firebase Installations\r\n *\r\n * @packageDocumentation\r\n */\r\nregisterInstallations();\r\nregisterVersion(name, version);\r\n// BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\nregisterVersion(name, version, 'esm2017');\n\nexport { deleteInstallations, getId, getInstallations, getToken, onIdChange };\n","import { getApp, _getProvider, _registerComponent, registerVersion, SDK_VERSION } from '@firebase/app';\nimport { ErrorFactory, FirebaseError, getModularInstance, calculateBackoffMillis, isIndexedDBAvailable, validateIndexedDBOpenable } from '@firebase/util';\nimport { Component } from '@firebase/component';\nimport { LogLevel, Logger } from '@firebase/logger';\nimport '@firebase/installations';\n\nconst name = \"@firebase/remote-config\";\nconst version = \"0.3.4\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Shims a minimal AbortSignal.\r\n *\r\n *

AbortController's AbortSignal conveniently decouples fetch timeout logic from other aspects\r\n * of networking, such as retries. Firebase doesn't use AbortController enough to justify a\r\n * polyfill recommendation, like we do with the Fetch API, but this minimal shim can easily be\r\n * swapped out if/when we do.\r\n */\r\nclass RemoteConfigAbortSignal {\r\n constructor() {\r\n this.listeners = [];\r\n }\r\n addEventListener(listener) {\r\n this.listeners.push(listener);\r\n }\r\n abort() {\r\n this.listeners.forEach(listener => listener());\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst RC_COMPONENT_NAME = 'remote-config';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERROR_DESCRIPTION_MAP = {\r\n [\"registration-window\" /* REGISTRATION_WINDOW */]: 'Undefined window object. This SDK only supports usage in a browser environment.',\r\n [\"registration-project-id\" /* REGISTRATION_PROJECT_ID */]: 'Undefined project identifier. Check Firebase app initialization.',\r\n [\"registration-api-key\" /* REGISTRATION_API_KEY */]: 'Undefined API key. Check Firebase app initialization.',\r\n [\"registration-app-id\" /* REGISTRATION_APP_ID */]: 'Undefined app identifier. Check Firebase app initialization.',\r\n [\"storage-open\" /* STORAGE_OPEN */]: 'Error thrown when opening storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-get\" /* STORAGE_GET */]: 'Error thrown when reading from storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-set\" /* STORAGE_SET */]: 'Error thrown when writing to storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-delete\" /* STORAGE_DELETE */]: 'Error thrown when deleting from storage. Original error: {$originalErrorMessage}.',\r\n [\"fetch-client-network\" /* FETCH_NETWORK */]: 'Fetch client failed to connect to a network. Check Internet connection.' +\r\n ' Original error: {$originalErrorMessage}.',\r\n [\"fetch-timeout\" /* FETCH_TIMEOUT */]: 'The config fetch request timed out. ' +\r\n ' Configure timeout using \"fetchTimeoutMillis\" SDK setting.',\r\n [\"fetch-throttle\" /* FETCH_THROTTLE */]: 'The config fetch request timed out while in an exponential backoff state.' +\r\n ' Configure timeout using \"fetchTimeoutMillis\" SDK setting.' +\r\n ' Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.',\r\n [\"fetch-client-parse\" /* FETCH_PARSE */]: 'Fetch client could not parse response.' +\r\n ' Original error: {$originalErrorMessage}.',\r\n [\"fetch-status\" /* FETCH_STATUS */]: 'Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.',\r\n [\"indexed-db-unavailable\" /* INDEXED_DB_UNAVAILABLE */]: 'Indexed DB is not supported by current browser'\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('remoteconfig' /* service */, 'Remote Config' /* service name */, ERROR_DESCRIPTION_MAP);\r\n// Note how this is like typeof/instanceof, but for ErrorCode.\r\nfunction hasErrorCode(e, errorCode) {\r\n return e instanceof FirebaseError && e.code.indexOf(errorCode) !== -1;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_VALUE_FOR_BOOLEAN = false;\r\nconst DEFAULT_VALUE_FOR_STRING = '';\r\nconst DEFAULT_VALUE_FOR_NUMBER = 0;\r\nconst BOOLEAN_TRUTHY_VALUES = ['1', 'true', 't', 'yes', 'y', 'on'];\r\nclass Value {\r\n constructor(_source, _value = DEFAULT_VALUE_FOR_STRING) {\r\n this._source = _source;\r\n this._value = _value;\r\n }\r\n asString() {\r\n return this._value;\r\n }\r\n asBoolean() {\r\n if (this._source === 'static') {\r\n return DEFAULT_VALUE_FOR_BOOLEAN;\r\n }\r\n return BOOLEAN_TRUTHY_VALUES.indexOf(this._value.toLowerCase()) >= 0;\r\n }\r\n asNumber() {\r\n if (this._source === 'static') {\r\n return DEFAULT_VALUE_FOR_NUMBER;\r\n }\r\n let num = Number(this._value);\r\n if (isNaN(num)) {\r\n num = DEFAULT_VALUE_FOR_NUMBER;\r\n }\r\n return num;\r\n }\r\n getSource() {\r\n return this._source;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n *\r\n * @param app - The {@link @firebase/app#FirebaseApp} instance.\r\n * @returns A {@link RemoteConfig} instance.\r\n *\r\n * @public\r\n */\r\nfunction getRemoteConfig(app = getApp()) {\r\n app = getModularInstance(app);\r\n const rcProvider = _getProvider(app, RC_COMPONENT_NAME);\r\n return rcProvider.getImmediate();\r\n}\r\n/**\r\n * Makes the last fetched config available to the getters.\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n * @returns A `Promise` which resolves to true if the current call activated the fetched configs.\r\n * If the fetched configs were already activated, the `Promise` will resolve to false.\r\n *\r\n * @public\r\n */\r\nasync function activate(remoteConfig) {\r\n const rc = getModularInstance(remoteConfig);\r\n const [lastSuccessfulFetchResponse, activeConfigEtag] = await Promise.all([\r\n rc._storage.getLastSuccessfulFetchResponse(),\r\n rc._storage.getActiveConfigEtag()\r\n ]);\r\n if (!lastSuccessfulFetchResponse ||\r\n !lastSuccessfulFetchResponse.config ||\r\n !lastSuccessfulFetchResponse.eTag ||\r\n lastSuccessfulFetchResponse.eTag === activeConfigEtag) {\r\n // Either there is no successful fetched config, or is the same as current active\r\n // config.\r\n return false;\r\n }\r\n await Promise.all([\r\n rc._storageCache.setActiveConfig(lastSuccessfulFetchResponse.config),\r\n rc._storage.setActiveConfigEtag(lastSuccessfulFetchResponse.eTag)\r\n ]);\r\n return true;\r\n}\r\n/**\r\n * Ensures the last activated config are available to the getters.\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n *\r\n * @returns A `Promise` that resolves when the last activated config is available to the getters.\r\n * @public\r\n */\r\nfunction ensureInitialized(remoteConfig) {\r\n const rc = getModularInstance(remoteConfig);\r\n if (!rc._initializePromise) {\r\n rc._initializePromise = rc._storageCache.loadFromStorage().then(() => {\r\n rc._isInitializationComplete = true;\r\n });\r\n }\r\n return rc._initializePromise;\r\n}\r\n/**\r\n * Fetches and caches configuration from the Remote Config service.\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n * @public\r\n */\r\nasync function fetchConfig(remoteConfig) {\r\n const rc = getModularInstance(remoteConfig);\r\n // Aborts the request after the given timeout, causing the fetch call to\r\n // reject with an `AbortError`.\r\n //\r\n //

Aborting after the request completes is a no-op, so we don't need a\r\n // corresponding `clearTimeout`.\r\n //\r\n // Locating abort logic here because:\r\n // * it uses a developer setting (timeout)\r\n // * it applies to all retries (like curl's max-time arg)\r\n // * it is consistent with the Fetch API's signal input\r\n const abortSignal = new RemoteConfigAbortSignal();\r\n setTimeout(async () => {\r\n // Note a very low delay, eg < 10ms, can elapse before listeners are initialized.\r\n abortSignal.abort();\r\n }, rc.settings.fetchTimeoutMillis);\r\n // Catches *all* errors thrown by client so status can be set consistently.\r\n try {\r\n await rc._client.fetch({\r\n cacheMaxAgeMillis: rc.settings.minimumFetchIntervalMillis,\r\n signal: abortSignal\r\n });\r\n await rc._storageCache.setLastFetchStatus('success');\r\n }\r\n catch (e) {\r\n const lastFetchStatus = hasErrorCode(e, \"fetch-throttle\" /* FETCH_THROTTLE */)\r\n ? 'throttle'\r\n : 'failure';\r\n await rc._storageCache.setLastFetchStatus(lastFetchStatus);\r\n throw e;\r\n }\r\n}\r\n/**\r\n * Gets all config.\r\n *\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n * @returns All config.\r\n *\r\n * @public\r\n */\r\nfunction getAll(remoteConfig) {\r\n const rc = getModularInstance(remoteConfig);\r\n return getAllKeys(rc._storageCache.getActiveConfig(), rc.defaultConfig).reduce((allConfigs, key) => {\r\n allConfigs[key] = getValue(remoteConfig, key);\r\n return allConfigs;\r\n }, {});\r\n}\r\n/**\r\n * Gets the value for the given key as a boolean.\r\n *\r\n * Convenience method for calling remoteConfig.getValue(key).asBoolean().\r\n *\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n * @param key - The name of the parameter.\r\n *\r\n * @returns The value for the given key as a boolean.\r\n * @public\r\n */\r\nfunction getBoolean(remoteConfig, key) {\r\n return getValue(getModularInstance(remoteConfig), key).asBoolean();\r\n}\r\n/**\r\n * Gets the value for the given key as a number.\r\n *\r\n * Convenience method for calling remoteConfig.getValue(key).asNumber().\r\n *\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n * @param key - The name of the parameter.\r\n *\r\n * @returns The value for the given key as a number.\r\n *\r\n * @public\r\n */\r\nfunction getNumber(remoteConfig, key) {\r\n return getValue(getModularInstance(remoteConfig), key).asNumber();\r\n}\r\n/**\r\n * Gets the value for the given key as a string.\r\n * Convenience method for calling remoteConfig.getValue(key).asString().\r\n *\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n * @param key - The name of the parameter.\r\n *\r\n * @returns The value for the given key as a string.\r\n *\r\n * @public\r\n */\r\nfunction getString(remoteConfig, key) {\r\n return getValue(getModularInstance(remoteConfig), key).asString();\r\n}\r\n/**\r\n * Gets the {@link Value} for the given key.\r\n *\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n * @param key - The name of the parameter.\r\n *\r\n * @returns The value for the given key.\r\n *\r\n * @public\r\n */\r\nfunction getValue(remoteConfig, key) {\r\n const rc = getModularInstance(remoteConfig);\r\n if (!rc._isInitializationComplete) {\r\n rc._logger.debug(`A value was requested for key \"${key}\" before SDK initialization completed.` +\r\n ' Await on ensureInitialized if the intent was to get a previously activated value.');\r\n }\r\n const activeConfig = rc._storageCache.getActiveConfig();\r\n if (activeConfig && activeConfig[key] !== undefined) {\r\n return new Value('remote', activeConfig[key]);\r\n }\r\n else if (rc.defaultConfig && rc.defaultConfig[key] !== undefined) {\r\n return new Value('default', String(rc.defaultConfig[key]));\r\n }\r\n rc._logger.debug(`Returning static value for key \"${key}\".` +\r\n ' Define a default or remote value if this is unintentional.');\r\n return new Value('static');\r\n}\r\n/**\r\n * Defines the log level to use.\r\n *\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n * @param logLevel - The log level to set.\r\n *\r\n * @public\r\n */\r\nfunction setLogLevel(remoteConfig, logLevel) {\r\n const rc = getModularInstance(remoteConfig);\r\n switch (logLevel) {\r\n case 'debug':\r\n rc._logger.logLevel = LogLevel.DEBUG;\r\n break;\r\n case 'silent':\r\n rc._logger.logLevel = LogLevel.SILENT;\r\n break;\r\n default:\r\n rc._logger.logLevel = LogLevel.ERROR;\r\n }\r\n}\r\n/**\r\n * Dedupes and returns an array of all the keys of the received objects.\r\n */\r\nfunction getAllKeys(obj1 = {}, obj2 = {}) {\r\n return Object.keys(Object.assign(Object.assign({}, obj1), obj2));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Implements the {@link RemoteConfigClient} abstraction with success response caching.\r\n *\r\n *

Comparable to the browser's Cache API for responses, but the Cache API requires a Service\r\n * Worker, which requires HTTPS, which would significantly complicate SDK installation. Also, the\r\n * Cache API doesn't support matching entries by time.\r\n */\r\nclass CachingClient {\r\n constructor(client, storage, storageCache, logger) {\r\n this.client = client;\r\n this.storage = storage;\r\n this.storageCache = storageCache;\r\n this.logger = logger;\r\n }\r\n /**\r\n * Returns true if the age of the cached fetched configs is less than or equal to\r\n * {@link Settings#minimumFetchIntervalInSeconds}.\r\n *\r\n *

This is comparable to passing `headers = { 'Cache-Control': max-age }` to the\r\n * native Fetch API.\r\n *\r\n *

Visible for testing.\r\n */\r\n isCachedDataFresh(cacheMaxAgeMillis, lastSuccessfulFetchTimestampMillis) {\r\n // Cache can only be fresh if it's populated.\r\n if (!lastSuccessfulFetchTimestampMillis) {\r\n this.logger.debug('Config fetch cache check. Cache unpopulated.');\r\n return false;\r\n }\r\n // Calculates age of cache entry.\r\n const cacheAgeMillis = Date.now() - lastSuccessfulFetchTimestampMillis;\r\n const isCachedDataFresh = cacheAgeMillis <= cacheMaxAgeMillis;\r\n this.logger.debug('Config fetch cache check.' +\r\n ` Cache age millis: ${cacheAgeMillis}.` +\r\n ` Cache max age millis (minimumFetchIntervalMillis setting): ${cacheMaxAgeMillis}.` +\r\n ` Is cache hit: ${isCachedDataFresh}.`);\r\n return isCachedDataFresh;\r\n }\r\n async fetch(request) {\r\n // Reads from persisted storage to avoid cache miss if callers don't wait on initialization.\r\n const [lastSuccessfulFetchTimestampMillis, lastSuccessfulFetchResponse] = await Promise.all([\r\n this.storage.getLastSuccessfulFetchTimestampMillis(),\r\n this.storage.getLastSuccessfulFetchResponse()\r\n ]);\r\n // Exits early on cache hit.\r\n if (lastSuccessfulFetchResponse &&\r\n this.isCachedDataFresh(request.cacheMaxAgeMillis, lastSuccessfulFetchTimestampMillis)) {\r\n return lastSuccessfulFetchResponse;\r\n }\r\n // Deviates from pure decorator by not honoring a passed ETag since we don't have a public API\r\n // that allows the caller to pass an ETag.\r\n request.eTag =\r\n lastSuccessfulFetchResponse && lastSuccessfulFetchResponse.eTag;\r\n // Falls back to service on cache miss.\r\n const response = await this.client.fetch(request);\r\n // Fetch throws for non-success responses, so success is guaranteed here.\r\n const storageOperations = [\r\n // Uses write-through cache for consistency with synchronous public API.\r\n this.storageCache.setLastSuccessfulFetchTimestampMillis(Date.now())\r\n ];\r\n if (response.status === 200) {\r\n // Caches response only if it has changed, ie non-304 responses.\r\n storageOperations.push(this.storage.setLastSuccessfulFetchResponse(response));\r\n }\r\n await Promise.all(storageOperations);\r\n return response;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Attempts to get the most accurate browser language setting.\r\n *\r\n *

Adapted from getUserLanguage in packages/auth/src/utils.js for TypeScript.\r\n *\r\n *

Defers default language specification to server logic for consistency.\r\n *\r\n * @param navigatorLanguage Enables tests to override read-only {@link NavigatorLanguage}.\r\n */\r\nfunction getUserLanguage(navigatorLanguage = navigator) {\r\n return (\r\n // Most reliable, but only supported in Chrome/Firefox.\r\n (navigatorLanguage.languages && navigatorLanguage.languages[0]) ||\r\n // Supported in most browsers, but returns the language of the browser\r\n // UI, not the language set in browser settings.\r\n navigatorLanguage.language\r\n // Polyfill otherwise.\r\n );\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Implements the Client abstraction for the Remote Config REST API.\r\n */\r\nclass RestClient {\r\n constructor(firebaseInstallations, sdkVersion, namespace, projectId, apiKey, appId) {\r\n this.firebaseInstallations = firebaseInstallations;\r\n this.sdkVersion = sdkVersion;\r\n this.namespace = namespace;\r\n this.projectId = projectId;\r\n this.apiKey = apiKey;\r\n this.appId = appId;\r\n }\r\n /**\r\n * Fetches from the Remote Config REST API.\r\n *\r\n * @throws a {@link ErrorCode.FETCH_NETWORK} error if {@link GlobalFetch#fetch} can't\r\n * connect to the network.\r\n * @throws a {@link ErrorCode.FETCH_PARSE} error if {@link Response#json} can't parse the\r\n * fetch response.\r\n * @throws a {@link ErrorCode.FETCH_STATUS} error if the service returns an HTTP error status.\r\n */\r\n async fetch(request) {\r\n const [installationId, installationToken] = await Promise.all([\r\n this.firebaseInstallations.getId(),\r\n this.firebaseInstallations.getToken()\r\n ]);\r\n const urlBase = window.FIREBASE_REMOTE_CONFIG_URL_BASE ||\r\n 'https://firebaseremoteconfig.googleapis.com';\r\n const url = `${urlBase}/v1/projects/${this.projectId}/namespaces/${this.namespace}:fetch?key=${this.apiKey}`;\r\n const headers = {\r\n 'Content-Type': 'application/json',\r\n 'Content-Encoding': 'gzip',\r\n // Deviates from pure decorator by not passing max-age header since we don't currently have\r\n // service behavior using that header.\r\n 'If-None-Match': request.eTag || '*'\r\n };\r\n const requestBody = {\r\n /* eslint-disable camelcase */\r\n sdk_version: this.sdkVersion,\r\n app_instance_id: installationId,\r\n app_instance_id_token: installationToken,\r\n app_id: this.appId,\r\n language_code: getUserLanguage()\r\n /* eslint-enable camelcase */\r\n };\r\n const options = {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(requestBody)\r\n };\r\n // This logic isn't REST-specific, but shimming abort logic isn't worth another decorator.\r\n const fetchPromise = fetch(url, options);\r\n const timeoutPromise = new Promise((_resolve, reject) => {\r\n // Maps async event listener to Promise API.\r\n request.signal.addEventListener(() => {\r\n // Emulates https://heycam.github.io/webidl/#aborterror\r\n const error = new Error('The operation was aborted.');\r\n error.name = 'AbortError';\r\n reject(error);\r\n });\r\n });\r\n let response;\r\n try {\r\n await Promise.race([fetchPromise, timeoutPromise]);\r\n response = await fetchPromise;\r\n }\r\n catch (originalError) {\r\n let errorCode = \"fetch-client-network\" /* FETCH_NETWORK */;\r\n if (originalError.name === 'AbortError') {\r\n errorCode = \"fetch-timeout\" /* FETCH_TIMEOUT */;\r\n }\r\n throw ERROR_FACTORY.create(errorCode, {\r\n originalErrorMessage: originalError.message\r\n });\r\n }\r\n let status = response.status;\r\n // Normalizes nullable header to optional.\r\n const responseEtag = response.headers.get('ETag') || undefined;\r\n let config;\r\n let state;\r\n // JSON parsing throws SyntaxError if the response body isn't a JSON string.\r\n // Requesting application/json and checking for a 200 ensures there's JSON data.\r\n if (response.status === 200) {\r\n let responseBody;\r\n try {\r\n responseBody = await response.json();\r\n }\r\n catch (originalError) {\r\n throw ERROR_FACTORY.create(\"fetch-client-parse\" /* FETCH_PARSE */, {\r\n originalErrorMessage: originalError.message\r\n });\r\n }\r\n config = responseBody['entries'];\r\n state = responseBody['state'];\r\n }\r\n // Normalizes based on legacy state.\r\n if (state === 'INSTANCE_STATE_UNSPECIFIED') {\r\n status = 500;\r\n }\r\n else if (state === 'NO_CHANGE') {\r\n status = 304;\r\n }\r\n else if (state === 'NO_TEMPLATE' || state === 'EMPTY_CONFIG') {\r\n // These cases can be fixed remotely, so normalize to safe value.\r\n config = {};\r\n }\r\n // Normalize to exception-based control flow for non-success cases.\r\n // Encapsulates HTTP specifics in this class as much as possible. Status is still the best for\r\n // differentiating success states (200 from 304; the state body param is undefined in a\r\n // standard 304).\r\n if (status !== 304 && status !== 200) {\r\n throw ERROR_FACTORY.create(\"fetch-status\" /* FETCH_STATUS */, {\r\n httpStatus: status\r\n });\r\n }\r\n return { status, eTag: responseEtag, config };\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Supports waiting on a backoff by:\r\n *\r\n *

    \r\n *
  • Promisifying setTimeout, so we can set a timeout in our Promise chain
  • \r\n *
  • Listening on a signal bus for abort events, just like the Fetch API
  • \r\n *
  • Failing in the same way the Fetch API fails, so timing out a live request and a throttled\r\n * request appear the same.
  • \r\n *
\r\n *\r\n *

Visible for testing.\r\n */\r\nfunction setAbortableTimeout(signal, throttleEndTimeMillis) {\r\n return new Promise((resolve, reject) => {\r\n // Derives backoff from given end time, normalizing negative numbers to zero.\r\n const backoffMillis = Math.max(throttleEndTimeMillis - Date.now(), 0);\r\n const timeout = setTimeout(resolve, backoffMillis);\r\n // Adds listener, rather than sets onabort, because signal is a shared object.\r\n signal.addEventListener(() => {\r\n clearTimeout(timeout);\r\n // If the request completes before this timeout, the rejection has no effect.\r\n reject(ERROR_FACTORY.create(\"fetch-throttle\" /* FETCH_THROTTLE */, {\r\n throttleEndTimeMillis\r\n }));\r\n });\r\n });\r\n}\r\n/**\r\n * Returns true if the {@link Error} indicates a fetch request may succeed later.\r\n */\r\nfunction isRetriableError(e) {\r\n if (!(e instanceof FirebaseError) || !e.customData) {\r\n return false;\r\n }\r\n // Uses string index defined by ErrorData, which FirebaseError implements.\r\n const httpStatus = Number(e.customData['httpStatus']);\r\n return (httpStatus === 429 ||\r\n httpStatus === 500 ||\r\n httpStatus === 503 ||\r\n httpStatus === 504);\r\n}\r\n/**\r\n * Decorates a Client with retry logic.\r\n *\r\n *

Comparable to CachingClient, but uses backoff logic instead of cache max age and doesn't cache\r\n * responses (because the SDK has no use for error responses).\r\n */\r\nclass RetryingClient {\r\n constructor(client, storage) {\r\n this.client = client;\r\n this.storage = storage;\r\n }\r\n async fetch(request) {\r\n const throttleMetadata = (await this.storage.getThrottleMetadata()) || {\r\n backoffCount: 0,\r\n throttleEndTimeMillis: Date.now()\r\n };\r\n return this.attemptFetch(request, throttleMetadata);\r\n }\r\n /**\r\n * A recursive helper for attempting a fetch request repeatedly.\r\n *\r\n * @throws any non-retriable errors.\r\n */\r\n async attemptFetch(request, { throttleEndTimeMillis, backoffCount }) {\r\n // Starts with a (potentially zero) timeout to support resumption from stored state.\r\n // Ensures the throttle end time is honored if the last attempt timed out.\r\n // Note the SDK will never make a request if the fetch timeout expires at this point.\r\n await setAbortableTimeout(request.signal, throttleEndTimeMillis);\r\n try {\r\n const response = await this.client.fetch(request);\r\n // Note the SDK only clears throttle state if response is success or non-retriable.\r\n await this.storage.deleteThrottleMetadata();\r\n return response;\r\n }\r\n catch (e) {\r\n if (!isRetriableError(e)) {\r\n throw e;\r\n }\r\n // Increments backoff state.\r\n const throttleMetadata = {\r\n throttleEndTimeMillis: Date.now() + calculateBackoffMillis(backoffCount),\r\n backoffCount: backoffCount + 1\r\n };\r\n // Persists state.\r\n await this.storage.setThrottleMetadata(throttleMetadata);\r\n return this.attemptFetch(request, throttleMetadata);\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_FETCH_TIMEOUT_MILLIS = 60 * 1000; // One minute\r\nconst DEFAULT_CACHE_MAX_AGE_MILLIS = 12 * 60 * 60 * 1000; // Twelve hours.\r\n/**\r\n * Encapsulates business logic mapping network and storage dependencies to the public SDK API.\r\n *\r\n * See {@link https://github.com/FirebasePrivate/firebase-js-sdk/blob/master/packages/firebase/index.d.ts|interface documentation} for method descriptions.\r\n */\r\nclass RemoteConfig {\r\n constructor(\r\n // Required by FirebaseServiceFactory interface.\r\n app, \r\n // JS doesn't support private yet\r\n // (https://github.com/tc39/proposal-class-fields#private-fields), so we hint using an\r\n // underscore prefix.\r\n /**\r\n * @internal\r\n */\r\n _client, \r\n /**\r\n * @internal\r\n */\r\n _storageCache, \r\n /**\r\n * @internal\r\n */\r\n _storage, \r\n /**\r\n * @internal\r\n */\r\n _logger) {\r\n this.app = app;\r\n this._client = _client;\r\n this._storageCache = _storageCache;\r\n this._storage = _storage;\r\n this._logger = _logger;\r\n /**\r\n * Tracks completion of initialization promise.\r\n * @internal\r\n */\r\n this._isInitializationComplete = false;\r\n this.settings = {\r\n fetchTimeoutMillis: DEFAULT_FETCH_TIMEOUT_MILLIS,\r\n minimumFetchIntervalMillis: DEFAULT_CACHE_MAX_AGE_MILLIS\r\n };\r\n this.defaultConfig = {};\r\n }\r\n get fetchTimeMillis() {\r\n return this._storageCache.getLastSuccessfulFetchTimestampMillis() || -1;\r\n }\r\n get lastFetchStatus() {\r\n return this._storageCache.getLastFetchStatus() || 'no-fetch-yet';\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Converts an error event associated with a {@link IDBRequest} to a {@link FirebaseError}.\r\n */\r\nfunction toFirebaseError(event, errorCode) {\r\n const originalError = event.target.error || undefined;\r\n return ERROR_FACTORY.create(errorCode, {\r\n originalErrorMessage: originalError && originalError.message\r\n });\r\n}\r\n/**\r\n * A general-purpose store keyed by app + namespace + {@link\r\n * ProjectNamespaceKeyFieldValue}.\r\n *\r\n *

The Remote Config SDK can be used with multiple app installations, and each app can interact\r\n * with multiple namespaces, so this store uses app (ID + name) and namespace as common parent keys\r\n * for a set of key-value pairs. See {@link Storage#createCompositeKey}.\r\n *\r\n *

Visible for testing.\r\n */\r\nconst APP_NAMESPACE_STORE = 'app_namespace_store';\r\nconst DB_NAME = 'firebase_remote_config';\r\nconst DB_VERSION = 1;\r\n// Visible for testing.\r\nfunction openDatabase() {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const request = indexedDB.open(DB_NAME, DB_VERSION);\r\n request.onerror = event => {\r\n reject(toFirebaseError(event, \"storage-open\" /* STORAGE_OPEN */));\r\n };\r\n request.onsuccess = event => {\r\n resolve(event.target.result);\r\n };\r\n request.onupgradeneeded = event => {\r\n const db = event.target.result;\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (event.oldVersion) {\r\n case 0:\r\n db.createObjectStore(APP_NAMESPACE_STORE, {\r\n keyPath: 'compositeKey'\r\n });\r\n }\r\n };\r\n }\r\n catch (error) {\r\n reject(ERROR_FACTORY.create(\"storage-open\" /* STORAGE_OPEN */, {\r\n originalErrorMessage: error\r\n }));\r\n }\r\n });\r\n}\r\n/**\r\n * Abstracts data persistence.\r\n */\r\nclass Storage {\r\n /**\r\n * @param appId enables storage segmentation by app (ID + name).\r\n * @param appName enables storage segmentation by app (ID + name).\r\n * @param namespace enables storage segmentation by namespace.\r\n */\r\n constructor(appId, appName, namespace, openDbPromise = openDatabase()) {\r\n this.appId = appId;\r\n this.appName = appName;\r\n this.namespace = namespace;\r\n this.openDbPromise = openDbPromise;\r\n }\r\n getLastFetchStatus() {\r\n return this.get('last_fetch_status');\r\n }\r\n setLastFetchStatus(status) {\r\n return this.set('last_fetch_status', status);\r\n }\r\n // This is comparable to a cache entry timestamp. If we need to expire other data, we could\r\n // consider adding timestamp to all storage records and an optional max age arg to getters.\r\n getLastSuccessfulFetchTimestampMillis() {\r\n return this.get('last_successful_fetch_timestamp_millis');\r\n }\r\n setLastSuccessfulFetchTimestampMillis(timestamp) {\r\n return this.set('last_successful_fetch_timestamp_millis', timestamp);\r\n }\r\n getLastSuccessfulFetchResponse() {\r\n return this.get('last_successful_fetch_response');\r\n }\r\n setLastSuccessfulFetchResponse(response) {\r\n return this.set('last_successful_fetch_response', response);\r\n }\r\n getActiveConfig() {\r\n return this.get('active_config');\r\n }\r\n setActiveConfig(config) {\r\n return this.set('active_config', config);\r\n }\r\n getActiveConfigEtag() {\r\n return this.get('active_config_etag');\r\n }\r\n setActiveConfigEtag(etag) {\r\n return this.set('active_config_etag', etag);\r\n }\r\n getThrottleMetadata() {\r\n return this.get('throttle_metadata');\r\n }\r\n setThrottleMetadata(metadata) {\r\n return this.set('throttle_metadata', metadata);\r\n }\r\n deleteThrottleMetadata() {\r\n return this.delete('throttle_metadata');\r\n }\r\n async get(key) {\r\n const db = await this.openDbPromise;\r\n return new Promise((resolve, reject) => {\r\n const transaction = db.transaction([APP_NAMESPACE_STORE], 'readonly');\r\n const objectStore = transaction.objectStore(APP_NAMESPACE_STORE);\r\n const compositeKey = this.createCompositeKey(key);\r\n try {\r\n const request = objectStore.get(compositeKey);\r\n request.onerror = event => {\r\n reject(toFirebaseError(event, \"storage-get\" /* STORAGE_GET */));\r\n };\r\n request.onsuccess = event => {\r\n const result = event.target.result;\r\n if (result) {\r\n resolve(result.value);\r\n }\r\n else {\r\n resolve(undefined);\r\n }\r\n };\r\n }\r\n catch (e) {\r\n reject(ERROR_FACTORY.create(\"storage-get\" /* STORAGE_GET */, {\r\n originalErrorMessage: e && e.message\r\n }));\r\n }\r\n });\r\n }\r\n async set(key, value) {\r\n const db = await this.openDbPromise;\r\n return new Promise((resolve, reject) => {\r\n const transaction = db.transaction([APP_NAMESPACE_STORE], 'readwrite');\r\n const objectStore = transaction.objectStore(APP_NAMESPACE_STORE);\r\n const compositeKey = this.createCompositeKey(key);\r\n try {\r\n const request = objectStore.put({\r\n compositeKey,\r\n value\r\n });\r\n request.onerror = (event) => {\r\n reject(toFirebaseError(event, \"storage-set\" /* STORAGE_SET */));\r\n };\r\n request.onsuccess = () => {\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(ERROR_FACTORY.create(\"storage-set\" /* STORAGE_SET */, {\r\n originalErrorMessage: e && e.message\r\n }));\r\n }\r\n });\r\n }\r\n async delete(key) {\r\n const db = await this.openDbPromise;\r\n return new Promise((resolve, reject) => {\r\n const transaction = db.transaction([APP_NAMESPACE_STORE], 'readwrite');\r\n const objectStore = transaction.objectStore(APP_NAMESPACE_STORE);\r\n const compositeKey = this.createCompositeKey(key);\r\n try {\r\n const request = objectStore.delete(compositeKey);\r\n request.onerror = (event) => {\r\n reject(toFirebaseError(event, \"storage-delete\" /* STORAGE_DELETE */));\r\n };\r\n request.onsuccess = () => {\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(ERROR_FACTORY.create(\"storage-delete\" /* STORAGE_DELETE */, {\r\n originalErrorMessage: e && e.message\r\n }));\r\n }\r\n });\r\n }\r\n // Facilitates composite key functionality (which is unsupported in IE).\r\n createCompositeKey(key) {\r\n return [this.appId, this.appName, this.namespace, key].join();\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A memory cache layer over storage to support the SDK's synchronous read requirements.\r\n */\r\nclass StorageCache {\r\n constructor(storage) {\r\n this.storage = storage;\r\n }\r\n /**\r\n * Memory-only getters\r\n */\r\n getLastFetchStatus() {\r\n return this.lastFetchStatus;\r\n }\r\n getLastSuccessfulFetchTimestampMillis() {\r\n return this.lastSuccessfulFetchTimestampMillis;\r\n }\r\n getActiveConfig() {\r\n return this.activeConfig;\r\n }\r\n /**\r\n * Read-ahead getter\r\n */\r\n async loadFromStorage() {\r\n const lastFetchStatusPromise = this.storage.getLastFetchStatus();\r\n const lastSuccessfulFetchTimestampMillisPromise = this.storage.getLastSuccessfulFetchTimestampMillis();\r\n const activeConfigPromise = this.storage.getActiveConfig();\r\n // Note:\r\n // 1. we consistently check for undefined to avoid clobbering defined values\r\n // in memory\r\n // 2. we defer awaiting to improve readability, as opposed to destructuring\r\n // a Promise.all result, for example\r\n const lastFetchStatus = await lastFetchStatusPromise;\r\n if (lastFetchStatus) {\r\n this.lastFetchStatus = lastFetchStatus;\r\n }\r\n const lastSuccessfulFetchTimestampMillis = await lastSuccessfulFetchTimestampMillisPromise;\r\n if (lastSuccessfulFetchTimestampMillis) {\r\n this.lastSuccessfulFetchTimestampMillis =\r\n lastSuccessfulFetchTimestampMillis;\r\n }\r\n const activeConfig = await activeConfigPromise;\r\n if (activeConfig) {\r\n this.activeConfig = activeConfig;\r\n }\r\n }\r\n /**\r\n * Write-through setters\r\n */\r\n setLastFetchStatus(status) {\r\n this.lastFetchStatus = status;\r\n return this.storage.setLastFetchStatus(status);\r\n }\r\n setLastSuccessfulFetchTimestampMillis(timestampMillis) {\r\n this.lastSuccessfulFetchTimestampMillis = timestampMillis;\r\n return this.storage.setLastSuccessfulFetchTimestampMillis(timestampMillis);\r\n }\r\n setActiveConfig(activeConfig) {\r\n this.activeConfig = activeConfig;\r\n return this.storage.setActiveConfig(activeConfig);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction registerRemoteConfig() {\r\n _registerComponent(new Component(RC_COMPONENT_NAME, remoteConfigFactory, \"PUBLIC\" /* PUBLIC */).setMultipleInstances(true));\r\n registerVersion(name, version);\r\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\n registerVersion(name, version, 'esm2017');\r\n function remoteConfigFactory(container, { instanceIdentifier: namespace }) {\r\n /* Dependencies */\r\n // getImmediate for FirebaseApp will always succeed\r\n const app = container.getProvider('app').getImmediate();\r\n // The following call will always succeed because rc has `import '@firebase/installations'`\r\n const installations = container\r\n .getProvider('installations-internal')\r\n .getImmediate();\r\n // Guards against the SDK being used in non-browser environments.\r\n if (typeof window === 'undefined') {\r\n throw ERROR_FACTORY.create(\"registration-window\" /* REGISTRATION_WINDOW */);\r\n }\r\n // Guards against the SDK being used when indexedDB is not available.\r\n if (!isIndexedDBAvailable()) {\r\n throw ERROR_FACTORY.create(\"indexed-db-unavailable\" /* INDEXED_DB_UNAVAILABLE */);\r\n }\r\n // Normalizes optional inputs.\r\n const { projectId, apiKey, appId } = app.options;\r\n if (!projectId) {\r\n throw ERROR_FACTORY.create(\"registration-project-id\" /* REGISTRATION_PROJECT_ID */);\r\n }\r\n if (!apiKey) {\r\n throw ERROR_FACTORY.create(\"registration-api-key\" /* REGISTRATION_API_KEY */);\r\n }\r\n if (!appId) {\r\n throw ERROR_FACTORY.create(\"registration-app-id\" /* REGISTRATION_APP_ID */);\r\n }\r\n namespace = namespace || 'firebase';\r\n const storage = new Storage(appId, app.name, namespace);\r\n const storageCache = new StorageCache(storage);\r\n const logger = new Logger(name);\r\n // Sets ERROR as the default log level.\r\n // See RemoteConfig#setLogLevel for corresponding normalization to ERROR log level.\r\n logger.logLevel = LogLevel.ERROR;\r\n const restClient = new RestClient(installations, \r\n // Uses the JS SDK version, by which the RC package version can be deduced, if necessary.\r\n SDK_VERSION, namespace, projectId, apiKey, appId);\r\n const retryingClient = new RetryingClient(restClient, storage);\r\n const cachingClient = new CachingClient(retryingClient, storage, storageCache, logger);\r\n const remoteConfigInstance = new RemoteConfig(app, cachingClient, storageCache, storage, logger);\r\n // Starts warming cache.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n ensureInitialized(remoteConfigInstance);\r\n return remoteConfigInstance;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// This API is put in a separate file, so we can stub fetchConfig and activate in tests.\r\n// It's not possible to stub standalone functions from the same module.\r\n/**\r\n *\r\n * Performs fetch and activate operations, as a convenience.\r\n *\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n *\r\n * @returns A `Promise` which resolves to true if the current call activated the fetched configs.\r\n * If the fetched configs were already activated, the `Promise` will resolve to false.\r\n *\r\n * @public\r\n */\r\nasync function fetchAndActivate(remoteConfig) {\r\n remoteConfig = getModularInstance(remoteConfig);\r\n await fetchConfig(remoteConfig);\r\n return activate(remoteConfig);\r\n}\r\n/**\r\n * This method provides two different checks:\r\n *\r\n * 1. Check if IndexedDB exists in the browser environment.\r\n * 2. Check if the current browser context allows IndexedDB `open()` calls.\r\n *\r\n * @returns A `Promise` which resolves to true if a {@link RemoteConfig} instance\r\n * can be initialized in this environment, or false if it cannot.\r\n * @public\r\n */\r\nasync function isSupported() {\r\n if (!isIndexedDBAvailable()) {\r\n return false;\r\n }\r\n try {\r\n const isDBOpenable = await validateIndexedDBOpenable();\r\n return isDBOpenable;\r\n }\r\n catch (error) {\r\n return false;\r\n }\r\n}\n\n/**\r\n * Firebase Remote Config\r\n *\r\n * @packageDocumentation\r\n */\r\n/** register component and version */\r\nregisterRemoteConfig();\n\nexport { activate, ensureInitialized, fetchAndActivate, fetchConfig, getAll, getBoolean, getNumber, getRemoteConfig, getString, getValue, isSupported, setLogLevel };\n","import '@firebase/installations';\nimport { Component } from '@firebase/component';\nimport { openDb, deleteDb } from 'idb';\nimport { ErrorFactory, isIndexedDBAvailable, validateIndexedDBOpenable, areCookiesEnabled, getModularInstance } from '@firebase/util';\nimport { _registerComponent, registerVersion, getApp, _getProvider } from '@firebase/app';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_SW_PATH = '/firebase-messaging-sw.js';\r\nconst DEFAULT_SW_SCOPE = '/firebase-cloud-messaging-push-scope';\r\nconst DEFAULT_VAPID_KEY = 'BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4';\r\nconst ENDPOINT = 'https://fcmregistrations.googleapis.com/v1';\r\nconst CONSOLE_CAMPAIGN_ID = 'google.c.a.c_id';\r\nconst CONSOLE_CAMPAIGN_NAME = 'google.c.a.c_l';\r\nconst CONSOLE_CAMPAIGN_TIME = 'google.c.a.ts';\r\n/** Set to '1' if Analytics is enabled for the campaign */\r\nconst CONSOLE_CAMPAIGN_ANALYTICS_ENABLED = 'google.c.a.e';\r\nvar MessageType$1;\r\n(function (MessageType) {\r\n MessageType[MessageType[\"DATA_MESSAGE\"] = 1] = \"DATA_MESSAGE\";\r\n MessageType[MessageType[\"DISPLAY_NOTIFICATION\"] = 3] = \"DISPLAY_NOTIFICATION\";\r\n})(MessageType$1 || (MessageType$1 = {}));\n\n/**\r\n * @license\r\n * Copyright 2018 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\r\n * in compliance with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under the License\r\n * is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\r\n * or implied. See the License for the specific language governing permissions and limitations under\r\n * the License.\r\n */\r\nvar MessageType;\r\n(function (MessageType) {\r\n MessageType[\"PUSH_RECEIVED\"] = \"push-received\";\r\n MessageType[\"NOTIFICATION_CLICKED\"] = \"notification-clicked\";\r\n})(MessageType || (MessageType = {}));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction arrayToBase64(array) {\r\n const uint8Array = new Uint8Array(array);\r\n const base64String = btoa(String.fromCharCode(...uint8Array));\r\n return base64String.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\r\nfunction base64ToArray(base64String) {\r\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4);\r\n const base64 = (base64String + padding)\r\n .replace(/\\-/g, '+')\r\n .replace(/_/g, '/');\r\n const rawData = atob(base64);\r\n const outputArray = new Uint8Array(rawData.length);\r\n for (let i = 0; i < rawData.length; ++i) {\r\n outputArray[i] = rawData.charCodeAt(i);\r\n }\r\n return outputArray;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst OLD_DB_NAME = 'fcm_token_details_db';\r\n/**\r\n * The last DB version of 'fcm_token_details_db' was 4. This is one higher, so that the upgrade\r\n * callback is called for all versions of the old DB.\r\n */\r\nconst OLD_DB_VERSION = 5;\r\nconst OLD_OBJECT_STORE_NAME = 'fcm_token_object_Store';\r\nasync function migrateOldDatabase(senderId) {\r\n if ('databases' in indexedDB) {\r\n // indexedDb.databases() is an IndexedDB v3 API and does not exist in all browsers. TODO: Remove\r\n // typecast when it lands in TS types.\r\n const databases = await indexedDB.databases();\r\n const dbNames = databases.map(db => db.name);\r\n if (!dbNames.includes(OLD_DB_NAME)) {\r\n // old DB didn't exist, no need to open.\r\n return null;\r\n }\r\n }\r\n let tokenDetails = null;\r\n const db = await openDb(OLD_DB_NAME, OLD_DB_VERSION, async (db) => {\r\n var _a;\r\n if (db.oldVersion < 2) {\r\n // Database too old, skip migration.\r\n return;\r\n }\r\n if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {\r\n // Database did not exist. Nothing to do.\r\n return;\r\n }\r\n const objectStore = db.transaction.objectStore(OLD_OBJECT_STORE_NAME);\r\n const value = await objectStore.index('fcmSenderId').get(senderId);\r\n await objectStore.clear();\r\n if (!value) {\r\n // No entry in the database, nothing to migrate.\r\n return;\r\n }\r\n if (db.oldVersion === 2) {\r\n const oldDetails = value;\r\n if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) {\r\n return;\r\n }\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: (_a = oldDetails.createTime) !== null && _a !== void 0 ? _a : Date.now(),\r\n subscriptionOptions: {\r\n auth: oldDetails.auth,\r\n p256dh: oldDetails.p256dh,\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: typeof oldDetails.vapidKey === 'string'\r\n ? oldDetails.vapidKey\r\n : arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (db.oldVersion === 3) {\r\n const oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (db.oldVersion === 4) {\r\n const oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n });\r\n db.close();\r\n // Delete all old databases.\r\n await deleteDb(OLD_DB_NAME);\r\n await deleteDb('fcm_vapid_details_db');\r\n await deleteDb('undefined');\r\n return checkTokenDetails(tokenDetails) ? tokenDetails : null;\r\n}\r\nfunction checkTokenDetails(tokenDetails) {\r\n if (!tokenDetails || !tokenDetails.subscriptionOptions) {\r\n return false;\r\n }\r\n const { subscriptionOptions } = tokenDetails;\r\n return (typeof tokenDetails.createTime === 'number' &&\r\n tokenDetails.createTime > 0 &&\r\n typeof tokenDetails.token === 'string' &&\r\n tokenDetails.token.length > 0 &&\r\n typeof subscriptionOptions.auth === 'string' &&\r\n subscriptionOptions.auth.length > 0 &&\r\n typeof subscriptionOptions.p256dh === 'string' &&\r\n subscriptionOptions.p256dh.length > 0 &&\r\n typeof subscriptionOptions.endpoint === 'string' &&\r\n subscriptionOptions.endpoint.length > 0 &&\r\n typeof subscriptionOptions.swScope === 'string' &&\r\n subscriptionOptions.swScope.length > 0 &&\r\n typeof subscriptionOptions.vapidKey === 'string' &&\r\n subscriptionOptions.vapidKey.length > 0);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Exported for tests.\r\nconst DATABASE_NAME = 'firebase-messaging-database';\r\nconst DATABASE_VERSION = 1;\r\nconst OBJECT_STORE_NAME = 'firebase-messaging-store';\r\nlet dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDb(DATABASE_NAME, DATABASE_VERSION, upgradeDb => {\r\n // We don't use 'break' in this switch statement, the fall-through behavior is what we want,\r\n // because if there are multiple versions between the old version and the current version, we\r\n // want ALL the migrations that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (upgradeDb.oldVersion) {\r\n case 0:\r\n upgradeDb.createObjectStore(OBJECT_STORE_NAME);\r\n }\r\n });\r\n }\r\n return dbPromise;\r\n}\r\n/** Gets record(s) from the objectStore that match the given key. */\r\nasync function dbGet(firebaseDependencies) {\r\n const key = getKey(firebaseDependencies);\r\n const db = await getDbPromise();\r\n const tokenDetails = await db\r\n .transaction(OBJECT_STORE_NAME)\r\n .objectStore(OBJECT_STORE_NAME)\r\n .get(key);\r\n if (tokenDetails) {\r\n return tokenDetails;\r\n }\r\n else {\r\n // Check if there is a tokenDetails object in the old DB.\r\n const oldTokenDetails = await migrateOldDatabase(firebaseDependencies.appConfig.senderId);\r\n if (oldTokenDetails) {\r\n await dbSet(firebaseDependencies, oldTokenDetails);\r\n return oldTokenDetails;\r\n }\r\n }\r\n}\r\n/** Assigns or overwrites the record for the given key with the given value. */\r\nasync function dbSet(firebaseDependencies, tokenDetails) {\r\n const key = getKey(firebaseDependencies);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n await tx.objectStore(OBJECT_STORE_NAME).put(tokenDetails, key);\r\n await tx.complete;\r\n return tokenDetails;\r\n}\r\n/** Removes record(s) from the objectStore that match the given key. */\r\nasync function dbRemove(firebaseDependencies) {\r\n const key = getKey(firebaseDependencies);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n await tx.objectStore(OBJECT_STORE_NAME).delete(key);\r\n await tx.complete;\r\n}\r\nfunction getKey({ appConfig }) {\r\n return appConfig.appId;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERROR_MAP = {\r\n [\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */]: 'Missing App configuration value: \"{$valueName}\"',\r\n [\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */]: 'This method is available in a Window context.',\r\n [\"only-available-in-sw\" /* AVAILABLE_IN_SW */]: 'This method is available in a service worker context.',\r\n [\"permission-default\" /* PERMISSION_DEFAULT */]: 'The notification permission was not granted and dismissed instead.',\r\n [\"permission-blocked\" /* PERMISSION_BLOCKED */]: 'The notification permission was not granted and blocked instead.',\r\n [\"unsupported-browser\" /* UNSUPPORTED_BROWSER */]: \"This browser doesn't support the API's required to use the Firebase SDK.\",\r\n [\"indexed-db-unsupported\" /* INDEXED_DB_UNSUPPORTED */]: \"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)\",\r\n [\"failed-service-worker-registration\" /* FAILED_DEFAULT_REGISTRATION */]: 'We are unable to register the default service worker. {$browserErrorMessage}',\r\n [\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */]: 'A problem occurred while subscribing the user to FCM: {$errorInfo}',\r\n [\"token-subscribe-no-token\" /* TOKEN_SUBSCRIBE_NO_TOKEN */]: 'FCM returned no token when subscribing the user to push.',\r\n [\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */]: 'A problem occurred while unsubscribing the ' +\r\n 'user from FCM: {$errorInfo}',\r\n [\"token-update-failed\" /* TOKEN_UPDATE_FAILED */]: 'A problem occurred while updating the user from FCM: {$errorInfo}',\r\n [\"token-update-no-token\" /* TOKEN_UPDATE_NO_TOKEN */]: 'FCM returned no token when updating the user to push.',\r\n [\"use-sw-after-get-token\" /* USE_SW_AFTER_GET_TOKEN */]: 'The useServiceWorker() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your service worker is used.',\r\n [\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */]: 'The input to useServiceWorker() must be a ServiceWorkerRegistration.',\r\n [\"invalid-bg-handler\" /* INVALID_BG_HANDLER */]: 'The input to setBackgroundMessageHandler() must be a function.',\r\n [\"invalid-vapid-key\" /* INVALID_VAPID_KEY */]: 'The public VAPID key must be a string.',\r\n [\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */]: 'The usePublicVapidKey() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your VAPID key is used.'\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('messaging', 'Messaging', ERROR_MAP);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function requestGetToken(firebaseDependencies, subscriptionOptions) {\r\n const headers = await getHeaders(firebaseDependencies);\r\n const body = getBody(subscriptionOptions);\r\n const subscribeOptions = {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(body)\r\n };\r\n let responseData;\r\n try {\r\n const response = await fetch(getEndpoint(firebaseDependencies.appConfig), subscribeOptions);\r\n responseData = await response.json();\r\n }\r\n catch (err) {\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: err\r\n });\r\n }\r\n if (responseData.error) {\r\n const message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-subscribe-no-token\" /* TOKEN_SUBSCRIBE_NO_TOKEN */);\r\n }\r\n return responseData.token;\r\n}\r\nasync function requestUpdateToken(firebaseDependencies, tokenDetails) {\r\n const headers = await getHeaders(firebaseDependencies);\r\n const body = getBody(tokenDetails.subscriptionOptions);\r\n const updateOptions = {\r\n method: 'PATCH',\r\n headers,\r\n body: JSON.stringify(body)\r\n };\r\n let responseData;\r\n try {\r\n const response = await fetch(`${getEndpoint(firebaseDependencies.appConfig)}/${tokenDetails.token}`, updateOptions);\r\n responseData = await response.json();\r\n }\r\n catch (err) {\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* TOKEN_UPDATE_FAILED */, {\r\n errorInfo: err\r\n });\r\n }\r\n if (responseData.error) {\r\n const message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* TOKEN_UPDATE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-update-no-token\" /* TOKEN_UPDATE_NO_TOKEN */);\r\n }\r\n return responseData.token;\r\n}\r\nasync function requestDeleteToken(firebaseDependencies, token) {\r\n const headers = await getHeaders(firebaseDependencies);\r\n const unsubscribeOptions = {\r\n method: 'DELETE',\r\n headers\r\n };\r\n try {\r\n const response = await fetch(`${getEndpoint(firebaseDependencies.appConfig)}/${token}`, unsubscribeOptions);\r\n const responseData = await response.json();\r\n if (responseData.error) {\r\n const message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n }\r\n catch (err) {\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: err\r\n });\r\n }\r\n}\r\nfunction getEndpoint({ projectId }) {\r\n return `${ENDPOINT}/projects/${projectId}/registrations`;\r\n}\r\nasync function getHeaders({ appConfig, installations }) {\r\n const authToken = await installations.getToken();\r\n return new Headers({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n 'x-goog-api-key': appConfig.apiKey,\r\n 'x-goog-firebase-installations-auth': `FIS ${authToken}`\r\n });\r\n}\r\nfunction getBody({ p256dh, auth, endpoint, vapidKey }) {\r\n const body = {\r\n web: {\r\n endpoint,\r\n auth,\r\n p256dh\r\n }\r\n };\r\n if (vapidKey !== DEFAULT_VAPID_KEY) {\r\n body.web.applicationPubKey = vapidKey;\r\n }\r\n return body;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// UpdateRegistration will be called once every week.\r\nconst TOKEN_EXPIRATION_MS = 7 * 24 * 60 * 60 * 1000; // 7 days\r\nasync function getTokenInternal(messaging) {\r\n const pushSubscription = await getPushSubscription(messaging.swRegistration, messaging.vapidKey);\r\n const subscriptionOptions = {\r\n vapidKey: messaging.vapidKey,\r\n swScope: messaging.swRegistration.scope,\r\n endpoint: pushSubscription.endpoint,\r\n auth: arrayToBase64(pushSubscription.getKey('auth')),\r\n p256dh: arrayToBase64(pushSubscription.getKey('p256dh'))\r\n };\r\n const tokenDetails = await dbGet(messaging.firebaseDependencies);\r\n if (!tokenDetails) {\r\n // No token, get a new one.\r\n return getNewToken(messaging.firebaseDependencies, subscriptionOptions);\r\n }\r\n else if (!isTokenValid(tokenDetails.subscriptionOptions, subscriptionOptions)) {\r\n // Invalid token, get a new one.\r\n try {\r\n await requestDeleteToken(messaging.firebaseDependencies, tokenDetails.token);\r\n }\r\n catch (e) {\r\n // Suppress errors because of #2364\r\n console.warn(e);\r\n }\r\n return getNewToken(messaging.firebaseDependencies, subscriptionOptions);\r\n }\r\n else if (Date.now() >= tokenDetails.createTime + TOKEN_EXPIRATION_MS) {\r\n // Weekly token refresh\r\n return updateToken(messaging, {\r\n token: tokenDetails.token,\r\n createTime: Date.now(),\r\n subscriptionOptions\r\n });\r\n }\r\n else {\r\n // Valid token, nothing to do.\r\n return tokenDetails.token;\r\n }\r\n}\r\n/**\r\n * This method deletes the token from the database, unsubscribes the token from FCM, and unregisters\r\n * the push subscription if it exists.\r\n */\r\nasync function deleteTokenInternal(messaging) {\r\n const tokenDetails = await dbGet(messaging.firebaseDependencies);\r\n if (tokenDetails) {\r\n await requestDeleteToken(messaging.firebaseDependencies, tokenDetails.token);\r\n await dbRemove(messaging.firebaseDependencies);\r\n }\r\n // Unsubscribe from the push subscription.\r\n const pushSubscription = await messaging.swRegistration.pushManager.getSubscription();\r\n if (pushSubscription) {\r\n return pushSubscription.unsubscribe();\r\n }\r\n // If there's no SW, consider it a success.\r\n return true;\r\n}\r\nasync function updateToken(messaging, tokenDetails) {\r\n try {\r\n const updatedToken = await requestUpdateToken(messaging.firebaseDependencies, tokenDetails);\r\n const updatedTokenDetails = Object.assign(Object.assign({}, tokenDetails), { token: updatedToken, createTime: Date.now() });\r\n await dbSet(messaging.firebaseDependencies, updatedTokenDetails);\r\n return updatedToken;\r\n }\r\n catch (e) {\r\n await deleteTokenInternal(messaging);\r\n throw e;\r\n }\r\n}\r\nasync function getNewToken(firebaseDependencies, subscriptionOptions) {\r\n const token = await requestGetToken(firebaseDependencies, subscriptionOptions);\r\n const tokenDetails = {\r\n token,\r\n createTime: Date.now(),\r\n subscriptionOptions\r\n };\r\n await dbSet(firebaseDependencies, tokenDetails);\r\n return tokenDetails.token;\r\n}\r\n/**\r\n * Gets a PushSubscription for the current user.\r\n */\r\nasync function getPushSubscription(swRegistration, vapidKey) {\r\n const subscription = await swRegistration.pushManager.getSubscription();\r\n if (subscription) {\r\n return subscription;\r\n }\r\n return swRegistration.pushManager.subscribe({\r\n userVisibleOnly: true,\r\n // Chrome <= 75 doesn't support base64-encoded VAPID key. For backward compatibility, VAPID key\r\n // submitted to pushManager#subscribe must be of type Uint8Array.\r\n applicationServerKey: base64ToArray(vapidKey)\r\n });\r\n}\r\n/**\r\n * Checks if the saved tokenDetails object matches the configuration provided.\r\n */\r\nfunction isTokenValid(dbOptions, currentOptions) {\r\n const isVapidKeyEqual = currentOptions.vapidKey === dbOptions.vapidKey;\r\n const isEndpointEqual = currentOptions.endpoint === dbOptions.endpoint;\r\n const isAuthEqual = currentOptions.auth === dbOptions.auth;\r\n const isP256dhEqual = currentOptions.p256dh === dbOptions.p256dh;\r\n return isVapidKeyEqual && isEndpointEqual && isAuthEqual && isP256dhEqual;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction externalizePayload(internalPayload) {\r\n const payload = {\r\n from: internalPayload.from,\r\n // eslint-disable-next-line camelcase\r\n collapseKey: internalPayload.collapse_key,\r\n // eslint-disable-next-line camelcase\r\n messageId: internalPayload.fcmMessageId\r\n };\r\n propagateNotificationPayload(payload, internalPayload);\r\n propagateDataPayload(payload, internalPayload);\r\n propagateFcmOptions(payload, internalPayload);\r\n return payload;\r\n}\r\nfunction propagateNotificationPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.notification) {\r\n return;\r\n }\r\n payload.notification = {};\r\n const title = messagePayloadInternal.notification.title;\r\n if (!!title) {\r\n payload.notification.title = title;\r\n }\r\n const body = messagePayloadInternal.notification.body;\r\n if (!!body) {\r\n payload.notification.body = body;\r\n }\r\n const image = messagePayloadInternal.notification.image;\r\n if (!!image) {\r\n payload.notification.image = image;\r\n }\r\n}\r\nfunction propagateDataPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.data) {\r\n return;\r\n }\r\n payload.data = messagePayloadInternal.data;\r\n}\r\nfunction propagateFcmOptions(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.fcmOptions) {\r\n return;\r\n }\r\n payload.fcmOptions = {};\r\n const link = messagePayloadInternal.fcmOptions.link;\r\n if (!!link) {\r\n payload.fcmOptions.link = link;\r\n }\r\n // eslint-disable-next-line camelcase\r\n const analyticsLabel = messagePayloadInternal.fcmOptions.analytics_label;\r\n if (!!analyticsLabel) {\r\n payload.fcmOptions.analyticsLabel = analyticsLabel;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isConsoleMessage(data) {\r\n // This message has a campaign ID, meaning it was sent using the Firebase Console.\r\n return typeof data === 'object' && !!data && CONSOLE_CAMPAIGN_ID in data;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n_mergeStrings('hts/frbslgigp.ogepscmv/ieo/eaylg', 'tp:/ieaeogn-agolai.o/1frlglgc/o');\r\n_mergeStrings('AzSCbw63g1R0nCw85jG8', 'Iaya3yLKwmgvh7cF0q4');\r\nfunction _mergeStrings(s1, s2) {\r\n const resultArray = [];\r\n for (let i = 0; i < s1.length; i++) {\r\n resultArray.push(s1.charAt(i));\r\n if (i < s2.length) {\r\n resultArray.push(s2.charAt(i));\r\n }\r\n }\r\n return resultArray.join('');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction extractAppConfig(app) {\r\n if (!app || !app.options) {\r\n throw getMissingValueError('App Configuration Object');\r\n }\r\n if (!app.name) {\r\n throw getMissingValueError('App Name');\r\n }\r\n // Required app config keys\r\n const configKeys = [\r\n 'projectId',\r\n 'apiKey',\r\n 'appId',\r\n 'messagingSenderId'\r\n ];\r\n const { options } = app;\r\n for (const keyName of configKeys) {\r\n if (!options[keyName]) {\r\n throw getMissingValueError(keyName);\r\n }\r\n }\r\n return {\r\n appName: app.name,\r\n projectId: options.projectId,\r\n apiKey: options.apiKey,\r\n appId: options.appId,\r\n senderId: options.messagingSenderId\r\n };\r\n}\r\nfunction getMissingValueError(valueName) {\r\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */, {\r\n valueName\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass MessagingService {\r\n constructor(app, installations, analyticsProvider) {\r\n // logging is only done with end user consent. Default to false.\r\n this.deliveryMetricsExportedToBigQueryEnabled = false;\r\n this.onBackgroundMessageHandler = null;\r\n this.onMessageHandler = null;\r\n this.logEvents = [];\r\n this.isLogServiceStarted = false;\r\n const appConfig = extractAppConfig(app);\r\n this.firebaseDependencies = {\r\n app,\r\n appConfig,\r\n installations,\r\n analyticsProvider\r\n };\r\n }\r\n _delete() {\r\n return Promise.resolve();\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function registerDefaultSw(messaging) {\r\n try {\r\n messaging.swRegistration = await navigator.serviceWorker.register(DEFAULT_SW_PATH, {\r\n scope: DEFAULT_SW_SCOPE\r\n });\r\n // The timing when browser updates sw when sw has an update is unreliable from experiment. It\r\n // leads to version conflict when the SDK upgrades to a newer version in the main page, but sw\r\n // is stuck with the old version. For example,\r\n // https://github.com/firebase/firebase-js-sdk/issues/2590 The following line reliably updates\r\n // sw if there was an update.\r\n messaging.swRegistration.update().catch(() => {\r\n /* it is non blocking and we don't care if it failed */\r\n });\r\n }\r\n catch (e) {\r\n throw ERROR_FACTORY.create(\"failed-service-worker-registration\" /* FAILED_DEFAULT_REGISTRATION */, {\r\n browserErrorMessage: e.message\r\n });\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function updateSwReg(messaging, swRegistration) {\r\n if (!swRegistration && !messaging.swRegistration) {\r\n await registerDefaultSw(messaging);\r\n }\r\n if (!swRegistration && !!messaging.swRegistration) {\r\n return;\r\n }\r\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\r\n throw ERROR_FACTORY.create(\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */);\r\n }\r\n messaging.swRegistration = swRegistration;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function updateVapidKey(messaging, vapidKey) {\r\n if (!!vapidKey) {\r\n messaging.vapidKey = vapidKey;\r\n }\r\n else if (!messaging.vapidKey) {\r\n messaging.vapidKey = DEFAULT_VAPID_KEY;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function getToken$1(messaging, options) {\r\n if (!navigator) {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n }\r\n if (Notification.permission === 'default') {\r\n await Notification.requestPermission();\r\n }\r\n if (Notification.permission !== 'granted') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n await updateVapidKey(messaging, options === null || options === void 0 ? void 0 : options.vapidKey);\r\n await updateSwReg(messaging, options === null || options === void 0 ? void 0 : options.serviceWorkerRegistration);\r\n return getTokenInternal(messaging);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function logToScion(messaging, messageType, data) {\r\n const eventType = getEventType(messageType);\r\n const analytics = await messaging.firebaseDependencies.analyticsProvider.get();\r\n analytics.logEvent(eventType, {\r\n /* eslint-disable camelcase */\r\n message_id: data[CONSOLE_CAMPAIGN_ID],\r\n message_name: data[CONSOLE_CAMPAIGN_NAME],\r\n message_time: data[CONSOLE_CAMPAIGN_TIME],\r\n message_device_time: Math.floor(Date.now() / 1000)\r\n /* eslint-enable camelcase */\r\n });\r\n}\r\nfunction getEventType(messageType) {\r\n switch (messageType) {\r\n case MessageType.NOTIFICATION_CLICKED:\r\n return 'notification_open';\r\n case MessageType.PUSH_RECEIVED:\r\n return 'notification_foreground';\r\n default:\r\n throw new Error();\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function messageEventListener(messaging, event) {\r\n const internalPayload = event.data;\r\n if (!internalPayload.isFirebaseMessaging) {\r\n return;\r\n }\r\n if (messaging.onMessageHandler &&\r\n internalPayload.messageType === MessageType.PUSH_RECEIVED) {\r\n if (typeof messaging.onMessageHandler === 'function') {\r\n messaging.onMessageHandler(externalizePayload(internalPayload));\r\n }\r\n else {\r\n messaging.onMessageHandler.next(externalizePayload(internalPayload));\r\n }\r\n }\r\n // Log to Scion if applicable\r\n const dataPayload = internalPayload.data;\r\n if (isConsoleMessage(dataPayload) &&\r\n dataPayload[CONSOLE_CAMPAIGN_ANALYTICS_ENABLED] === '1') {\r\n await logToScion(messaging, internalPayload.messageType, dataPayload);\r\n }\r\n}\n\nconst name = \"@firebase/messaging\";\nconst version = \"0.9.7\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst WindowMessagingFactory = (container) => {\r\n const messaging = new MessagingService(container.getProvider('app').getImmediate(), container.getProvider('installations-internal').getImmediate(), container.getProvider('analytics-internal'));\r\n navigator.serviceWorker.addEventListener('message', e => messageEventListener(messaging, e));\r\n return messaging;\r\n};\r\nconst WindowMessagingInternalFactory = (container) => {\r\n const messaging = container\r\n .getProvider('messaging')\r\n .getImmediate();\r\n const messagingInternal = {\r\n getToken: (options) => getToken$1(messaging, options)\r\n };\r\n return messagingInternal;\r\n};\r\nfunction registerMessagingInWindow() {\r\n _registerComponent(new Component('messaging', WindowMessagingFactory, \"PUBLIC\" /* PUBLIC */));\r\n _registerComponent(new Component('messaging-internal', WindowMessagingInternalFactory, \"PRIVATE\" /* PRIVATE */));\r\n registerVersion(name, version);\r\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\n registerVersion(name, version, 'esm2017');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Checks if all required APIs exist in the browser.\r\n * @returns a Promise that resolves to a boolean.\r\n *\r\n * @public\r\n */\r\nasync function isWindowSupported() {\r\n // firebase-js-sdk/issues/2393 reveals that idb#open in Safari iframe and Firefox private browsing\r\n // might be prohibited to run. In these contexts, an error would be thrown during the messaging\r\n // instantiating phase, informing the developers to import/call isSupported for special handling.\r\n return (typeof window !== 'undefined' &&\r\n isIndexedDBAvailable() &&\r\n (await validateIndexedDBOpenable()) &&\r\n areCookiesEnabled() &&\r\n 'serviceWorker' in navigator &&\r\n 'PushManager' in window &&\r\n 'Notification' in window &&\r\n 'fetch' in window &&\r\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\r\n PushSubscription.prototype.hasOwnProperty('getKey'));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function deleteToken$1(messaging) {\r\n if (!navigator) {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n }\r\n if (!messaging.swRegistration) {\r\n await registerDefaultSw(messaging);\r\n }\r\n return deleteTokenInternal(messaging);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction onMessage$1(messaging, nextOrObserver) {\r\n if (!navigator) {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n }\r\n messaging.onMessageHandler = nextOrObserver;\r\n return () => {\r\n messaging.onMessageHandler = null;\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Retrieves a Firebase Cloud Messaging instance.\r\n *\r\n * @returns The Firebase Cloud Messaging instance associated with the provided firebase app.\r\n *\r\n * @public\r\n */\r\nfunction getMessagingInWindow(app = getApp()) {\r\n // Conscious decision to make this async check non-blocking during the messaging instance\r\n // initialization phase for performance consideration. An error would be thrown latter for\r\n // developer's information. Developers can then choose to import and call `isSupported` for\r\n // special handling.\r\n isWindowSupported().then(isSupported => {\r\n // If `isWindowSupported()` resolved, but returned false.\r\n if (!isSupported) {\r\n throw ERROR_FACTORY.create(\"unsupported-browser\" /* UNSUPPORTED_BROWSER */);\r\n }\r\n }, _ => {\r\n // If `isWindowSupported()` rejected.\r\n throw ERROR_FACTORY.create(\"indexed-db-unsupported\" /* INDEXED_DB_UNSUPPORTED */);\r\n });\r\n return _getProvider(getModularInstance(app), 'messaging').getImmediate();\r\n}\r\n/**\r\n * Subscribes the {@link Messaging} instance to push notifications. Returns an Firebase Cloud\r\n * Messaging registration token that can be used to send push messages to that {@link Messaging}\r\n * instance.\r\n *\r\n * If a notification permission isn't already granted, this method asks the user for permission. The\r\n * returned promise rejects if the user does not allow the app to show notifications.\r\n *\r\n * @param messaging - The {@link Messaging} instance.\r\n * @param options - Provides an optional vapid key and an optinoal service worker registration\r\n *\r\n * @returns The promise resolves with an FCM registration token.\r\n *\r\n * @public\r\n */\r\nasync function getToken(messaging, options) {\r\n messaging = getModularInstance(messaging);\r\n return getToken$1(messaging, options);\r\n}\r\n/**\r\n * Deletes the registration token associated with this {@link Messaging} instance and unsubscribes\r\n * the {@link Messaging} instance from the push subscription.\r\n *\r\n * @param messaging - The {@link Messaging} instance.\r\n *\r\n * @returns The promise resolves when the token has been successfully deleted.\r\n *\r\n * @public\r\n */\r\nfunction deleteToken(messaging) {\r\n messaging = getModularInstance(messaging);\r\n return deleteToken$1(messaging);\r\n}\r\n/**\r\n * When a push message is received and the user is currently on a page for your origin, the\r\n * message is passed to the page and an `onMessage()` event is dispatched with the payload of\r\n * the push message.\r\n *\r\n *\r\n * @param messaging - The {@link Messaging} instance.\r\n * @param nextOrObserver - This function, or observer object with `next` defined,\r\n * is called when a message is received and the user is currently viewing your page.\r\n * @returns To stop listening for messages execute this returned function.\r\n *\r\n * @public\r\n */\r\nfunction onMessage(messaging, nextOrObserver) {\r\n messaging = getModularInstance(messaging);\r\n return onMessage$1(messaging, nextOrObserver);\r\n}\n\n/**\r\n * Firebase Cloud Messaging\r\n *\r\n * @packageDocumentation\r\n */\r\nregisterMessagingInWindow();\n\nexport { deleteToken, getMessagingInWindow as getMessaging, getToken, isWindowSupported as isSupported, onMessage };\n","import { getApp, _getProvider, _registerComponent, registerVersion } from '@firebase/app';\nimport { Logger } from '@firebase/logger';\nimport { ErrorFactory, calculateBackoffMillis, FirebaseError, isIndexedDBAvailable, validateIndexedDBOpenable, isBrowserExtension, areCookiesEnabled, getModularInstance, deepEqual } from '@firebase/util';\nimport { Component } from '@firebase/component';\nimport '@firebase/installations';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Type constant for Firebase Analytics.\r\n */\r\nconst ANALYTICS_TYPE = 'analytics';\r\n// Key to attach FID to in gtag params.\r\nconst GA_FID_KEY = 'firebase_id';\r\nconst ORIGIN_KEY = 'origin';\r\nconst FETCH_TIMEOUT_MILLIS = 60 * 1000;\r\nconst DYNAMIC_CONFIG_URL = 'https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig';\r\nconst GTAG_URL = 'https://www.googletagmanager.com/gtag/js';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst logger = new Logger('@firebase/analytics');\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Makeshift polyfill for Promise.allSettled(). Resolves when all promises\r\n * have either resolved or rejected.\r\n *\r\n * @param promises Array of promises to wait for.\r\n */\r\nfunction promiseAllSettled(promises) {\r\n return Promise.all(promises.map(promise => promise.catch(e => e)));\r\n}\r\n/**\r\n * Inserts gtag script tag into the page to asynchronously download gtag.\r\n * @param dataLayerName Name of datalayer (most often the default, \"_dataLayer\").\r\n */\r\nfunction insertScriptTag(dataLayerName, measurementId) {\r\n const script = document.createElement('script');\r\n // We are not providing an analyticsId in the URL because it would trigger a `page_view`\r\n // without fid. We will initialize ga-id using gtag (config) command together with fid.\r\n script.src = `${GTAG_URL}?l=${dataLayerName}&id=${measurementId}`;\r\n script.async = true;\r\n document.head.appendChild(script);\r\n}\r\n/**\r\n * Get reference to, or create, global datalayer.\r\n * @param dataLayerName Name of datalayer (most often the default, \"_dataLayer\").\r\n */\r\nfunction getOrCreateDataLayer(dataLayerName) {\r\n // Check for existing dataLayer and create if needed.\r\n let dataLayer = [];\r\n if (Array.isArray(window[dataLayerName])) {\r\n dataLayer = window[dataLayerName];\r\n }\r\n else {\r\n window[dataLayerName] = dataLayer;\r\n }\r\n return dataLayer;\r\n}\r\n/**\r\n * Wrapped gtag logic when gtag is called with 'config' command.\r\n *\r\n * @param gtagCore Basic gtag function that just appends to dataLayer.\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\r\n * @param measurementId GA Measurement ID to set config for.\r\n * @param gtagParams Gtag config params to set.\r\n */\r\nasync function gtagOnConfig(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId, measurementId, gtagParams) {\r\n // If config is already fetched, we know the appId and can use it to look up what FID promise we\r\n /// are waiting for, and wait only on that one.\r\n const correspondingAppId = measurementIdToAppId[measurementId];\r\n try {\r\n if (correspondingAppId) {\r\n await initializationPromisesMap[correspondingAppId];\r\n }\r\n else {\r\n // If config is not fetched yet, wait for all configs (we don't know which one we need) and\r\n // find the appId (if any) corresponding to this measurementId. If there is one, wait on\r\n // that appId's initialization promise. If there is none, promise resolves and gtag\r\n // call goes through.\r\n const dynamicConfigResults = await promiseAllSettled(dynamicConfigPromisesList);\r\n const foundConfig = dynamicConfigResults.find(config => config.measurementId === measurementId);\r\n if (foundConfig) {\r\n await initializationPromisesMap[foundConfig.appId];\r\n }\r\n }\r\n }\r\n catch (e) {\r\n logger.error(e);\r\n }\r\n gtagCore(\"config\" /* CONFIG */, measurementId, gtagParams);\r\n}\r\n/**\r\n * Wrapped gtag logic when gtag is called with 'event' command.\r\n *\r\n * @param gtagCore Basic gtag function that just appends to dataLayer.\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementId GA Measurement ID to log event to.\r\n * @param gtagParams Params to log with this event.\r\n */\r\nasync function gtagOnEvent(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementId, gtagParams) {\r\n try {\r\n let initializationPromisesToWaitFor = [];\r\n // If there's a 'send_to' param, check if any ID specified matches\r\n // an initializeIds() promise we are waiting for.\r\n if (gtagParams && gtagParams['send_to']) {\r\n let gaSendToList = gtagParams['send_to'];\r\n // Make it an array if is isn't, so it can be dealt with the same way.\r\n if (!Array.isArray(gaSendToList)) {\r\n gaSendToList = [gaSendToList];\r\n }\r\n // Checking 'send_to' fields requires having all measurement ID results back from\r\n // the dynamic config fetch.\r\n const dynamicConfigResults = await promiseAllSettled(dynamicConfigPromisesList);\r\n for (const sendToId of gaSendToList) {\r\n // Any fetched dynamic measurement ID that matches this 'send_to' ID\r\n const foundConfig = dynamicConfigResults.find(config => config.measurementId === sendToId);\r\n const initializationPromise = foundConfig && initializationPromisesMap[foundConfig.appId];\r\n if (initializationPromise) {\r\n initializationPromisesToWaitFor.push(initializationPromise);\r\n }\r\n else {\r\n // Found an item in 'send_to' that is not associated\r\n // directly with an FID, possibly a group. Empty this array,\r\n // exit the loop early, and let it get populated below.\r\n initializationPromisesToWaitFor = [];\r\n break;\r\n }\r\n }\r\n }\r\n // This will be unpopulated if there was no 'send_to' field , or\r\n // if not all entries in the 'send_to' field could be mapped to\r\n // a FID. In these cases, wait on all pending initialization promises.\r\n if (initializationPromisesToWaitFor.length === 0) {\r\n initializationPromisesToWaitFor = Object.values(initializationPromisesMap);\r\n }\r\n // Run core gtag function with args after all relevant initialization\r\n // promises have been resolved.\r\n await Promise.all(initializationPromisesToWaitFor);\r\n // Workaround for http://b/141370449 - third argument cannot be undefined.\r\n gtagCore(\"event\" /* EVENT */, measurementId, gtagParams || {});\r\n }\r\n catch (e) {\r\n logger.error(e);\r\n }\r\n}\r\n/**\r\n * Wraps a standard gtag function with extra code to wait for completion of\r\n * relevant initialization promises before sending requests.\r\n *\r\n * @param gtagCore Basic gtag function that just appends to dataLayer.\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\r\n */\r\nfunction wrapGtag(gtagCore, \r\n/**\r\n * Allows wrapped gtag calls to wait on whichever intialization promises are required,\r\n * depending on the contents of the gtag params' `send_to` field, if any.\r\n */\r\ninitializationPromisesMap, \r\n/**\r\n * Wrapped gtag calls sometimes require all dynamic config fetches to have returned\r\n * before determining what initialization promises (which include FIDs) to wait for.\r\n */\r\ndynamicConfigPromisesList, \r\n/**\r\n * Wrapped gtag config calls can narrow down which initialization promise (with FID)\r\n * to wait for if the measurementId is already fetched, by getting the corresponding appId,\r\n * which is the key for the initialization promises map.\r\n */\r\nmeasurementIdToAppId) {\r\n /**\r\n * Wrapper around gtag that ensures FID is sent with gtag calls.\r\n * @param command Gtag command type.\r\n * @param idOrNameOrParams Measurement ID if command is EVENT/CONFIG, params if command is SET.\r\n * @param gtagParams Params if event is EVENT/CONFIG.\r\n */\r\n async function gtagWrapper(command, idOrNameOrParams, gtagParams) {\r\n try {\r\n // If event, check that relevant initialization promises have completed.\r\n if (command === \"event\" /* EVENT */) {\r\n // If EVENT, second arg must be measurementId.\r\n await gtagOnEvent(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, idOrNameOrParams, gtagParams);\r\n }\r\n else if (command === \"config\" /* CONFIG */) {\r\n // If CONFIG, second arg must be measurementId.\r\n await gtagOnConfig(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId, idOrNameOrParams, gtagParams);\r\n }\r\n else {\r\n // If SET, second arg must be params.\r\n gtagCore(\"set\" /* SET */, idOrNameOrParams);\r\n }\r\n }\r\n catch (e) {\r\n logger.error(e);\r\n }\r\n }\r\n return gtagWrapper;\r\n}\r\n/**\r\n * Creates global gtag function or wraps existing one if found.\r\n * This wrapped function attaches Firebase instance ID (FID) to gtag 'config' and\r\n * 'event' calls that belong to the GAID associated with this Firebase instance.\r\n *\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\r\n * @param dataLayerName Name of global GA datalayer array.\r\n * @param gtagFunctionName Name of global gtag function (\"gtag\" if not user-specified).\r\n */\r\nfunction wrapOrCreateGtag(initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId, dataLayerName, gtagFunctionName) {\r\n // Create a basic core gtag function\r\n let gtagCore = function (..._args) {\r\n // Must push IArguments object, not an array.\r\n window[dataLayerName].push(arguments);\r\n };\r\n // Replace it with existing one if found\r\n if (window[gtagFunctionName] &&\r\n typeof window[gtagFunctionName] === 'function') {\r\n // @ts-ignore\r\n gtagCore = window[gtagFunctionName];\r\n }\r\n window[gtagFunctionName] = wrapGtag(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId);\r\n return {\r\n gtagCore,\r\n wrappedGtag: window[gtagFunctionName]\r\n };\r\n}\r\n/**\r\n * Returns first script tag in DOM matching our gtag url pattern.\r\n */\r\nfunction findGtagScriptOnPage() {\r\n const scriptTags = window.document.getElementsByTagName('script');\r\n for (const tag of Object.values(scriptTags)) {\r\n if (tag.src && tag.src.includes(GTAG_URL)) {\r\n return tag;\r\n }\r\n }\r\n return null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERRORS = {\r\n [\"already-exists\" /* ALREADY_EXISTS */]: 'A Firebase Analytics instance with the appId {$id} ' +\r\n ' already exists. ' +\r\n 'Only one Firebase Analytics instance can be created for each appId.',\r\n [\"already-initialized\" /* ALREADY_INITIALIZED */]: 'initializeAnalytics() cannot be called again with different options than those ' +\r\n 'it was initially called with. It can be called again with the same options to ' +\r\n 'return the existing instance, or getAnalytics() can be used ' +\r\n 'to get a reference to the already-intialized instance.',\r\n [\"already-initialized-settings\" /* ALREADY_INITIALIZED_SETTINGS */]: 'Firebase Analytics has already been initialized.' +\r\n 'settings() must be called before initializing any Analytics instance' +\r\n 'or it will have no effect.',\r\n [\"interop-component-reg-failed\" /* INTEROP_COMPONENT_REG_FAILED */]: 'Firebase Analytics Interop Component failed to instantiate: {$reason}',\r\n [\"invalid-analytics-context\" /* INVALID_ANALYTICS_CONTEXT */]: 'Firebase Analytics is not supported in this environment. ' +\r\n 'Wrap initialization of analytics in analytics.isSupported() ' +\r\n 'to prevent initialization in unsupported environments. Details: {$errorInfo}',\r\n [\"indexeddb-unavailable\" /* INDEXEDDB_UNAVAILABLE */]: 'IndexedDB unavailable or restricted in this environment. ' +\r\n 'Wrap initialization of analytics in analytics.isSupported() ' +\r\n 'to prevent initialization in unsupported environments. Details: {$errorInfo}',\r\n [\"fetch-throttle\" /* FETCH_THROTTLE */]: 'The config fetch request timed out while in an exponential backoff state.' +\r\n ' Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.',\r\n [\"config-fetch-failed\" /* CONFIG_FETCH_FAILED */]: 'Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}',\r\n [\"no-api-key\" /* NO_API_KEY */]: 'The \"apiKey\" field is empty in the local Firebase config. Firebase Analytics requires this field to' +\r\n 'contain a valid API key.',\r\n [\"no-app-id\" /* NO_APP_ID */]: 'The \"appId\" field is empty in the local Firebase config. Firebase Analytics requires this field to' +\r\n 'contain a valid app ID.'\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('analytics', 'Analytics', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Backoff factor for 503 errors, which we want to be conservative about\r\n * to avoid overloading servers. Each retry interval will be\r\n * BASE_INTERVAL_MILLIS * LONG_RETRY_FACTOR ^ retryCount, so the second one\r\n * will be ~30 seconds (with fuzzing).\r\n */\r\nconst LONG_RETRY_FACTOR = 30;\r\n/**\r\n * Base wait interval to multiplied by backoffFactor^backoffCount.\r\n */\r\nconst BASE_INTERVAL_MILLIS = 1000;\r\n/**\r\n * Stubbable retry data storage class.\r\n */\r\nclass RetryData {\r\n constructor(throttleMetadata = {}, intervalMillis = BASE_INTERVAL_MILLIS) {\r\n this.throttleMetadata = throttleMetadata;\r\n this.intervalMillis = intervalMillis;\r\n }\r\n getThrottleMetadata(appId) {\r\n return this.throttleMetadata[appId];\r\n }\r\n setThrottleMetadata(appId, metadata) {\r\n this.throttleMetadata[appId] = metadata;\r\n }\r\n deleteThrottleMetadata(appId) {\r\n delete this.throttleMetadata[appId];\r\n }\r\n}\r\nconst defaultRetryData = new RetryData();\r\n/**\r\n * Set GET request headers.\r\n * @param apiKey App API key.\r\n */\r\nfunction getHeaders(apiKey) {\r\n return new Headers({\r\n Accept: 'application/json',\r\n 'x-goog-api-key': apiKey\r\n });\r\n}\r\n/**\r\n * Fetches dynamic config from backend.\r\n * @param app Firebase app to fetch config for.\r\n */\r\nasync function fetchDynamicConfig(appFields) {\r\n var _a;\r\n const { appId, apiKey } = appFields;\r\n const request = {\r\n method: 'GET',\r\n headers: getHeaders(apiKey)\r\n };\r\n const appUrl = DYNAMIC_CONFIG_URL.replace('{app-id}', appId);\r\n const response = await fetch(appUrl, request);\r\n if (response.status !== 200 && response.status !== 304) {\r\n let errorMessage = '';\r\n try {\r\n // Try to get any error message text from server response.\r\n const jsonResponse = (await response.json());\r\n if ((_a = jsonResponse.error) === null || _a === void 0 ? void 0 : _a.message) {\r\n errorMessage = jsonResponse.error.message;\r\n }\r\n }\r\n catch (_ignored) { }\r\n throw ERROR_FACTORY.create(\"config-fetch-failed\" /* CONFIG_FETCH_FAILED */, {\r\n httpStatus: response.status,\r\n responseMessage: errorMessage\r\n });\r\n }\r\n return response.json();\r\n}\r\n/**\r\n * Fetches dynamic config from backend, retrying if failed.\r\n * @param app Firebase app to fetch config for.\r\n */\r\nasync function fetchDynamicConfigWithRetry(app, \r\n// retryData and timeoutMillis are parameterized to allow passing a different value for testing.\r\nretryData = defaultRetryData, timeoutMillis) {\r\n const { appId, apiKey, measurementId } = app.options;\r\n if (!appId) {\r\n throw ERROR_FACTORY.create(\"no-app-id\" /* NO_APP_ID */);\r\n }\r\n if (!apiKey) {\r\n if (measurementId) {\r\n return {\r\n measurementId,\r\n appId\r\n };\r\n }\r\n throw ERROR_FACTORY.create(\"no-api-key\" /* NO_API_KEY */);\r\n }\r\n const throttleMetadata = retryData.getThrottleMetadata(appId) || {\r\n backoffCount: 0,\r\n throttleEndTimeMillis: Date.now()\r\n };\r\n const signal = new AnalyticsAbortSignal();\r\n setTimeout(async () => {\r\n // Note a very low delay, eg < 10ms, can elapse before listeners are initialized.\r\n signal.abort();\r\n }, timeoutMillis !== undefined ? timeoutMillis : FETCH_TIMEOUT_MILLIS);\r\n return attemptFetchDynamicConfigWithRetry({ appId, apiKey, measurementId }, throttleMetadata, signal, retryData);\r\n}\r\n/**\r\n * Runs one retry attempt.\r\n * @param appFields Necessary app config fields.\r\n * @param throttleMetadata Ongoing metadata to determine throttling times.\r\n * @param signal Abort signal.\r\n */\r\nasync function attemptFetchDynamicConfigWithRetry(appFields, { throttleEndTimeMillis, backoffCount }, signal, retryData = defaultRetryData // for testing\r\n) {\r\n const { appId, measurementId } = appFields;\r\n // Starts with a (potentially zero) timeout to support resumption from stored state.\r\n // Ensures the throttle end time is honored if the last attempt timed out.\r\n // Note the SDK will never make a request if the fetch timeout expires at this point.\r\n try {\r\n await setAbortableTimeout(signal, throttleEndTimeMillis);\r\n }\r\n catch (e) {\r\n if (measurementId) {\r\n logger.warn(`Timed out fetching this Firebase app's measurement ID from the server.` +\r\n ` Falling back to the measurement ID ${measurementId}` +\r\n ` provided in the \"measurementId\" field in the local Firebase config. [${e.message}]`);\r\n return { appId, measurementId };\r\n }\r\n throw e;\r\n }\r\n try {\r\n const response = await fetchDynamicConfig(appFields);\r\n // Note the SDK only clears throttle state if response is success or non-retriable.\r\n retryData.deleteThrottleMetadata(appId);\r\n return response;\r\n }\r\n catch (e) {\r\n if (!isRetriableError(e)) {\r\n retryData.deleteThrottleMetadata(appId);\r\n if (measurementId) {\r\n logger.warn(`Failed to fetch this Firebase app's measurement ID from the server.` +\r\n ` Falling back to the measurement ID ${measurementId}` +\r\n ` provided in the \"measurementId\" field in the local Firebase config. [${e.message}]`);\r\n return { appId, measurementId };\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n const backoffMillis = Number(e.customData.httpStatus) === 503\r\n ? calculateBackoffMillis(backoffCount, retryData.intervalMillis, LONG_RETRY_FACTOR)\r\n : calculateBackoffMillis(backoffCount, retryData.intervalMillis);\r\n // Increments backoff state.\r\n const throttleMetadata = {\r\n throttleEndTimeMillis: Date.now() + backoffMillis,\r\n backoffCount: backoffCount + 1\r\n };\r\n // Persists state.\r\n retryData.setThrottleMetadata(appId, throttleMetadata);\r\n logger.debug(`Calling attemptFetch again in ${backoffMillis} millis`);\r\n return attemptFetchDynamicConfigWithRetry(appFields, throttleMetadata, signal, retryData);\r\n }\r\n}\r\n/**\r\n * Supports waiting on a backoff by:\r\n *\r\n *

    \r\n *
  • Promisifying setTimeout, so we can set a timeout in our Promise chain
  • \r\n *
  • Listening on a signal bus for abort events, just like the Fetch API
  • \r\n *
  • Failing in the same way the Fetch API fails, so timing out a live request and a throttled\r\n * request appear the same.
  • \r\n *
\r\n *\r\n *

Visible for testing.\r\n */\r\nfunction setAbortableTimeout(signal, throttleEndTimeMillis) {\r\n return new Promise((resolve, reject) => {\r\n // Derives backoff from given end time, normalizing negative numbers to zero.\r\n const backoffMillis = Math.max(throttleEndTimeMillis - Date.now(), 0);\r\n const timeout = setTimeout(resolve, backoffMillis);\r\n // Adds listener, rather than sets onabort, because signal is a shared object.\r\n signal.addEventListener(() => {\r\n clearTimeout(timeout);\r\n // If the request completes before this timeout, the rejection has no effect.\r\n reject(ERROR_FACTORY.create(\"fetch-throttle\" /* FETCH_THROTTLE */, {\r\n throttleEndTimeMillis\r\n }));\r\n });\r\n });\r\n}\r\n/**\r\n * Returns true if the {@link Error} indicates a fetch request may succeed later.\r\n */\r\nfunction isRetriableError(e) {\r\n if (!(e instanceof FirebaseError) || !e.customData) {\r\n return false;\r\n }\r\n // Uses string index defined by ErrorData, which FirebaseError implements.\r\n const httpStatus = Number(e.customData['httpStatus']);\r\n return (httpStatus === 429 ||\r\n httpStatus === 500 ||\r\n httpStatus === 503 ||\r\n httpStatus === 504);\r\n}\r\n/**\r\n * Shims a minimal AbortSignal (copied from Remote Config).\r\n *\r\n *

AbortController's AbortSignal conveniently decouples fetch timeout logic from other aspects\r\n * of networking, such as retries. Firebase doesn't use AbortController enough to justify a\r\n * polyfill recommendation, like we do with the Fetch API, but this minimal shim can easily be\r\n * swapped out if/when we do.\r\n */\r\nclass AnalyticsAbortSignal {\r\n constructor() {\r\n this.listeners = [];\r\n }\r\n addEventListener(listener) {\r\n this.listeners.push(listener);\r\n }\r\n abort() {\r\n this.listeners.forEach(listener => listener());\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function validateIndexedDB() {\r\n if (!isIndexedDBAvailable()) {\r\n logger.warn(ERROR_FACTORY.create(\"indexeddb-unavailable\" /* INDEXEDDB_UNAVAILABLE */, {\r\n errorInfo: 'IndexedDB is not available in this environment.'\r\n }).message);\r\n return false;\r\n }\r\n else {\r\n try {\r\n await validateIndexedDBOpenable();\r\n }\r\n catch (e) {\r\n logger.warn(ERROR_FACTORY.create(\"indexeddb-unavailable\" /* INDEXEDDB_UNAVAILABLE */, {\r\n errorInfo: e\r\n }).message);\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Initialize the analytics instance in gtag.js by calling config command with fid.\r\n *\r\n * NOTE: We combine analytics initialization and setting fid together because we want fid to be\r\n * part of the `page_view` event that's sent during the initialization\r\n * @param app Firebase app\r\n * @param gtagCore The gtag function that's not wrapped.\r\n * @param dynamicConfigPromisesList Array of all dynamic config promises.\r\n * @param measurementIdToAppId Maps measurementID to appID.\r\n * @param installations _FirebaseInstallationsInternal instance.\r\n *\r\n * @returns Measurement ID.\r\n */\r\nasync function _initializeAnalytics(app, dynamicConfigPromisesList, measurementIdToAppId, installations, gtagCore, dataLayerName, options) {\r\n var _a;\r\n const dynamicConfigPromise = fetchDynamicConfigWithRetry(app);\r\n // Once fetched, map measurementIds to appId, for ease of lookup in wrapped gtag function.\r\n dynamicConfigPromise\r\n .then(config => {\r\n measurementIdToAppId[config.measurementId] = config.appId;\r\n if (app.options.measurementId &&\r\n config.measurementId !== app.options.measurementId) {\r\n logger.warn(`The measurement ID in the local Firebase config (${app.options.measurementId})` +\r\n ` does not match the measurement ID fetched from the server (${config.measurementId}).` +\r\n ` To ensure analytics events are always sent to the correct Analytics property,` +\r\n ` update the` +\r\n ` measurement ID field in the local config or remove it from the local config.`);\r\n }\r\n })\r\n .catch(e => logger.error(e));\r\n // Add to list to track state of all dynamic config promises.\r\n dynamicConfigPromisesList.push(dynamicConfigPromise);\r\n const fidPromise = validateIndexedDB().then(envIsValid => {\r\n if (envIsValid) {\r\n return installations.getId();\r\n }\r\n else {\r\n return undefined;\r\n }\r\n });\r\n const [dynamicConfig, fid] = await Promise.all([\r\n dynamicConfigPromise,\r\n fidPromise\r\n ]);\r\n // Detect if user has already put the gtag \r\n\r\n

{{userSessionService.authMessage}}

\r\n\r\n
\r\n
\r\n \r\n

The Most Advanced Solution For Property Maintenance.

\r\n
\r\n
\r\n

Your Account is not enabled

\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { LoggerService } from 'src/app/core/services/http/logger.service';\r\nimport liveSession from '@livesession/sdk';\r\nimport { OrganizationService } from 'src/app/core/services/http/agency-mgmt/organization.service';\r\nimport { UserSessionService } from 'bna-angular-auth-client';\r\nimport { ClientSettingsService } from 'src/app/core/services/auth/client-settings.service';\r\nimport { OrganizationStartupSettingsResult } from 'src/app/shared/models/agency-mgmt/manager.service.model';\r\nimport { AppSettings } from 'src/app/shared/constants/app-settings.constants';\r\nimport { SessionStorageService } from 'src/app/core/services/data/session-storage.service';\r\n\r\n@Component({\r\n selector: 'app-sign-in',\r\n templateUrl: './sign-in.component.html',\r\n styleUrls: ['./sign-in.component.scss'],\r\n})\r\nexport class SignInComponent implements OnInit, OnDestroy {\r\n private signing = false;\r\n private returnUrl = '';\r\n private subscriptions: Subscription[] = [];\r\n public errorMessage: string;\r\n\r\n constructor(\r\n private logger: LoggerService,\r\n public userSessionService: UserSessionService,\r\n private organizationService: OrganizationService,\r\n private clientSettingsService: ClientSettingsService,\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n private sessionStorageService: SessionStorageService\r\n ) { }\r\n\r\n async ngOnInit() {\r\n let integrationType = this.activatedRoute.snapshot?.queryParams['integration-type'];\r\n localStorage.setItem(\"integration-type\", integrationType);\r\n\r\n this.signing = await this.userSessionService.signing();\r\n this.returnUrl = this.getReturnUrl();\r\n\r\n this.redirectToSignInPageIfNotSignedIn();\r\n this.redirectToDefaultPageAfterSignedIn();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach((sub) => sub.unsubscribe());\r\n }\r\n\r\n private getReturnUrl() {\r\n return this.activatedRoute.snapshot?.queryParams['returnUrl']\r\n ? this.activatedRoute.snapshot?.queryParams['returnUrl'][0]\r\n : null;\r\n }\r\n\r\n private redirectToDefaultPageAfterSignedIn() {\r\n this.userSessionService.whenSignedInCompleted().then(() => {\r\n this.signing = false;\r\n this.logger.log('redirectToDefaultPageAfterSignedIn');\r\n this.identifyAuthenticatedUserForLiveSession();\r\n this.appEnableValidityCheckPassed().then((passed) => {\r\n if (passed) {\r\n this.redirectToDefaultPage();\r\n return;\r\n }\r\n\r\n this.userSessionService.signOut(true);\r\n });\r\n });\r\n }\r\n\r\n private redirectToSignInPageIfNotSignedIn() {\r\n const yes = this.userSessionService.isIntegration;\r\n this.logger.log('iframe integration check: ' + yes);\r\n\r\n if (yes || this.signing) return;\r\n\r\n this.logger.log('redirectToSignInPageIfNotSignedIn');\r\n this.signIn();\r\n }\r\n\r\n private signIn() {\r\n this.rememberPropertySearch();\r\n const isAuthenticated = this.userSessionService.isAuthenticated();\r\n if (isAuthenticated) {\r\n this.redirectToDefaultPage();\r\n return;\r\n }\r\n this.signing = true;\r\n this.userSessionService.signIn();\r\n }\r\n\r\n private rememberPropertySearch() {\r\n this.activatedRoute.queryParams.subscribe((params) => {\r\n if (\r\n params['external-property-id'] != undefined &&\r\n params['external-property-id']\r\n ) {\r\n this.sessionStorageService.set(\r\n 'external-property-id',\r\n params['external-property-id']\r\n );\r\n } else {\r\n this.sessionStorageService.remove('external-property-id');\r\n }\r\n });\r\n }\r\n\r\n private redirectToDefaultPage() {\r\n if (this.returnUrl) {\r\n this.logger.log('redirecting to return url: ' + this.returnUrl);\r\n this.router.navigate([this.returnUrl]);\r\n return;\r\n } else {\r\n this.logger.log('redirecting to default page');\r\n this.router.navigate(['/job']);\r\n return;\r\n }\r\n }\r\n\r\n private identifyAuthenticatedUserForLiveSession() {\r\n const userClaims = this.userSessionService.getProfile();\r\n const properties = {\r\n name: userClaims.name,\r\n email: userClaims.email,\r\n params: {\r\n userType: userClaims.userGroup,\r\n countryCode: userClaims.country?.code,\r\n phone: userClaims.phoneNumber,\r\n },\r\n };\r\n this.logger.log('Live session identify API called', properties);\r\n liveSession.identify(properties);\r\n }\r\n\r\n private appEnableValidityCheckPassed() {\r\n return new Promise((resolve) => {\r\n this.isAppEnabledForCurrentOrganization().then((passed) => {\r\n this.logger.log('isAppEnabledForCurrentOrganization:' + passed);\r\n if (passed) {\r\n return this.isCurrentOrganizationIsActive().then((passed) => {\r\n this.logger.log('isCurrentOrganizationIsActive:' + passed);\r\n resolve(passed);\r\n });\r\n }\r\n this.logger.log('appEnableValidityCheck:failed');\r\n return resolve(false);\r\n });\r\n });\r\n }\r\n\r\n private isAppEnabledForCurrentOrganization() {\r\n return new Promise((resolve) => {\r\n const passed = this.configurationCheckPassed;\r\n this.logger.log('configurationCheckPassed:' + passed);\r\n if (passed) return resolve(true);\r\n this.logger.log(\r\n 'userSessionService.isIntegration:' +\r\n this.userSessionService.isIntegration\r\n );\r\n if (this.userSessionService.isIntegration) return resolve(true);\r\n this.organizationService.getStartupSettings().subscribe((result) => {\r\n this.logger.log('getStartupSettings' + result);\r\n if (result != null && !result.newPmAppEnabled) {\r\n this.logger.log('new pm app is disabled for the organization');\r\n this.errorMessage =\r\n 'This app is not enabled for your agency. If you want to enable it please contact our support team on support@bricksandagent.com.';\r\n }\r\n this.rememberAppEnabledOrganization(result);\r\n return resolve(result.newPmAppEnabled);\r\n \r\n });\r\n });\r\n }\r\n private isCurrentOrganizationIsActive() {\r\n return new Promise((resolve) => {\r\n this.organizationService.getStartupSettings().subscribe((result) => {\r\n this.logger.log('getStartupSettings');\r\n this.logger.log(result);\r\n if (result != null && result?.isOrganizationNotActivated) {\r\n this.logger.log('OrganizationNotActivated');\r\n this.userSessionService.signOut(true);\r\n this.router.navigate(['/account-in-review']);\r\n resolve(false);\r\n }\r\n this.logger.log('OrganizationIsActivated');\r\n return resolve(true);\r\n });\r\n });\r\n }\r\n\r\n private rememberAppEnabledOrganization(\r\n result: OrganizationStartupSettingsResult\r\n ) {\r\n this.logger.log(\r\n 'rememberAppEnabledOrganization, result.newPmAppEnabled' + result\r\n );\r\n this.logger.log(\r\n 'organizationId:' + this.userSessionService.getProfile().organizationId\r\n );\r\n if (!result?.newPmAppEnabled) return;\r\n this.clientSettingsService.set(\r\n AppSettings.AppEnabledOrganizationId,\r\n this.userSessionService.getProfile().organizationId,\r\n false\r\n );\r\n\r\n this.clientSettingsService.set(\r\n AppSettings.IsStrataMasterEnabled,\r\n result?.isStrataMasterEnabled,\r\n false\r\n );\r\n\r\n this.clientSettingsService.set(\r\n AppSettings.IsCreditCardActivatedOrg,\r\n result?.isCreditCardActivatedOrg,\r\n false\r\n );\r\n this.clientSettingsService.set(\r\n AppSettings.IsAssetRegisterViewEnabled,\r\n result?.isAssetRegisterViewEnabled,\r\n false\r\n );\r\n }\r\n\r\n public signOut() {\r\n this.userSessionService.signOut();\r\n }\r\n\r\n public get configurationCheckPassed() {\r\n const enabledOrganizationId = this.clientSettingsService.get(\r\n AppSettings.AppEnabledOrganizationId,\r\n false\r\n );\r\n return (\r\n !!enabledOrganizationId &&\r\n enabledOrganizationId ==\r\n this.userSessionService.getProfile().organizationId\r\n );\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { UserSessionService } from 'bna-angular-auth-client';\r\nimport { ClientSettingsService } from 'src/app/core/services/auth/client-settings.service';\r\nimport { AppSettings } from 'src/app/shared/constants/app-settings.constants';\r\n\r\n@Component({\r\n selector: 'app-sign-out',\r\n templateUrl: './sign-out.component.html',\r\n styleUrls: ['./sign-out.component.scss'],\r\n})\r\nexport class SignOutComponent implements OnInit {\r\n constructor(\r\n private router: Router,\r\n private userSessionService: UserSessionService,\r\n private clientSettingService: ClientSettingsService\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.userSessionService.signOut(true);\r\n this.clientSettingService.remove(AppSettings.AgencySelectionPopedUp, false);\r\n this.router.navigate(['sign-in']);\r\n }\r\n}\r\n","export class SelectedTeamResult {\r\n name: string;\r\n businessUserId: string;\r\n selected: boolean;\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n
\r\n tune\r\n \r\n Match all of the following criteria\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n Job title / Job number\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n Type\r\n \r\n \r\n {{jobType.text}}\r\n \r\n \r\n
\r\n
\r\n \r\n Status\r\n \r\n {{status.text}}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Posted date\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
\r\n \r\n Trade\r\n
\r\n \r\n \r\n {{tradeeChip.text}}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {{tradee.fullNameDisplay}}\r\n \r\n \r\n\r\n No trades\r\n found.\r\n \"{{TradeNameFragment}}\"...\r\n ...\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n Service type\r\n
\r\n \r\n \r\n {{servType.text}}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {{serviceType.primaryJobType?.name}}\r\n \r\n \r\n No service\r\n types found.\r\n ...\"{{ServiceTypeFragment}}\"\r\n ...\r\n
\r\n\r\n
\r\n
\r\n \r\n Urgency\r\n \r\n \r\n {{urgencyType.text}}\r\n \r\n \r\n
\r\n
\r\n \r\n Deadline\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
\r\n \r\n Property\r\n
\r\n \r\n \r\n {{propertyChip.text}}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n {{property.address}}\r\n Deactivated\r\n
\r\n
\r\n
\r\n\r\n No properties found.\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n Organization view\r\n \r\n {{user.name}}\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Show deactivated properties\r\n \r\n
\r\n
\r\n \r\n Show only snoozed jobs\r\n \r\n
\r\n
\r\n
\r\n
\r\n
","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Observable, Subscription, map, startWith, of } from 'rxjs';\r\nimport { JobTypes } from 'src/app/shared/models/job-types.model';\r\nimport { JobTypesService } from 'src/app/core/services/data/job-types.service';\r\nimport { FormControl } from '@angular/forms';\r\nimport { MatChipInputEvent } from '@angular/material/chips';\r\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\r\nimport { TradeSearchService } from 'src/app/core/services/http/trade-mgmt/trade-search.service';\r\nimport { PropertyService } from 'src/app/core/services/http/agency-mgmt/property.service';\r\nimport { SearchTradesByNameAndEmailResult } from '../../models/search-trades-by-name-and-email-result.model';\r\nimport { SearchPropertyByNameAndAddressResult } from '../../models/search-property-by-name-and-address-result.model';\r\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\nimport { JobTypeEnum } from '../../models/Enums';\r\nimport { AdvancedSearchQueryModel } from '../../models/advanced-search-request.model';\r\nimport { AdvancedSeachFilteredJobsResult } from 'src/app/job/models/dashboard/advanced-search-filtered-jobs-result.model';\r\nimport { JobSearchService } from 'src/app/core/services/http/maintenance/job-search.service';\r\nimport { AdvancedSearch } from '../../models/advanced-search.model';\r\nimport { DateAdapter } from '@angular/material/core';\r\nimport { SelectedTeamResult } from 'src/app/job/components/job-dashboard/team-selection/selected-team-result.model';\r\n@Component({\r\n selector: 'app-advanced-search',\r\n templateUrl: './advanced-search.component.html',\r\n styleUrls: ['./advanced-search.component.scss'],\r\n})\r\nexport class AdvancedSearchComponent implements OnInit, OnDestroy {\r\n searchModel = AdvancedSearch.getInstance();\r\n public separatorKeysCodes: number[] = [ENTER, COMMA];\r\n public serviceTypes: JobTypes[] = [];\r\n public serviceTypes$: Observable;\r\n public ServiceTypeControl = new FormControl();\r\n public subscription: Subscription;\r\n public TradeNameFragment: string;\r\n public ServiceTypeFragment: string;\r\n public PropertyFragment: string;\r\n public tradees: SearchTradesByNameAndEmailResult[] = null;\r\n public tradees$: Observable = null;\r\n public tradeeControl = new FormControl();\r\n public propertyControl = new FormControl();\r\n public properties: SearchPropertyByNameAndAddressResult[] = null;\r\n public properties$: Observable = null;\r\n private searchTimeout: any;\r\n public requestDto: AdvancedSearchQueryModel = {};\r\n public jobList: AdvancedSeachFilteredJobsResult[] = null;\r\n public isApply: boolean = false;\r\n public includeDeactivatedProperties: boolean = false;\r\n public teamUsers: SelectedTeamResult[] = null;\r\n public snoozedJobsCheckboxVisible: boolean = false;\r\n public isSnoozedJob: boolean = false;\r\n ORGANIZATION_VIEW_ID = 'ORGANIZATION_VIEW_ID';\r\n\r\n @Output() requestDtoEvent = new EventEmitter<\r\n AdvancedSeachFilteredJobsResult[]\r\n >();\r\n @ViewChild('serviceTypeInput') serviceTypeInput: ElementRef;\r\n @ViewChild('tradeeInput') tradeeInput: ElementRef;\r\n @ViewChild('propertyInput') propertyInput: ElementRef;\r\n @ViewChild('snoozedJobsInput') snoozedJobsInput: ElementRef;\r\n //@ViewChild('deactivatedPropertyInput') deactivatedPropertyInput: ElementRef;\r\n\r\n constructor(\r\n private router: Router,\r\n private jobTypeSvc: JobTypesService,\r\n private tradeSearchService: TradeSearchService,\r\n private propertyService: PropertyService,\r\n private jobSearchService: JobSearchService,\r\n private dateAdapter: DateAdapter\r\n ) {\r\n this.dateAdapter.setLocale('en-GB'); //dd/MM/yyyy\r\n }\r\n\r\n public loadingTradees: boolean = false;\r\n public loadingServiceType: boolean = false;\r\n public loadingProperties: boolean = false;\r\n\r\n ngOnInit(): void {\r\n this.getServiceTypes();\r\n if (!this.searchModel.isApply) {\r\n this.initialLoadJobStatus();\r\n }\r\n\r\n this.serviceTypes$ = this.ServiceTypeControl.valueChanges.pipe(\r\n startWith(''),\r\n map((value) => this.filterServiceTypes(value))\r\n );\r\n this.setPostedStartEndDate();\r\n this.getTeamUsers();\r\n this.updateSnoozedJobsCheckboxVisibility();\r\n }\r\n\r\n private getServiceTypes() {\r\n this.subscription = this.jobTypeSvc.getJopTypes().subscribe({\r\n next: (response) => {\r\n this.serviceTypes = response;\r\n this.loadingServiceType = false;\r\n },\r\n });\r\n }\r\n\r\n SetDefaultValues(deactivatedPropertyInput,snoozedJobsInput) {\r\n this.searchModel.statuses = [];\r\n this.searchModel.selectedStatus = [];\r\n this.searchModel.selectedJobType = [];\r\n this.searchModel.tradeesChips = [];\r\n this.searchModel.serviceTypesChips = [];\r\n this.searchModel.propertyChips = [];\r\n this.searchModel.selectedUrgency = this.searchModel.urgencyTypes[0];\r\n this.searchModel.selectedJobIdentification = null;\r\n this.searchModel.selectedJobType.push(this.searchModel.jobTypes[1]);\r\n this.searchModel.statuses = this.searchModel.openJobStatus.concat(\r\n this.searchModel.closedJobStatus\r\n );\r\n this.searchModel.statuses.sort((f1, f2) => f1.text.length - f2.text.length);\r\n this.setWorkOrderOption();\r\n this.searchModel.statuses.unshift({ id: null, text: 'Any' });\r\n this.searchModel.selectedStatus.push(this.searchModel.statuses[0]);\r\n this.setPostedStartEndDate();\r\n this.searchModel.deadLine_Start = '';\r\n this.searchModel.deadLine_end = '';\r\n this.TradeNameFragment = '';\r\n this.tradeeInput.nativeElement.value = '';\r\n this.ServiceTypeFragment = '';\r\n this.serviceTypeInput.nativeElement.value = '';\r\n this.PropertyFragment = '';\r\n this.propertyInput.nativeElement.value = '';\r\n //this.deactivatedPropertyInput.nativeElement.checked = false;\r\n deactivatedPropertyInput.checked = false;\r\n this.updateSnoozedJobsCheckboxVisibility();\r\n this.isSnoozedJob = false;\r\n this.searchModel.isSnoozedJob = false;\r\n this.includeDeactivatedProperties = false;\r\n this.searchModel.selectedTeamUsers = [];\r\n }\r\n\r\n private filterServiceTypes(value: string): JobTypes[] {\r\n const filterValue = value.toLowerCase();\r\n var filteredServiceType = this.serviceTypes.filter((serviceType) =>\r\n serviceType.primaryJobType.name.toLowerCase().includes(filterValue)\r\n );\r\n if (filteredServiceType != null && filteredServiceType.length > 0) {\r\n this.loadingServiceType = true;\r\n } else {\r\n this.loadingServiceType = false;\r\n }\r\n return filteredServiceType;\r\n }\r\n\r\n public OnTradeNameFragmentChanged(event: any) {\r\n this.TradeNameFragment = event!.value;\r\n clearTimeout(this.searchTimeout);\r\n this.tradees = null;\r\n var $this = this;\r\n $this.TradeSearch();\r\n }\r\n\r\n public OnServiceTypeFragmentChanged(event: any) {\r\n this.serviceTypes$ = of(this.filterServiceTypes(event!.value));\r\n }\r\n\r\n public OnPropertyFragmentChanged(event: any) {\r\n this.PropertyFragment = event!.value;\r\n clearTimeout(this.searchTimeout);\r\n this.properties = null;\r\n var $this = this;\r\n $this.PropertySearch();\r\n }\r\n\r\n private TradeSearch() {\r\n this.tradees = null;\r\n if (this.TradeNameFragment && this.TradeNameFragment.length >= 3) {\r\n this.loadingTradees = true;\r\n this.tradeSearchService\r\n .searchTradesByNameAndEmail(this.TradeNameFragment)\r\n .subscribe({\r\n next: (res) => {\r\n this.tradees = res;\r\n this.tradees$ = of(res);\r\n this.loadingTradees = false;\r\n },\r\n error: () => {\r\n this.tradees = null;\r\n this.tradees$ = null;\r\n this.loadingTradees = false;\r\n },\r\n });\r\n }\r\n }\r\n\r\n private PropertySearch() {\r\n this.properties = null;\r\n if (this.PropertyFragment && this.PropertyFragment.length >= 3) {\r\n this.loadingProperties = true;\r\n this.propertyService\r\n .advancedSearchProperty(this.PropertyFragment, this.includeDeactivatedProperties)\r\n .subscribe({\r\n next: (res) => {\r\n this.properties = res;\r\n this.properties$ = of(res);\r\n this.loadingProperties = false;\r\n },\r\n error: () => {\r\n this.properties = null;\r\n this.properties$ = null;\r\n this.loadingProperties = false;\r\n },\r\n });\r\n }\r\n }\r\n\r\n public includeDeactivatedPropertiesCheck() {\r\n this.includeDeactivatedProperties = !this.includeDeactivatedProperties;\r\n }\r\n\r\n public snoozedJobsCheck() {\r\n this.isSnoozedJob = !this.isSnoozedJob;\r\n this.searchModel.isSnoozedJob = this.isSnoozedJob ;\r\n }\r\n\r\n public jobDashBoard() {\r\n this.router.navigate(['/job']);\r\n }\r\n\r\n onJobTypeChange(jobtype : { id: number; text: string }) {\r\n \r\n this.removeAllFilterFromJobType(jobtype);\r\n this.initialLoadJobStatus();\r\n this.searchModel.selectedStatus = [];\r\n this.searchModel.selectedStatus.push(this.searchModel.statuses[0]);\r\n this.updateSnoozedJobsCheckboxVisibility();\r\n }\r\n\r\n initialLoadJobStatus() {\r\n this.searchModel.statuses = [];\r\n const isAnyJobType = this.searchModel.selectedJobType.some(a => a.text.includes('Any'));\r\n const isOpenJobType = this.searchModel.selectedJobType.some(a => a.id === JobTypeEnum.OpenJob) \r\n const isClosedJobType = this.searchModel.selectedJobType.some(a => a.id === JobTypeEnum.closedJob);\r\n const isRecurringJobType = this.searchModel.selectedJobType.some(a => a.id === JobTypeEnum.reccurringJob);\r\n\r\n if (isAnyJobType || (isOpenJobType && (isClosedJobType || isRecurringJobType))) {\r\n this.searchModel.statuses = this.searchModel.openJobStatus\r\n .concat(this.searchModel.closedJobStatus);\r\n } else if (isRecurringJobType || (isClosedJobType && isRecurringJobType)) {\r\n this.searchModel.statuses = this.searchModel.closedJobStatus\r\n .concat(this.searchModel.openJobStatus.filter(status => status.text !== 'Snoozed'));\r\n } else if (isOpenJobType) {\r\n this.searchModel.statuses = [...this.searchModel.openJobStatus];\r\n } else if (isClosedJobType) {\r\n this.searchModel.statuses = [...this.searchModel.closedJobStatus];\r\n } \r\n\r\n this.searchModel.statuses.sort((f1, f2) => f1.text.length - f2.text.length);\r\n\r\n this.setWorkOrderOption();\r\n\r\n this.searchModel.statuses.unshift({ id: null, text: 'Any' }); \r\n\r\n if (this.searchModel.selectedStatus.length === 0) {\r\n this.searchModel.selectedStatus.push(this.searchModel.statuses[0]);\r\n }\r\n }\r\n\r\n setWorkOrderOption(){\r\n if (this.searchModel.selectedJobType.some((a) => a.text.includes('Any')) \r\n || this.searchModel.selectedJobType.some((a) => a.id == JobTypeEnum.OpenJob)) \r\n {\r\n this.searchModel.statuses.unshift({ id: -1, text: 'Work Orders' });\r\n }\r\n }\r\n\r\n removeAllFilterFromJobType(jobtype : { id: number; text: string }) {\r\n if(jobtype.text == \"Any\"){\r\n this.searchModel.selectedJobType = [];\r\n this.searchModel.selectedJobType.push(jobtype);\r\n }\r\n else{\r\n this.searchModel.selectedJobType = this.searchModel.selectedJobType.filter((x) => !x.text.includes(\"Any\"));\r\n }\r\n if (this.searchModel.selectedJobType.length == 0) {\r\n this.searchModel.selectedJobType = [this.searchModel.jobTypes[0]];\r\n }\r\n }\r\n\r\n removeAllFilterFromStatus(status :{ id: number; text: string }) {\r\n if(status.text == \"Any\"){\r\n this.searchModel.selectedStatus = [];\r\n this.searchModel.selectedStatus.push(status);\r\n }\r\n else if(status.text == \"Work Orders\"){\r\n\r\n let selectedStatus = this.searchModel.selectedStatus.filter(x => x.text.includes(\"Overdue\") \r\n || x.text.includes(\"Scheduled\")\r\n || x.text.includes(\"Unscheduled\")\r\n || x.text.includes(\"In Progress\")\r\n || x.text.includes(\"Pending Invoice\")\r\n || x.text.includes(\"Pending Schedule\")\r\n || x.text.includes(\"External / Strata\"));\r\n if(selectedStatus.length > 0){\r\n selectedStatus.forEach(x => {\r\n this.searchModel.selectedStatus = this.searchModel.selectedStatus.filter(s => s.id != x.id);\r\n })\r\n this.searchModel.selectedStatus = this.searchModel.selectedStatus.filter(s => !s.text.includes(\"Work Orders\"));\r\n return;\r\n }\r\n\r\n this.searchModel.selectedStatus = [];\r\n \r\n this.searchModel.selectedStatus = this.searchModel.statuses.filter(x => x.text.includes(\"Work Orders\") \r\n || x.text.includes(\"Overdue\") \r\n || x.text.includes(\"Scheduled\")\r\n || x.text.includes(\"Unscheduled\")\r\n || x.text.includes(\"In Progress\")\r\n || x.text.includes(\"Pending Invoice\")\r\n || x.text.includes(\"Pending Schedule\")\r\n || x.text.includes(\"External / Strata\"));\r\n }\r\n else{\r\n this.searchModel.selectedStatus = this.searchModel.selectedStatus.filter((x) => !x.text.includes(\"Any\"));\r\n }\r\n if (this.searchModel.selectedStatus.length === 0) {\r\n this.searchModel.selectedStatus.push(this.searchModel.statuses[0]);\r\n }\r\n }\r\n\r\n onStatusChange(status :{ id: number; text: string }) {\r\n this.removeAllFilterFromStatus(status);\r\n }\r\n OnRemoveServiceTypeChip(servType: any): void {\r\n const index = this.searchModel.serviceTypesChips.indexOf(servType);\r\n if (index >= 0) {\r\n this.searchModel.serviceTypesChips.splice(index, 1);\r\n }\r\n }\r\n OnAddServiceTypeChip(event: MatChipInputEvent): void {\r\n event.chipInput!.clear();\r\n }\r\n\r\n OnSelectedServiceType(event: MatAutocompleteSelectedEvent): void {\r\n this.searchModel.serviceTypesChips.push({\r\n id: event.option.value.primaryJobType?.id,\r\n text: event.option.value.primaryJobType?.name,\r\n });\r\n this.serviceTypeInput.nativeElement.value = '';\r\n var selectedChip = this.searchModel.serviceTypesChips.filter(\r\n (e) => e.id == event.option.value.primaryJobType?.id\r\n );\r\n if (selectedChip.length > 1) this.OnRemoveServiceTypeChip(selectedChip[0]);\r\n }\r\n\r\n OnSelectedTradee(event: MatAutocompleteSelectedEvent): void {\r\n this.searchModel.tradeesChips.push({\r\n id: event.option.value?.id,\r\n text: event.option.value?.fullNameDisplay,\r\n });\r\n this.tradeeInput.nativeElement.value = '';\r\n var selectedChip = this.searchModel.tradeesChips.filter(\r\n (e) => e.id == event.option.value?.id\r\n );\r\n if (selectedChip.length > 1) this.OnRemoveTradeeChip(selectedChip[0]);\r\n }\r\n\r\n OnRemoveTradeeChip(tradeeChip: any): void {\r\n const index = this.searchModel.tradeesChips.indexOf(tradeeChip);\r\n if (index >= 0) {\r\n this.searchModel.tradeesChips.splice(index, 1);\r\n }\r\n }\r\n\r\n OnAddTradeeChip(event: any): void {\r\n event.chipInput!.clear();\r\n }\r\n\r\n OnSelectedProperty(event: MatAutocompleteSelectedEvent): void {\r\n this.searchModel.propertyChips.push({\r\n id: event.option.value?.id,\r\n text: event.option.value?.address,\r\n });\r\n this.propertyInput.nativeElement.value = '';\r\n var selectedChip = this.searchModel.propertyChips.filter(\r\n (e) => e.id == event.option.value?.id\r\n );\r\n if (selectedChip.length > 1) this.OnRemovePropertyChip(selectedChip[0]);\r\n }\r\n\r\n OnRemovePropertyChip(propertyChip: any): void {\r\n const index = this.searchModel.propertyChips.indexOf(propertyChip);\r\n if (index >= 0) {\r\n this.searchModel.propertyChips.splice(index, 1);\r\n }\r\n }\r\n\r\n OnAddPropertyChip(event: any): void {\r\n event.chipInput!.clear();\r\n }\r\n\r\n OnApplySearchCriterias() {\r\n this.isApply = true;\r\n this.searchModel.scrolledTop = 0;\r\n this.requestDto.jobNameOrNumber =\r\n this.searchModel.selectedJobIdentification;\r\n this.requestDto.tradeIds = this.removeDuplicate(\r\n this.searchModel.tradeesChips\r\n )\r\n ?.map((s) => s.id)\r\n .toString()\r\n .trim();\r\n this.requestDto.types = this.removeDuplicate(\r\n this.searchModel.selectedJobType\r\n )\r\n ?.map((s) => s.id)\r\n .toString()\r\n .trim();\r\n this.requestDto.jobStatus = this.removeDuplicate(\r\n this.searchModel.selectedStatus\r\n )\r\n ?.map((s) => s.id)\r\n .toString()\r\n .trim();\r\n\r\n this.requestDto.urgencyTypeId = this.searchModel.selectedUrgency.id;\r\n this.requestDto.serviceTypes = this.removeDuplicate(\r\n this.searchModel.serviceTypesChips\r\n )\r\n ?.map((s) => s.id)\r\n .toString()\r\n .trim();\r\n this.requestDto.propertyIds = this.removeDuplicate(\r\n this.searchModel.propertyChips\r\n )\r\n ?.map((s) => s.id)\r\n .toString()\r\n .trim();\r\n this.requestDto.postedFromDate = this.searchModel.posted_Start != null ? new Date(new Date(this.searchModel.posted_Start).setHours(0, 0, 0, 0)).toUTCString():'';\r\n this.requestDto.postedToDate = this.searchModel.posted_End != null ? new Date(new Date(this.searchModel.posted_End).setHours(23, 59, 59, 0)).toUTCString():'';\r\n this.requestDto.dueFromDate = this.searchModel.deadLine_Start;\r\n this.requestDto.dueToDate = this.searchModel.deadLine_end;\r\n this.requestDto.pageNumber = 1;\r\n this.requestDto.pageSize = this.searchModel.pageSize;\r\n this.searchModel.isApply = true;\r\n this.searchModel.pageNumber = 1;\r\n this.requestDto.selectedTeamBusinessUserIds = this.searchModel.selectedTeamUsers\r\n .filter(u => u.businessUserId != this.ORGANIZATION_VIEW_ID)\r\n .map(u => u.businessUserId).toString();\r\n this.requestDto.isSnoozedJob = this.searchModel.isSnoozedJob;\r\n\r\n this.jobSearchService.getAdvancedSearchData(this.requestDto).subscribe({\r\n next: (result) => {\r\n this.jobList = result;\r\n this.resultEmit(result);\r\n this.isApply = false;\r\n },\r\n error: (error) => {},\r\n });\r\n }\r\n\r\n removeDuplicate(a: Array<{ id: number; text: string }>) {\r\n if (a.length > 1 && a.some((x) => x.text.includes('Any'))) {\r\n a = a.filter((r) => r.text.includes('Any'));\r\n }\r\n return a.filter(function (item, pos, self) {\r\n return self.indexOf(item) == pos;\r\n });\r\n }\r\n\r\n OnReset(deactivatedPropertyInput,snoozedJobsInput) {\r\n this.SetDefaultValues(deactivatedPropertyInput,snoozedJobsInput);\r\n this.resultEmit(null);\r\n }\r\n\r\n getTeamUsers() {\r\n this.jobSearchService.getSelectedTeam().subscribe({\r\n next: (res) => {\r\n this.teamUsers = res;\r\n this.teamUsers.forEach((u) => u.selected = false);\r\n this.teamUsers.unshift(this.createOrganizationView());\r\n\r\n if (this.searchModel.selectedTeamUsers.length > 0) {\r\n this.teamUsers.forEach((u) => {\r\n this.searchModel.selectedTeamUsers.some((s) => s.businessUserId == u.businessUserId)\r\n ? u.selected = true\r\n : u.selected = false;\r\n });\r\n }\r\n \r\n this.searchModel.selectedTeamUsers = this.teamUsers.filter((u) => u.selected);\r\n },\r\n });\r\n }\r\n\r\n onChangeTeamUser(user: any) {\r\n\r\n user.selected = !user.selected;\r\n\r\n if (this.searchModel.selectedTeamUsers.length == 0 || user.businessUserId == this.ORGANIZATION_VIEW_ID\r\n ) {\r\n this.teamUsers.forEach((u) => {\r\n u.businessUserId == this.ORGANIZATION_VIEW_ID\r\n ? u.selected = true\r\n : u.selected = false;\r\n });\r\n } else {\r\n this.teamUsers.find((u) => u.businessUserId == this.ORGANIZATION_VIEW_ID).selected = false;\r\n }\r\n\r\n this.searchModel.selectedTeamUsers = this.teamUsers.filter((u) => u.selected);\r\n }\r\n\r\n createOrganizationView() {\r\n let user = new SelectedTeamResult();\r\n user.name = 'Organization view';\r\n user.businessUserId = this.ORGANIZATION_VIEW_ID;\r\n user.selected = true;\r\n return user;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n resultEmit(jobList: any) {\r\n this.requestDtoEvent.emit(jobList);\r\n }\r\n\r\n setPostedStartEndDate(){\r\n this.searchModel.posted_Start = new Date();\r\n this.searchModel.posted_Start = new Date(this.searchModel.posted_Start.setDate(this.searchModel.posted_Start.getDate() - 60)); //Backdate the posted start date to two months\r\n\r\n this.searchModel.posted_End = new Date(); //Set current date to posted end date\r\n }\r\n\r\n updateSnoozedJobsCheckboxVisibility() { \r\n const isOpenType = this.searchModel.selectedJobType?.some(type => type.text === 'Open');\r\n this.snoozedJobsCheckboxVisible = isOpenType;\r\n \r\n if(this.searchModel.isApply) {\r\n this.isSnoozedJob = this.searchModel.isSnoozedJob;\r\n }\r\n\r\n if(this.searchModel.isApply && !isOpenType) {\r\n this.searchModel.isSnoozedJob = false\r\n }\r\n\r\n }\r\n \r\n}\r\n","
\r\n\r\n No jobs found!\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
{{job.name}}
\r\n
#{{job.jobNumber}}
\r\n {{job.address}}\r\n
\r\n
\r\n
\r\n
\r\n
{{job.statusDisplay}}
\r\n
{{job.jobOrigin}}
\r\n
{{job.issueReportedType}}
\r\n
\r\n Pending Payment\r\n
\r\n
Job Snoozed
\r\n
\r\n
\r\n
\r\n
\r\n
{{job.serviceType}}\r\n | Urgent\r\n | \r\n Emergency\r\n
\r\n\r\n

Posted on\r\n {{job.postedOn| date:'dd/MM/yyyy'}} {{job.postedOn| date:'hh:mm a'}}

\r\n
\r\n
\r\n \r\n
\r\n Assigned SP
\r\n
{{job.serviceProviderName}}
\r\n
\r\n \r\n
\r\n Invited SP
\r\n
\r\n {{job.serviceProviderName?.split(' | ').length > 1 ?\r\n job.serviceProviderName?.split(' | ')[0]+'...':job.serviceProviderName?.split(' | ')[0] }}\r\n
\r\n
Invited Trades
\r\n

{{job.serviceProviderName}}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Assigned PM
\r\n
\r\n \r\n {{ name }}
\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","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { RecurranceType, WorkflowStates } from 'src/app/job/constants/job-detail.constants';\r\nimport { TargetTradeOption } from 'src/app/job/constants/job-post/job-post.enums';\r\nimport { AdvancedSeachFilteredJobsResult } from 'src/app/job/models/dashboard/advanced-search-filtered-jobs-result.model';\r\nimport { JobDetailService } from 'src/app/job/services/job-detail/job-detail-service';\r\nimport { AdvancedSearch } from 'src/app/shared/models/advanced-search.model';\r\n\r\n@Component({\r\n selector: 'app-advanced-filtered-jobs-display',\r\n templateUrl: './advanced-search-filtered-jobs-display.component.html',\r\n styleUrls: ['./advanced-search-filtered-jobs-display.component.scss'],\r\n})\r\nexport class AdvancedSearchFilteredJobsDisplayComponent implements OnInit {\r\n @Output() clickRow = new EventEmitter();\r\n @Input() jobList: AdvancedSeachFilteredJobsResult[];\r\n @Input() isApply: boolean;\r\n workflowStatesEnum: typeof WorkflowStates = WorkflowStates;\r\n targetTradeOptionEnum: typeof TargetTradeOption = TargetTradeOption;\r\n isMatMenuOpen: boolean;\r\n constructor(private jobDetailService: JobDetailService) { }\r\n\r\n ngOnInit(): void { }\r\n \r\n rowClicked(row) {\r\n this.clickRow.emit(row);\r\n }\r\n\r\n ngAfterViewInit() {\r\n const advanceSearch = AdvancedSearch.getInstance();\r\n if (advanceSearch.scrolledTop != 0) {\r\n const bodyContainer = document.querySelector('.page-content-container');\r\n bodyContainer.scrollTo({\r\n top: advanceSearch.scrolledTop,\r\n behavior: 'smooth',\r\n });\r\n }\r\n }\r\n\r\n getJobDueDate(job: AdvancedSeachFilteredJobsResult) {\r\n if (job.isRecurrenceParentJob && this.filterRecurrenceTypeForRecurrenceEndDateVisibility(job.jobRecurrenceType)) { // means parent recurrance & ticket covered only for specific types of recurrences \r\n if (job.isEnabledUnlimitedRecurrence) return \"Unlimited\";\r\n else return job.jobRecurrenceEndDate;\r\n } else return job.dueDate;\r\n }\r\n\r\n getJobDueDateDescription(job: AdvancedSeachFilteredJobsResult) {\r\n if (job.isRecurrenceParentJob && this.filterRecurrenceTypeForRecurrenceEndDateVisibility(job.jobRecurrenceType)) { // means parent recurrance & ticket covered only for specific types of recurrences \r\n return \"Last recurrence\";\r\n } else return \"Deadline\";\r\n }\r\n\r\n filterRecurrenceTypeForRecurrenceEndDateVisibility(jobRecurrencyType: RecurranceType) {\r\n return this.jobDetailService.filterRecurrenceTypeForRecurrenceEndDateVisibility(jobRecurrencyType);\r\n }\r\n\r\n splitAssignedPM(assignedPM: string): string[] {\r\n return assignedPM.split(',');\r\n }\r\n\r\n showAssignSP(job:any){\r\n return ((job.tradeOption !== this.targetTradeOptionEnum.QuoteRequest && job.tradeOption !== this.targetTradeOptionEnum.OnDemand)\r\n || job.workflowStatusId === this.workflowStatesEnum.JobQuoteAccepted);\r\n }\r\n showInvitedSP(job:any){\r\n return ((job.tradeOption === this.targetTradeOptionEnum.QuoteRequest || job.tradeOption === this.targetTradeOptionEnum.OnDemand)\r\n && job.workflowStatusId !== this.workflowStatesEnum.JobQuoteAccepted);\r\n }\r\n}\r\n","\r\n\r\n
\r\n \r\n \r\n arrow_back_ios Back to\r\n home\r\n \r\n \r\n Show Results\r\n \r\n {{\r\n number }}\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
","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { JobSearchService } from 'src/app/core/services/http/maintenance/job-search.service';\r\nimport { AdvancedSeachFilteredJobsResult } from 'src/app/job/models/dashboard/advanced-search-filtered-jobs-result.model';\r\nimport { AdvancedSearchComponent } from 'src/app/shared/components/advanced-search/advanced-search.component';\r\nimport { AdvancedSearch } from 'src/app/shared/models/advanced-search.model';\r\n\r\n@Component({\r\n selector: 'app-advanced-search-jobs',\r\n templateUrl: './advanced-search-jobs.component.html',\r\n})\r\nexport class AdvancedSearchJobsComponent implements AfterViewInit {\r\n @ViewChild(AdvancedSearchComponent, { static: false })\r\n advancedSearchComponent: AdvancedSearchComponent;\r\n\r\n constructor(\r\n private router: Router,\r\n private jobSearchService: JobSearchService\r\n ) {}\r\n\r\n public version: string = new Date().toString();\r\n public filteredJobList: AdvancedSeachFilteredJobsResult[] = null;\r\n public isLoad: boolean = false;\r\n public totalRowCount: string = '0';\r\n public pageIndex: number = 0;\r\n\r\n advanceSearch = AdvancedSearch.getInstance();\r\n \r\n ngAfterViewInit(): void {\r\n if (this.advanceSearch.isApply) {\r\n let data = this.advancedSearchComponent.requestDto;\r\n data.jobNameOrNumber = this.advanceSearch.selectedJobIdentification;\r\n data.tradeIds = this.removeDuplicate(this.advanceSearch.tradeesChips)\r\n ?.map((s) => s.id)\r\n .toString()\r\n .trim();\r\n data.propertyIds = this.removeDuplicate(this.advanceSearch.propertyChips)\r\n ?.map((s) => s.id)\r\n .toString()\r\n .trim();\r\n data.types = this.removeDuplicate(this.advanceSearch.selectedJobType)\r\n ?.map((s) => s.id)\r\n .toString()\r\n .trim();\r\n data.jobStatus = this.removeDuplicate(this.advanceSearch.selectedStatus)\r\n ?.map((s) => s.id)\r\n .toString()\r\n .trim();\r\n\r\n data.urgencyTypeId = this.advanceSearch.selectedUrgency.id;\r\n data.serviceTypes = this.removeDuplicate(\r\n this.advanceSearch.serviceTypesChips\r\n )\r\n ?.map((s) => s.id)\r\n .toString()\r\n .trim();\r\n data.postedFromDate = this.advanceSearch.posted_Start != null ? new Date(new Date(this.advanceSearch.posted_Start).setHours(0, 0, 0, 0)).toUTCString():'';\r\n data.postedToDate = this.advanceSearch.posted_End != null ? new Date(new Date(this.advanceSearch.posted_End).setHours(23, 59, 59, 0)).toUTCString():'';\r\n data.dueFromDate = this.advanceSearch.deadLine_Start;\r\n data.dueToDate = this.advanceSearch.deadLine_end;\r\n data.pageNumber = this.advanceSearch.pageNumber;\r\n data.pageSize = this.advanceSearch.pageSize;\r\n data.isSnoozedJob = this.advanceSearch.isSnoozedJob;\r\n this.pageIndex = this.advanceSearch.pageNumber - 1;\r\n data.selectedTeamBusinessUserIds = this.advanceSearch.selectedTeamUsers\r\n ?.filter(user => user.businessUserId && user.businessUserId !== \"ORGANIZATION_VIEW_ID\")\r\n .map(user => user.businessUserId)\r\n .toString();\r\n this.getData(data);\r\n }\r\n }\r\n\r\n jobDashBoard() {\r\n this.router.navigate(['/job']);\r\n }\r\n requestDtoChanged($event) {\r\n this.filteredJobList = null;\r\n setTimeout(() => (this.filteredJobList = $event), 100);\r\n this.totalRowCount = $event?.length > 0 ? $event[0].totalRowCount : '0';\r\n this.isLoad = true;\r\n }\r\n pageChangeEvent(event) {\r\n var data = this.advancedSearchComponent.requestDto;\r\n data.pageNumber = event.pageIndex;\r\n if (event.previousPageIndex > event.pageIndex) {\r\n data.pageNumber = event.previousPageIndex;\r\n } else {\r\n data.pageNumber = event.pageIndex + 1;\r\n }\r\n if (event.pageIndex === 0) {\r\n data.pageNumber = 1;\r\n }\r\n this.advanceSearch.pageNumber = data.pageNumber;\r\n this.getData(data);\r\n }\r\n\r\n getData(data: any) {\r\n this.jobSearchService.getAdvancedSearchData(data).subscribe({\r\n next: (result) => {\r\n this.totalRowCount = result.length > 0 ? result[0].totalRowCount : '0';\r\n this.filteredJobList = result;\r\n this.isLoad = true;\r\n },\r\n error: (error) => {},\r\n });\r\n }\r\n\r\n removeDuplicate(a: Array<{ id: number; text: string }>) {\r\n if (a.length > 1 && a.some((x) => x.text.includes('Any'))) {\r\n a = a.filter((r) => r.text.includes('Any'));\r\n }\r\n return a.filter(function (item, pos, self) {\r\n return self.indexOf(item) == pos;\r\n });\r\n }\r\n\r\n onNumberOfResultsPerPageChange(event: any) {\r\n if (event.isUserInput) {\r\n this.advancedSearchComponent.isApply = true;\r\n this.advanceSearch.pageSize = event.source.value;\r\n this.advanceSearch.scrolledTop = 0;\r\n if (this.filteredJobList) {\r\n var data = this.advancedSearchComponent.requestDto;\r\n data.pageSize = this.advanceSearch.pageSize;\r\n data.pageNumber = 1;\r\n this.advanceSearch.isApply = true;\r\n this.advanceSearch.pageNumber = 1;\r\n this.jobSearchService.getAdvancedSearchData(data).subscribe({\r\n next: (result) => {\r\n this.filteredJobList = result;\r\n this.advancedSearchComponent.resultEmit(result);\r\n this.advancedSearchComponent.isApply = false;\r\n },\r\n error: (error) => {},\r\n });\r\n }\r\n }\r\n }\r\n\r\n onclickRow(row) {\r\n this.advanceSearch.scrolledTop = document.querySelector(\".page-content-container\").scrollTop;\r\n this.router.navigate(['/job/job-detail/', row.id], {\r\n state: { isFromAdvancedSearch: true },\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { UserSessionService } from 'bna-angular-auth-client';\r\n\r\n@Component({\r\n selector: 'app-sign-in-check',\r\n templateUrl: './sign-in-check.component.html',\r\n})\r\nexport class SignInCheckComponent implements OnInit {\r\n constructor(\r\n private userSessionService: UserSessionService,\r\n private router: Router\r\n ) {}\r\n\r\n ngOnInit() {\r\n if (!this.userSessionService.isAuthenticated()) {\r\n sessionStorage.clear();\r\n }\r\n this.router.navigate(['sign-in']);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router, RouterStateSnapshot } from '@angular/router';\r\nimport { PaymentSettings } from 'src/app/settings/models/payment-settings.model';\r\nimport { AppSettings } from 'src/app/shared/constants/app-settings.constants';\r\nimport { ClientSettingsService } from '../services/auth/client-settings.service';\r\nimport { SettingsManagementService } from '../services/http/agency-mgmt/settings-management.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CreditCardGuard {\r\n constructor(\r\n private clientSettingsService: ClientSettingsService,\r\n private settingsManagementService: SettingsManagementService,\r\n private router: Router\r\n ) {}\r\n\r\n paymentSettings: PaymentSettings;\r\n isCreditCardActivatedOrg: boolean = true;\r\n\r\n canActivate(state: RouterStateSnapshot) {\r\n this.isCreditCardActivatedOrg = this.clientSettingsService.get('isCreditCardActivatedOrg', false);\r\n this.settingsManagementService.getPaymentSettings().subscribe(\r\n {\r\n next: (response: PaymentSettings) => {\r\n this.paymentSettings = response;\r\n this.isCreditCardActivatedOrg = this.paymentSettings.isCreditCardActivatedOrg;\r\n this.clientSettingsService.set(\r\n AppSettings.IsCreditCardActivatedOrg,\r\n this.paymentSettings.isCreditCardActivatedOrg,\r\n false\r\n );\r\n if(!this.isCreditCardActivatedOrg){\r\n this.router.navigate(['/settings'], {\r\n queryParams: { returnUrl: state.url },\r\n });\r\n }\r\n },\r\n error: error => {\r\n return true;\r\n }\r\n });\r\n\r\n if(this.isCreditCardActivatedOrg === false){\r\n this.router.navigate(['/settings'], {\r\n queryParams: { returnUrl: state.url },\r\n });\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { UserSessionService } from 'bna-angular-auth-client';\r\nimport { ClientSettingsService } from 'src/app/core/services/auth/client-settings.service';\r\nimport { AppSettings } from 'src/app/shared/constants/app-settings.constants';\r\n\r\n@Component({\r\n selector: 'app-account-in-review',\r\n templateUrl: './account-in-review.component.html',\r\n styleUrls: ['./account-in-review.component.scss'],\r\n})\r\nexport class AccountInReviewComponent implements OnInit {\r\n constructor(private userSessionService: UserSessionService) {}\r\n\r\n ngOnInit() {\r\n document.body.classList.add('account-review');\r\n }\r\n\r\n ngOnDestroy() {\r\n document.body.classList.remove('account-review');\r\n }\r\n\r\n backToSignIn() {\r\n this.userSessionService.signOut();\r\n }\r\n}\r\n","\r\n
\r\n
\r\n \r\n

The most advanced solution for Property Maintenance.\r\n

\r\n
\r\n
\r\n
\r\n

Account in Review

\r\n\r\n
\r\n We are working on setting up your account and expect to complete this within 24 hours (but of course we will\r\n do\r\n this as soon as we can). If you have any questions in the meantime, please chat with us or send us an email to\r\n support@bricksandagent.com We will be back\r\n in\r\n touch with your shortly.
The team at Bricks + Agent.\r\n
\r\n
\r\n
\r\n
\r\n \r\n

Bricks and Agent | Maintenance from Bricks +\r\n Agent on Vimeo

\r\n
\r\n
\r\n

Courses

\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { AuthGuard } from './core/guards/auth.guard';\r\nimport { SignInComponent } from './layout/components/sign-in/sign-in.component';\r\nimport { SignOutComponent } from './layout/components/sign-out/sign-out.component';\r\nimport { AdvancedSearchJobsComponent } from './job/components/job-dashboard/advanced-search-jobs/advanced-search-jobs.component';\r\nimport { SignInCheckComponent } from './layout/components/sign-in-check/sign-in-check.component';\r\nimport { CreditCardGuard } from './core/guards/credit-card.guard';\r\nimport { AccountInReviewComponent } from './layout/components/account-in-review/account-in-review.component';\r\nimport { AssetGuard } from './core/guards/asset.guard';\r\nimport { AssetDashboardComponent } from './asset/components/asset-dashboard/asset-dashboard.component';\r\n\r\nconst routes: Routes = [\r\n { path: '', pathMatch: 'full', redirectTo: '/sign-in-check' },\r\n {\r\n path: 'sign-in',\r\n component: SignInComponent,\r\n },\r\n {\r\n path: 'sign-in-check',\r\n component: SignInCheckComponent,\r\n },\r\n {\r\n path: 'sign-out',\r\n component: SignOutComponent,\r\n },\r\n {\r\n path: 'job',\r\n loadChildren: () => import('./job/job.module').then((m) => m.JobModule),\r\n canActivate: [AuthGuard, CreditCardGuard],\r\n },\r\n {\r\n path: 'property',\r\n loadChildren: () =>\r\n import('./property/property.module').then((m) => m.PropertyModule),\r\n canActivate: [AuthGuard, CreditCardGuard],\r\n },\r\n {\r\n path: 'insight',\r\n loadChildren: () =>\r\n import('./insight/insight.module').then((m) => m.InsightModule),\r\n canActivate: [AuthGuard, CreditCardGuard],\r\n },\r\n {\r\n path: 'tradee',\r\n loadChildren: () =>\r\n import('./tradee/tradee.module').then((m) => m.TradeeModule),\r\n canActivate: [AuthGuard, CreditCardGuard],\r\n },\r\n {\r\n path: 'settings',\r\n loadChildren: () =>\r\n import('./settings/settings.module').then((m) => m.SettingsModule),\r\n canActivate: [AuthGuard],\r\n },\r\n {\r\n path: 'advanced-search',\r\n component: AdvancedSearchJobsComponent,\r\n },\r\n {\r\n path: 'communications',\r\n loadChildren: () =>\r\n import('./communications/communications.module').then(\r\n (m) => m.CommunicationsModule\r\n ),\r\n canActivate: [AuthGuard, CreditCardGuard],\r\n },\r\n {\r\n path: 'inspection-manager',\r\n loadChildren: () =>\r\n import('./inspection-manager/inspection-manager.module').then(\r\n (m) => m.InspectionManagerModule\r\n ),\r\n canActivate: [AuthGuard, CreditCardGuard],\r\n },\r\n {\r\n path: 'static-pages',\r\n loadChildren: () =>\r\n import('./static-pages/static-pages.module').then(\r\n (m) => m.StaticPagesModule\r\n )\r\n },\r\n {\r\n path: 'account-in-review',\r\n component: AccountInReviewComponent,\r\n },\r\n {\r\n path: 'asset',\r\n loadChildren: () =>\r\n import('./asset/asset.module').then((m) => m.AssetModule),\r\n canActivate: [AuthGuard,AssetGuard],\r\n },\r\n {\r\n path: 'view-assets',\r\n component: AssetDashboardComponent\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forRoot(routes, { paramsInheritanceStrategy: 'always', enableTracing: true, }),\r\n ],\r\n exports: [RouterModule],\r\n})\r\nexport class AppRoutingModule { }\r\n","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n work_outline\r\n \r\n \r\n \r\n \r\n assessment\r\n \r\n \r\n \r\n \r\n receipt\r\n \r\n \r\n \r\n \r\n key_outline\r\n \r\n \r\n \r\n \r\n fact_check\r\n \r\n \r\n \r\n \r\n settings\r\n \r\n \r\n \r\n \r\n forum\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\r\n","import { AfterViewInit, Component, OnInit } from '@angular/core';\r\nimport { UserSessionService } from 'bna-angular-auth-client';\r\nimport { Subscription, filter } from 'rxjs';\r\nimport { LocalStorageService } from 'src/app/core/services/data/local-storage.service';\r\nimport { NotificationService } from 'src/app/core/services/firebase/notification.service';\r\nimport { OrganizationService } from 'src/app/core/services/http/agency-mgmt/organization.service';\r\nimport { EventService } from 'src/app/core/services/http/event.service';\r\nimport { JobSearchService } from 'src/app/core/services/http/maintenance/job-search.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { EmailNotificationCount } from '../../models/email-notification-count.model';\r\nimport { SHOWORGANIZATIONEMAILCOUNT } from 'src/app/shared/constants/local-storage-items.constants';\r\n\r\n@Component({\r\n selector: 'app-side-nav',\r\n templateUrl: './side-nav.component.html',\r\n styleUrls: ['./side-nav.component.scss'],\r\n})\r\nexport class SideNavComponent implements OnInit, AfterViewInit {\r\n public invoiceProcessorEnabled = false;\r\n public keyAutomateEnabled = false;\r\n public isAssetRegisterViewEnabled = false;\r\n public isEnabledPowerBiQnA = false;\r\n public readonly invoiceAutomateUrl: string;\r\n public readonly keyAutomateUrl: string;\r\n unreadEmailCount = 0;\r\n hideInspectionManagerIcon = false;\r\n public pmUserIdList : EmailNotificationCount [] = null;\r\n public sub: Subscription[] = [];\r\n\r\n constructor(\r\n private userSessionService: UserSessionService,\r\n private organizationService: OrganizationService,\r\n private notificationService: NotificationService,\r\n private jobSearchService: JobSearchService,\r\n private localStorageService: LocalStorageService,\r\n ) {\r\n if (this.userSessionService.isAuthenticated()) this.loadStartupSettings();\r\n\r\n this.userSessionService.isAuthenticated$\r\n .pipe(filter((d) => d.isAuthenticated))\r\n .subscribe(() => {\r\n this.loadStartupSettings();\r\n });\r\n this.userSessionService.userHasChanged$.subscribe((changed) => {\r\n if (!this.userSessionService.isAuthenticated()) return;\r\n if (!changed) return;\r\n this.loadStartupSettings();\r\n });\r\n this.invoiceAutomateUrl = this.userSessionService.addSessionQueryParams(\r\n `${environment.invoiceProcessor.baseUrl}`\r\n );\r\n this.keyAutomateUrl = this.userSessionService.addSessionQueryParams(\r\n `${environment.keyAutomate.baseUrl}`\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n this.notificationService.emailCount$.subscribe((data) => {\r\n this.unreadEmailCount = data;\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n let integrationType = localStorage.getItem('integration-type');\r\n this.hideInspectionManagerIcon = integrationType == 'IM';\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.sub.forEach(sub => sub.unsubscribe());\r\n }\r\n\r\n private loadStartupSettings() {\r\n if (this.sub[1]) this.sub[1].unsubscribe(); \r\n this.sub[1] = this.organizationService.getStartupSettings()\r\n .subscribe((settings) => {\r\n let integrationType = localStorage.getItem('integration-type');\r\n this.invoiceProcessorEnabled =\r\n environment.invoiceProcessor.isEnable &&\r\n settings?.newInvoiceAutomateAppEnabled &&\r\n settings?.isCreditCardActivatedOrg && integrationType != 'IM';\r\n\r\n this.keyAutomateEnabled = environment.keyAutomate.isEnable && settings?.isKeyAutomateEnabled && integrationType != 'IM';\r\n this.isAssetRegisterViewEnabled = settings?.isAssetRegisterViewEnabled;\r\n this.isEnabledPowerBiQnA = settings?.isEnabledPowerBiQnA;\r\n console.log('environment.invoiceProcessor.isEnable - ' + environment.invoiceProcessor.isEnable);\r\n console.log('settings.newInvoiceAutomateAppEnabled - ' + settings?.newInvoiceAutomateAppEnabled);\r\n console.log('settings.isCreditCardActivatedOrg - ' + settings?.isCreditCardActivatedOrg);\r\n console.log('IA Enabled - ' + this.invoiceProcessorEnabled);\r\n \r\n console.log('environment.keyAutomate.isEnable - ' + environment.keyAutomate.isEnable);\r\n console.log('settings.isKeyAutomateEnabled - ' + settings?.isKeyAutomateEnabled);\r\n console.log('KA Enabled - ' + this.keyAutomateEnabled);\r\n \r\n console.log('integrationType - ' + integrationType);\r\n\r\n });\r\n }\r\n\r\n displayUnreadEmailNotificationCount() {\r\n if (!this.unreadEmailCount) this.unreadEmailCount = 0;\r\n\r\n return this.unreadEmailCount >= 99\r\n ? '99+'\r\n : this.unreadEmailCount.toString();\r\n }\r\n\r\n hiddenUnreadEmailCount() {\r\n return this.unreadEmailCount == 0;\r\n }\r\n\r\n}\r\n","
\r\n \"User\r\n \r\n \r\n
\r\n \r\n logout\r\n

\r\n Sign Out

\r\n
\r\n
\r\n
","import { Component, OnInit } from '@angular/core';\r\nimport { UserProfile, UserSessionService } from 'bna-angular-auth-client';\r\nimport { LocalStorageService } from 'src/app/core/services/data/local-storage.service';\r\nimport { SHOWORGANIZATIONEMAILCOUNT } from 'src/app/shared/constants/local-storage-items.constants';\r\n\r\n@Component({\r\n selector: 'app-user-profile-menu',\r\n templateUrl: './user-profile-menu.component.html',\r\n styleUrls: ['./user-profile-menu.component.scss'],\r\n})\r\nexport class UserProfileMenuComponent implements OnInit {\r\n enabled = false;\r\n isAuthenticated = false;\r\n profile: UserProfile;\r\n\r\n constructor(\r\n private userSessionService: UserSessionService,\r\n private localStorageService: LocalStorageService) {\r\n this.enabled = !this.userSessionService.isIntegration;\r\n this.isAuthenticated = this.userSessionService.isAuthenticated();\r\n this.profile = this.userSessionService.getProfile();\r\n }\r\n ngOnInit(): void {\r\n this.userSessionService.isAuthenticated$.subscribe((result) => {\r\n if (!result.isAuthenticated) return;\r\n this.isAuthenticated = result.isAuthenticated;\r\n this.profile = this.userSessionService.getProfile();\r\n });\r\n }\r\n\r\n signOut() {\r\n this.localStorageService.removeItem('showLowSMSCountAlert');\r\n this.localStorageService.removeItem(SHOWORGANIZATIONEMAILCOUNT);\r\n this.userSessionService.signOut();\r\n }\r\n\r\n image404ErrorHandler(event) {\r\n event.target.src = '../../../../assets/images/user.png';\r\n }\r\n}\r\n","export class EmailNotification {\r\n id: string;\r\n userId: string;\r\n title: string;\r\n body: string;\r\n icon: string;\r\n createdDate: Date | string;\r\n primaryId: string | null;\r\n secondaryId: string | null;\r\n optionalValue: string;\r\n jobId: string | null;\r\n isActionClicked: boolean;\r\n}\r\n\r\nexport class EmailNotificationResult {\r\n emailNotifications: EmailNotification[];\r\n pageTotal: number;\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { EmailNotification } from 'src/app/layout/models/email-notification.model';\r\nimport { environment } from 'src/environments/environment';\r\nimport { BaseService } from '../base/base.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class EmailNotificationService extends BaseService {\r\n private readonly urlPrefix = `${environment.maintenance.urlPrefix}/notifications`;\r\n constructor(private httpClient: HttpClient) {\r\n super(httpClient);\r\n }\r\n\r\n getEmailNotificationData(pageNo: number, pageSize: number): any {\r\n var endpointUrl = `${this.urlPrefix}/emaillist?pageNumber=${pageNo}&pageSize=${pageSize}`;\r\n return this.get(endpointUrl);\r\n }\r\n\r\n setNotificationActionAsClick(notificationId: string) {\r\n let endpointUrl = `${this.urlPrefix}/notification-action-clicked?notificationId=${notificationId}`;\r\n return this.put(endpointUrl, null);\r\n }\r\n}\r\n","
\r\n \r\n
Emails
\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 {{emailNotify.title}}\r\n

{{emailNotify.body}}

\r\n
\r\n {{emailNotify.createdDate | date:'dd MMM yyyy'}} at {{emailNotify.createdDate |\r\n date:'shortTime'}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { OidcSecurityService } from 'angular-auth-oidc-client';\r\nimport { Subscription } from 'rxjs';\r\nimport { EmailInboxType } from 'src/app/communications/models/contacts/email-inbox-type';\r\nimport { LocalStorageService } from 'src/app/core/services/data/local-storage.service';\r\nimport { NotificationService } from 'src/app/core/services/firebase/notification.service';\r\nimport { EmailLogService } from 'src/app/core/services/http/maintenance/email-log.service';\r\nimport { EmailNotificationService } from 'src/app/core/services/http/notifications/email-notification.service';\r\nimport {\r\n EmailNotification,\r\n EmailNotificationResult,\r\n} from 'src/app/layout/models/email-notification.model';\r\nimport { SHOWORGANIZATIONEMAILCOUNT } from 'src/app/shared/constants/local-storage-items.constants';\r\n\r\n@Component({\r\n selector: 'app-email-notifications',\r\n templateUrl: './email-notifications.component.html',\r\n styleUrls: ['./email-notifications.component.scss'],\r\n})\r\nexport class EmailNotificationsComponent implements OnInit, OnDestroy {\r\n private subs: Subscription[] = [];\r\n isEmailListLoading: boolean;\r\n notifications: EmailNotificationResult = new EmailNotificationResult();\r\n pageSize: number = 8;\r\n pageNumber: number = 0;\r\n pageTotal: number = 0;\r\n userId :string = '';\r\n userEmailNotificationCount: number = 0;\r\n @Input() organizationPmUserIds: string[];\r\n @Output() closeEvent = new EventEmitter();\r\n constructor(\r\n private emailNotifySvc: EmailNotificationService,\r\n private emailLogSvc: EmailLogService,\r\n private firebaseSvc: NotificationService,\r\n private oidcSecurityService: OidcSecurityService,\r\n private router: Router,\r\n private localStorageService: LocalStorageService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.userId = this.oidcSecurityService.getPayloadFromIdToken(false).sub;\r\n this.getEmailNotifications();\r\n this.getCurrentUserEmailNotificationCount();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.forEach((sub) => sub.unsubscribe());\r\n }\r\n\r\n getEmailNotifications(): void {\r\n if(this.localStorageService.get(SHOWORGANIZATIONEMAILCOUNT) == \"true\")\r\n this.getEmailListbyUserIds(this.organizationPmUserIds.join(','));\r\n else\r\n this.getEmailListCurrentUser();\r\n \r\n }\r\n\r\n setEmailNotificationAsReadOrUnread(email: EmailNotification, index: number) {\r\n if(email.userId != this.oidcSecurityService.getPayloadFromIdToken(false).sub)\r\n return;\r\n if (this.notifications.emailNotifications[index].isActionClicked) {\r\n this.updateEmailNotificationCount(true);\r\n this.notifications.emailNotifications[index].isActionClicked = false;\r\n } else {\r\n this.updateEmailNotificationCount(false);\r\n this.notifications.emailNotifications[index].isActionClicked = true;\r\n }\r\n this.emailLogSvc\r\n .updateEmailReadOrUnreadStatus(email.primaryId, email.optionalValue)\r\n .subscribe();\r\n }\r\n\r\n openEmail(\r\n email: EmailNotification,\r\n index: number\r\n ): void {\r\n this.setNotificationAsRead(email);\r\n this.dismiss();\r\n this.router.navigate(['/job/job-detail/', email.primaryId], {\r\n queryParams: { emailId: email.optionalValue },\r\n });\r\n }\r\n\r\n setNotificationAsRead(email: EmailNotification) {\r\n if(email.userId != this.oidcSecurityService.getPayloadFromIdToken(false).sub)\r\n return;\r\n this.emailNotifySvc\r\n .setNotificationActionAsClick(email.id)\r\n .subscribe((res) => {\r\n });\r\n }\r\n\r\n updateEmailNotificationCount(isUnread: boolean) {\r\n let count = this.userEmailNotificationCount;\r\n count = isUnread ? count + 1 : count - 1;\r\n if (count < 0) {\r\n return;\r\n }\r\n this.firebaseSvc.updateEmailNotificationCount(this.userId, count);\r\n }\r\n\r\n getNotificationsPaginatedResult(event: any) {\r\n this.pageNumber = event;\r\n this.getEmailNotifications();\r\n }\r\n\r\n getEmailListbyUserIds(userIds: string) { \r\n this.isEmailListLoading = true;\r\n \r\n this.subs[1] = this.emailLogSvc\r\n .getEmailListByUserIds(\r\n EmailInboxType.Inbox,\r\n userIds,\r\n this.pageNumber + 1,\r\n '',\r\n this.pageSize\r\n )\r\n .subscribe((res) => {\r\n this.notifications.emailNotifications = res.emailList;\r\n this.notifications.pageTotal = res.emailCount;\r\n this.pageTotal = this.notifications.pageTotal;\r\n this.isEmailListLoading = false; \r\n });\r\n }\r\n\r\n getEmailListCurrentUser(){\r\n this.isEmailListLoading = true;\r\n this.subs[0] = this.emailNotifySvc\r\n .getEmailNotificationData(this.pageNumber, this.pageSize)\r\n .subscribe((res) => {\r\n this.notifications = res;\r\n this.pageTotal = this.notifications.pageTotal;\r\n this.isEmailListLoading = false;\r\n });\r\n }\r\n\r\n \r\n isActionDisable(email: EmailNotification) {\r\n const getEmail = {...email }; \r\n return (getEmail.userId != this.oidcSecurityService.getPayloadFromIdToken(false).sub);\r\n }\r\n\r\n public dismiss() {\r\n this.closeEvent.emit();\r\n }\r\n\r\n getCurrentUserEmailNotificationCount() {\r\n this.firebaseSvc.getEmailNotificationCount().subscribe((res) => {\r\n this.userEmailNotificationCount = res;\r\n });\r\n }\r\n\r\n}\r\n","\r\n \r\n \r\n
\r\n \r\n\r\n
\r\n email\r\n
{{emailNotificationCount}}
\r\n
99)\"\r\n class=\"count\">99+
\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n","import {\r\n Component,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\nimport { UserSessionService } from 'bna-angular-auth-client';\r\nimport { Subscription} from 'rxjs';\r\nimport { NotificationService } from 'src/app/core/services/firebase/notification.service';\r\nimport { EventService } from 'src/app/core/services/http/event.service';\r\nimport { JobSearchService } from 'src/app/core/services/http/maintenance/job-search.service';\r\nimport { LocalStorageService } from 'src/app/core/services/data/local-storage.service';\r\nimport { SHOWORGANIZATIONEMAILCOUNT } from 'src/app/shared/constants/local-storage-items.constants';\r\nimport { EmailNotificationCount } from '../../models/email-notification-count.model';\r\n\r\n@Component({\r\n selector: 'app-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n})\r\nexport class HeaderComponent implements OnInit, OnDestroy{\r\n public sub: Subscription[] = [];\r\n @Output() navigateToJobPost = new EventEmitter();\r\n isOpenEmailDrawer: boolean = false;\r\n emailNotificationCount = 0;\r\n hideJobPostOnInspectionManager = false;\r\n pmUserIdList : EmailNotificationCount [] = null;\r\n organizationPmUserIds : string [] = null;\r\n\r\n constructor(\r\n private firebaseSvc: NotificationService,\r\n private userSession: UserSessionService,\r\n private eventService: EventService,\r\n private jobSearchService: JobSearchService,\r\n private localStorageService: LocalStorageService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.userSession.isAuthenticated$.subscribe((auth) => {\r\n if (!auth.isAuthenticated) return;\r\n\r\n });\r\n\r\n this.eventService.hideJobPostOnInspectionManager$.subscribe({\r\n next: (value) => {\r\n this.hideJobPostOnInspectionManager = value ?? false;\r\n }\r\n })\r\n\r\n this.firebaseSvc.refreshEmailCount$.subscribe(() => {\r\n this.emailNotificationCount = 0;\r\n this.sub.forEach(sub => sub.unsubscribe());\r\n this.sub = [];\r\n this.getEmailNotificationCount();\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.sub.forEach(sub => sub.unsubscribe());\r\n }\r\n\r\n showEmailNotifications(): void {\r\n this.isOpenEmailDrawer = true;\r\n const bodyTag = document.body;\r\n bodyTag.classList.add('email-notification-open');\r\n }\r\n\r\n getEmailNotificationCount() {\r\n if(this.localStorageService.get(SHOWORGANIZATIONEMAILCOUNT) == \"true\" ){\r\n this.getOrganizationEmailCount();\r\n }\r\n else{\r\n this.getCurrentUserEmailCount()\r\n }\r\n }\r\n\r\n closeDrawer(): void {\r\n this.isOpenEmailDrawer = false;\r\n const bodyTag = document.body;\r\n bodyTag.classList.remove('email-notification-open');\r\n }\r\n\r\n getOrganizationEmailCount(){\r\n \r\n this.jobSearchService.getSelectedTeam().subscribe({\r\n next: (res) => {\r\n if(res == null || res.length == 0){\r\n return;\r\n }\r\n this.organizationPmUserIds = res.map(m => m.userId);\r\n this.pmUserIdList = res.map(m => ({\r\n userId: m.userId,\r\n emailCount: 0 \r\n }));\r\n\r\n this.pmUserIdList.forEach(element => {\r\n const minsub =this.firebaseSvc.getOrganizationEmailNotificationCount(element.userId)\r\n .valueChanges().subscribe((res) => {\r\n let countDifferent = res - element.emailCount;\r\n this.emailNotificationCount = countDifferent + this.emailNotificationCount;\r\n element.emailCount = res;\r\n this.firebaseSvc.setEmailCount(this.emailNotificationCount);\r\n });\r\n this.sub.push(minsub);\r\n });\r\n },\r\n\r\n error: () => {},\r\n });\r\n }\r\n\r\n getCurrentUserEmailCount(){\r\n this.sub.push(this.firebaseSvc.getEmailNotificationCount().subscribe((res) => {\r\n this.emailNotificationCount = res;\r\n this.firebaseSvc.setEmailCount(this.emailNotificationCount);\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
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
","import { Component, ElementRef, HostListener, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ClientSettingsService } from './core/services/auth/client-settings.service';\r\nimport { SettingsService } from './core/services/http/maintenance/settings.service';\r\nimport liveSession from '@livesession/sdk';\r\nimport {\r\n IframeCommService,\r\n UserSessionService,\r\n BnaServicesAuthClientModule,\r\n} from 'bna-angular-auth-client';\r\nimport { AppSettings } from './shared/constants/app-settings.constants';\r\nimport { JobSearchService } from './core/services/http/maintenance/job-search.service';\r\nimport { OrganizationService } from './core/services/http/agency-mgmt/organization.service';\r\nimport { JobCacheService } from './job/services/job-detail/job-cache.service';\r\nimport { LocalStorageService } from './core/services/data/local-storage.service';\r\nimport { SHOWORGANIZATIONEMAILCOUNT } from './shared/constants/local-storage-items.constants';\r\nimport { OrganizationSettingsResult } from './shared/models/agency-mgmt/manager.service.model';\r\nimport { NotificationService } from './core/services/firebase/notification.service';\r\nimport { tokenName } from '@angular/compiler';\r\nimport { OidcSecurityService } from 'angular-auth-oidc-client';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent implements OnInit {\r\n private _appTheme = '';\r\n\r\n public get appTheme() {\r\n return this._appTheme || this.clientSettingsService.get(AppSettings.Theme);\r\n }\r\n private set appTheme(value) {\r\n this.clientSettingsService.set(AppSettings.Theme, value);\r\n this._appTheme = value;\r\n }\r\n\r\n readonly agentId = `${environment.alexAgent.agentId}`;\r\n readonly projectId = `${environment.alexAgent.projectId}`;\r\n isShowChatBot : boolean = false;\r\n\r\n constructor(\r\n public userSessionService: UserSessionService,\r\n private OrganizationService: OrganizationService,\r\n private clientSettingsService: ClientSettingsService,\r\n private iframeCommService: IframeCommService,\r\n private settingsService: SettingsService,\r\n private router: Router,\r\n private route: ActivatedRoute,\r\n private authClient: BnaServicesAuthClientModule,\r\n private jobSearchService: JobSearchService,\r\n private uiContext: JobCacheService,\r\n private localStorageService: LocalStorageService,\r\n private notificationService: NotificationService,\r\n private elementRef: ElementRef\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.authClient.init();\r\n this.initLiveSession();\r\n this.userSessionService.isAuthenticated$.subscribe((result) => {\r\n console.log(\"isAuthenticated\", result.isAuthenticated);\r\n if (!result.isAuthenticated) {\r\n const dfMessenger = document.querySelector('df-messenger') as any;\r\n if (dfMessenger) {\r\n dfMessenger.startNewSession({ retainHistory: false });\r\n } \r\n return;\r\n }\r\n this.connectToIntercom();\r\n this.loadAppSettings();\r\n this.subscribeForMaintenanceRequests();\r\n this.connectToAlexGeminiModels();\r\n });\r\n\r\n this.loadCampaignAgentScript();\r\n }\r\n\r\n private initLiveSession() {\r\n liveSession.init(\r\n environment.livesession.trackId,\r\n { rootHostname: '.bricksandagent.com' },\r\n {\r\n devMode: !environment.livesession.isEnable,\r\n scriptURL: 'https://cdn.livesession.io/track.js',\r\n }\r\n );\r\n liveSession.newPageView();\r\n }\r\n\r\n private subscribeForMaintenanceRequests() {\r\n this.iframeCommService\r\n .listen<{\r\n parameters: {\r\n external_property_id: string;\r\n external_maintenance_request_id: string;\r\n action: string;\r\n };\r\n }>(['context'])\r\n .subscribe((context) => {\r\n console.log(context);\r\n if (context.parameters?.action === 'new maintenance request') {\r\n console.log(\"Property ID: \", context.parameters?.external_property_id);\r\n setTimeout(() => {\r\n this.openNewJobPostByPropertyId(context.parameters?.external_property_id)\r\n }, 1000);\r\n } else if (context.parameters?.action === 'maintenance request') {\r\n setTimeout(() => {\r\n this.openExistingJobByJobNumber(\r\n context.parameters?.external_maintenance_request_id\r\n );\r\n }, 2000);\r\n }\r\n });\r\n }\r\n\r\n private openNewJobPostByPropertyId(propertyId: string) {\r\n console.log(\"Property ID in openNewJobPostByPropertyId: \", propertyId);\r\n //console.log(this.router.url);\r\n if (!propertyId) return;\r\n this.router.navigate(['/job/job-post/', propertyId], {queryParams: { isNewMaintenance: true}});\r\n }\r\n\r\n private openExistingJobByJobNumber(jobNumber: string) {\r\n if (!jobNumber) return;\r\n this.jobSearchService.searchJobsByJobNumber(jobNumber).subscribe({\r\n next: (res) => {\r\n if (res != null && res.length > 0 && res[0].id) console.log(res[0].id);\r\n this.router.navigate(['/job/job-detail/', res[0].id]);\r\n },\r\n error: () => {},\r\n });\r\n }\r\n\r\n private connectToIntercom() {\r\n const profile = this.userSessionService.getProfile();\r\n this.OrganizationService.getSettings(\r\n this.uiContext.currentVersion\r\n ).subscribe((data) => {\r\n \r\n this.updateShowOrganizationEmailsettings(data);\r\n this.isShowChatBot = data?.isEnabledAlexAgentChatBot;\r\n\r\n if (!data?.cdpSyncUserReferenceId) return;\r\n\r\n const quillEditor = document.querySelector('.ql-editor');\r\n const editorContent = quillEditor?.innerHTML;\r\n \r\n const encodedContent = encodeURIComponent(editorContent);\r\n\r\n var config = {\r\n app_id: environment.intercom.appId,\r\n email: profile.email,\r\n user_id: data?.cdpSyncUserReferenceId,\r\n alignment: 'left',\r\n horizontal_padding: 35,\r\n vertical_padding: 10,\r\n };\r\n\r\n window.Intercom('boot', {\r\n ...config,\r\n custom_attributes: {\r\n editorContent: encodedContent,\r\n },\r\n });\r\n });\r\n }\r\n\r\n private loadAppSettings() {\r\n this.settingsService.getAppSettings().subscribe((d) => {\r\n if (!d) return;\r\n\r\n this.appTheme = d.styleCode;\r\n });\r\n }\r\n\r\n loadCampaignAgentScript() {\r\n var script = document.createElement('script');\r\n script.src = `${environment.campaignAgent.scriptUrl}`;\r\n document.head.appendChild(script);\r\n }\r\n\r\n updateShowOrganizationEmailsettings(setttings : OrganizationSettingsResult) {\r\n if (setttings != null && setttings.showOrganizationEmailNotifications )\r\n this.localStorageService.set(SHOWORGANIZATIONEMAILCOUNT, setttings.showOrganizationEmailNotifications);\r\n else \r\n this.localStorageService.set(SHOWORGANIZATIONEMAILCOUNT, false);\r\n\r\n this.notificationService.chageEmailNotificationCountBySettings();\r\n }\r\n\r\n private connectToAlexGeminiModels() {\r\n const dfMessenger = document.querySelector('df-messenger') as any;\r\n const queryParameters = {\r\n parameters: {\r\n organizationId: this.userSessionService.getProfile().organizationId\r\n }\r\n };\r\n dfMessenger.setQueryParameters(queryParameters);\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onClickOutside(event: Event) {\r\n const chatbotElement = this.elementRef.nativeElement.querySelector('.chatbot-container');\r\n\r\n if (chatbotElement && !chatbotElement.contains(event.target as Node)) {\r\n const dfMessengerBubble = document.querySelector('df-messenger-chat-bubble') as any;\r\n dfMessengerBubble.closeChat();\r\n }\r\n\r\n }\r\n\r\n \r\n}\r\n","import {\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpHandler,\r\n HttpRequest,\r\n HttpErrorResponse,\r\n HttpStatusCode,\r\n} from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { LoggerService } from '../services/http/logger.service';\r\nimport { TosterService } from '../services/toster/toster.service';\r\nimport { Router } from '@angular/router';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class HttpErrorInterceptor implements HttpInterceptor {\r\n\r\n isInspectionManager = false;\r\n\r\n constructor(private toster: TosterService, private logger: LoggerService, private router: Router) { }\r\n\r\n intercept(\r\n request: HttpRequest,\r\n next: HttpHandler\r\n ): Observable> {\r\n let qps = window.location.href;\r\n let searchParams = new URLSearchParams(qps);\r\n if (searchParams.has(\"integration-type\") === true && searchParams.get(\"integration-type\") === \"IM\") {\r\n this.isInspectionManager = true;\r\n }\r\n\r\n return next.handle(request).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n const statusCodeIsForbidden = error.status === 403;\r\n const statusUnauthorized = error.status === 401;\r\n if (statusUnauthorized) this.logger.log('Authorization required');\r\n\r\n const isShowBnAIntroWhenImUnauthorized = error.status === 400 && this.isInspectionManager && this.isPathIsSession(error);\r\n if (isShowBnAIntroWhenImUnauthorized) {\r\n this.router.navigate(['static-pages/bna-intro'])\r\n }\r\n if (!statusCodeIsForbidden && !statusUnauthorized && !isShowBnAIntroWhenImUnauthorized)\r\n this.displayErrorMessage(error);\r\n\r\n return throwError(() => error);\r\n })\r\n );\r\n }\r\n\r\n private displayErrorMessage(error: HttpErrorResponse) {\r\n let errorMessage = '';\r\n if (error.status == HttpStatusCode.Conflict) return;\r\n\r\n if (error.error instanceof ErrorEvent)\r\n errorMessage = 'oops.. something went wrong...!';\r\n else\r\n errorMessage =\r\n error?.error?.errorMessage ?? 'oops.. something went wrong...!';\r\n\r\n this.toster.error(errorMessage);\r\n }\r\n\r\n private isPathIsSession(error: HttpErrorResponse) {\r\n const url = new URL(error.url);\r\n return url.pathname == \"/session\";\r\n }\r\n}\r\n","import { HttpEvent, HttpHandler, HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ApiVersionInterceptor {\r\n private baseURL: URL = new URL(environment.baseUrl);\r\n constructor() {}\r\n\r\n intercept(\r\n request: HttpRequest,\r\n next: HttpHandler\r\n ): Observable> {\r\n if (this.isSameDestination(request.url)) {\r\n request = this.addVersion(request, environment.baseUrlVersion);\r\n return next.handle(request);\r\n }\r\n\r\n // do process as normal request\r\n return next.handle(request);\r\n }\r\n\r\n private isSameDestination(path: string): boolean {\r\n let targetURL = new URL(path);\r\n return (\r\n targetURL.host === this.baseURL.host &&\r\n targetURL.protocol === this.baseURL.protocol\r\n );\r\n }\r\n\r\n private addVersion(request: HttpRequest, version: string) {\r\n return request.clone({\r\n setHeaders: {\r\n 'Accept-Version': version,\r\n },\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { HttpErrorInterceptor } from './interceptors/http-error.interceptor';\r\nimport { AuthInterceptor } from 'angular-auth-oidc-client';\r\nimport { ApiVersionInterceptor } from './interceptors/api-version.interceptor';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [CommonModule, HttpClientModule],\r\n providers: [\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: ApiVersionInterceptor,\r\n multi: true,\r\n },\r\n { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true },\r\n { provide: HTTP_INTERCEPTORS, useClass: HttpErrorInterceptor, multi: true },\r\n ],\r\n})\r\nexport class CoreModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { HeaderComponent } from './components/header/header.component';\r\nimport { SideNavComponent } from './components/side-nav/side-nav.component';\r\nimport { MaterialComponentsModule } from '../material/material-components.module';\r\nimport { RouterModule } from '@angular/router';\r\nimport { SharedModule } from '../shared/shared.module';\r\nimport { EmailNotificationsComponent } from './components/notifications/email-notifications/email-notifications.component';\r\nimport { SwitchOrganizationComponent } from '../profile/switch-oganization/switch-oganization.component';\r\nimport { UserProfileMenuComponent } from '../profile/user-profile-menu/user-profile-menu.component';\r\nimport {\r\n MatDialogModule,\r\n MatDialogRef,\r\n MAT_DIALOG_DATA,\r\n} from '@angular/material/dialog';\r\nimport { AccountInReviewComponent } from './components/account-in-review/account-in-review.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n HeaderComponent,\r\n SideNavComponent,\r\n EmailNotificationsComponent,\r\n SwitchOrganizationComponent,\r\n UserProfileMenuComponent,\r\n AccountInReviewComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n MaterialComponentsModule,\r\n RouterModule,\r\n SharedModule,\r\n MatDialogModule,\r\n ],\r\n providers: [\r\n { provide: MAT_DIALOG_DATA, useValue: {} },\r\n { provide: MatDialogRef, useValue: {} },\r\n ],\r\n exports: [HeaderComponent, SideNavComponent],\r\n})\r\nexport class LayoutModule {}\r\n","import { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { LogLevel } from 'angular-auth-oidc-client';\r\nimport { environment } from '../environments/environment';\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { CoreModule } from './core/core.module';\r\nimport { LayoutModule } from './layout/layout.module';\r\nimport { SignInComponent } from './layout/components/sign-in/sign-in.component';\r\nimport { MaterialComponentsModule } from './material/material-components.module';\r\nimport { DatePipe } from '@angular/common';\r\nimport { AngularFireModule } from '@angular/fire/compat';\r\nimport { BnaServicesAuthClientModule } from 'bna-angular-auth-client';\r\nimport { SwitchOrganizationPopupComponent } from './profile/switch-organization-popup/switch-organization-popup.component';\r\nimport { SignOutComponent } from './layout/components/sign-out/sign-out.component';\r\nimport { SendLearningMaterialsConfirmComponent } from './job/components/job-detail/learning-materials/send-learning-materials-confirm/send-learning-materials-confirm.component';\r\nimport { MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { AssetsReviewDetailsComponent } from './job/components/job-detail/invoice/approve/assets-review-details/assets-review-details.component';\r\nimport { AssetsExistingDetailsComponent } from './job/components/job-detail/invoice/approve/assets-existing-details/assets-existing-details.component';\r\nimport { AssetsCopilotDetailsComponent } from './job/components/job-detail/invoice/approve/assets-copilot-details/assets-copilot-details.component';\r\nimport { PopoverModule } from 'ngx-smart-popover';\r\nimport {CdkDrag} from '@angular/cdk/drag-drop';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n SignInComponent,\r\n SignOutComponent,\r\n SwitchOrganizationPopupComponent,\r\n SendLearningMaterialsConfirmComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n HttpClientModule,\r\n AppRoutingModule,\r\n BrowserAnimationsModule,\r\n CoreModule,\r\n LayoutModule,\r\n MaterialComponentsModule,\r\n BnaServicesAuthClientModule.forRoot({\r\n iframe_integration: environment.iframe_integration,\r\n authConfig: {\r\n config: {\r\n configId: environment.idp.clientId,\r\n authority: environment.idp.authority,\r\n redirectUrl: window.location.origin + '/sign-in',\r\n postLogoutRedirectUri: window.location.origin + '/sign-out',\r\n clientId: environment.idp.clientId,\r\n scope: environment.idp.scope,\r\n responseType: 'code',\r\n silentRenew: true,\r\n silentRenewTimeoutInSeconds: 60 * 1440, // 1 day\r\n useRefreshToken: true,\r\n enableIdTokenExpiredValidationInRenew: false,\r\n renewTimeBeforeTokenExpiresInSeconds: 600,\r\n tokenRefreshInSeconds: 120,\r\n logLevel: environment.production ? LogLevel.Error : LogLevel.Debug,\r\n autoUserInfo: true,\r\n secureRoutes: [environment.baseUrl] \r\n },\r\n },\r\n }),\r\n AngularFireModule.initializeApp(environment.firebase),\r\n ],\r\n providers: [DatePipe, { provide: MAT_DATE_LOCALE, useValue: 'en-au' }],\r\n bootstrap: [AppComponent],\r\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\r\n})\r\nexport class AppModule {\r\n constructor() {}\r\n}\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\ndeclare global {\r\n interface Window {\r\n Intercom: any;\r\n }\r\n}\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic()\r\n .bootstrapModule(AppModule)\r\n .catch((err) => console.error(err));\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { ErrorFactory, contains, deepExtend, createSubscribe, isBrowser } from '@firebase/util';\nimport { Component } from '@firebase/component';\nimport * as modularAPIs from '@firebase/app';\nimport { _addComponent, deleteApp, _DEFAULT_ENTRY_NAME, _addOrOverwriteComponent, registerVersion } from '@firebase/app';\nimport { Logger } from '@firebase/logger';\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Global context object for a collection of services using\r\n * a shared authentication state.\r\n *\r\n * marked as internal because it references internal types exported from @firebase/app\r\n * @internal\r\n */\r\nclass FirebaseAppImpl {\r\n constructor(_delegate, firebase) {\r\n this._delegate = _delegate;\r\n this.firebase = firebase;\r\n // add itself to container\r\n _addComponent(_delegate, new Component('app-compat', () => this, \"PUBLIC\" /* PUBLIC */));\r\n this.container = _delegate.container;\r\n }\r\n get automaticDataCollectionEnabled() {\r\n return this._delegate.automaticDataCollectionEnabled;\r\n }\r\n set automaticDataCollectionEnabled(val) {\r\n this._delegate.automaticDataCollectionEnabled = val;\r\n }\r\n get name() {\r\n return this._delegate.name;\r\n }\r\n get options() {\r\n return this._delegate.options;\r\n }\r\n delete() {\r\n return new Promise(resolve => {\r\n this._delegate.checkDestroyed();\r\n resolve();\r\n }).then(() => {\r\n this.firebase.INTERNAL.removeApp(this.name);\r\n return deleteApp(this._delegate);\r\n });\r\n }\r\n /**\r\n * Return a service instance associated with this app (creating it\r\n * on demand), identified by the passed instanceIdentifier.\r\n *\r\n * NOTE: Currently storage and functions are the only ones that are leveraging this\r\n * functionality. They invoke it by calling:\r\n *\r\n * ```javascript\r\n * firebase.app().storage('STORAGE BUCKET ID')\r\n * ```\r\n *\r\n * The service name is passed to this already\r\n * @internal\r\n */\r\n _getService(name, instanceIdentifier = _DEFAULT_ENTRY_NAME) {\r\n var _a;\r\n this._delegate.checkDestroyed();\r\n // Initialize instance if InstatiationMode is `EXPLICIT`.\r\n const provider = this._delegate.container.getProvider(name);\r\n if (!provider.isInitialized() &&\r\n ((_a = provider.getComponent()) === null || _a === void 0 ? void 0 : _a.instantiationMode) === \"EXPLICIT\" /* EXPLICIT */) {\r\n provider.initialize();\r\n }\r\n // getImmediate will always succeed because _getService is only called for registered components.\r\n return provider.getImmediate({\r\n identifier: instanceIdentifier\r\n });\r\n }\r\n /**\r\n * Remove a service instance from the cache, so we will create a new instance for this service\r\n * when people try to get it again.\r\n *\r\n * NOTE: currently only firestore uses this functionality to support firestore shutdown.\r\n *\r\n * @param name The service name\r\n * @param instanceIdentifier instance identifier in case multiple instances are allowed\r\n * @internal\r\n */\r\n _removeServiceInstance(name, instanceIdentifier = _DEFAULT_ENTRY_NAME) {\r\n this._delegate.container\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .getProvider(name)\r\n .clearInstance(instanceIdentifier);\r\n }\r\n /**\r\n * @param component the component being added to this app's container\r\n * @internal\r\n */\r\n _addComponent(component) {\r\n _addComponent(this._delegate, component);\r\n }\r\n _addOrOverwriteComponent(component) {\r\n _addOrOverwriteComponent(this._delegate, component);\r\n }\r\n toJSON() {\r\n return {\r\n name: this.name,\r\n automaticDataCollectionEnabled: this.automaticDataCollectionEnabled,\r\n options: this.options\r\n };\r\n }\r\n}\r\n// TODO: investigate why the following needs to be commented out\r\n// Prevent dead-code elimination of these methods w/o invalid property\r\n// copying.\r\n// (FirebaseAppImpl.prototype.name && FirebaseAppImpl.prototype.options) ||\r\n// FirebaseAppImpl.prototype.delete ||\r\n// console.log('dc');\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERRORS = {\r\n [\"no-app\" /* NO_APP */]: \"No Firebase App '{$appName}' has been created - \" +\r\n 'call Firebase App.initializeApp()',\r\n [\"invalid-app-argument\" /* INVALID_APP_ARGUMENT */]: 'firebase.{$appName}() takes either no argument or a ' +\r\n 'Firebase App instance.'\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('app-compat', 'Firebase', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Because auth can't share code with other components, we attach the utility functions\r\n * in an internal namespace to share code.\r\n * This function return a firebase namespace object without\r\n * any utility functions, so it can be shared between the regular firebaseNamespace and\r\n * the lite version.\r\n */\r\nfunction createFirebaseNamespaceCore(firebaseAppImpl) {\r\n const apps = {};\r\n // // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n // const components = new Map>();\r\n // A namespace is a plain JavaScript Object.\r\n const namespace = {\r\n // Hack to prevent Babel from modifying the object returned\r\n // as the firebase namespace.\r\n // @ts-ignore\r\n __esModule: true,\r\n initializeApp: initializeAppCompat,\r\n // @ts-ignore\r\n app,\r\n registerVersion: modularAPIs.registerVersion,\r\n setLogLevel: modularAPIs.setLogLevel,\r\n onLog: modularAPIs.onLog,\r\n // @ts-ignore\r\n apps: null,\r\n SDK_VERSION: modularAPIs.SDK_VERSION,\r\n INTERNAL: {\r\n registerComponent: registerComponentCompat,\r\n removeApp,\r\n useAsService,\r\n modularAPIs\r\n }\r\n };\r\n // Inject a circular default export to allow Babel users who were previously\r\n // using:\r\n //\r\n // import firebase from 'firebase';\r\n // which becomes: var firebase = require('firebase').default;\r\n //\r\n // instead of\r\n //\r\n // import * as firebase from 'firebase';\r\n // which becomes: var firebase = require('firebase');\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n namespace['default'] = namespace;\r\n // firebase.apps is a read-only getter.\r\n Object.defineProperty(namespace, 'apps', {\r\n get: getApps\r\n });\r\n /**\r\n * Called by App.delete() - but before any services associated with the App\r\n * are deleted.\r\n */\r\n function removeApp(name) {\r\n delete apps[name];\r\n }\r\n /**\r\n * Get the App object for a given name (or DEFAULT).\r\n */\r\n function app(name) {\r\n name = name || modularAPIs._DEFAULT_ENTRY_NAME;\r\n if (!contains(apps, name)) {\r\n throw ERROR_FACTORY.create(\"no-app\" /* NO_APP */, { appName: name });\r\n }\r\n return apps[name];\r\n }\r\n // @ts-ignore\r\n app['App'] = firebaseAppImpl;\r\n /**\r\n * Create a new App instance (name must be unique).\r\n *\r\n * This function is idempotent. It can be called more than once and return the same instance using the same options and config.\r\n */\r\n function initializeAppCompat(options, rawConfig = {}) {\r\n const app = modularAPIs.initializeApp(options, rawConfig);\r\n if (contains(apps, app.name)) {\r\n return apps[app.name];\r\n }\r\n const appCompat = new firebaseAppImpl(app, namespace);\r\n apps[app.name] = appCompat;\r\n return appCompat;\r\n }\r\n /*\r\n * Return an array of all the non-deleted FirebaseApps.\r\n */\r\n function getApps() {\r\n // Make a copy so caller cannot mutate the apps list.\r\n return Object.keys(apps).map(name => apps[name]);\r\n }\r\n function registerComponentCompat(component) {\r\n const componentName = component.name;\r\n const componentNameWithoutCompat = componentName.replace('-compat', '');\r\n if (modularAPIs._registerComponent(component) &&\r\n component.type === \"PUBLIC\" /* PUBLIC */) {\r\n // create service namespace for public components\r\n // The Service namespace is an accessor function ...\r\n const serviceNamespace = (appArg = app()) => {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n if (typeof appArg[componentNameWithoutCompat] !== 'function') {\r\n // Invalid argument.\r\n // This happens in the following case: firebase.storage('gs:/')\r\n throw ERROR_FACTORY.create(\"invalid-app-argument\" /* INVALID_APP_ARGUMENT */, {\r\n appName: componentName\r\n });\r\n }\r\n // Forward service instance lookup to the FirebaseApp.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return appArg[componentNameWithoutCompat]();\r\n };\r\n // ... and a container for service-level properties.\r\n if (component.serviceProps !== undefined) {\r\n deepExtend(serviceNamespace, component.serviceProps);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n namespace[componentNameWithoutCompat] = serviceNamespace;\r\n // Patch the FirebaseAppImpl prototype\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n firebaseAppImpl.prototype[componentNameWithoutCompat] =\r\n // TODO: The eslint disable can be removed and the 'ignoreRestArgs'\r\n // option added to the no-explicit-any rule when ESlint releases it.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n function (...args) {\r\n const serviceFxn = this._getService.bind(this, componentName);\r\n return serviceFxn.apply(this, component.multipleInstances ? args : []);\r\n };\r\n }\r\n return component.type === \"PUBLIC\" /* PUBLIC */\r\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n namespace[componentNameWithoutCompat]\r\n : null;\r\n }\r\n // Map the requested service to a registered service name\r\n // (used to map auth to serverAuth service when needed).\r\n function useAsService(app, name) {\r\n if (name === 'serverAuth') {\r\n return null;\r\n }\r\n const useService = name;\r\n return useService;\r\n }\r\n return namespace;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Return a firebase namespace object.\r\n *\r\n * In production, this will be called exactly once and the result\r\n * assigned to the 'firebase' global. It may be called multiple times\r\n * in unit tests.\r\n */\r\nfunction createFirebaseNamespace() {\r\n const namespace = createFirebaseNamespaceCore(FirebaseAppImpl);\r\n namespace.INTERNAL = Object.assign(Object.assign({}, namespace.INTERNAL), { createFirebaseNamespace,\r\n extendNamespace,\r\n createSubscribe,\r\n ErrorFactory,\r\n deepExtend });\r\n /**\r\n * Patch the top-level firebase namespace with additional properties.\r\n *\r\n * firebase.INTERNAL.extendNamespace()\r\n */\r\n function extendNamespace(props) {\r\n deepExtend(namespace, props);\r\n }\r\n return namespace;\r\n}\r\nconst firebase$1 = createFirebaseNamespace();\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst logger = new Logger('@firebase/app-compat');\n\nconst name = \"@firebase/app-compat\";\nconst version = \"0.1.16\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction registerCoreComponents(variant) {\r\n // Register `app` package.\r\n registerVersion(name, version, variant);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Firebase Lite detection\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nif (isBrowser() && self.firebase !== undefined) {\r\n logger.warn(`\n Warning: Firebase is already defined in the global scope. Please make sure\n Firebase library is only loaded once.\n `);\r\n // eslint-disable-next-line\r\n const sdkVersion = self.firebase.SDK_VERSION;\r\n if (sdkVersion && sdkVersion.indexOf('LITE') >= 0) {\r\n logger.warn(`\n Warning: You are trying to load Firebase while using Firebase Performance standalone script.\n You should load Firebase Performance with this instance of Firebase to avoid loading duplicate code.\n `);\r\n }\r\n}\r\nconst firebase = firebase$1;\r\nregisterCoreComponents();\n\nexport { firebase as default };\n","import { Component, ComponentContainer } from '@firebase/component';\nimport { Logger, setUserLogHandler, setLogLevel as setLogLevel$1 } from '@firebase/logger';\nimport { ErrorFactory, deepEqual } from '@firebase/util';\nexport { FirebaseError } from '@firebase/util';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass PlatformLoggerServiceImpl {\r\n constructor(container) {\r\n this.container = container;\r\n }\r\n // In initial implementation, this will be called by installations on\r\n // auth token refresh, and installations will send this string.\r\n getPlatformInfoString() {\r\n const providers = this.container.getProviders();\r\n // Loop through providers and get library/version pairs from any that are\r\n // version components.\r\n return providers\r\n .map(provider => {\r\n if (isVersionServiceProvider(provider)) {\r\n const service = provider.getImmediate();\r\n return `${service.library}/${service.version}`;\r\n }\r\n else {\r\n return null;\r\n }\r\n })\r\n .filter(logString => logString)\r\n .join(' ');\r\n }\r\n}\r\n/**\r\n *\r\n * @param provider check if this provider provides a VersionService\r\n *\r\n * NOTE: Using Provider<'app-version'> is a hack to indicate that the provider\r\n * provides VersionService. The provider is not necessarily a 'app-version'\r\n * provider.\r\n */\r\nfunction isVersionServiceProvider(provider) {\r\n const component = provider.getComponent();\r\n return (component === null || component === void 0 ? void 0 : component.type) === \"VERSION\" /* VERSION */;\r\n}\n\nconst name$o = \"@firebase/app\";\nconst version$1 = \"0.7.15\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst logger = new Logger('@firebase/app');\n\nconst name$n = \"@firebase/app-compat\";\n\nconst name$m = \"@firebase/analytics-compat\";\n\nconst name$l = \"@firebase/analytics\";\n\nconst name$k = \"@firebase/app-check-compat\";\n\nconst name$j = \"@firebase/app-check\";\n\nconst name$i = \"@firebase/auth\";\n\nconst name$h = \"@firebase/auth-compat\";\n\nconst name$g = \"@firebase/database\";\n\nconst name$f = \"@firebase/database-compat\";\n\nconst name$e = \"@firebase/functions\";\n\nconst name$d = \"@firebase/functions-compat\";\n\nconst name$c = \"@firebase/installations\";\n\nconst name$b = \"@firebase/installations-compat\";\n\nconst name$a = \"@firebase/messaging\";\n\nconst name$9 = \"@firebase/messaging-compat\";\n\nconst name$8 = \"@firebase/performance\";\n\nconst name$7 = \"@firebase/performance-compat\";\n\nconst name$6 = \"@firebase/remote-config\";\n\nconst name$5 = \"@firebase/remote-config-compat\";\n\nconst name$4 = \"@firebase/storage\";\n\nconst name$3 = \"@firebase/storage-compat\";\n\nconst name$2 = \"@firebase/firestore\";\n\nconst name$1 = \"@firebase/firestore-compat\";\n\nconst name = \"firebase\";\nconst version = \"9.6.5\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The default app name\r\n *\r\n * @internal\r\n */\r\nconst DEFAULT_ENTRY_NAME = '[DEFAULT]';\r\nconst PLATFORM_LOG_STRING = {\r\n [name$o]: 'fire-core',\r\n [name$n]: 'fire-core-compat',\r\n [name$l]: 'fire-analytics',\r\n [name$m]: 'fire-analytics-compat',\r\n [name$j]: 'fire-app-check',\r\n [name$k]: 'fire-app-check-compat',\r\n [name$i]: 'fire-auth',\r\n [name$h]: 'fire-auth-compat',\r\n [name$g]: 'fire-rtdb',\r\n [name$f]: 'fire-rtdb-compat',\r\n [name$e]: 'fire-fn',\r\n [name$d]: 'fire-fn-compat',\r\n [name$c]: 'fire-iid',\r\n [name$b]: 'fire-iid-compat',\r\n [name$a]: 'fire-fcm',\r\n [name$9]: 'fire-fcm-compat',\r\n [name$8]: 'fire-perf',\r\n [name$7]: 'fire-perf-compat',\r\n [name$6]: 'fire-rc',\r\n [name$5]: 'fire-rc-compat',\r\n [name$4]: 'fire-gcs',\r\n [name$3]: 'fire-gcs-compat',\r\n [name$2]: 'fire-fst',\r\n [name$1]: 'fire-fst-compat',\r\n 'fire-js': 'fire-js',\r\n [name]: 'fire-js-all'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @internal\r\n */\r\nconst _apps = new Map();\r\n/**\r\n * Registered components.\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst _components = new Map();\r\n/**\r\n * @param component - the component being added to this app's container\r\n *\r\n * @internal\r\n */\r\nfunction _addComponent(app, component) {\r\n try {\r\n app.container.addComponent(component);\r\n }\r\n catch (e) {\r\n logger.debug(`Component ${component.name} failed to register with FirebaseApp ${app.name}`, e);\r\n }\r\n}\r\n/**\r\n *\r\n * @internal\r\n */\r\nfunction _addOrOverwriteComponent(app, component) {\r\n app.container.addOrOverwriteComponent(component);\r\n}\r\n/**\r\n *\r\n * @param component - the component to register\r\n * @returns whether or not the component is registered successfully\r\n *\r\n * @internal\r\n */\r\nfunction _registerComponent(component) {\r\n const componentName = component.name;\r\n if (_components.has(componentName)) {\r\n logger.debug(`There were multiple attempts to register component ${componentName}.`);\r\n return false;\r\n }\r\n _components.set(componentName, component);\r\n // add the component to existing app instances\r\n for (const app of _apps.values()) {\r\n _addComponent(app, component);\r\n }\r\n return true;\r\n}\r\n/**\r\n *\r\n * @param app - FirebaseApp instance\r\n * @param name - service name\r\n *\r\n * @returns the provider for the service with the matching name\r\n *\r\n * @internal\r\n */\r\nfunction _getProvider(app, name) {\r\n return app.container.getProvider(name);\r\n}\r\n/**\r\n *\r\n * @param app - FirebaseApp instance\r\n * @param name - service name\r\n * @param instanceIdentifier - service instance identifier in case the service supports multiple instances\r\n *\r\n * @internal\r\n */\r\nfunction _removeServiceInstance(app, name, instanceIdentifier = DEFAULT_ENTRY_NAME) {\r\n _getProvider(app, name).clearInstance(instanceIdentifier);\r\n}\r\n/**\r\n * Test only\r\n *\r\n * @internal\r\n */\r\nfunction _clearComponents() {\r\n _components.clear();\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERRORS = {\r\n [\"no-app\" /* NO_APP */]: \"No Firebase App '{$appName}' has been created - \" +\r\n 'call Firebase App.initializeApp()',\r\n [\"bad-app-name\" /* BAD_APP_NAME */]: \"Illegal App name: '{$appName}\",\r\n [\"duplicate-app\" /* DUPLICATE_APP */]: \"Firebase App named '{$appName}' already exists with different options or config\",\r\n [\"app-deleted\" /* APP_DELETED */]: \"Firebase App named '{$appName}' already deleted\",\r\n [\"invalid-app-argument\" /* INVALID_APP_ARGUMENT */]: 'firebase.{$appName}() takes either no argument or a ' +\r\n 'Firebase App instance.',\r\n [\"invalid-log-argument\" /* INVALID_LOG_ARGUMENT */]: 'First argument to `onLog` must be null or a function.'\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('app', 'Firebase', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass FirebaseAppImpl {\r\n constructor(options, config, container) {\r\n this._isDeleted = false;\r\n this._options = Object.assign({}, options);\r\n this._config = Object.assign({}, config);\r\n this._name = config.name;\r\n this._automaticDataCollectionEnabled =\r\n config.automaticDataCollectionEnabled;\r\n this._container = container;\r\n this.container.addComponent(new Component('app', () => this, \"PUBLIC\" /* PUBLIC */));\r\n }\r\n get automaticDataCollectionEnabled() {\r\n this.checkDestroyed();\r\n return this._automaticDataCollectionEnabled;\r\n }\r\n set automaticDataCollectionEnabled(val) {\r\n this.checkDestroyed();\r\n this._automaticDataCollectionEnabled = val;\r\n }\r\n get name() {\r\n this.checkDestroyed();\r\n return this._name;\r\n }\r\n get options() {\r\n this.checkDestroyed();\r\n return this._options;\r\n }\r\n get config() {\r\n this.checkDestroyed();\r\n return this._config;\r\n }\r\n get container() {\r\n return this._container;\r\n }\r\n get isDeleted() {\r\n return this._isDeleted;\r\n }\r\n set isDeleted(val) {\r\n this._isDeleted = val;\r\n }\r\n /**\r\n * This function will throw an Error if the App has already been deleted -\r\n * use before performing API actions on the App.\r\n */\r\n checkDestroyed() {\r\n if (this.isDeleted) {\r\n throw ERROR_FACTORY.create(\"app-deleted\" /* APP_DELETED */, { appName: this._name });\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The current SDK version.\r\n *\r\n * @public\r\n */\r\nconst SDK_VERSION = version;\r\nfunction initializeApp(options, rawConfig = {}) {\r\n if (typeof rawConfig !== 'object') {\r\n const name = rawConfig;\r\n rawConfig = { name };\r\n }\r\n const config = Object.assign({ name: DEFAULT_ENTRY_NAME, automaticDataCollectionEnabled: false }, rawConfig);\r\n const name = config.name;\r\n if (typeof name !== 'string' || !name) {\r\n throw ERROR_FACTORY.create(\"bad-app-name\" /* BAD_APP_NAME */, {\r\n appName: String(name)\r\n });\r\n }\r\n const existingApp = _apps.get(name);\r\n if (existingApp) {\r\n // return the existing app if options and config deep equal the ones in the existing app.\r\n if (deepEqual(options, existingApp.options) &&\r\n deepEqual(config, existingApp.config)) {\r\n return existingApp;\r\n }\r\n else {\r\n throw ERROR_FACTORY.create(\"duplicate-app\" /* DUPLICATE_APP */, { appName: name });\r\n }\r\n }\r\n const container = new ComponentContainer(name);\r\n for (const component of _components.values()) {\r\n container.addComponent(component);\r\n }\r\n const newApp = new FirebaseAppImpl(options, config, container);\r\n _apps.set(name, newApp);\r\n return newApp;\r\n}\r\n/**\r\n * Retrieves a {@link @firebase/app#FirebaseApp} instance.\r\n *\r\n * When called with no arguments, the default app is returned. When an app name\r\n * is provided, the app corresponding to that name is returned.\r\n *\r\n * An exception is thrown if the app being retrieved has not yet been\r\n * initialized.\r\n *\r\n * @example\r\n * ```javascript\r\n * // Return the default app\r\n * const app = getApp();\r\n * ```\r\n *\r\n * @example\r\n * ```javascript\r\n * // Return a named app\r\n * const otherApp = getApp(\"otherApp\");\r\n * ```\r\n *\r\n * @param name - Optional name of the app to return. If no name is\r\n * provided, the default is `\"[DEFAULT]\"`.\r\n *\r\n * @returns The app corresponding to the provided app name.\r\n * If no app name is provided, the default app is returned.\r\n *\r\n * @public\r\n */\r\nfunction getApp(name = DEFAULT_ENTRY_NAME) {\r\n const app = _apps.get(name);\r\n if (!app) {\r\n throw ERROR_FACTORY.create(\"no-app\" /* NO_APP */, { appName: name });\r\n }\r\n return app;\r\n}\r\n/**\r\n * A (read-only) array of all initialized apps.\r\n * @public\r\n */\r\nfunction getApps() {\r\n return Array.from(_apps.values());\r\n}\r\n/**\r\n * Renders this app unusable and frees the resources of all associated\r\n * services.\r\n *\r\n * @example\r\n * ```javascript\r\n * deleteApp(app)\r\n * .then(function() {\r\n * console.log(\"App deleted successfully\");\r\n * })\r\n * .catch(function(error) {\r\n * console.log(\"Error deleting app:\", error);\r\n * });\r\n * ```\r\n *\r\n * @public\r\n */\r\nasync function deleteApp(app) {\r\n const name = app.name;\r\n if (_apps.has(name)) {\r\n _apps.delete(name);\r\n await Promise.all(app.container\r\n .getProviders()\r\n .map(provider => provider.delete()));\r\n app.isDeleted = true;\r\n }\r\n}\r\n/**\r\n * Registers a library's name and version for platform logging purposes.\r\n * @param library - Name of 1p or 3p library (e.g. firestore, angularfire)\r\n * @param version - Current version of that library.\r\n * @param variant - Bundle variant, e.g., node, rn, etc.\r\n *\r\n * @public\r\n */\r\nfunction registerVersion(libraryKeyOrName, version, variant) {\r\n var _a;\r\n // TODO: We can use this check to whitelist strings when/if we set up\r\n // a good whitelist system.\r\n let library = (_a = PLATFORM_LOG_STRING[libraryKeyOrName]) !== null && _a !== void 0 ? _a : libraryKeyOrName;\r\n if (variant) {\r\n library += `-${variant}`;\r\n }\r\n const libraryMismatch = library.match(/\\s|\\//);\r\n const versionMismatch = version.match(/\\s|\\//);\r\n if (libraryMismatch || versionMismatch) {\r\n const warning = [\r\n `Unable to register library \"${library}\" with version \"${version}\":`\r\n ];\r\n if (libraryMismatch) {\r\n warning.push(`library name \"${library}\" contains illegal characters (whitespace or \"/\")`);\r\n }\r\n if (libraryMismatch && versionMismatch) {\r\n warning.push('and');\r\n }\r\n if (versionMismatch) {\r\n warning.push(`version name \"${version}\" contains illegal characters (whitespace or \"/\")`);\r\n }\r\n logger.warn(warning.join(' '));\r\n return;\r\n }\r\n _registerComponent(new Component(`${library}-version`, () => ({ library, version }), \"VERSION\" /* VERSION */));\r\n}\r\n/**\r\n * Sets log handler for all Firebase SDKs.\r\n * @param logCallback - An optional custom log handler that executes user code whenever\r\n * the Firebase SDK makes a logging call.\r\n *\r\n * @public\r\n */\r\nfunction onLog(logCallback, options) {\r\n if (logCallback !== null && typeof logCallback !== 'function') {\r\n throw ERROR_FACTORY.create(\"invalid-log-argument\" /* INVALID_LOG_ARGUMENT */);\r\n }\r\n setUserLogHandler(logCallback, options);\r\n}\r\n/**\r\n * Sets log level for all Firebase SDKs.\r\n *\r\n * All of the log types above the current log level are captured (i.e. if\r\n * you set the log level to `info`, errors are logged, but `debug` and\r\n * `verbose` logs are not).\r\n *\r\n * @public\r\n */\r\nfunction setLogLevel(logLevel) {\r\n setLogLevel$1(logLevel);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction registerCoreComponents(variant) {\r\n _registerComponent(new Component('platform-logger', container => new PlatformLoggerServiceImpl(container), \"PRIVATE\" /* PRIVATE */));\r\n // Register `app` package.\r\n registerVersion(name$o, version$1, variant);\r\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\n registerVersion(name$o, version$1, 'esm2017');\r\n // Register platform SDK identifier (no version).\r\n registerVersion('fire-js', '');\r\n}\n\n/**\r\n * Firebase App\r\n *\r\n * @remarks This package coordinates the communication between the different Firebase components\r\n * @packageDocumentation\r\n */\r\nregisterCoreComponents('');\n\nexport { SDK_VERSION, DEFAULT_ENTRY_NAME as _DEFAULT_ENTRY_NAME, _addComponent, _addOrOverwriteComponent, _apps, _clearComponents, _components, _getProvider, _registerComponent, _removeServiceInstance, deleteApp, getApp, getApps, initializeApp, onLog, registerVersion, setLogLevel };\n","import { Deferred } from '@firebase/util';\n\n/**\r\n * Component for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nclass Component {\r\n /**\r\n *\r\n * @param name The public service name, e.g. app, auth, firestore, database\r\n * @param instanceFactory Service factory responsible for creating the public interface\r\n * @param type whether the service provided by the component is public or private\r\n */\r\n constructor(name, instanceFactory, type) {\r\n this.name = name;\r\n this.instanceFactory = instanceFactory;\r\n this.type = type;\r\n this.multipleInstances = false;\r\n /**\r\n * Properties to be added to the service namespace\r\n */\r\n this.serviceProps = {};\r\n this.instantiationMode = \"LAZY\" /* LAZY */;\r\n this.onInstanceCreated = null;\r\n }\r\n setInstantiationMode(mode) {\r\n this.instantiationMode = mode;\r\n return this;\r\n }\r\n setMultipleInstances(multipleInstances) {\r\n this.multipleInstances = multipleInstances;\r\n return this;\r\n }\r\n setServiceProps(props) {\r\n this.serviceProps = props;\r\n return this;\r\n }\r\n setInstanceCreatedCallback(callback) {\r\n this.onInstanceCreated = callback;\r\n return this;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_ENTRY_NAME = '[DEFAULT]';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provider for instance for service name T, e.g. 'auth', 'auth-internal'\r\n * NameServiceMapping[T] is an alias for the type of the instance\r\n */\r\nclass Provider {\r\n constructor(name, container) {\r\n this.name = name;\r\n this.container = container;\r\n this.component = null;\r\n this.instances = new Map();\r\n this.instancesDeferred = new Map();\r\n this.instancesOptions = new Map();\r\n this.onInitCallbacks = new Map();\r\n }\r\n /**\r\n * @param identifier A provider can provide mulitple instances of a service\r\n * if this.component.multipleInstances is true.\r\n */\r\n get(identifier) {\r\n // if multipleInstances is not supported, use the default name\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n if (!this.instancesDeferred.has(normalizedIdentifier)) {\r\n const deferred = new Deferred();\r\n this.instancesDeferred.set(normalizedIdentifier, deferred);\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n // initialize the service if it can be auto-initialized\r\n try {\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n if (instance) {\r\n deferred.resolve(instance);\r\n }\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception during get(), it should not cause\r\n // a fatal error. We just return the unresolved promise in this case.\r\n }\r\n }\r\n }\r\n return this.instancesDeferred.get(normalizedIdentifier).promise;\r\n }\r\n getImmediate(options) {\r\n var _a;\r\n // if multipleInstances is not supported, use the default name\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(options === null || options === void 0 ? void 0 : options.identifier);\r\n const optional = (_a = options === null || options === void 0 ? void 0 : options.optional) !== null && _a !== void 0 ? _a : false;\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n try {\r\n return this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n }\r\n catch (e) {\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n else {\r\n // In case a component is not initialized and should/can not be auto-initialized at the moment, return null if the optional flag is set, or throw\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw Error(`Service ${this.name} is not available`);\r\n }\r\n }\r\n }\r\n getComponent() {\r\n return this.component;\r\n }\r\n setComponent(component) {\r\n if (component.name !== this.name) {\r\n throw Error(`Mismatching Component ${component.name} for Provider ${this.name}.`);\r\n }\r\n if (this.component) {\r\n throw Error(`Component for ${this.name} has already been provided`);\r\n }\r\n this.component = component;\r\n // return early without attempting to initialize the component if the component requires explicit initialization (calling `Provider.initialize()`)\r\n if (!this.shouldAutoInitialize()) {\r\n return;\r\n }\r\n // if the service is eager, initialize the default instance\r\n if (isComponentEager(component)) {\r\n try {\r\n this.getOrInitializeService({ instanceIdentifier: DEFAULT_ENTRY_NAME });\r\n }\r\n catch (e) {\r\n // when the instance factory for an eager Component throws an exception during the eager\r\n // initialization, it should not cause a fatal error.\r\n // TODO: Investigate if we need to make it configurable, because some component may want to cause\r\n // a fatal error in this case?\r\n }\r\n }\r\n // Create service instances for the pending promises and resolve them\r\n // NOTE: if this.multipleInstances is false, only the default instance will be created\r\n // and all promises with resolve with it regardless of the identifier.\r\n for (const [instanceIdentifier, instanceDeferred] of this.instancesDeferred.entries()) {\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n try {\r\n // `getOrInitializeService()` should always return a valid instance since a component is guaranteed. use ! to make typescript happy.\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n instanceDeferred.resolve(instance);\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception, it should not cause\r\n // a fatal error. We just leave the promise unresolved.\r\n }\r\n }\r\n }\r\n clearInstance(identifier = DEFAULT_ENTRY_NAME) {\r\n this.instancesDeferred.delete(identifier);\r\n this.instancesOptions.delete(identifier);\r\n this.instances.delete(identifier);\r\n }\r\n // app.delete() will call this method on every provider to delete the services\r\n // TODO: should we mark the provider as deleted?\r\n async delete() {\r\n const services = Array.from(this.instances.values());\r\n await Promise.all([\r\n ...services\r\n .filter(service => 'INTERNAL' in service) // legacy services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(service => service.INTERNAL.delete()),\r\n ...services\r\n .filter(service => '_delete' in service) // modularized services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(service => service._delete())\r\n ]);\r\n }\r\n isComponentSet() {\r\n return this.component != null;\r\n }\r\n isInitialized(identifier = DEFAULT_ENTRY_NAME) {\r\n return this.instances.has(identifier);\r\n }\r\n getOptions(identifier = DEFAULT_ENTRY_NAME) {\r\n return this.instancesOptions.get(identifier) || {};\r\n }\r\n initialize(opts = {}) {\r\n const { options = {} } = opts;\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(opts.instanceIdentifier);\r\n if (this.isInitialized(normalizedIdentifier)) {\r\n throw Error(`${this.name}(${normalizedIdentifier}) has already been initialized`);\r\n }\r\n if (!this.isComponentSet()) {\r\n throw Error(`Component ${this.name} has not been registered yet`);\r\n }\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier,\r\n options\r\n });\r\n // resolve any pending promise waiting for the service instance\r\n for (const [instanceIdentifier, instanceDeferred] of this.instancesDeferred.entries()) {\r\n const normalizedDeferredIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n if (normalizedIdentifier === normalizedDeferredIdentifier) {\r\n instanceDeferred.resolve(instance);\r\n }\r\n }\r\n return instance;\r\n }\r\n /**\r\n *\r\n * @param callback - a function that will be invoked after the provider has been initialized by calling provider.initialize().\r\n * The function is invoked SYNCHRONOUSLY, so it should not execute any longrunning tasks in order to not block the program.\r\n *\r\n * @param identifier An optional instance identifier\r\n * @returns a function to unregister the callback\r\n */\r\n onInit(callback, identifier) {\r\n var _a;\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n const existingCallbacks = (_a = this.onInitCallbacks.get(normalizedIdentifier)) !== null && _a !== void 0 ? _a : new Set();\r\n existingCallbacks.add(callback);\r\n this.onInitCallbacks.set(normalizedIdentifier, existingCallbacks);\r\n const existingInstance = this.instances.get(normalizedIdentifier);\r\n if (existingInstance) {\r\n callback(existingInstance, normalizedIdentifier);\r\n }\r\n return () => {\r\n existingCallbacks.delete(callback);\r\n };\r\n }\r\n /**\r\n * Invoke onInit callbacks synchronously\r\n * @param instance the service instance`\r\n */\r\n invokeOnInitCallbacks(instance, identifier) {\r\n const callbacks = this.onInitCallbacks.get(identifier);\r\n if (!callbacks) {\r\n return;\r\n }\r\n for (const callback of callbacks) {\r\n try {\r\n callback(instance, identifier);\r\n }\r\n catch (_a) {\r\n // ignore errors in the onInit callback\r\n }\r\n }\r\n }\r\n getOrInitializeService({ instanceIdentifier, options = {} }) {\r\n let instance = this.instances.get(instanceIdentifier);\r\n if (!instance && this.component) {\r\n instance = this.component.instanceFactory(this.container, {\r\n instanceIdentifier: normalizeIdentifierForFactory(instanceIdentifier),\r\n options\r\n });\r\n this.instances.set(instanceIdentifier, instance);\r\n this.instancesOptions.set(instanceIdentifier, options);\r\n /**\r\n * Invoke onInit listeners.\r\n * Note this.component.onInstanceCreated is different, which is used by the component creator,\r\n * while onInit listeners are registered by consumers of the provider.\r\n */\r\n this.invokeOnInitCallbacks(instance, instanceIdentifier);\r\n /**\r\n * Order is important\r\n * onInstanceCreated() should be called after this.instances.set(instanceIdentifier, instance); which\r\n * makes `isInitialized()` return true.\r\n */\r\n if (this.component.onInstanceCreated) {\r\n try {\r\n this.component.onInstanceCreated(this.container, instanceIdentifier, instance);\r\n }\r\n catch (_a) {\r\n // ignore errors in the onInstanceCreatedCallback\r\n }\r\n }\r\n }\r\n return instance || null;\r\n }\r\n normalizeInstanceIdentifier(identifier = DEFAULT_ENTRY_NAME) {\r\n if (this.component) {\r\n return this.component.multipleInstances ? identifier : DEFAULT_ENTRY_NAME;\r\n }\r\n else {\r\n return identifier; // assume multiple instances are supported before the component is provided.\r\n }\r\n }\r\n shouldAutoInitialize() {\r\n return (!!this.component &&\r\n this.component.instantiationMode !== \"EXPLICIT\" /* EXPLICIT */);\r\n }\r\n}\r\n// undefined should be passed to the service factory for the default instance\r\nfunction normalizeIdentifierForFactory(identifier) {\r\n return identifier === DEFAULT_ENTRY_NAME ? undefined : identifier;\r\n}\r\nfunction isComponentEager(component) {\r\n return component.instantiationMode === \"EAGER\" /* EAGER */;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * ComponentContainer that provides Providers for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nclass ComponentContainer {\r\n constructor(name) {\r\n this.name = name;\r\n this.providers = new Map();\r\n }\r\n /**\r\n *\r\n * @param component Component being added\r\n * @param overwrite When a component with the same name has already been registered,\r\n * if overwrite is true: overwrite the existing component with the new component and create a new\r\n * provider with the new component. It can be useful in tests where you want to use different mocks\r\n * for different tests.\r\n * if overwrite is false: throw an exception\r\n */\r\n addComponent(component) {\r\n const provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n throw new Error(`Component ${component.name} has already been registered with ${this.name}`);\r\n }\r\n provider.setComponent(component);\r\n }\r\n addOrOverwriteComponent(component) {\r\n const provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n // delete the existing provider from the container, so we can register the new component\r\n this.providers.delete(component.name);\r\n }\r\n this.addComponent(component);\r\n }\r\n /**\r\n * getProvider provides a type safe interface where it can only be called with a field name\r\n * present in NameServiceMapping interface.\r\n *\r\n * Firebase SDKs providing services should extend NameServiceMapping interface to register\r\n * themselves.\r\n */\r\n getProvider(name) {\r\n if (this.providers.has(name)) {\r\n return this.providers.get(name);\r\n }\r\n // create a Provider for a service that hasn't registered with Firebase\r\n const provider = new Provider(name, this);\r\n this.providers.set(name, provider);\r\n return provider;\r\n }\r\n getProviders() {\r\n return Array.from(this.providers.values());\r\n }\r\n}\n\nexport { Component, ComponentContainer, Provider };\n","/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A container for all of the Logger instances\r\n */\r\nconst instances = [];\r\n/**\r\n * The JS SDK supports 5 log levels and also allows a user the ability to\r\n * silence the logs altogether.\r\n *\r\n * The order is a follows:\r\n * DEBUG < VERBOSE < INFO < WARN < ERROR\r\n *\r\n * All of the log types above the current log level will be captured (i.e. if\r\n * you set the log level to `INFO`, errors will still be logged, but `DEBUG` and\r\n * `VERBOSE` logs will not)\r\n */\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"DEBUG\"] = 0] = \"DEBUG\";\r\n LogLevel[LogLevel[\"VERBOSE\"] = 1] = \"VERBOSE\";\r\n LogLevel[LogLevel[\"INFO\"] = 2] = \"INFO\";\r\n LogLevel[LogLevel[\"WARN\"] = 3] = \"WARN\";\r\n LogLevel[LogLevel[\"ERROR\"] = 4] = \"ERROR\";\r\n LogLevel[LogLevel[\"SILENT\"] = 5] = \"SILENT\";\r\n})(LogLevel || (LogLevel = {}));\r\nconst levelStringToEnum = {\r\n 'debug': LogLevel.DEBUG,\r\n 'verbose': LogLevel.VERBOSE,\r\n 'info': LogLevel.INFO,\r\n 'warn': LogLevel.WARN,\r\n 'error': LogLevel.ERROR,\r\n 'silent': LogLevel.SILENT\r\n};\r\n/**\r\n * The default log level\r\n */\r\nconst defaultLogLevel = LogLevel.INFO;\r\n/**\r\n * By default, `console.debug` is not displayed in the developer console (in\r\n * chrome). To avoid forcing users to have to opt-in to these logs twice\r\n * (i.e. once for firebase, and once in the console), we are sending `DEBUG`\r\n * logs to the `console.log` function.\r\n */\r\nconst ConsoleMethod = {\r\n [LogLevel.DEBUG]: 'log',\r\n [LogLevel.VERBOSE]: 'log',\r\n [LogLevel.INFO]: 'info',\r\n [LogLevel.WARN]: 'warn',\r\n [LogLevel.ERROR]: 'error'\r\n};\r\n/**\r\n * The default log handler will forward DEBUG, VERBOSE, INFO, WARN, and ERROR\r\n * messages on to their corresponding console counterparts (if the log method\r\n * is supported by the current log level)\r\n */\r\nconst defaultLogHandler = (instance, logType, ...args) => {\r\n if (logType < instance.logLevel) {\r\n return;\r\n }\r\n const now = new Date().toISOString();\r\n const method = ConsoleMethod[logType];\r\n if (method) {\r\n console[method](`[${now}] ${instance.name}:`, ...args);\r\n }\r\n else {\r\n throw new Error(`Attempted to log a message with an invalid logType (value: ${logType})`);\r\n }\r\n};\r\nclass Logger {\r\n /**\r\n * Gives you an instance of a Logger to capture messages according to\r\n * Firebase's logging scheme.\r\n *\r\n * @param name The name that the logs will be associated with\r\n */\r\n constructor(name) {\r\n this.name = name;\r\n /**\r\n * The log level of the given Logger instance.\r\n */\r\n this._logLevel = defaultLogLevel;\r\n /**\r\n * The main (internal) log handler for the Logger instance.\r\n * Can be set to a new function in internal package code but not by user.\r\n */\r\n this._logHandler = defaultLogHandler;\r\n /**\r\n * The optional, additional, user-defined log handler for the Logger instance.\r\n */\r\n this._userLogHandler = null;\r\n /**\r\n * Capture the current instance for later use\r\n */\r\n instances.push(this);\r\n }\r\n get logLevel() {\r\n return this._logLevel;\r\n }\r\n set logLevel(val) {\r\n if (!(val in LogLevel)) {\r\n throw new TypeError(`Invalid value \"${val}\" assigned to \\`logLevel\\``);\r\n }\r\n this._logLevel = val;\r\n }\r\n // Workaround for setter/getter having to be the same type.\r\n setLogLevel(val) {\r\n this._logLevel = typeof val === 'string' ? levelStringToEnum[val] : val;\r\n }\r\n get logHandler() {\r\n return this._logHandler;\r\n }\r\n set logHandler(val) {\r\n if (typeof val !== 'function') {\r\n throw new TypeError('Value assigned to `logHandler` must be a function');\r\n }\r\n this._logHandler = val;\r\n }\r\n get userLogHandler() {\r\n return this._userLogHandler;\r\n }\r\n set userLogHandler(val) {\r\n this._userLogHandler = val;\r\n }\r\n /**\r\n * The functions below are all based on the `console` interface\r\n */\r\n debug(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.DEBUG, ...args);\r\n this._logHandler(this, LogLevel.DEBUG, ...args);\r\n }\r\n log(...args) {\r\n this._userLogHandler &&\r\n this._userLogHandler(this, LogLevel.VERBOSE, ...args);\r\n this._logHandler(this, LogLevel.VERBOSE, ...args);\r\n }\r\n info(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.INFO, ...args);\r\n this._logHandler(this, LogLevel.INFO, ...args);\r\n }\r\n warn(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.WARN, ...args);\r\n this._logHandler(this, LogLevel.WARN, ...args);\r\n }\r\n error(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.ERROR, ...args);\r\n this._logHandler(this, LogLevel.ERROR, ...args);\r\n }\r\n}\r\nfunction setLogLevel(level) {\r\n instances.forEach(inst => {\r\n inst.setLogLevel(level);\r\n });\r\n}\r\nfunction setUserLogHandler(logCallback, options) {\r\n for (const instance of instances) {\r\n let customLogLevel = null;\r\n if (options && options.level) {\r\n customLogLevel = levelStringToEnum[options.level];\r\n }\r\n if (logCallback === null) {\r\n instance.userLogHandler = null;\r\n }\r\n else {\r\n instance.userLogHandler = (instance, level, ...args) => {\r\n const message = args\r\n .map(arg => {\r\n if (arg == null) {\r\n return null;\r\n }\r\n else if (typeof arg === 'string') {\r\n return arg;\r\n }\r\n else if (typeof arg === 'number' || typeof arg === 'boolean') {\r\n return arg.toString();\r\n }\r\n else if (arg instanceof Error) {\r\n return arg.message;\r\n }\r\n else {\r\n try {\r\n return JSON.stringify(arg);\r\n }\r\n catch (ignored) {\r\n return null;\r\n }\r\n }\r\n })\r\n .filter(arg => arg)\r\n .join(' ');\r\n if (level >= (customLogLevel !== null && customLogLevel !== void 0 ? customLogLevel : instance.logLevel)) {\r\n logCallback({\r\n level: LogLevel[level].toLowerCase(),\r\n message,\r\n args,\r\n type: instance.name\r\n });\r\n }\r\n };\r\n }\r\n }\r\n}\n\nexport { LogLevel, Logger, setLogLevel, setUserLogHandler };\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nexport default eq;\n","import eq from './eq.js';\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nexport default assocIndexOf;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nexport default listCacheDelete;\n","import listCacheClear from './_listCacheClear.js';\nimport listCacheDelete from './_listCacheDelete.js';\nimport listCacheGet from './_listCacheGet.js';\nimport listCacheHas from './_listCacheHas.js';\nimport listCacheSet from './_listCacheSet.js';\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nexport default ListCache;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nexport default listCacheClear;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nexport default listCacheGet;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nexport default listCacheHas;\n","import assocIndexOf from './_assocIndexOf.js';\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nexport default listCacheSet;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isObject from './isObject.js';\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nexport default isFunction;\n","import root from './_root.js';\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nexport default coreJsData;\n","import coreJsData from './_coreJsData.js';\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nexport default isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nexport default toSource;\n","import isFunction from './isFunction.js';\nimport isMasked from './_isMasked.js';\nimport isObject from './isObject.js';\nimport toSource from './_toSource.js';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nexport default baseIsNative;\n","import baseIsNative from './_baseIsNative.js';\nimport getValue from './_getValue.js';\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nexport default getNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nexport default getValue;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nexport default Map;\n","import getNative from './_getNative.js';\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nexport default nativeCreate;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nexport default hashGet;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nexport default hashHas;\n","import hashClear from './_hashClear.js';\nimport hashDelete from './_hashDelete.js';\nimport hashGet from './_hashGet.js';\nimport hashHas from './_hashHas.js';\nimport hashSet from './_hashSet.js';\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nexport default Hash;\n","import nativeCreate from './_nativeCreate.js';\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nexport default hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default hashDelete;\n","import nativeCreate from './_nativeCreate.js';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nexport default hashSet;\n","import isKeyable from './_isKeyable.js';\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nexport default getMapData;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nexport default isKeyable;\n","import mapCacheClear from './_mapCacheClear.js';\nimport mapCacheDelete from './_mapCacheDelete.js';\nimport mapCacheGet from './_mapCacheGet.js';\nimport mapCacheHas from './_mapCacheHas.js';\nimport mapCacheSet from './_mapCacheSet.js';\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nexport default MapCache;\n","import Hash from './_Hash.js';\nimport ListCache from './_ListCache.js';\nimport Map from './_Map.js';\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nexport default mapCacheClear;\n","import getMapData from './_getMapData.js';\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nexport default mapCacheDelete;\n","import getMapData from './_getMapData.js';\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nexport default mapCacheGet;\n","import getMapData from './_getMapData.js';\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nexport default mapCacheHas;\n","import getMapData from './_getMapData.js';\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nexport default mapCacheSet;\n","import ListCache from './_ListCache.js';\nimport stackClear from './_stackClear.js';\nimport stackDelete from './_stackDelete.js';\nimport stackGet from './_stackGet.js';\nimport stackHas from './_stackHas.js';\nimport stackSet from './_stackSet.js';\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nexport default Stack;\n","import ListCache from './_ListCache.js';\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nexport default stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nexport default stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nexport default stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nexport default stackHas;\n","import ListCache from './_ListCache.js';\nimport Map from './_Map.js';\nimport MapCache from './_MapCache.js';\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nexport default stackSet;\n","import getNative from './_getNative.js';\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nexport default defineProperty;\n","import defineProperty from './_defineProperty.js';\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nexport default baseAssignValue;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignMergeValue;\n","import createBaseFor from './_createBaseFor.js';\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nexport default baseFor;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nexport default createBaseFor;\n","import root from './_root.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nexport default cloneBuffer;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nexport default Uint8Array;\n","import Uint8Array from './_Uint8Array.js';\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nexport default cloneArrayBuffer;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nexport default cloneTypedArray;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nexport default copyArray;\n","import isObject from './isObject.js';\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nexport default baseCreate;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nexport default overArg;\n","import overArg from './_overArg.js';\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nexport default getPrototype;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nexport default isPrototype;\n","import baseCreate from './_baseCreate.js';\nimport getPrototype from './_getPrototype.js';\nimport isPrototype from './_isPrototype.js';\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nexport default initCloneObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nexport default baseIsArguments;\n","import baseIsArguments from './_baseIsArguments.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nexport default isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nexport default isArray;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nexport default isLength;\n","import isFunction from './isFunction.js';\nimport isLength from './isLength.js';\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nexport default isArrayLike;\n","import root from './_root.js';\nimport stubFalse from './stubFalse.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nexport default isBuffer;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nexport default stubFalse;\n","import baseGetTag from './_baseGetTag.js';\nimport getPrototype from './_getPrototype.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nexport default isPlainObject;\n","import baseGetTag from './_baseGetTag.js';\nimport isLength from './isLength.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nexport default baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nexport default baseUnary;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nexport default nodeUtil;\n","import baseIsTypedArray from './_baseIsTypedArray.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nexport default isTypedArray;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nexport default safeGet;\n","import baseAssignValue from './_baseAssignValue.js';\nimport eq from './eq.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nexport default assignValue;\n","import assignValue from './_assignValue.js';\nimport baseAssignValue from './_baseAssignValue.js';\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nexport default copyObject;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nexport default isIndex;\n","import baseTimes from './_baseTimes.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isIndex from './_isIndex.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default arrayLikeKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nexport default baseTimes;\n","import isObject from './isObject.js';\nimport isPrototype from './_isPrototype.js';\nimport nativeKeysIn from './_nativeKeysIn.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeysIn;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default nativeKeysIn;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeysIn from './_baseKeysIn.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nexport default keysIn;\n","import assignMergeValue from './_assignMergeValue.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\nimport copyArray from './_copyArray.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArguments from './isArguments.js';\nimport isArray from './isArray.js';\nimport isArrayLikeObject from './isArrayLikeObject.js';\nimport isBuffer from './isBuffer.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isPlainObject from './isPlainObject.js';\nimport isTypedArray from './isTypedArray.js';\nimport safeGet from './_safeGet.js';\nimport toPlainObject from './toPlainObject.js';\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nexport default baseMergeDeep;\n","import isArrayLike from './isArrayLike.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nexport default isArrayLikeObject;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nexport default toPlainObject;\n","import Stack from './_Stack.js';\nimport assignMergeValue from './_assignMergeValue.js';\nimport baseFor from './_baseFor.js';\nimport baseMergeDeep from './_baseMergeDeep.js';\nimport isObject from './isObject.js';\nimport keysIn from './keysIn.js';\nimport safeGet from './_safeGet.js';\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nexport default baseMerge;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nexport default identity;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nexport default apply;\n","import apply from './_apply.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nexport default overRest;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nexport default constant;\n","import constant from './constant.js';\nimport defineProperty from './_defineProperty.js';\nimport identity from './identity.js';\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nexport default baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nexport default shortOut;\n","import baseSetToString from './_baseSetToString.js';\nimport shortOut from './_shortOut.js';\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nexport default setToString;\n","import identity from './identity.js';\nimport overRest from './_overRest.js';\nimport setToString from './_setToString.js';\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nexport default baseRest;\n","import baseMerge from './_baseMerge.js';\nimport createAssigner from './_createAssigner.js';\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nexport default merge;\n","import baseRest from './_baseRest.js';\nimport isIterateeCall from './_isIterateeCall.js';\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nexport default createAssigner;\n","import eq from './eq.js';\nimport isArrayLike from './isArrayLike.js';\nimport isIndex from './_isIndex.js';\nimport isObject from './isObject.js';\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nexport default isIterateeCall;\n","var Scope = /* @__PURE__ */ ((Scope2) => (Scope2[Scope2.TYPE = 3] = \"TYPE\", Scope2[Scope2.LEVEL = 12] = \"LEVEL\", Scope2[Scope2.ATTRIBUTE = 13] = \"ATTRIBUTE\", Scope2[Scope2.BLOT = 14] = \"BLOT\", Scope2[Scope2.INLINE = 7] = \"INLINE\", Scope2[Scope2.BLOCK = 11] = \"BLOCK\", Scope2[Scope2.BLOCK_BLOT = 10] = \"BLOCK_BLOT\", Scope2[Scope2.INLINE_BLOT = 6] = \"INLINE_BLOT\", Scope2[Scope2.BLOCK_ATTRIBUTE = 9] = \"BLOCK_ATTRIBUTE\", Scope2[Scope2.INLINE_ATTRIBUTE = 5] = \"INLINE_ATTRIBUTE\", Scope2[Scope2.ANY = 15] = \"ANY\", Scope2))(Scope || {});\nclass Attributor {\n constructor(attrName, keyName, options = {}) {\n this.attrName = attrName, this.keyName = keyName;\n const attributeBit = Scope.TYPE & Scope.ATTRIBUTE;\n this.scope = options.scope != null ? (\n // Ignore type bits, force attribute bit\n options.scope & Scope.LEVEL | attributeBit\n ) : Scope.ATTRIBUTE, options.whitelist != null && (this.whitelist = options.whitelist);\n }\n static keys(node) {\n return Array.from(node.attributes).map((item) => item.name);\n }\n add(node, value) {\n return this.canAdd(node, value) ? (node.setAttribute(this.keyName, value), !0) : !1;\n }\n canAdd(_node, value) {\n return this.whitelist == null ? !0 : typeof value == \"string\" ? this.whitelist.indexOf(value.replace(/[\"']/g, \"\")) > -1 : this.whitelist.indexOf(value) > -1;\n }\n remove(node) {\n node.removeAttribute(this.keyName);\n }\n value(node) {\n const value = node.getAttribute(this.keyName);\n return this.canAdd(node, value) && value ? value : \"\";\n }\n}\nclass ParchmentError extends Error {\n constructor(message) {\n message = \"[Parchment] \" + message, super(message), this.message = message, this.name = this.constructor.name;\n }\n}\nconst _Registry = class _Registry {\n constructor() {\n this.attributes = {}, this.classes = {}, this.tags = {}, this.types = {};\n }\n static find(node, bubble = !1) {\n if (node == null)\n return null;\n if (this.blots.has(node))\n return this.blots.get(node) || null;\n if (bubble) {\n let parentNode = null;\n try {\n parentNode = node.parentNode;\n } catch {\n return null;\n }\n return this.find(parentNode, bubble);\n }\n return null;\n }\n create(scroll, input, value) {\n const match2 = this.query(input);\n if (match2 == null)\n throw new ParchmentError(`Unable to create ${input} blot`);\n const blotClass = match2, node = (\n // @ts-expect-error Fix me later\n input instanceof Node || input.nodeType === Node.TEXT_NODE ? input : blotClass.create(value)\n ), blot = new blotClass(scroll, node, value);\n return _Registry.blots.set(blot.domNode, blot), blot;\n }\n find(node, bubble = !1) {\n return _Registry.find(node, bubble);\n }\n query(query, scope = Scope.ANY) {\n let match2;\n return typeof query == \"string\" ? match2 = this.types[query] || this.attributes[query] : query instanceof Text || query.nodeType === Node.TEXT_NODE ? match2 = this.types.text : typeof query == \"number\" ? query & Scope.LEVEL & Scope.BLOCK ? match2 = this.types.block : query & Scope.LEVEL & Scope.INLINE && (match2 = this.types.inline) : query instanceof Element && ((query.getAttribute(\"class\") || \"\").split(/\\s+/).some((name) => (match2 = this.classes[name], !!match2)), match2 = match2 || this.tags[query.tagName]), match2 == null ? null : \"scope\" in match2 && scope & Scope.LEVEL & match2.scope && scope & Scope.TYPE & match2.scope ? match2 : null;\n }\n register(...definitions) {\n return definitions.map((definition) => {\n const isBlot = \"blotName\" in definition, isAttr = \"attrName\" in definition;\n if (!isBlot && !isAttr)\n throw new ParchmentError(\"Invalid definition\");\n if (isBlot && definition.blotName === \"abstract\")\n throw new ParchmentError(\"Cannot register abstract class\");\n const key = isBlot ? definition.blotName : isAttr ? definition.attrName : void 0;\n return this.types[key] = definition, isAttr ? typeof definition.keyName == \"string\" && (this.attributes[definition.keyName] = definition) : isBlot && (definition.className && (this.classes[definition.className] = definition), definition.tagName && (Array.isArray(definition.tagName) ? definition.tagName = definition.tagName.map((tagName) => tagName.toUpperCase()) : definition.tagName = definition.tagName.toUpperCase(), (Array.isArray(definition.tagName) ? definition.tagName : [definition.tagName]).forEach((tag) => {\n (this.tags[tag] == null || definition.className == null) && (this.tags[tag] = definition);\n }))), definition;\n });\n }\n};\n_Registry.blots = /* @__PURE__ */ new WeakMap();\nlet Registry = _Registry;\nfunction match(node, prefix) {\n return (node.getAttribute(\"class\") || \"\").split(/\\s+/).filter((name) => name.indexOf(`${prefix}-`) === 0);\n}\nclass ClassAttributor extends Attributor {\n static keys(node) {\n return (node.getAttribute(\"class\") || \"\").split(/\\s+/).map((name) => name.split(\"-\").slice(0, -1).join(\"-\"));\n }\n add(node, value) {\n return this.canAdd(node, value) ? (this.remove(node), node.classList.add(`${this.keyName}-${value}`), !0) : !1;\n }\n remove(node) {\n match(node, this.keyName).forEach((name) => {\n node.classList.remove(name);\n }), node.classList.length === 0 && node.removeAttribute(\"class\");\n }\n value(node) {\n const value = (match(node, this.keyName)[0] || \"\").slice(this.keyName.length + 1);\n return this.canAdd(node, value) ? value : \"\";\n }\n}\nconst ClassAttributor$1 = ClassAttributor;\nfunction camelize(name) {\n const parts = name.split(\"-\"), rest = parts.slice(1).map((part) => part[0].toUpperCase() + part.slice(1)).join(\"\");\n return parts[0] + rest;\n}\nclass StyleAttributor extends Attributor {\n static keys(node) {\n return (node.getAttribute(\"style\") || \"\").split(\";\").map((value) => value.split(\":\")[0].trim());\n }\n add(node, value) {\n return this.canAdd(node, value) ? (node.style[camelize(this.keyName)] = value, !0) : !1;\n }\n remove(node) {\n node.style[camelize(this.keyName)] = \"\", node.getAttribute(\"style\") || node.removeAttribute(\"style\");\n }\n value(node) {\n const value = node.style[camelize(this.keyName)];\n return this.canAdd(node, value) ? value : \"\";\n }\n}\nconst StyleAttributor$1 = StyleAttributor;\nclass AttributorStore {\n constructor(domNode) {\n this.attributes = {}, this.domNode = domNode, this.build();\n }\n attribute(attribute, value) {\n value ? attribute.add(this.domNode, value) && (attribute.value(this.domNode) != null ? this.attributes[attribute.attrName] = attribute : delete this.attributes[attribute.attrName]) : (attribute.remove(this.domNode), delete this.attributes[attribute.attrName]);\n }\n build() {\n this.attributes = {};\n const blot = Registry.find(this.domNode);\n if (blot == null)\n return;\n const attributes = Attributor.keys(this.domNode), classes = ClassAttributor$1.keys(this.domNode), styles = StyleAttributor$1.keys(this.domNode);\n attributes.concat(classes).concat(styles).forEach((name) => {\n const attr = blot.scroll.query(name, Scope.ATTRIBUTE);\n attr instanceof Attributor && (this.attributes[attr.attrName] = attr);\n });\n }\n copy(target) {\n Object.keys(this.attributes).forEach((key) => {\n const value = this.attributes[key].value(this.domNode);\n target.format(key, value);\n });\n }\n move(target) {\n this.copy(target), Object.keys(this.attributes).forEach((key) => {\n this.attributes[key].remove(this.domNode);\n }), this.attributes = {};\n }\n values() {\n return Object.keys(this.attributes).reduce(\n (attributes, name) => (attributes[name] = this.attributes[name].value(this.domNode), attributes),\n {}\n );\n }\n}\nconst AttributorStore$1 = AttributorStore, _ShadowBlot = class _ShadowBlot {\n constructor(scroll, domNode) {\n this.scroll = scroll, this.domNode = domNode, Registry.blots.set(domNode, this), this.prev = null, this.next = null;\n }\n static create(rawValue) {\n if (this.tagName == null)\n throw new ParchmentError(\"Blot definition missing tagName\");\n let node, value;\n return Array.isArray(this.tagName) ? (typeof rawValue == \"string\" ? (value = rawValue.toUpperCase(), parseInt(value, 10).toString() === value && (value = parseInt(value, 10))) : typeof rawValue == \"number\" && (value = rawValue), typeof value == \"number\" ? node = document.createElement(this.tagName[value - 1]) : value && this.tagName.indexOf(value) > -1 ? node = document.createElement(value) : node = document.createElement(this.tagName[0])) : node = document.createElement(this.tagName), this.className && node.classList.add(this.className), node;\n }\n // Hack for accessing inherited static methods\n get statics() {\n return this.constructor;\n }\n attach() {\n }\n clone() {\n const domNode = this.domNode.cloneNode(!1);\n return this.scroll.create(domNode);\n }\n detach() {\n this.parent != null && this.parent.removeChild(this), Registry.blots.delete(this.domNode);\n }\n deleteAt(index, length) {\n this.isolate(index, length).remove();\n }\n formatAt(index, length, name, value) {\n const blot = this.isolate(index, length);\n if (this.scroll.query(name, Scope.BLOT) != null && value)\n blot.wrap(name, value);\n else if (this.scroll.query(name, Scope.ATTRIBUTE) != null) {\n const parent = this.scroll.create(this.statics.scope);\n blot.wrap(parent), parent.format(name, value);\n }\n }\n insertAt(index, value, def) {\n const blot = def == null ? this.scroll.create(\"text\", value) : this.scroll.create(value, def), ref = this.split(index);\n this.parent.insertBefore(blot, ref || void 0);\n }\n isolate(index, length) {\n const target = this.split(index);\n if (target == null)\n throw new Error(\"Attempt to isolate at end\");\n return target.split(length), target;\n }\n length() {\n return 1;\n }\n offset(root = this.parent) {\n return this.parent == null || this === root ? 0 : this.parent.children.offset(this) + this.parent.offset(root);\n }\n optimize(_context) {\n this.statics.requiredContainer && !(this.parent instanceof this.statics.requiredContainer) && this.wrap(this.statics.requiredContainer.blotName);\n }\n remove() {\n this.domNode.parentNode != null && this.domNode.parentNode.removeChild(this.domNode), this.detach();\n }\n replaceWith(name, value) {\n const replacement = typeof name == \"string\" ? this.scroll.create(name, value) : name;\n return this.parent != null && (this.parent.insertBefore(replacement, this.next || void 0), this.remove()), replacement;\n }\n split(index, _force) {\n return index === 0 ? this : this.next;\n }\n update(_mutations, _context) {\n }\n wrap(name, value) {\n const wrapper = typeof name == \"string\" ? this.scroll.create(name, value) : name;\n if (this.parent != null && this.parent.insertBefore(wrapper, this.next || void 0), typeof wrapper.appendChild != \"function\")\n throw new ParchmentError(`Cannot wrap ${name}`);\n return wrapper.appendChild(this), wrapper;\n }\n};\n_ShadowBlot.blotName = \"abstract\";\nlet ShadowBlot = _ShadowBlot;\nconst _LeafBlot = class _LeafBlot extends ShadowBlot {\n /**\n * Returns the value represented by domNode if it is this Blot's type\n * No checking that domNode can represent this Blot type is required so\n * applications needing it should check externally before calling.\n */\n static value(_domNode) {\n return !0;\n }\n /**\n * Given location represented by node and offset from DOM Selection Range,\n * return index to that location.\n */\n index(node, offset) {\n return this.domNode === node || this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY ? Math.min(offset, 1) : -1;\n }\n /**\n * Given index to location within blot, return node and offset representing\n * that location, consumable by DOM Selection Range\n */\n position(index, _inclusive) {\n let offset = Array.from(this.parent.domNode.childNodes).indexOf(this.domNode);\n return index > 0 && (offset += 1), [this.parent.domNode, offset];\n }\n /**\n * Return value represented by this blot\n * Should not change without interaction from API or\n * user change detectable by update()\n */\n value() {\n return {\n [this.statics.blotName]: this.statics.value(this.domNode) || !0\n };\n }\n};\n_LeafBlot.scope = Scope.INLINE_BLOT;\nlet LeafBlot = _LeafBlot;\nconst LeafBlot$1 = LeafBlot;\nclass LinkedList {\n constructor() {\n this.head = null, this.tail = null, this.length = 0;\n }\n append(...nodes) {\n if (this.insertBefore(nodes[0], null), nodes.length > 1) {\n const rest = nodes.slice(1);\n this.append(...rest);\n }\n }\n at(index) {\n const next = this.iterator();\n let cur = next();\n for (; cur && index > 0; )\n index -= 1, cur = next();\n return cur;\n }\n contains(node) {\n const next = this.iterator();\n let cur = next();\n for (; cur; ) {\n if (cur === node)\n return !0;\n cur = next();\n }\n return !1;\n }\n indexOf(node) {\n const next = this.iterator();\n let cur = next(), index = 0;\n for (; cur; ) {\n if (cur === node)\n return index;\n index += 1, cur = next();\n }\n return -1;\n }\n insertBefore(node, refNode) {\n node != null && (this.remove(node), node.next = refNode, refNode != null ? (node.prev = refNode.prev, refNode.prev != null && (refNode.prev.next = node), refNode.prev = node, refNode === this.head && (this.head = node)) : this.tail != null ? (this.tail.next = node, node.prev = this.tail, this.tail = node) : (node.prev = null, this.head = this.tail = node), this.length += 1);\n }\n offset(target) {\n let index = 0, cur = this.head;\n for (; cur != null; ) {\n if (cur === target)\n return index;\n index += cur.length(), cur = cur.next;\n }\n return -1;\n }\n remove(node) {\n this.contains(node) && (node.prev != null && (node.prev.next = node.next), node.next != null && (node.next.prev = node.prev), node === this.head && (this.head = node.next), node === this.tail && (this.tail = node.prev), this.length -= 1);\n }\n iterator(curNode = this.head) {\n return () => {\n const ret = curNode;\n return curNode != null && (curNode = curNode.next), ret;\n };\n }\n find(index, inclusive = !1) {\n const next = this.iterator();\n let cur = next();\n for (; cur; ) {\n const length = cur.length();\n if (index < length || inclusive && index === length && (cur.next == null || cur.next.length() !== 0))\n return [cur, index];\n index -= length, cur = next();\n }\n return [null, 0];\n }\n forEach(callback) {\n const next = this.iterator();\n let cur = next();\n for (; cur; )\n callback(cur), cur = next();\n }\n forEachAt(index, length, callback) {\n if (length <= 0)\n return;\n const [startNode, offset] = this.find(index);\n let curIndex = index - offset;\n const next = this.iterator(startNode);\n let cur = next();\n for (; cur && curIndex < index + length; ) {\n const curLength = cur.length();\n index > curIndex ? callback(\n cur,\n index - curIndex,\n Math.min(length, curIndex + curLength - index)\n ) : callback(cur, 0, Math.min(curLength, index + length - curIndex)), curIndex += curLength, cur = next();\n }\n }\n map(callback) {\n return this.reduce((memo, cur) => (memo.push(callback(cur)), memo), []);\n }\n reduce(callback, memo) {\n const next = this.iterator();\n let cur = next();\n for (; cur; )\n memo = callback(memo, cur), cur = next();\n return memo;\n }\n}\nfunction makeAttachedBlot(node, scroll) {\n const found = scroll.find(node);\n if (found)\n return found;\n try {\n return scroll.create(node);\n } catch {\n const blot = scroll.create(Scope.INLINE);\n return Array.from(node.childNodes).forEach((child) => {\n blot.domNode.appendChild(child);\n }), node.parentNode && node.parentNode.replaceChild(blot.domNode, node), blot.attach(), blot;\n }\n}\nconst _ParentBlot = class _ParentBlot extends ShadowBlot {\n constructor(scroll, domNode) {\n super(scroll, domNode), this.uiNode = null, this.build();\n }\n appendChild(other) {\n this.insertBefore(other);\n }\n attach() {\n super.attach(), this.children.forEach((child) => {\n child.attach();\n });\n }\n attachUI(node) {\n this.uiNode != null && this.uiNode.remove(), this.uiNode = node, _ParentBlot.uiClass && this.uiNode.classList.add(_ParentBlot.uiClass), this.uiNode.setAttribute(\"contenteditable\", \"false\"), this.domNode.insertBefore(this.uiNode, this.domNode.firstChild);\n }\n /**\n * Called during construction, should fill its own children LinkedList.\n */\n build() {\n this.children = new LinkedList(), Array.from(this.domNode.childNodes).filter((node) => node !== this.uiNode).reverse().forEach((node) => {\n try {\n const child = makeAttachedBlot(node, this.scroll);\n this.insertBefore(child, this.children.head || void 0);\n } catch (err) {\n if (err instanceof ParchmentError)\n return;\n throw err;\n }\n });\n }\n deleteAt(index, length) {\n if (index === 0 && length === this.length())\n return this.remove();\n this.children.forEachAt(index, length, (child, offset, childLength) => {\n child.deleteAt(offset, childLength);\n });\n }\n descendant(criteria, index = 0) {\n const [child, offset] = this.children.find(index);\n return criteria.blotName == null && criteria(child) || criteria.blotName != null && child instanceof criteria ? [child, offset] : child instanceof _ParentBlot ? child.descendant(criteria, offset) : [null, -1];\n }\n descendants(criteria, index = 0, length = Number.MAX_VALUE) {\n let descendants = [], lengthLeft = length;\n return this.children.forEachAt(\n index,\n length,\n (child, childIndex, childLength) => {\n (criteria.blotName == null && criteria(child) || criteria.blotName != null && child instanceof criteria) && descendants.push(child), child instanceof _ParentBlot && (descendants = descendants.concat(\n child.descendants(criteria, childIndex, lengthLeft)\n )), lengthLeft -= childLength;\n }\n ), descendants;\n }\n detach() {\n this.children.forEach((child) => {\n child.detach();\n }), super.detach();\n }\n enforceAllowedChildren() {\n let done = !1;\n this.children.forEach((child) => {\n done || this.statics.allowedChildren.some(\n (def) => child instanceof def\n ) || (child.statics.scope === Scope.BLOCK_BLOT ? (child.next != null && this.splitAfter(child), child.prev != null && this.splitAfter(child.prev), child.parent.unwrap(), done = !0) : child instanceof _ParentBlot ? child.unwrap() : child.remove());\n });\n }\n formatAt(index, length, name, value) {\n this.children.forEachAt(index, length, (child, offset, childLength) => {\n child.formatAt(offset, childLength, name, value);\n });\n }\n insertAt(index, value, def) {\n const [child, offset] = this.children.find(index);\n if (child)\n child.insertAt(offset, value, def);\n else {\n const blot = def == null ? this.scroll.create(\"text\", value) : this.scroll.create(value, def);\n this.appendChild(blot);\n }\n }\n insertBefore(childBlot, refBlot) {\n childBlot.parent != null && childBlot.parent.children.remove(childBlot);\n let refDomNode = null;\n this.children.insertBefore(childBlot, refBlot || null), childBlot.parent = this, refBlot != null && (refDomNode = refBlot.domNode), (this.domNode.parentNode !== childBlot.domNode || this.domNode.nextSibling !== refDomNode) && this.domNode.insertBefore(childBlot.domNode, refDomNode), childBlot.attach();\n }\n length() {\n return this.children.reduce((memo, child) => memo + child.length(), 0);\n }\n moveChildren(targetParent, refNode) {\n this.children.forEach((child) => {\n targetParent.insertBefore(child, refNode);\n });\n }\n optimize(context) {\n if (super.optimize(context), this.enforceAllowedChildren(), this.uiNode != null && this.uiNode !== this.domNode.firstChild && this.domNode.insertBefore(this.uiNode, this.domNode.firstChild), this.children.length === 0)\n if (this.statics.defaultChild != null) {\n const child = this.scroll.create(this.statics.defaultChild.blotName);\n this.appendChild(child);\n } else\n this.remove();\n }\n path(index, inclusive = !1) {\n const [child, offset] = this.children.find(index, inclusive), position = [[this, index]];\n return child instanceof _ParentBlot ? position.concat(child.path(offset, inclusive)) : (child != null && position.push([child, offset]), position);\n }\n removeChild(child) {\n this.children.remove(child);\n }\n replaceWith(name, value) {\n const replacement = typeof name == \"string\" ? this.scroll.create(name, value) : name;\n return replacement instanceof _ParentBlot && this.moveChildren(replacement), super.replaceWith(replacement);\n }\n split(index, force = !1) {\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n const after = this.clone();\n return this.parent && this.parent.insertBefore(after, this.next || void 0), this.children.forEachAt(index, this.length(), (child, offset, _length) => {\n const split = child.split(offset, force);\n split != null && after.appendChild(split);\n }), after;\n }\n splitAfter(child) {\n const after = this.clone();\n for (; child.next != null; )\n after.appendChild(child.next);\n return this.parent && this.parent.insertBefore(after, this.next || void 0), after;\n }\n unwrap() {\n this.parent && this.moveChildren(this.parent, this.next || void 0), this.remove();\n }\n update(mutations, _context) {\n const addedNodes = [], removedNodes = [];\n mutations.forEach((mutation) => {\n mutation.target === this.domNode && mutation.type === \"childList\" && (addedNodes.push(...mutation.addedNodes), removedNodes.push(...mutation.removedNodes));\n }), removedNodes.forEach((node) => {\n if (node.parentNode != null && // @ts-expect-error Fix me later\n node.tagName !== \"IFRAME\" && document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY)\n return;\n const blot = this.scroll.find(node);\n blot != null && (blot.domNode.parentNode == null || blot.domNode.parentNode === this.domNode) && blot.detach();\n }), addedNodes.filter((node) => node.parentNode === this.domNode && node !== this.uiNode).sort((a, b) => a === b ? 0 : a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? 1 : -1).forEach((node) => {\n let refBlot = null;\n node.nextSibling != null && (refBlot = this.scroll.find(node.nextSibling));\n const blot = makeAttachedBlot(node, this.scroll);\n (blot.next !== refBlot || blot.next == null) && (blot.parent != null && blot.parent.removeChild(this), this.insertBefore(blot, refBlot || void 0));\n }), this.enforceAllowedChildren();\n }\n};\n_ParentBlot.uiClass = \"\";\nlet ParentBlot = _ParentBlot;\nconst ParentBlot$1 = ParentBlot;\nfunction isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length)\n return !1;\n for (const prop in obj1)\n if (obj1[prop] !== obj2[prop])\n return !1;\n return !0;\n}\nconst _InlineBlot = class _InlineBlot extends ParentBlot$1 {\n static create(value) {\n return super.create(value);\n }\n static formats(domNode, scroll) {\n const match2 = scroll.query(_InlineBlot.blotName);\n if (!(match2 != null && domNode.tagName === match2.tagName)) {\n if (typeof this.tagName == \"string\")\n return !0;\n if (Array.isArray(this.tagName))\n return domNode.tagName.toLowerCase();\n }\n }\n constructor(scroll, domNode) {\n super(scroll, domNode), this.attributes = new AttributorStore$1(this.domNode);\n }\n format(name, value) {\n if (name === this.statics.blotName && !value)\n this.children.forEach((child) => {\n child instanceof _InlineBlot || (child = child.wrap(_InlineBlot.blotName, !0)), this.attributes.copy(child);\n }), this.unwrap();\n else {\n const format = this.scroll.query(name, Scope.INLINE);\n if (format == null)\n return;\n format instanceof Attributor ? this.attributes.attribute(format, value) : value && (name !== this.statics.blotName || this.formats()[name] !== value) && this.replaceWith(name, value);\n }\n }\n formats() {\n const formats = this.attributes.values(), format = this.statics.formats(this.domNode, this.scroll);\n return format != null && (formats[this.statics.blotName] = format), formats;\n }\n formatAt(index, length, name, value) {\n this.formats()[name] != null || this.scroll.query(name, Scope.ATTRIBUTE) ? this.isolate(index, length).format(name, value) : super.formatAt(index, length, name, value);\n }\n optimize(context) {\n super.optimize(context);\n const formats = this.formats();\n if (Object.keys(formats).length === 0)\n return this.unwrap();\n const next = this.next;\n next instanceof _InlineBlot && next.prev === this && isEqual(formats, next.formats()) && (next.moveChildren(this), next.remove());\n }\n replaceWith(name, value) {\n const replacement = super.replaceWith(name, value);\n return this.attributes.copy(replacement), replacement;\n }\n update(mutations, context) {\n super.update(mutations, context), mutations.some(\n (mutation) => mutation.target === this.domNode && mutation.type === \"attributes\"\n ) && this.attributes.build();\n }\n wrap(name, value) {\n const wrapper = super.wrap(name, value);\n return wrapper instanceof _InlineBlot && this.attributes.move(wrapper), wrapper;\n }\n};\n_InlineBlot.allowedChildren = [_InlineBlot, LeafBlot$1], _InlineBlot.blotName = \"inline\", _InlineBlot.scope = Scope.INLINE_BLOT, _InlineBlot.tagName = \"SPAN\";\nlet InlineBlot = _InlineBlot;\nconst InlineBlot$1 = InlineBlot, _BlockBlot = class _BlockBlot extends ParentBlot$1 {\n static create(value) {\n return super.create(value);\n }\n static formats(domNode, scroll) {\n const match2 = scroll.query(_BlockBlot.blotName);\n if (!(match2 != null && domNode.tagName === match2.tagName)) {\n if (typeof this.tagName == \"string\")\n return !0;\n if (Array.isArray(this.tagName))\n return domNode.tagName.toLowerCase();\n }\n }\n constructor(scroll, domNode) {\n super(scroll, domNode), this.attributes = new AttributorStore$1(this.domNode);\n }\n format(name, value) {\n const format = this.scroll.query(name, Scope.BLOCK);\n format != null && (format instanceof Attributor ? this.attributes.attribute(format, value) : name === this.statics.blotName && !value ? this.replaceWith(_BlockBlot.blotName) : value && (name !== this.statics.blotName || this.formats()[name] !== value) && this.replaceWith(name, value));\n }\n formats() {\n const formats = this.attributes.values(), format = this.statics.formats(this.domNode, this.scroll);\n return format != null && (formats[this.statics.blotName] = format), formats;\n }\n formatAt(index, length, name, value) {\n this.scroll.query(name, Scope.BLOCK) != null ? this.format(name, value) : super.formatAt(index, length, name, value);\n }\n insertAt(index, value, def) {\n if (def == null || this.scroll.query(value, Scope.INLINE) != null)\n super.insertAt(index, value, def);\n else {\n const after = this.split(index);\n if (after != null) {\n const blot = this.scroll.create(value, def);\n after.parent.insertBefore(blot, after);\n } else\n throw new Error(\"Attempt to insertAt after block boundaries\");\n }\n }\n replaceWith(name, value) {\n const replacement = super.replaceWith(name, value);\n return this.attributes.copy(replacement), replacement;\n }\n update(mutations, context) {\n super.update(mutations, context), mutations.some(\n (mutation) => mutation.target === this.domNode && mutation.type === \"attributes\"\n ) && this.attributes.build();\n }\n};\n_BlockBlot.blotName = \"block\", _BlockBlot.scope = Scope.BLOCK_BLOT, _BlockBlot.tagName = \"P\", _BlockBlot.allowedChildren = [\n InlineBlot$1,\n _BlockBlot,\n LeafBlot$1\n];\nlet BlockBlot = _BlockBlot;\nconst BlockBlot$1 = BlockBlot, _ContainerBlot = class _ContainerBlot extends ParentBlot$1 {\n checkMerge() {\n return this.next !== null && this.next.statics.blotName === this.statics.blotName;\n }\n deleteAt(index, length) {\n super.deleteAt(index, length), this.enforceAllowedChildren();\n }\n formatAt(index, length, name, value) {\n super.formatAt(index, length, name, value), this.enforceAllowedChildren();\n }\n insertAt(index, value, def) {\n super.insertAt(index, value, def), this.enforceAllowedChildren();\n }\n optimize(context) {\n super.optimize(context), this.children.length > 0 && this.next != null && this.checkMerge() && (this.next.moveChildren(this), this.next.remove());\n }\n};\n_ContainerBlot.blotName = \"container\", _ContainerBlot.scope = Scope.BLOCK_BLOT;\nlet ContainerBlot = _ContainerBlot;\nconst ContainerBlot$1 = ContainerBlot;\nclass EmbedBlot extends LeafBlot$1 {\n static formats(_domNode, _scroll) {\n }\n format(name, value) {\n super.formatAt(0, this.length(), name, value);\n }\n formatAt(index, length, name, value) {\n index === 0 && length === this.length() ? this.format(name, value) : super.formatAt(index, length, name, value);\n }\n formats() {\n return this.statics.formats(this.domNode, this.scroll);\n }\n}\nconst EmbedBlot$1 = EmbedBlot, OBSERVER_CONFIG = {\n attributes: !0,\n characterData: !0,\n characterDataOldValue: !0,\n childList: !0,\n subtree: !0\n}, MAX_OPTIMIZE_ITERATIONS = 100, _ScrollBlot = class _ScrollBlot extends ParentBlot$1 {\n constructor(registry, node) {\n super(null, node), this.registry = registry, this.scroll = this, this.build(), this.observer = new MutationObserver((mutations) => {\n this.update(mutations);\n }), this.observer.observe(this.domNode, OBSERVER_CONFIG), this.attach();\n }\n create(input, value) {\n return this.registry.create(this, input, value);\n }\n find(node, bubble = !1) {\n const blot = this.registry.find(node, bubble);\n return blot ? blot.scroll === this ? blot : bubble ? this.find(blot.scroll.domNode.parentNode, !0) : null : null;\n }\n query(query, scope = Scope.ANY) {\n return this.registry.query(query, scope);\n }\n register(...definitions) {\n return this.registry.register(...definitions);\n }\n build() {\n this.scroll != null && super.build();\n }\n detach() {\n super.detach(), this.observer.disconnect();\n }\n deleteAt(index, length) {\n this.update(), index === 0 && length === this.length() ? this.children.forEach((child) => {\n child.remove();\n }) : super.deleteAt(index, length);\n }\n formatAt(index, length, name, value) {\n this.update(), super.formatAt(index, length, name, value);\n }\n insertAt(index, value, def) {\n this.update(), super.insertAt(index, value, def);\n }\n optimize(mutations = [], context = {}) {\n super.optimize(context);\n const mutationsMap = context.mutationsMap || /* @__PURE__ */ new WeakMap();\n let records = Array.from(this.observer.takeRecords());\n for (; records.length > 0; )\n mutations.push(records.pop());\n const mark = (blot, markParent = !0) => {\n blot == null || blot === this || blot.domNode.parentNode != null && (mutationsMap.has(blot.domNode) || mutationsMap.set(blot.domNode, []), markParent && mark(blot.parent));\n }, optimize = (blot) => {\n mutationsMap.has(blot.domNode) && (blot instanceof ParentBlot$1 && blot.children.forEach(optimize), mutationsMap.delete(blot.domNode), blot.optimize(context));\n };\n let remaining = mutations;\n for (let i = 0; remaining.length > 0; i += 1) {\n if (i >= MAX_OPTIMIZE_ITERATIONS)\n throw new Error(\"[Parchment] Maximum optimize iterations reached\");\n for (remaining.forEach((mutation) => {\n const blot = this.find(mutation.target, !0);\n blot != null && (blot.domNode === mutation.target && (mutation.type === \"childList\" ? (mark(this.find(mutation.previousSibling, !1)), Array.from(mutation.addedNodes).forEach((node) => {\n const child = this.find(node, !1);\n mark(child, !1), child instanceof ParentBlot$1 && child.children.forEach((grandChild) => {\n mark(grandChild, !1);\n });\n })) : mutation.type === \"attributes\" && mark(blot.prev)), mark(blot));\n }), this.children.forEach(optimize), remaining = Array.from(this.observer.takeRecords()), records = remaining.slice(); records.length > 0; )\n mutations.push(records.pop());\n }\n }\n update(mutations, context = {}) {\n mutations = mutations || this.observer.takeRecords();\n const mutationsMap = /* @__PURE__ */ new WeakMap();\n mutations.map((mutation) => {\n const blot = this.find(mutation.target, !0);\n return blot == null ? null : mutationsMap.has(blot.domNode) ? (mutationsMap.get(blot.domNode).push(mutation), null) : (mutationsMap.set(blot.domNode, [mutation]), blot);\n }).forEach((blot) => {\n blot != null && blot !== this && mutationsMap.has(blot.domNode) && blot.update(mutationsMap.get(blot.domNode) || [], context);\n }), context.mutationsMap = mutationsMap, mutationsMap.has(this.domNode) && super.update(mutationsMap.get(this.domNode), context), this.optimize(mutations, context);\n }\n};\n_ScrollBlot.blotName = \"scroll\", _ScrollBlot.defaultChild = BlockBlot$1, _ScrollBlot.allowedChildren = [BlockBlot$1, ContainerBlot$1], _ScrollBlot.scope = Scope.BLOCK_BLOT, _ScrollBlot.tagName = \"DIV\";\nlet ScrollBlot = _ScrollBlot;\nconst ScrollBlot$1 = ScrollBlot, _TextBlot = class _TextBlot extends LeafBlot$1 {\n static create(value) {\n return document.createTextNode(value);\n }\n static value(domNode) {\n return domNode.data;\n }\n constructor(scroll, node) {\n super(scroll, node), this.text = this.statics.value(this.domNode);\n }\n deleteAt(index, length) {\n this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n }\n index(node, offset) {\n return this.domNode === node ? offset : -1;\n }\n insertAt(index, value, def) {\n def == null ? (this.text = this.text.slice(0, index) + value + this.text.slice(index), this.domNode.data = this.text) : super.insertAt(index, value, def);\n }\n length() {\n return this.text.length;\n }\n optimize(context) {\n super.optimize(context), this.text = this.statics.value(this.domNode), this.text.length === 0 ? this.remove() : this.next instanceof _TextBlot && this.next.prev === this && (this.insertAt(this.length(), this.next.value()), this.next.remove());\n }\n position(index, _inclusive = !1) {\n return [this.domNode, index];\n }\n split(index, force = !1) {\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n const after = this.scroll.create(this.domNode.splitText(index));\n return this.parent.insertBefore(after, this.next || void 0), this.text = this.statics.value(this.domNode), after;\n }\n update(mutations, _context) {\n mutations.some((mutation) => mutation.type === \"characterData\" && mutation.target === this.domNode) && (this.text = this.statics.value(this.domNode));\n }\n value() {\n return this.text;\n }\n};\n_TextBlot.blotName = \"text\", _TextBlot.scope = Scope.INLINE_BLOT;\nlet TextBlot = _TextBlot;\nconst TextBlot$1 = TextBlot;\nexport {\n Attributor,\n AttributorStore$1 as AttributorStore,\n BlockBlot$1 as BlockBlot,\n ClassAttributor$1 as ClassAttributor,\n ContainerBlot$1 as ContainerBlot,\n EmbedBlot$1 as EmbedBlot,\n InlineBlot$1 as InlineBlot,\n LeafBlot$1 as LeafBlot,\n ParentBlot$1 as ParentBlot,\n Registry,\n Scope,\n ScrollBlot$1 as ScrollBlot,\n StyleAttributor$1 as StyleAttributor,\n TextBlot$1 as TextBlot\n};\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nexport default arrayEach;\n","import overArg from './_overArg.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nexport default nativeKeys;\n","import isPrototype from './_isPrototype.js';\nimport nativeKeys from './_nativeKeys.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nexport default baseKeys;\n","import arrayLikeKeys from './_arrayLikeKeys.js';\nimport baseKeys from './_baseKeys.js';\nimport isArrayLike from './isArrayLike.js';\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nexport default keys;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nexport default stubArray;\n","import arrayFilter from './_arrayFilter.js';\nimport stubArray from './stubArray.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nexport default getSymbols;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nexport default arrayFilter;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nexport default arrayPush;\n","import arrayPush from './_arrayPush.js';\nimport getPrototype from './_getPrototype.js';\nimport getSymbols from './_getSymbols.js';\nimport stubArray from './stubArray.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nexport default getSymbolsIn;\n","import arrayPush from './_arrayPush.js';\nimport isArray from './isArray.js';\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nexport default baseGetAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbols from './_getSymbols.js';\nimport keys from './keys.js';\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nexport default getAllKeys;\n","import baseGetAllKeys from './_baseGetAllKeys.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\nimport keysIn from './keysIn.js';\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nexport default getAllKeysIn;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nexport default DataView;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nexport default Promise;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nexport default Set;\n","import getNative from './_getNative.js';\nimport root from './_root.js';\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nexport default WeakMap;\n","import DataView from './_DataView.js';\nimport Map from './_Map.js';\nimport Promise from './_Promise.js';\nimport Set from './_Set.js';\nimport WeakMap from './_WeakMap.js';\nimport baseGetTag from './_baseGetTag.js';\nimport toSource from './_toSource.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nexport default getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nexport default initCloneArray;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nexport default cloneRegExp;\n","import Symbol from './_Symbol.js';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nexport default cloneSymbol;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\nimport cloneDataView from './_cloneDataView.js';\nimport cloneRegExp from './_cloneRegExp.js';\nimport cloneSymbol from './_cloneSymbol.js';\nimport cloneTypedArray from './_cloneTypedArray.js';\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nexport default initCloneByTag;\n","import cloneArrayBuffer from './_cloneArrayBuffer.js';\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nexport default cloneDataView;\n","import baseIsMap from './_baseIsMap.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nexport default isMap;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nexport default baseIsMap;\n","import baseIsSet from './_baseIsSet.js';\nimport baseUnary from './_baseUnary.js';\nimport nodeUtil from './_nodeUtil.js';\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nexport default isSet;\n","import getTag from './_getTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nexport default baseIsSet;\n","import Stack from './_Stack.js';\nimport arrayEach from './_arrayEach.js';\nimport assignValue from './_assignValue.js';\nimport baseAssign from './_baseAssign.js';\nimport baseAssignIn from './_baseAssignIn.js';\nimport cloneBuffer from './_cloneBuffer.js';\nimport copyArray from './_copyArray.js';\nimport copySymbols from './_copySymbols.js';\nimport copySymbolsIn from './_copySymbolsIn.js';\nimport getAllKeys from './_getAllKeys.js';\nimport getAllKeysIn from './_getAllKeysIn.js';\nimport getTag from './_getTag.js';\nimport initCloneArray from './_initCloneArray.js';\nimport initCloneByTag from './_initCloneByTag.js';\nimport initCloneObject from './_initCloneObject.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isMap from './isMap.js';\nimport isObject from './isObject.js';\nimport isSet from './isSet.js';\nimport keys from './keys.js';\nimport keysIn from './keysIn.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nexport default baseClone;\n","import copyObject from './_copyObject.js';\nimport getSymbolsIn from './_getSymbolsIn.js';\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nexport default copySymbolsIn;\n","import copyObject from './_copyObject.js';\nimport keysIn from './keysIn.js';\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nexport default baseAssignIn;\n","import copyObject from './_copyObject.js';\nimport getSymbols from './_getSymbols.js';\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nexport default copySymbols;\n","import copyObject from './_copyObject.js';\nimport keys from './keys.js';\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nexport default baseAssign;\n","import baseClone from './_baseClone.js';\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nexport default cloneDeep;\n","import MapCache from './_MapCache.js';\nimport setCacheAdd from './_setCacheAdd.js';\nimport setCacheHas from './_setCacheHas.js';\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nexport default SetCache;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nexport default setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nexport default setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nexport default arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nexport default cacheHas;\n","import SetCache from './_SetCache.js';\nimport arraySome from './_arraySome.js';\nimport cacheHas from './_cacheHas.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nexport default equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nexport default mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nexport default setToArray;\n","import Symbol from './_Symbol.js';\nimport Uint8Array from './_Uint8Array.js';\nimport eq from './eq.js';\nimport equalArrays from './_equalArrays.js';\nimport mapToArray from './_mapToArray.js';\nimport setToArray from './_setToArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nexport default equalByTag;\n","import getAllKeys from './_getAllKeys.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nexport default equalObjects;\n","import Stack from './_Stack.js';\nimport equalArrays from './_equalArrays.js';\nimport equalByTag from './_equalByTag.js';\nimport equalObjects from './_equalObjects.js';\nimport getTag from './_getTag.js';\nimport isArray from './isArray.js';\nimport isBuffer from './isBuffer.js';\nimport isTypedArray from './isTypedArray.js';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nexport default baseIsEqualDeep;\n","import baseIsEqualDeep from './_baseIsEqualDeep.js';\nimport isObjectLike from './isObjectLike.js';\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nexport default baseIsEqual;\n","import baseIsEqual from './_baseIsEqual.js';\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nexport default isEqual;\n","import { EmbedBlot } from 'parchment';\nclass Break extends EmbedBlot {\n static value() {\n return undefined;\n }\n optimize() {\n if (this.prev || this.next) {\n this.remove();\n }\n }\n length() {\n return 0;\n }\n value() {\n return '';\n }\n}\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\nexport default Break;\n","import { TextBlot } from 'parchment';\nclass Text extends TextBlot {}\nfunction escapeText(text) {\n return text.replace(/[&<>\"']/g, s => {\n // https://lodash.com/docs#escape\n const entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n return entityMap[s];\n });\n}\nexport { Text as default, escapeText };\n","import { EmbedBlot, InlineBlot, Scope } from 'parchment';\nimport Break from './break.js';\nimport Text from './text.js';\nclass Inline extends InlineBlot {\n static allowedChildren = [Inline, Break, EmbedBlot, Text];\n // Lower index means deeper in the DOM tree, since not found (-1) is for embeds\n static order = ['cursor', 'inline',\n // Must be lower\n 'link',\n // Chrome wants to be lower\n 'underline', 'strike', 'italic', 'bold', 'script', 'code' // Must be higher\n ];\n static compare(self, other) {\n const selfIndex = Inline.order.indexOf(self);\n const otherIndex = Inline.order.indexOf(other);\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n }\n if (self === other) {\n return 0;\n }\n if (self < other) {\n return -1;\n }\n return 1;\n }\n formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && this.scroll.query(name, Scope.BLOT)) {\n const blot = this.isolate(index, length);\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n super.formatAt(index, length, name, value);\n }\n }\n optimize(context) {\n super.optimize(context);\n if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n const parent = this.parent.isolate(this.offset(), this.length());\n // @ts-expect-error TODO: make isolate generic\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n}\nexport default Inline;\n","import { AttributorStore, BlockBlot, EmbedBlot, LeafBlot, Scope } from 'parchment';\nimport Delta from 'quill-delta';\nimport Break from './break.js';\nimport Inline from './inline.js';\nimport TextBlot from './text.js';\nconst NEWLINE_LENGTH = 1;\nclass Block extends BlockBlot {\n cache = {};\n delta() {\n if (this.cache.delta == null) {\n this.cache.delta = blockDelta(this);\n }\n return this.cache.delta;\n }\n deleteAt(index, length) {\n super.deleteAt(index, length);\n this.cache = {};\n }\n formatAt(index, length, name, value) {\n if (length <= 0) return;\n if (this.scroll.query(name, Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n super.formatAt(index, Math.min(length, this.length() - index - 1), name, value);\n }\n this.cache = {};\n }\n insertAt(index, value, def) {\n if (def != null) {\n super.insertAt(index, value, def);\n this.cache = {};\n return;\n }\n if (value.length === 0) return;\n const lines = value.split('\\n');\n const text = lines.shift();\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n super.insertAt(Math.min(index, this.length() - 1), text);\n } else {\n this.children.tail.insertAt(this.children.tail.length(), text);\n }\n this.cache = {};\n }\n // TODO: Fix this next time the file is edited.\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let block = this;\n lines.reduce((lineIndex, line) => {\n // @ts-expect-error Fix me later\n block = block.split(lineIndex, true);\n block.insertAt(0, line);\n return line.length;\n }, index + text.length);\n }\n insertBefore(blot, ref) {\n const {\n head\n } = this.children;\n super.insertBefore(blot, ref);\n if (head instanceof Break) {\n head.remove();\n }\n this.cache = {};\n }\n length() {\n if (this.cache.length == null) {\n this.cache.length = super.length() + NEWLINE_LENGTH;\n }\n return this.cache.length;\n }\n moveChildren(target, ref) {\n super.moveChildren(target, ref);\n this.cache = {};\n }\n optimize(context) {\n super.optimize(context);\n this.cache = {};\n }\n path(index) {\n return super.path(index, true);\n }\n removeChild(child) {\n super.removeChild(child);\n this.cache = {};\n }\n split(index) {\n let force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n const clone = this.clone();\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n }\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n const next = super.split(index, force);\n this.cache = {};\n return next;\n }\n}\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = Break;\nBlock.allowedChildren = [Break, Inline, EmbedBlot, TextBlot];\nclass BlockEmbed extends EmbedBlot {\n attach() {\n super.attach();\n this.attributes = new AttributorStore(this.domNode);\n }\n delta() {\n return new Delta().insert(this.value(), {\n ...this.formats(),\n ...this.attributes.values()\n });\n }\n format(name, value) {\n const attribute = this.scroll.query(name, Scope.BLOCK_ATTRIBUTE);\n if (attribute != null) {\n // @ts-expect-error TODO: Scroll#query() should return Attributor when scope is attribute\n this.attributes.attribute(attribute, value);\n }\n }\n formatAt(index, length, name, value) {\n this.format(name, value);\n }\n insertAt(index, value, def) {\n if (def != null) {\n super.insertAt(index, value, def);\n return;\n }\n const lines = value.split('\\n');\n const text = lines.pop();\n const blocks = lines.map(line => {\n const block = this.scroll.create(Block.blotName);\n block.insertAt(0, line);\n return block;\n });\n const ref = this.split(index);\n blocks.forEach(block => {\n this.parent.insertBefore(block, ref);\n });\n if (text) {\n this.parent.insertBefore(this.scroll.create('text', text), ref);\n }\n }\n}\nBlockEmbed.scope = Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\nfunction blockDelta(blot) {\n let filter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return blot.descendants(LeafBlot).reduce((delta, leaf) => {\n if (leaf.length() === 0) {\n return delta;\n }\n return delta.insert(leaf.value(), bubbleFormats(leaf, {}, filter));\n }, new Delta()).insert('\\n', bubbleFormats(blot));\n}\nfunction bubbleFormats(blot) {\n let formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let filter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n if (blot == null) return formats;\n if ('formats' in blot && typeof blot.formats === 'function') {\n formats = {\n ...formats,\n ...blot.formats()\n };\n if (filter) {\n // exclude syntax highlighting from deltas and getFormat()\n delete formats['code-token'];\n }\n }\n if (blot.parent == null || blot.parent.statics.blotName === 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n return bubbleFormats(blot.parent, formats, filter);\n}\nexport { blockDelta, bubbleFormats, BlockEmbed, Block as default };\n","import { EmbedBlot, Scope } from 'parchment';\nimport TextBlot from './text.js';\nclass Cursor extends EmbedBlot {\n static blotName = 'cursor';\n static className = 'ql-cursor';\n static tagName = 'span';\n static CONTENTS = '\\uFEFF'; // Zero width no break space\n\n static value() {\n return undefined;\n }\n constructor(scroll, domNode, selection) {\n super(scroll, domNode);\n this.selection = selection;\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n this.savedLength = 0;\n }\n detach() {\n // super.detach() will also clear domNode.__blot\n if (this.parent != null) this.parent.removeChild(this);\n }\n format(name, value) {\n if (this.savedLength !== 0) {\n super.format(name, value);\n return;\n }\n // TODO: Fix this next time the file is edited.\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let target = this;\n let index = 0;\n while (target != null && target.statics.scope !== Scope.BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\n }\n if (target != null) {\n this.savedLength = Cursor.CONTENTS.length;\n // @ts-expect-error TODO: allow empty context in Parchment\n target.optimize();\n target.formatAt(index, Cursor.CONTENTS.length, name, value);\n this.savedLength = 0;\n }\n }\n index(node, offset) {\n if (node === this.textNode) return 0;\n return super.index(node, offset);\n }\n length() {\n return this.savedLength;\n }\n position() {\n return [this.textNode, this.textNode.data.length];\n }\n remove() {\n super.remove();\n // @ts-expect-error Fix me later\n this.parent = null;\n }\n restore() {\n if (this.selection.composing || this.parent == null) return null;\n const range = this.selection.getNativeRange();\n // Browser may push down styles/nodes inside the cursor blot.\n // https://dvcs.w3.org/hg/editing/raw-file/tip/editing.html#push-down-values\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n // @ts-expect-error Fix me later\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n const prevTextBlot = this.prev instanceof TextBlot ? this.prev : null;\n const prevTextLength = prevTextBlot ? prevTextBlot.length() : 0;\n const nextTextBlot = this.next instanceof TextBlot ? this.next : null;\n // @ts-expect-error TODO: make TextBlot.text public\n const nextText = nextTextBlot ? nextTextBlot.text : '';\n const {\n textNode\n } = this;\n // take text from inside this blot and reset it\n const newText = textNode.data.split(Cursor.CONTENTS).join('');\n textNode.data = Cursor.CONTENTS;\n\n // proactively merge TextBlots around cursor so that optimization\n // doesn't lose the cursor. the reason we are here in cursor.restore\n // could be that the user clicked in prevTextBlot or nextTextBlot, or\n // the user typed something.\n let mergedTextBlot;\n if (prevTextBlot) {\n mergedTextBlot = prevTextBlot;\n if (newText || nextTextBlot) {\n prevTextBlot.insertAt(prevTextBlot.length(), newText + nextText);\n if (nextTextBlot) {\n nextTextBlot.remove();\n }\n }\n } else if (nextTextBlot) {\n mergedTextBlot = nextTextBlot;\n nextTextBlot.insertAt(0, newText);\n } else {\n const newTextNode = document.createTextNode(newText);\n mergedTextBlot = this.scroll.create(newTextNode);\n this.parent.insertBefore(mergedTextBlot, this);\n }\n this.remove();\n if (range) {\n // calculate selection to restore\n const remapOffset = (node, offset) => {\n if (prevTextBlot && node === prevTextBlot.domNode) {\n return offset;\n }\n if (node === textNode) {\n return prevTextLength + offset - 1;\n }\n if (nextTextBlot && node === nextTextBlot.domNode) {\n return prevTextLength + newText.length + offset;\n }\n return null;\n };\n const start = remapOffset(range.start.node, range.start.offset);\n const end = remapOffset(range.end.node, range.end.offset);\n if (start !== null && end !== null) {\n return {\n startNode: mergedTextBlot.domNode,\n startOffset: start,\n endNode: mergedTextBlot.domNode,\n endOffset: end\n };\n }\n }\n return null;\n }\n update(mutations, context) {\n if (mutations.some(mutation => {\n return mutation.type === 'characterData' && mutation.target === this.textNode;\n })) {\n const range = this.restore();\n if (range) context.range = range;\n }\n }\n\n // Avoid .ql-cursor being a descendant of ``.\n // The reason is Safari pushes down `` on text insertion.\n // That will cause DOM nodes not sync with the model.\n //\n // For example ({I} is the caret), given the markup:\n // \\uFEFF{I}\n // When typing a char \"x\", `` will be pushed down inside the `` first:\n // \\uFEFF{I}\n // And then \"x\" will be inserted after ``:\n // \\uFEFFd{I}\n optimize(context) {\n // @ts-expect-error Fix me later\n super.optimize(context);\n let {\n parent\n } = this;\n while (parent) {\n if (parent.domNode.tagName === 'A') {\n this.savedLength = Cursor.CONTENTS.length;\n // @ts-expect-error TODO: make isolate generic\n parent.isolate(this.offset(parent), this.length()).unwrap();\n this.savedLength = 0;\n break;\n }\n parent = parent.parent;\n }\n }\n value() {\n return '';\n }\n}\nexport default Cursor;\n","import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n","export default new WeakMap();\n","const levels = ['error', 'warn', 'log', 'info'];\nlet level = 'warn';\nfunction debug(method) {\n if (level) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n console[method](...args); // eslint-disable-line no-console\n }\n }\n}\nfunction namespace(ns) {\n return levels.reduce((logger, method) => {\n logger[method] = debug.bind(console, method, ns);\n return logger;\n }, {});\n}\nnamespace.level = newLevel => {\n level = newLevel;\n};\ndebug.level = namespace.level;\nexport default namespace;\n","import { EventEmitter } from 'eventemitter3';\nimport instances from './instances.js';\nimport logger from './logger.js';\nconst debug = logger('quill:events');\nconst EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\nEVENTS.forEach(eventName => {\n document.addEventListener(eventName, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n Array.from(document.querySelectorAll('.ql-container')).forEach(node => {\n const quill = instances.get(node);\n if (quill && quill.emitter) {\n quill.emitter.handleDOM(...args);\n }\n });\n });\n});\nclass Emitter extends EventEmitter {\n static events = {\n EDITOR_CHANGE: 'editor-change',\n SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n SCROLL_BLOT_MOUNT: 'scroll-blot-mount',\n SCROLL_BLOT_UNMOUNT: 'scroll-blot-unmount',\n SCROLL_OPTIMIZE: 'scroll-optimize',\n SCROLL_UPDATE: 'scroll-update',\n SCROLL_EMBED_UPDATE: 'scroll-embed-update',\n SELECTION_CHANGE: 'selection-change',\n TEXT_CHANGE: 'text-change',\n COMPOSITION_BEFORE_START: 'composition-before-start',\n COMPOSITION_START: 'composition-start',\n COMPOSITION_BEFORE_END: 'composition-before-end',\n COMPOSITION_END: 'composition-end'\n };\n static sources = {\n API: 'api',\n SILENT: 'silent',\n USER: 'user'\n };\n constructor() {\n super();\n this.domListeners = {};\n this.on('error', debug.error);\n }\n emit() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n debug.log.call(debug, ...args);\n // @ts-expect-error\n return super.emit(...args);\n }\n handleDOM(event) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n (this.domListeners[event.type] || []).forEach(_ref => {\n let {\n node,\n handler\n } = _ref;\n if (event.target === node || node.contains(event.target)) {\n handler(event, ...args);\n }\n });\n }\n listenDOM(eventName, node, handler) {\n if (!this.domListeners[eventName]) {\n this.domListeners[eventName] = [];\n }\n this.domListeners[eventName].push({\n node,\n handler\n });\n }\n}\nexport default Emitter;\n","import { LeafBlot, Scope } from 'parchment';\nimport { cloneDeep, isEqual } from 'lodash-es';\nimport Emitter from './emitter.js';\nimport logger from './logger.js';\nconst debug = logger('quill:selection');\nexport class Range {\n constructor(index) {\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n this.index = index;\n this.length = length;\n }\n}\nclass Selection {\n constructor(scroll, emitter) {\n this.emitter = emitter;\n this.scroll = scroll;\n this.composing = false;\n this.mouseDown = false;\n this.root = this.scroll.domNode;\n // @ts-expect-error\n this.cursor = this.scroll.create('cursor', this);\n // savedRange is last non-null range\n this.savedRange = new Range(0, 0);\n this.lastRange = this.savedRange;\n this.lastNative = null;\n this.handleComposition();\n this.handleDragging();\n this.emitter.listenDOM('selectionchange', document, () => {\n if (!this.mouseDown && !this.composing) {\n setTimeout(this.update.bind(this, Emitter.sources.USER), 1);\n }\n });\n this.emitter.on(Emitter.events.SCROLL_BEFORE_UPDATE, () => {\n if (!this.hasFocus()) return;\n const native = this.getNativeRange();\n if (native == null) return;\n if (native.start.node === this.cursor.textNode) return; // cursor.restore() will handle\n this.emitter.once(Emitter.events.SCROLL_UPDATE, (source, mutations) => {\n try {\n if (this.root.contains(native.start.node) && this.root.contains(native.end.node)) {\n this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n }\n const triggeredByTyping = mutations.some(mutation => mutation.type === 'characterData' || mutation.type === 'childList' || mutation.type === 'attributes' && mutation.target === this.root);\n this.update(triggeredByTyping ? Emitter.sources.SILENT : source);\n } catch (ignored) {\n // ignore\n }\n });\n });\n this.emitter.on(Emitter.events.SCROLL_OPTIMIZE, (mutations, context) => {\n if (context.range) {\n const {\n startNode,\n startOffset,\n endNode,\n endOffset\n } = context.range;\n this.setNativeRange(startNode, startOffset, endNode, endOffset);\n this.update(Emitter.sources.SILENT);\n }\n });\n this.update(Emitter.sources.SILENT);\n }\n handleComposition() {\n this.emitter.on(Emitter.events.COMPOSITION_BEFORE_START, () => {\n this.composing = true;\n });\n this.emitter.on(Emitter.events.COMPOSITION_END, () => {\n this.composing = false;\n if (this.cursor.parent) {\n const range = this.cursor.restore();\n if (!range) return;\n setTimeout(() => {\n this.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }, 1);\n }\n });\n }\n handleDragging() {\n this.emitter.listenDOM('mousedown', document.body, () => {\n this.mouseDown = true;\n });\n this.emitter.listenDOM('mouseup', document.body, () => {\n this.mouseDown = false;\n this.update(Emitter.sources.USER);\n });\n }\n focus() {\n if (this.hasFocus()) return;\n this.root.focus({\n preventScroll: true\n });\n this.setRange(this.savedRange);\n }\n format(format, value) {\n this.scroll.update();\n const nativeRange = this.getNativeRange();\n if (nativeRange == null || !nativeRange.native.collapsed || this.scroll.query(format, Scope.BLOCK)) return;\n if (nativeRange.start.node !== this.cursor.textNode) {\n const blot = this.scroll.find(nativeRange.start.node, false);\n if (blot == null) return;\n // TODO Give blot ability to not split\n if (blot instanceof LeafBlot) {\n const after = blot.split(nativeRange.start.offset);\n blot.parent.insertBefore(this.cursor, after);\n } else {\n // @ts-expect-error TODO: nativeRange.start.node doesn't seem to match function signature\n blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n }\n this.cursor.attach();\n }\n this.cursor.format(format, value);\n this.scroll.optimize();\n this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n this.update();\n }\n getBounds(index) {\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n const scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\n let node;\n let [leaf, offset] = this.scroll.leaf(index);\n if (leaf == null) return null;\n if (length > 0 && offset === leaf.length()) {\n const [next] = this.scroll.leaf(index + 1);\n if (next) {\n const [line] = this.scroll.line(index);\n const [nextLine] = this.scroll.line(index + 1);\n if (line === nextLine) {\n leaf = next;\n offset = 0;\n }\n }\n }\n [node, offset] = leaf.position(offset, true);\n const range = document.createRange();\n if (length > 0) {\n range.setStart(node, offset);\n [leaf, offset] = this.scroll.leaf(index + length);\n if (leaf == null) return null;\n [node, offset] = leaf.position(offset, true);\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n }\n let side = 'left';\n let rect;\n if (node instanceof Text) {\n // Return null if the text node is empty because it is\n // not able to get a useful client rect:\n // https://github.com/w3c/csswg-drafts/issues/2514.\n // Empty text nodes are most likely caused by TextBlot#optimize()\n // not getting called when editor content changes.\n if (!node.data.length) {\n return null;\n }\n if (offset < node.data.length) {\n range.setStart(node, offset);\n range.setEnd(node, offset + 1);\n } else {\n range.setStart(node, offset - 1);\n range.setEnd(node, offset);\n side = 'right';\n }\n rect = range.getBoundingClientRect();\n } else {\n if (!(leaf.domNode instanceof Element)) return null;\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = 'right';\n }\n return {\n bottom: rect.top + rect.height,\n height: rect.height,\n left: rect[side],\n right: rect[side],\n top: rect.top,\n width: 0\n };\n }\n getNativeRange() {\n const selection = document.getSelection();\n if (selection == null || selection.rangeCount <= 0) return null;\n const nativeRange = selection.getRangeAt(0);\n if (nativeRange == null) return null;\n const range = this.normalizeNative(nativeRange);\n debug.info('getNativeRange', range);\n return range;\n }\n getRange() {\n const root = this.scroll.domNode;\n if ('isConnected' in root && !root.isConnected) {\n // document.getSelection() forces layout on Blink, so we trend to\n // not calling it.\n return [null, null];\n }\n const normalized = this.getNativeRange();\n if (normalized == null) return [null, null];\n const range = this.normalizedToRange(normalized);\n return [range, normalized];\n }\n hasFocus() {\n return document.activeElement === this.root || document.activeElement != null && contains(this.root, document.activeElement);\n }\n normalizedToRange(range) {\n const positions = [[range.start.node, range.start.offset]];\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n const indexes = positions.map(position => {\n const [node, offset] = position;\n const blot = this.scroll.find(node, true);\n // @ts-expect-error Fix me later\n const index = blot.offset(this.scroll);\n if (offset === 0) {\n return index;\n }\n if (blot instanceof LeafBlot) {\n return index + blot.index(node, offset);\n }\n // @ts-expect-error Fix me later\n return index + blot.length();\n });\n const end = Math.min(Math.max(...indexes), this.scroll.length() - 1);\n const start = Math.min(end, ...indexes);\n return new Range(start, end - start);\n }\n normalizeNative(nativeRange) {\n if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n return null;\n }\n const range = {\n start: {\n node: nativeRange.startContainer,\n offset: nativeRange.startOffset\n },\n end: {\n node: nativeRange.endContainer,\n offset: nativeRange.endOffset\n },\n native: nativeRange\n };\n [range.start, range.end].forEach(position => {\n let {\n node,\n offset\n } = position;\n while (!(node instanceof Text) && node.childNodes.length > 0) {\n if (node.childNodes.length > offset) {\n node = node.childNodes[offset];\n offset = 0;\n } else if (node.childNodes.length === offset) {\n // @ts-expect-error Fix me later\n node = node.lastChild;\n if (node instanceof Text) {\n offset = node.data.length;\n } else if (node.childNodes.length > 0) {\n // Container case\n offset = node.childNodes.length;\n } else {\n // Embed case\n offset = node.childNodes.length + 1;\n }\n } else {\n break;\n }\n }\n position.node = node;\n position.offset = offset;\n });\n return range;\n }\n rangeToNative(range) {\n const scrollLength = this.scroll.length();\n const getPosition = (index, inclusive) => {\n index = Math.min(scrollLength - 1, index);\n const [leaf, leafOffset] = this.scroll.leaf(index);\n return leaf ? leaf.position(leafOffset, inclusive) : [null, -1];\n };\n return [...getPosition(range.index, false), ...getPosition(range.index + range.length, true)];\n }\n setNativeRange(startNode, startOffset) {\n let endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n let endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n let force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null ||\n // @ts-expect-error Fix me later\n endNode.parentNode == null)) {\n return;\n }\n const selection = document.getSelection();\n if (selection == null) return;\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus({\n preventScroll: true\n });\n const {\n native\n } = this.getNativeRange() || {};\n if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n if (startNode instanceof Element && startNode.tagName === 'BR') {\n // @ts-expect-error Fix me later\n startOffset = Array.from(startNode.parentNode.childNodes).indexOf(startNode);\n startNode = startNode.parentNode;\n }\n if (endNode instanceof Element && endNode.tagName === 'BR') {\n // @ts-expect-error Fix me later\n endOffset = Array.from(endNode.parentNode.childNodes).indexOf(endNode);\n endNode = endNode.parentNode;\n }\n const range = document.createRange();\n // @ts-expect-error Fix me later\n range.setStart(startNode, startOffset);\n // @ts-expect-error Fix me later\n range.setEnd(endNode, endOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n } else {\n selection.removeAllRanges();\n this.root.blur();\n }\n }\n setRange(range) {\n let force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n let source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Emitter.sources.API;\n if (typeof force === 'string') {\n source = force;\n force = false;\n }\n debug.info('setRange', range);\n if (range != null) {\n const args = this.rangeToNative(range);\n this.setNativeRange(...args, force);\n } else {\n this.setNativeRange(null);\n }\n this.update(source);\n }\n update() {\n let source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Emitter.sources.USER;\n const oldRange = this.lastRange;\n const [lastRange, nativeRange] = this.getRange();\n this.lastRange = lastRange;\n this.lastNative = nativeRange;\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n if (!isEqual(oldRange, this.lastRange)) {\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n const range = this.cursor.restore();\n if (range) {\n this.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }\n }\n const args = [Emitter.events.SELECTION_CHANGE, cloneDeep(this.lastRange), cloneDeep(oldRange), source];\n this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n if (source !== Emitter.sources.SILENT) {\n this.emitter.emit(...args);\n }\n }\n }\n}\nfunction contains(parent, descendant) {\n try {\n // Firefox inserts inaccessible nodes around video elements\n descendant.parentNode; // eslint-disable-line @typescript-eslint/no-unused-expressions\n } catch (e) {\n return false;\n }\n return parent.contains(descendant);\n}\nexport default Selection;\n","import { cloneDeep, isEqual, merge } from 'lodash-es';\nimport { LeafBlot, EmbedBlot, Scope, ParentBlot } from 'parchment';\nimport Delta, { AttributeMap, Op } from 'quill-delta';\nimport Block, { BlockEmbed, bubbleFormats } from '../blots/block.js';\nimport Break from '../blots/break.js';\nimport CursorBlot from '../blots/cursor.js';\nimport TextBlot, { escapeText } from '../blots/text.js';\nimport { Range } from './selection.js';\nconst ASCII = /^[ -~]*$/;\nclass Editor {\n constructor(scroll) {\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n applyDelta(delta) {\n this.scroll.update();\n let scrollLength = this.scroll.length();\n this.scroll.batchStart();\n const normalizedDelta = normalizeDelta(delta);\n const deleteDelta = new Delta();\n const normalizedOps = splitOpLines(normalizedDelta.ops.slice());\n normalizedOps.reduce((index, op) => {\n const length = Op.length(op);\n let attributes = op.attributes || {};\n let isImplicitNewlinePrepended = false;\n let isImplicitNewlineAppended = false;\n if (op.insert != null) {\n deleteDelta.retain(length);\n if (typeof op.insert === 'string') {\n const text = op.insert;\n isImplicitNewlineAppended = !text.endsWith('\\n') && (scrollLength <= index || !!this.scroll.descendant(BlockEmbed, index)[0]);\n this.scroll.insertAt(index, text);\n const [line, offset] = this.scroll.line(index);\n let formats = merge({}, bubbleFormats(line));\n if (line instanceof Block) {\n const [leaf] = line.descendant(LeafBlot, offset);\n if (leaf) {\n formats = merge(formats, bubbleFormats(leaf));\n }\n }\n attributes = AttributeMap.diff(formats, attributes) || {};\n } else if (typeof op.insert === 'object') {\n const key = Object.keys(op.insert)[0]; // There should only be one key\n if (key == null) return index;\n const isInlineEmbed = this.scroll.query(key, Scope.INLINE) != null;\n if (isInlineEmbed) {\n if (scrollLength <= index || !!this.scroll.descendant(BlockEmbed, index)[0]) {\n isImplicitNewlineAppended = true;\n }\n } else if (index > 0) {\n const [leaf, offset] = this.scroll.descendant(LeafBlot, index - 1);\n if (leaf instanceof TextBlot) {\n const text = leaf.value();\n if (text[offset] !== '\\n') {\n isImplicitNewlinePrepended = true;\n }\n } else if (leaf instanceof EmbedBlot && leaf.statics.scope === Scope.INLINE_BLOT) {\n isImplicitNewlinePrepended = true;\n }\n }\n this.scroll.insertAt(index, key, op.insert[key]);\n if (isInlineEmbed) {\n const [leaf] = this.scroll.descendant(LeafBlot, index);\n if (leaf) {\n const formats = merge({}, bubbleFormats(leaf));\n attributes = AttributeMap.diff(formats, attributes) || {};\n }\n }\n }\n scrollLength += length;\n } else {\n deleteDelta.push(op);\n if (op.retain !== null && typeof op.retain === 'object') {\n const key = Object.keys(op.retain)[0];\n if (key == null) return index;\n this.scroll.updateEmbedAt(index, key, op.retain[key]);\n }\n }\n Object.keys(attributes).forEach(name => {\n this.scroll.formatAt(index, length, name, attributes[name]);\n });\n const prependedLength = isImplicitNewlinePrepended ? 1 : 0;\n const addedLength = isImplicitNewlineAppended ? 1 : 0;\n scrollLength += prependedLength + addedLength;\n deleteDelta.retain(prependedLength);\n deleteDelta.delete(addedLength);\n return index + length + prependedLength + addedLength;\n }, 0);\n deleteDelta.reduce((index, op) => {\n if (typeof op.delete === 'number') {\n this.scroll.deleteAt(index, op.delete);\n return index;\n }\n return index + Op.length(op);\n }, 0);\n this.scroll.batchEnd();\n this.scroll.optimize();\n return this.update(normalizedDelta);\n }\n deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new Delta().retain(index).delete(length));\n }\n formatLine(index, length) {\n let formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.scroll.update();\n Object.keys(formats).forEach(format => {\n this.scroll.lines(index, Math.max(length, 1)).forEach(line => {\n line.format(format, formats[format]);\n });\n });\n this.scroll.optimize();\n const delta = new Delta().retain(index).retain(length, cloneDeep(formats));\n return this.update(delta);\n }\n formatText(index, length) {\n let formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.keys(formats).forEach(format => {\n this.scroll.formatAt(index, length, format, formats[format]);\n });\n const delta = new Delta().retain(index).retain(length, cloneDeep(formats));\n return this.update(delta);\n }\n getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n getDelta() {\n return this.scroll.lines().reduce((delta, line) => {\n return delta.concat(line.delta());\n }, new Delta());\n }\n getFormat(index) {\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let lines = [];\n let leaves = [];\n if (length === 0) {\n this.scroll.path(index).forEach(path => {\n const [blot] = path;\n if (blot instanceof Block) {\n lines.push(blot);\n } else if (blot instanceof LeafBlot) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(LeafBlot, index, length);\n }\n const [lineFormats, leafFormats] = [lines, leaves].map(blots => {\n const blot = blots.shift();\n if (blot == null) return {};\n let formats = bubbleFormats(blot);\n while (Object.keys(formats).length > 0) {\n const blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats(bubbleFormats(blot), formats);\n }\n return formats;\n });\n return {\n ...lineFormats,\n ...leafFormats\n };\n }\n getHTML(index, length) {\n const [line, lineOffset] = this.scroll.line(index);\n if (line) {\n const lineLength = line.length();\n const isWithinLine = line.length() >= lineOffset + length;\n if (isWithinLine && !(lineOffset === 0 && length === lineLength)) {\n return convertHTML(line, lineOffset, length, true);\n }\n return convertHTML(this.scroll, index, length, true);\n }\n return '';\n }\n getText(index, length) {\n return this.getContents(index, length).filter(op => typeof op.insert === 'string').map(op => op.insert).join('');\n }\n insertContents(index, contents) {\n const normalizedDelta = normalizeDelta(contents);\n const change = new Delta().retain(index).concat(normalizedDelta);\n this.scroll.insertContents(index, normalizedDelta);\n return this.update(change);\n }\n insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new Delta().retain(index).insert({\n [embed]: value\n }));\n }\n insertText(index, text) {\n let formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach(format => {\n this.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new Delta().retain(index).insert(text, cloneDeep(formats)));\n }\n isBlank() {\n if (this.scroll.children.length === 0) return true;\n if (this.scroll.children.length > 1) return false;\n const blot = this.scroll.children.head;\n if (blot?.statics.blotName !== Block.blotName) return false;\n const block = blot;\n if (block.children.length > 1) return false;\n return block.children.head instanceof Break;\n }\n removeFormat(index, length) {\n const text = this.getText(index, length);\n const [line, offset] = this.scroll.line(index + length);\n let suffixLength = 0;\n let suffix = new Delta();\n if (line != null) {\n suffixLength = line.length() - offset;\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n }\n const contents = this.getContents(index, length + suffixLength);\n const diff = contents.diff(new Delta().insert(text).concat(suffix));\n const delta = new Delta().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n update(change) {\n let mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n let selectionInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n const oldDelta = this.delta;\n if (mutations.length === 1 && mutations[0].type === 'characterData' &&\n // @ts-expect-error Fix me later\n mutations[0].target.data.match(ASCII) && this.scroll.find(mutations[0].target)) {\n // Optimization for character changes\n const textBlot = this.scroll.find(mutations[0].target);\n const formats = bubbleFormats(textBlot);\n const index = textBlot.offset(this.scroll);\n // @ts-expect-error Fix me later\n const oldValue = mutations[0].oldValue.replace(CursorBlot.CONTENTS, '');\n const oldText = new Delta().insert(oldValue);\n // @ts-expect-error\n const newText = new Delta().insert(textBlot.value());\n const relativeSelectionInfo = selectionInfo && {\n oldRange: shiftRange(selectionInfo.oldRange, -index),\n newRange: shiftRange(selectionInfo.newRange, -index)\n };\n const diffDelta = new Delta().retain(index).concat(oldText.diff(newText, relativeSelectionInfo));\n change = diffDelta.reduce((delta, op) => {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n }\n return delta.push(op);\n }, new Delta());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n if (!change || !isEqual(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, selectionInfo);\n }\n }\n return change;\n }\n}\nfunction convertListHTML(items, lastIndent, types) {\n if (items.length === 0) {\n const [endTag] = getListType(types.pop());\n if (lastIndent <= 0) {\n return ``;\n }\n return `${convertListHTML([], lastIndent - 1, types)}`;\n }\n const [{\n child,\n offset,\n length,\n indent,\n type\n }, ...rest] = items;\n const [tag, attribute] = getListType(type);\n if (indent > lastIndent) {\n types.push(type);\n if (indent === lastIndent + 1) {\n return `<${tag}>${convertHTML(child, offset, length)}${convertListHTML(rest, indent, types)}`;\n }\n return `<${tag}>
  • ${convertListHTML(items, lastIndent + 1, types)}`;\n }\n const previousType = types[types.length - 1];\n if (indent === lastIndent && type === previousType) {\n return `
  • ${convertHTML(child, offset, length)}${convertListHTML(rest, indent, types)}`;\n }\n const [endTag] = getListType(types.pop());\n return `${convertListHTML(items, lastIndent - 1, types)}`;\n}\nfunction convertHTML(blot, index, length) {\n let isRoot = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if ('html' in blot && typeof blot.html === 'function') {\n return blot.html(index, length);\n }\n if (blot instanceof TextBlot) {\n return escapeText(blot.value().slice(index, index + length));\n }\n if (blot instanceof ParentBlot) {\n // TODO fix API\n if (blot.statics.blotName === 'list-container') {\n const items = [];\n blot.children.forEachAt(index, length, (child, offset, childLength) => {\n const formats = 'formats' in child && typeof child.formats === 'function' ? child.formats() : {};\n items.push({\n child,\n offset,\n length: childLength,\n indent: formats.indent || 0,\n type: formats.list\n });\n });\n return convertListHTML(items, -1, []);\n }\n const parts = [];\n blot.children.forEachAt(index, length, (child, offset, childLength) => {\n parts.push(convertHTML(child, offset, childLength));\n });\n if (isRoot || blot.statics.blotName === 'list') {\n return parts.join('');\n }\n const {\n outerHTML,\n innerHTML\n } = blot.domNode;\n const [start, end] = outerHTML.split(`>${innerHTML}<`);\n // TODO cleanup\n if (start === '${parts.join('')}<${end}`;\n }\n return `${start}>${parts.join('')}<${end}`;\n }\n return blot.domNode instanceof Element ? blot.domNode.outerHTML : '';\n}\nfunction combineFormats(formats, combined) {\n return Object.keys(combined).reduce((merged, name) => {\n if (formats[name] == null) return merged;\n const combinedValue = combined[name];\n if (combinedValue === formats[name]) {\n merged[name] = combinedValue;\n } else if (Array.isArray(combinedValue)) {\n if (combinedValue.indexOf(formats[name]) < 0) {\n merged[name] = combinedValue.concat([formats[name]]);\n } else {\n // If style already exists, don't add to an array, but don't lose other styles\n merged[name] = combinedValue;\n }\n } else {\n merged[name] = [combinedValue, formats[name]];\n }\n return merged;\n }, {});\n}\nfunction getListType(type) {\n const tag = type === 'ordered' ? 'ol' : 'ul';\n switch (type) {\n case 'checked':\n return [tag, ' data-list=\"checked\"'];\n case 'unchecked':\n return [tag, ' data-list=\"unchecked\"'];\n default:\n return [tag, ''];\n }\n}\nfunction normalizeDelta(delta) {\n return delta.reduce((normalizedDelta, op) => {\n if (typeof op.insert === 'string') {\n const text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n return normalizedDelta.insert(text, op.attributes);\n }\n return normalizedDelta.push(op);\n }, new Delta());\n}\nfunction shiftRange(_ref, amount) {\n let {\n index,\n length\n } = _ref;\n return new Range(index + amount, length);\n}\nfunction splitOpLines(ops) {\n const split = [];\n ops.forEach(op => {\n if (typeof op.insert === 'string') {\n const lines = op.insert.split('\\n');\n lines.forEach((line, index) => {\n if (index) split.push({\n insert: '\\n',\n attributes: op.attributes\n });\n if (line) split.push({\n insert: line,\n attributes: op.attributes\n });\n });\n } else {\n split.push(op);\n }\n });\n return split;\n}\nexport default Editor;\n","class Module {\n static DEFAULTS = {};\n constructor(quill) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.quill = quill;\n this.options = options;\n }\n}\nexport default Module;\n","import { EmbedBlot } from 'parchment';\nimport TextBlot from './text.js';\nconst GUARD_TEXT = '\\uFEFF';\nclass Embed extends EmbedBlot {\n constructor(scroll, node) {\n super(scroll, node);\n this.contentNode = document.createElement('span');\n this.contentNode.setAttribute('contenteditable', 'false');\n Array.from(this.domNode.childNodes).forEach(childNode => {\n this.contentNode.appendChild(childNode);\n });\n this.leftGuard = document.createTextNode(GUARD_TEXT);\n this.rightGuard = document.createTextNode(GUARD_TEXT);\n this.domNode.appendChild(this.leftGuard);\n this.domNode.appendChild(this.contentNode);\n this.domNode.appendChild(this.rightGuard);\n }\n index(node, offset) {\n if (node === this.leftGuard) return 0;\n if (node === this.rightGuard) return 1;\n return super.index(node, offset);\n }\n restore(node) {\n let range = null;\n let textNode;\n const text = node.data.split(GUARD_TEXT).join('');\n if (node === this.leftGuard) {\n if (this.prev instanceof TextBlot) {\n const prevLength = this.prev.length();\n this.prev.insertAt(prevLength, text);\n range = {\n startNode: this.prev.domNode,\n startOffset: prevLength + text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(this.scroll.create(textNode), this);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n } else if (node === this.rightGuard) {\n if (this.next instanceof TextBlot) {\n this.next.insertAt(0, text);\n range = {\n startNode: this.next.domNode,\n startOffset: text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(this.scroll.create(textNode), this.next);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n }\n node.data = GUARD_TEXT;\n return range;\n }\n update(mutations, context) {\n mutations.forEach(mutation => {\n if (mutation.type === 'characterData' && (mutation.target === this.leftGuard || mutation.target === this.rightGuard)) {\n const range = this.restore(mutation.target);\n if (range) context.range = range;\n }\n });\n }\n}\nexport default Embed;\n","class Theme {\n static DEFAULTS = {\n modules: {}\n };\n static themes = {\n default: Theme\n };\n modules = {};\n constructor(quill, options) {\n this.quill = quill;\n this.options = options;\n }\n init() {\n Object.keys(this.options.modules).forEach(name => {\n if (this.modules[name] == null) {\n this.addModule(name);\n }\n });\n }\n addModule(name) {\n // @ts-expect-error\n const ModuleClass = this.quill.constructor.import(`modules/${name}`);\n this.modules[name] = new ModuleClass(this.quill, this.options.modules[name] || {});\n return this.modules[name];\n }\n}\nexport default Theme;\n","const getParentElement = element => element.parentElement || element.getRootNode().host || null;\nconst getElementRect = element => {\n const rect = element.getBoundingClientRect();\n const scaleX = 'offsetWidth' in element && Math.abs(rect.width) / element.offsetWidth || 1;\n const scaleY = 'offsetHeight' in element && Math.abs(rect.height) / element.offsetHeight || 1;\n return {\n top: rect.top,\n right: rect.left + element.clientWidth * scaleX,\n bottom: rect.top + element.clientHeight * scaleY,\n left: rect.left\n };\n};\nconst paddingValueToInt = value => {\n const number = parseInt(value, 10);\n return Number.isNaN(number) ? 0 : number;\n};\n\n// Follow the steps described in https://www.w3.org/TR/cssom-view-1/#element-scrolling-members,\n// assuming that the scroll option is set to 'nearest'.\nconst getScrollDistance = (targetStart, targetEnd, scrollStart, scrollEnd, scrollPaddingStart, scrollPaddingEnd) => {\n if (targetStart < scrollStart && targetEnd > scrollEnd) {\n return 0;\n }\n if (targetStart < scrollStart) {\n return -(scrollStart - targetStart + scrollPaddingStart);\n }\n if (targetEnd > scrollEnd) {\n return targetEnd - targetStart > scrollEnd - scrollStart ? targetStart + scrollPaddingStart - scrollStart : targetEnd - scrollEnd + scrollPaddingEnd;\n }\n return 0;\n};\nconst scrollRectIntoView = (root, targetRect) => {\n const document = root.ownerDocument;\n let rect = targetRect;\n let current = root;\n while (current) {\n const isDocumentBody = current === document.body;\n const bounding = isDocumentBody ? {\n top: 0,\n right: window.visualViewport?.width ?? document.documentElement.clientWidth,\n bottom: window.visualViewport?.height ?? document.documentElement.clientHeight,\n left: 0\n } : getElementRect(current);\n const style = getComputedStyle(current);\n const scrollDistanceX = getScrollDistance(rect.left, rect.right, bounding.left, bounding.right, paddingValueToInt(style.scrollPaddingLeft), paddingValueToInt(style.scrollPaddingRight));\n const scrollDistanceY = getScrollDistance(rect.top, rect.bottom, bounding.top, bounding.bottom, paddingValueToInt(style.scrollPaddingTop), paddingValueToInt(style.scrollPaddingBottom));\n if (scrollDistanceX || scrollDistanceY) {\n if (isDocumentBody) {\n document.defaultView?.scrollBy(scrollDistanceX, scrollDistanceY);\n } else {\n const {\n scrollLeft,\n scrollTop\n } = current;\n if (scrollDistanceY) {\n current.scrollTop += scrollDistanceY;\n }\n if (scrollDistanceX) {\n current.scrollLeft += scrollDistanceX;\n }\n const scrolledLeft = current.scrollLeft - scrollLeft;\n const scrolledTop = current.scrollTop - scrollTop;\n rect = {\n left: rect.left - scrolledLeft,\n top: rect.top - scrolledTop,\n right: rect.right - scrolledLeft,\n bottom: rect.bottom - scrolledTop\n };\n }\n }\n current = isDocumentBody || style.position === 'fixed' ? null : getParentElement(current);\n }\n};\nexport default scrollRectIntoView;\n","import { Registry } from 'parchment';\nconst MAX_REGISTER_ITERATIONS = 100;\nconst CORE_FORMATS = ['block', 'break', 'cursor', 'inline', 'scroll', 'text'];\nconst createRegistryWithFormats = (formats, sourceRegistry, debug) => {\n const registry = new Registry();\n CORE_FORMATS.forEach(name => {\n const coreBlot = sourceRegistry.query(name);\n if (coreBlot) registry.register(coreBlot);\n });\n formats.forEach(name => {\n let format = sourceRegistry.query(name);\n if (!format) {\n debug.error(`Cannot register \"${name}\" specified in \"formats\" config. Are you sure it was registered?`);\n }\n let iterations = 0;\n while (format) {\n registry.register(format);\n format = 'blotName' in format ? format.requiredContainer ?? null : null;\n iterations += 1;\n if (iterations > MAX_REGISTER_ITERATIONS) {\n debug.error(`Cycle detected in registering blot requiredContainer: \"${name}\"`);\n break;\n }\n }\n });\n return registry;\n};\nexport default createRegistryWithFormats;\n","import { merge } from 'lodash-es';\nimport * as Parchment from 'parchment';\nimport Delta from 'quill-delta';\nimport Editor from './editor.js';\nimport Emitter from './emitter.js';\nimport instances from './instances.js';\nimport logger from './logger.js';\nimport Module from './module.js';\nimport Selection, { Range } from './selection.js';\nimport Composition from './composition.js';\nimport Theme from './theme.js';\nimport scrollRectIntoView from './utils/scrollRectIntoView.js';\nimport createRegistryWithFormats from './utils/createRegistryWithFormats.js';\nconst debug = logger('quill');\nconst globalRegistry = new Parchment.Registry();\nParchment.ParentBlot.uiClass = 'ql-ui';\n\n/**\n * Options for initializing a Quill instance\n */\n\n/**\n * Similar to QuillOptions, but with all properties expanded to their default values,\n * and all selectors resolved to HTMLElements.\n */\n\nclass Quill {\n static DEFAULTS = {\n bounds: null,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true,\n uploader: true\n },\n placeholder: '',\n readOnly: false,\n registry: globalRegistry,\n theme: 'default'\n };\n static events = Emitter.events;\n static sources = Emitter.sources;\n static version = typeof \"2.0.2\" === 'undefined' ? 'dev' : \"2.0.2\";\n static imports = {\n delta: Delta,\n parchment: Parchment,\n 'core/module': Module,\n 'core/theme': Theme\n };\n static debug(limit) {\n if (limit === true) {\n limit = 'log';\n }\n logger.level(limit);\n }\n static find(node) {\n let bubble = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return instances.get(node) || globalRegistry.find(node, bubble);\n }\n static import(name) {\n if (this.imports[name] == null) {\n debug.error(`Cannot import ${name}. Are you sure it was registered?`);\n }\n return this.imports[name];\n }\n static register() {\n if (typeof (arguments.length <= 0 ? undefined : arguments[0]) !== 'string') {\n const target = arguments.length <= 0 ? undefined : arguments[0];\n const overwrite = !!(arguments.length <= 1 ? undefined : arguments[1]);\n const name = 'attrName' in target ? target.attrName : target.blotName;\n if (typeof name === 'string') {\n // Shortcut for formats:\n // register(Blot | Attributor, overwrite)\n this.register(`formats/${name}`, target, overwrite);\n } else {\n Object.keys(target).forEach(key => {\n this.register(key, target[key], overwrite);\n });\n }\n } else {\n const path = arguments.length <= 0 ? undefined : arguments[0];\n const target = arguments.length <= 1 ? undefined : arguments[1];\n const overwrite = !!(arguments.length <= 2 ? undefined : arguments[2]);\n if (this.imports[path] != null && !overwrite) {\n debug.warn(`Overwriting ${path} with`, target);\n }\n this.imports[path] = target;\n if ((path.startsWith('blots/') || path.startsWith('formats/')) && target && typeof target !== 'boolean' && target.blotName !== 'abstract') {\n globalRegistry.register(target);\n }\n if (typeof target.register === 'function') {\n target.register(globalRegistry);\n }\n }\n }\n constructor(container) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.options = expandConfig(container, options);\n this.container = this.options.container;\n if (this.container == null) {\n debug.error('Invalid Quill container', container);\n return;\n }\n if (this.options.debug) {\n Quill.debug(this.options.debug);\n }\n const html = this.container.innerHTML.trim();\n this.container.classList.add('ql-container');\n this.container.innerHTML = '';\n instances.set(this.container, this);\n this.root = this.addContainer('ql-editor');\n this.root.classList.add('ql-blank');\n this.emitter = new Emitter();\n const scrollBlotName = Parchment.ScrollBlot.blotName;\n const ScrollBlot = this.options.registry.query(scrollBlotName);\n if (!ScrollBlot || !('blotName' in ScrollBlot)) {\n throw new Error(`Cannot initialize Quill without \"${scrollBlotName}\" blot`);\n }\n this.scroll = new ScrollBlot(this.options.registry, this.root, {\n emitter: this.emitter\n });\n this.editor = new Editor(this.scroll);\n this.selection = new Selection(this.scroll, this.emitter);\n this.composition = new Composition(this.scroll, this.emitter);\n this.theme = new this.options.theme(this, this.options); // eslint-disable-line new-cap\n this.keyboard = this.theme.addModule('keyboard');\n this.clipboard = this.theme.addModule('clipboard');\n this.history = this.theme.addModule('history');\n this.uploader = this.theme.addModule('uploader');\n this.theme.addModule('input');\n this.theme.addModule('uiNode');\n this.theme.init();\n this.emitter.on(Emitter.events.EDITOR_CHANGE, type => {\n if (type === Emitter.events.TEXT_CHANGE) {\n this.root.classList.toggle('ql-blank', this.editor.isBlank());\n }\n });\n this.emitter.on(Emitter.events.SCROLL_UPDATE, (source, mutations) => {\n const oldRange = this.selection.lastRange;\n const [newRange] = this.selection.getRange();\n const selectionInfo = oldRange && newRange ? {\n oldRange,\n newRange\n } : undefined;\n modify.call(this, () => this.editor.update(null, mutations, selectionInfo), source);\n });\n this.emitter.on(Emitter.events.SCROLL_EMBED_UPDATE, (blot, delta) => {\n const oldRange = this.selection.lastRange;\n const [newRange] = this.selection.getRange();\n const selectionInfo = oldRange && newRange ? {\n oldRange,\n newRange\n } : undefined;\n modify.call(this, () => {\n const change = new Delta().retain(blot.offset(this)).retain({\n [blot.statics.blotName]: delta\n });\n return this.editor.update(change, [], selectionInfo);\n }, Quill.sources.USER);\n });\n if (html) {\n const contents = this.clipboard.convert({\n html: `${html}


    `,\n text: '\\n'\n });\n this.setContents(contents);\n }\n this.history.clear();\n if (this.options.placeholder) {\n this.root.setAttribute('data-placeholder', this.options.placeholder);\n }\n if (this.options.readOnly) {\n this.disable();\n }\n this.allowReadOnlyEdits = false;\n }\n addContainer(container) {\n let refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (typeof container === 'string') {\n const className = container;\n container = document.createElement('div');\n container.classList.add(className);\n }\n this.container.insertBefore(container, refNode);\n return container;\n }\n blur() {\n this.selection.setRange(null);\n }\n deleteText(index, length, source) {\n // @ts-expect-error\n [index, length,, source] = overload(index, length, source);\n return modify.call(this, () => {\n return this.editor.deleteText(index, length);\n }, source, index, -1 * length);\n }\n disable() {\n this.enable(false);\n }\n editReadOnly(modifier) {\n this.allowReadOnlyEdits = true;\n const value = modifier();\n this.allowReadOnlyEdits = false;\n return value;\n }\n enable() {\n let enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.scroll.enable(enabled);\n this.container.classList.toggle('ql-disabled', !enabled);\n }\n focus() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.selection.focus();\n if (!options.preventScroll) {\n this.scrollSelectionIntoView();\n }\n }\n format(name, value) {\n let source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Emitter.sources.API;\n return modify.call(this, () => {\n const range = this.getSelection(true);\n let change = new Delta();\n if (range == null) return change;\n if (this.scroll.query(name, Parchment.Scope.BLOCK)) {\n change = this.editor.formatLine(range.index, range.length, {\n [name]: value\n });\n } else if (range.length === 0) {\n this.selection.format(name, value);\n return change;\n } else {\n change = this.editor.formatText(range.index, range.length, {\n [name]: value\n });\n }\n this.setSelection(range, Emitter.sources.SILENT);\n return change;\n }, source);\n }\n formatLine(index, length, name, value, source) {\n let formats;\n // eslint-disable-next-line prefer-const\n [index, length, formats, source] = overload(index, length,\n // @ts-expect-error\n name, value, source);\n return modify.call(this, () => {\n return this.editor.formatLine(index, length, formats);\n }, source, index, 0);\n }\n formatText(index, length, name, value, source) {\n let formats;\n // eslint-disable-next-line prefer-const\n [index, length, formats, source] = overload(\n // @ts-expect-error\n index, length, name, value, source);\n return modify.call(this, () => {\n return this.editor.formatText(index, length, formats);\n }, source, index, 0);\n }\n getBounds(index) {\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n let bounds = null;\n if (typeof index === 'number') {\n bounds = this.selection.getBounds(index, length);\n } else {\n bounds = this.selection.getBounds(index.index, index.length);\n }\n if (!bounds) return null;\n const containerBounds = this.container.getBoundingClientRect();\n return {\n bottom: bounds.bottom - containerBounds.top,\n height: bounds.height,\n left: bounds.left - containerBounds.left,\n right: bounds.right - containerBounds.left,\n top: bounds.top - containerBounds.top,\n width: bounds.width\n };\n }\n getContents() {\n let index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n [index, length] = overload(index, length);\n return this.editor.getContents(index, length);\n }\n getFormat() {\n let index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n if (typeof index === 'number') {\n return this.editor.getFormat(index, length);\n }\n return this.editor.getFormat(index.index, index.length);\n }\n getIndex(blot) {\n return blot.offset(this.scroll);\n }\n getLength() {\n return this.scroll.length();\n }\n getLeaf(index) {\n return this.scroll.leaf(index);\n }\n getLine(index) {\n return this.scroll.line(index);\n }\n getLines() {\n let index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n if (typeof index !== 'number') {\n return this.scroll.lines(index.index, index.length);\n }\n return this.scroll.lines(index, length);\n }\n getModule(name) {\n return this.theme.modules[name];\n }\n getSelection() {\n let focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n if (focus) this.focus();\n this.update(); // Make sure we access getRange with editor in consistent state\n return this.selection.getRange()[0];\n }\n getSemanticHTML() {\n let index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let length = arguments.length > 1 ? arguments[1] : undefined;\n if (typeof index === 'number') {\n length = length ?? this.getLength() - index;\n }\n // @ts-expect-error\n [index, length] = overload(index, length);\n return this.editor.getHTML(index, length);\n }\n getText() {\n let index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let length = arguments.length > 1 ? arguments[1] : undefined;\n if (typeof index === 'number') {\n length = length ?? this.getLength() - index;\n }\n // @ts-expect-error\n [index, length] = overload(index, length);\n return this.editor.getText(index, length);\n }\n hasFocus() {\n return this.selection.hasFocus();\n }\n insertEmbed(index, embed, value) {\n let source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n return modify.call(this, () => {\n return this.editor.insertEmbed(index, embed, value);\n }, source, index);\n }\n insertText(index, text, name, value, source) {\n let formats;\n // eslint-disable-next-line prefer-const\n // @ts-expect-error\n [index,, formats, source] = overload(index, 0, name, value, source);\n return modify.call(this, () => {\n return this.editor.insertText(index, text, formats);\n }, source, index, text.length);\n }\n isEnabled() {\n return this.scroll.isEnabled();\n }\n off() {\n return this.emitter.off(...arguments);\n }\n on() {\n return this.emitter.on(...arguments);\n }\n once() {\n return this.emitter.once(...arguments);\n }\n removeFormat(index, length, source) {\n [index, length,, source] = overload(index, length, source);\n return modify.call(this, () => {\n return this.editor.removeFormat(index, length);\n }, source, index);\n }\n scrollRectIntoView(rect) {\n scrollRectIntoView(this.root, rect);\n }\n\n /**\n * @deprecated Use Quill#scrollSelectionIntoView() instead.\n */\n scrollIntoView() {\n console.warn('Quill#scrollIntoView() has been deprecated and will be removed in the near future. Please use Quill#scrollSelectionIntoView() instead.');\n this.scrollSelectionIntoView();\n }\n\n /**\n * Scroll the current selection into the visible area.\n * If the selection is already visible, no scrolling will occur.\n */\n scrollSelectionIntoView() {\n const range = this.selection.lastRange;\n const bounds = range && this.selection.getBounds(range.index, range.length);\n if (bounds) {\n this.scrollRectIntoView(bounds);\n }\n }\n setContents(delta) {\n let source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Emitter.sources.API;\n return modify.call(this, () => {\n delta = new Delta(delta);\n const length = this.getLength();\n // Quill will set empty editor to \\n\n const delete1 = this.editor.deleteText(0, length);\n const applied = this.editor.insertContents(0, delta);\n // Remove extra \\n from empty editor initialization\n const delete2 = this.editor.deleteText(this.getLength() - 1, 1);\n return delete1.compose(applied).compose(delete2);\n }, source);\n }\n setSelection(index, length, source) {\n if (index == null) {\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/22609\n this.selection.setRange(null, length || Quill.sources.API);\n } else {\n // @ts-expect-error\n [index, length,, source] = overload(index, length, source);\n this.selection.setRange(new Range(Math.max(0, index), length), source);\n if (source !== Emitter.sources.SILENT) {\n this.scrollSelectionIntoView();\n }\n }\n }\n setText(text) {\n let source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Emitter.sources.API;\n const delta = new Delta().insert(text);\n return this.setContents(delta, source);\n }\n update() {\n let source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Emitter.sources.USER;\n const change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n this.selection.update(source);\n // TODO this is usually undefined\n return change;\n }\n updateContents(delta) {\n let source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Emitter.sources.API;\n return modify.call(this, () => {\n delta = new Delta(delta);\n return this.editor.applyDelta(delta);\n }, source, true);\n }\n}\nfunction resolveSelector(selector) {\n return typeof selector === 'string' ? document.querySelector(selector) : selector;\n}\nfunction expandModuleConfig(config) {\n return Object.entries(config ?? {}).reduce((expanded, _ref) => {\n let [key, value] = _ref;\n return {\n ...expanded,\n [key]: value === true ? {} : value\n };\n }, {});\n}\nfunction omitUndefinedValuesFromOptions(obj) {\n return Object.fromEntries(Object.entries(obj).filter(entry => entry[1] !== undefined));\n}\nfunction expandConfig(containerOrSelector, options) {\n const container = resolveSelector(containerOrSelector);\n if (!container) {\n throw new Error('Invalid Quill container');\n }\n const shouldUseDefaultTheme = !options.theme || options.theme === Quill.DEFAULTS.theme;\n const theme = shouldUseDefaultTheme ? Theme : Quill.import(`themes/${options.theme}`);\n if (!theme) {\n throw new Error(`Invalid theme ${options.theme}. Did you register it?`);\n }\n const {\n modules: quillModuleDefaults,\n ...quillDefaults\n } = Quill.DEFAULTS;\n const {\n modules: themeModuleDefaults,\n ...themeDefaults\n } = theme.DEFAULTS;\n let userModuleOptions = expandModuleConfig(options.modules);\n // Special case toolbar shorthand\n if (userModuleOptions != null && userModuleOptions.toolbar && userModuleOptions.toolbar.constructor !== Object) {\n userModuleOptions = {\n ...userModuleOptions,\n toolbar: {\n container: userModuleOptions.toolbar\n }\n };\n }\n const modules = merge({}, expandModuleConfig(quillModuleDefaults), expandModuleConfig(themeModuleDefaults), userModuleOptions);\n const config = {\n ...quillDefaults,\n ...omitUndefinedValuesFromOptions(themeDefaults),\n ...omitUndefinedValuesFromOptions(options)\n };\n let registry = options.registry;\n if (registry) {\n if (options.formats) {\n debug.warn('Ignoring \"formats\" option because \"registry\" is specified');\n }\n } else {\n registry = options.formats ? createRegistryWithFormats(options.formats, config.registry, debug) : config.registry;\n }\n return {\n ...config,\n registry,\n container,\n theme,\n modules: Object.entries(modules).reduce((modulesWithDefaults, _ref2) => {\n let [name, value] = _ref2;\n if (!value) return modulesWithDefaults;\n const moduleClass = Quill.import(`modules/${name}`);\n if (moduleClass == null) {\n debug.error(`Cannot load ${name} module. Are you sure you registered it?`);\n return modulesWithDefaults;\n }\n return {\n ...modulesWithDefaults,\n // @ts-expect-error\n [name]: merge({}, moduleClass.DEFAULTS || {}, value)\n };\n }, {}),\n bounds: resolveSelector(config.bounds)\n };\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n if (!this.isEnabled() && source === Emitter.sources.USER && !this.allowReadOnlyEdits) {\n return new Delta();\n }\n let range = index == null ? null : this.getSelection();\n const oldDelta = this.editor.delta;\n const change = modifier();\n if (range != null) {\n if (index === true) {\n index = range.index; // eslint-disable-line prefer-destructuring\n }\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n // @ts-expect-error index should always be number\n range = shiftRange(range, index, shift, source);\n }\n this.setSelection(range, Emitter.sources.SILENT);\n }\n if (change.length() > 0) {\n const args = [Emitter.events.TEXT_CHANGE, change, oldDelta, source];\n this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n if (source !== Emitter.sources.SILENT) {\n this.emitter.emit(...args);\n }\n }\n return change;\n}\nfunction overload(index, length, name, value, source) {\n let formats = {};\n // @ts-expect-error\n if (typeof index.index === 'number' && typeof index.length === 'number') {\n // Allow for throwaway end (used by insertText/insertEmbed)\n if (typeof length !== 'number') {\n // @ts-expect-error\n source = value;\n value = name;\n name = length;\n // @ts-expect-error\n length = index.length; // eslint-disable-line prefer-destructuring\n // @ts-expect-error\n index = index.index; // eslint-disable-line prefer-destructuring\n } else {\n // @ts-expect-error\n length = index.length; // eslint-disable-line prefer-destructuring\n // @ts-expect-error\n index = index.index; // eslint-disable-line prefer-destructuring\n }\n } else if (typeof length !== 'number') {\n // @ts-expect-error\n source = value;\n value = name;\n name = length;\n length = 0;\n }\n // Handle format being object, two format name/value strings or excluded\n if (typeof name === 'object') {\n // @ts-expect-error Fix me later\n formats = name;\n // @ts-expect-error\n source = value;\n } else if (typeof name === 'string') {\n if (value != null) {\n formats[name] = value;\n } else {\n // @ts-expect-error\n source = name;\n }\n }\n // Handle optional source\n source = source || Emitter.sources.API;\n // @ts-expect-error\n return [index, length, formats, source];\n}\nfunction shiftRange(range, index, lengthOrSource, source) {\n const length = typeof lengthOrSource === 'number' ? lengthOrSource : 0;\n if (range == null) return null;\n let start;\n let end;\n // @ts-expect-error -- TODO: add a better type guard around `index`\n if (index && typeof index.transformPosition === 'function') {\n [start, end] = [range.index, range.index + range.length].map(pos =>\n // @ts-expect-error -- TODO: add a better type guard around `index`\n index.transformPosition(pos, source !== Emitter.sources.USER));\n } else {\n [start, end] = [range.index, range.index + range.length].map(pos => {\n // @ts-expect-error -- TODO: add a better type guard around `index`\n if (pos < index || pos === index && source === Emitter.sources.USER) return pos;\n if (length >= 0) {\n return pos + length;\n }\n // @ts-expect-error -- TODO: add a better type guard around `index`\n return Math.max(index, pos + length);\n });\n }\n return new Range(start, end - start);\n}\nexport { Parchment, Range };\nexport { globalRegistry, expandConfig, overload, Quill as default };\n","import Embed from '../blots/embed.js';\nimport Emitter from './emitter.js';\nclass Composition {\n isComposing = false;\n constructor(scroll, emitter) {\n this.scroll = scroll;\n this.emitter = emitter;\n this.setupListeners();\n }\n setupListeners() {\n this.scroll.domNode.addEventListener('compositionstart', event => {\n if (!this.isComposing) {\n this.handleCompositionStart(event);\n }\n });\n this.scroll.domNode.addEventListener('compositionend', event => {\n if (this.isComposing) {\n // Webkit makes DOM changes after compositionend, so we use microtask to\n // ensure the order.\n // https://bugs.webkit.org/show_bug.cgi?id=31902\n queueMicrotask(() => {\n this.handleCompositionEnd(event);\n });\n }\n });\n }\n handleCompositionStart(event) {\n const blot = event.target instanceof Node ? this.scroll.find(event.target, true) : null;\n if (blot && !(blot instanceof Embed)) {\n this.emitter.emit(Emitter.events.COMPOSITION_BEFORE_START, event);\n this.scroll.batchStart();\n this.emitter.emit(Emitter.events.COMPOSITION_START, event);\n this.isComposing = true;\n }\n }\n handleCompositionEnd(event) {\n this.emitter.emit(Emitter.events.COMPOSITION_BEFORE_END, event);\n this.scroll.batchEnd();\n this.emitter.emit(Emitter.events.COMPOSITION_END, event);\n this.isComposing = false;\n }\n}\nexport default Composition;\n","import { ContainerBlot } from 'parchment';\nclass Container extends ContainerBlot {}\nexport default Container;\n","import { ContainerBlot, LeafBlot, Scope, ScrollBlot } from 'parchment';\nimport Delta, { AttributeMap, Op } from 'quill-delta';\nimport Emitter from '../core/emitter.js';\nimport Block, { BlockEmbed, bubbleFormats } from './block.js';\nimport Break from './break.js';\nimport Container from './container.js';\nfunction isLine(blot) {\n return blot instanceof Block || blot instanceof BlockEmbed;\n}\nfunction isUpdatable(blot) {\n return typeof blot.updateContent === 'function';\n}\nclass Scroll extends ScrollBlot {\n static blotName = 'scroll';\n static className = 'ql-editor';\n static tagName = 'DIV';\n static defaultChild = Block;\n static allowedChildren = [Block, BlockEmbed, Container];\n constructor(registry, domNode, _ref) {\n let {\n emitter\n } = _ref;\n super(registry, domNode);\n this.emitter = emitter;\n this.batch = false;\n this.optimize();\n this.enable();\n this.domNode.addEventListener('dragstart', e => this.handleDragStart(e));\n }\n batchStart() {\n if (!Array.isArray(this.batch)) {\n this.batch = [];\n }\n }\n batchEnd() {\n if (!this.batch) return;\n const mutations = this.batch;\n this.batch = false;\n this.update(mutations);\n }\n emitMount(blot) {\n this.emitter.emit(Emitter.events.SCROLL_BLOT_MOUNT, blot);\n }\n emitUnmount(blot) {\n this.emitter.emit(Emitter.events.SCROLL_BLOT_UNMOUNT, blot);\n }\n emitEmbedUpdate(blot, change) {\n this.emitter.emit(Emitter.events.SCROLL_EMBED_UPDATE, blot, change);\n }\n deleteAt(index, length) {\n const [first, offset] = this.line(index);\n const [last] = this.line(index + length);\n super.deleteAt(index, length);\n if (last != null && first !== last && offset > 0) {\n if (first instanceof BlockEmbed || last instanceof BlockEmbed) {\n this.optimize();\n return;\n }\n const ref = last.children.head instanceof Break ? null : last.children.head;\n // @ts-expect-error\n first.moveChildren(last, ref);\n // @ts-expect-error\n first.remove();\n }\n this.optimize();\n }\n enable() {\n let enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.domNode.setAttribute('contenteditable', enabled ? 'true' : 'false');\n }\n formatAt(index, length, format, value) {\n super.formatAt(index, length, format, value);\n this.optimize();\n }\n insertAt(index, value, def) {\n if (index >= this.length()) {\n if (def == null || this.scroll.query(value, Scope.BLOCK) == null) {\n const blot = this.scroll.create(this.statics.defaultChild.blotName);\n this.appendChild(blot);\n if (def == null && value.endsWith('\\n')) {\n blot.insertAt(0, value.slice(0, -1), def);\n } else {\n blot.insertAt(0, value, def);\n }\n } else {\n const embed = this.scroll.create(value, def);\n this.appendChild(embed);\n }\n } else {\n super.insertAt(index, value, def);\n }\n this.optimize();\n }\n insertBefore(blot, ref) {\n if (blot.statics.scope === Scope.INLINE_BLOT) {\n const wrapper = this.scroll.create(this.statics.defaultChild.blotName);\n wrapper.appendChild(blot);\n super.insertBefore(wrapper, ref);\n } else {\n super.insertBefore(blot, ref);\n }\n }\n insertContents(index, delta) {\n const renderBlocks = this.deltaToRenderBlocks(delta.concat(new Delta().insert('\\n')));\n const last = renderBlocks.pop();\n if (last == null) return;\n this.batchStart();\n const first = renderBlocks.shift();\n if (first) {\n const shouldInsertNewlineChar = first.type === 'block' && (first.delta.length() === 0 || !this.descendant(BlockEmbed, index)[0] && index < this.length());\n const delta = first.type === 'block' ? first.delta : new Delta().insert({\n [first.key]: first.value\n });\n insertInlineContents(this, index, delta);\n const newlineCharLength = first.type === 'block' ? 1 : 0;\n const lineEndIndex = index + delta.length() + newlineCharLength;\n if (shouldInsertNewlineChar) {\n this.insertAt(lineEndIndex - 1, '\\n');\n }\n const formats = bubbleFormats(this.line(index)[0]);\n const attributes = AttributeMap.diff(formats, first.attributes) || {};\n Object.keys(attributes).forEach(name => {\n this.formatAt(lineEndIndex - 1, 1, name, attributes[name]);\n });\n index = lineEndIndex;\n }\n let [refBlot, refBlotOffset] = this.children.find(index);\n if (renderBlocks.length) {\n if (refBlot) {\n refBlot = refBlot.split(refBlotOffset);\n refBlotOffset = 0;\n }\n renderBlocks.forEach(renderBlock => {\n if (renderBlock.type === 'block') {\n const block = this.createBlock(renderBlock.attributes, refBlot || undefined);\n insertInlineContents(block, 0, renderBlock.delta);\n } else {\n const blockEmbed = this.create(renderBlock.key, renderBlock.value);\n this.insertBefore(blockEmbed, refBlot || undefined);\n Object.keys(renderBlock.attributes).forEach(name => {\n blockEmbed.format(name, renderBlock.attributes[name]);\n });\n }\n });\n }\n if (last.type === 'block' && last.delta.length()) {\n const offset = refBlot ? refBlot.offset(refBlot.scroll) + refBlotOffset : this.length();\n insertInlineContents(this, offset, last.delta);\n }\n this.batchEnd();\n this.optimize();\n }\n isEnabled() {\n return this.domNode.getAttribute('contenteditable') === 'true';\n }\n leaf(index) {\n const last = this.path(index).pop();\n if (!last) {\n return [null, -1];\n }\n const [blot, offset] = last;\n return blot instanceof LeafBlot ? [blot, offset] : [null, -1];\n }\n line(index) {\n if (index === this.length()) {\n return this.line(index - 1);\n }\n // @ts-expect-error TODO: make descendant() generic\n return this.descendant(isLine, index);\n }\n lines() {\n let index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n let length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n const getLines = (blot, blotIndex, blotLength) => {\n let lines = [];\n let lengthLeft = blotLength;\n blot.children.forEachAt(blotIndex, blotLength, (child, childIndex, childLength) => {\n if (isLine(child)) {\n lines.push(child);\n } else if (child instanceof ContainerBlot) {\n lines = lines.concat(getLines(child, childIndex, lengthLeft));\n }\n lengthLeft -= childLength;\n });\n return lines;\n };\n return getLines(this, index, length);\n }\n optimize() {\n let mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.batch) return;\n super.optimize(mutations, context);\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_OPTIMIZE, mutations, context);\n }\n }\n path(index) {\n return super.path(index).slice(1); // Exclude self\n }\n remove() {\n // Never remove self\n }\n update(mutations) {\n if (this.batch) {\n if (Array.isArray(mutations)) {\n this.batch = this.batch.concat(mutations);\n }\n return;\n }\n let source = Emitter.sources.USER;\n if (typeof mutations === 'string') {\n source = mutations;\n }\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n mutations = mutations.filter(_ref2 => {\n let {\n target\n } = _ref2;\n const blot = this.find(target, true);\n return blot && !isUpdatable(blot);\n });\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n super.update(mutations.concat([])); // pass copy\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_UPDATE, source, mutations);\n }\n }\n updateEmbedAt(index, key, change) {\n // Currently it only supports top-level embeds (BlockEmbed).\n // We can update `ParentBlot` in parchment to support inline embeds.\n const [blot] = this.descendant(b => b instanceof BlockEmbed, index);\n if (blot && blot.statics.blotName === key && isUpdatable(blot)) {\n blot.updateContent(change);\n }\n }\n handleDragStart(event) {\n event.preventDefault();\n }\n deltaToRenderBlocks(delta) {\n const renderBlocks = [];\n let currentBlockDelta = new Delta();\n delta.forEach(op => {\n const insert = op?.insert;\n if (!insert) return;\n if (typeof insert === 'string') {\n const splitted = insert.split('\\n');\n splitted.slice(0, -1).forEach(text => {\n currentBlockDelta.insert(text, op.attributes);\n renderBlocks.push({\n type: 'block',\n delta: currentBlockDelta,\n attributes: op.attributes ?? {}\n });\n currentBlockDelta = new Delta();\n });\n const last = splitted[splitted.length - 1];\n if (last) {\n currentBlockDelta.insert(last, op.attributes);\n }\n } else {\n const key = Object.keys(insert)[0];\n if (!key) return;\n if (this.query(key, Scope.INLINE)) {\n currentBlockDelta.push(op);\n } else {\n if (currentBlockDelta.length()) {\n renderBlocks.push({\n type: 'block',\n delta: currentBlockDelta,\n attributes: {}\n });\n }\n currentBlockDelta = new Delta();\n renderBlocks.push({\n type: 'blockEmbed',\n key,\n value: insert[key],\n attributes: op.attributes ?? {}\n });\n }\n }\n });\n if (currentBlockDelta.length()) {\n renderBlocks.push({\n type: 'block',\n delta: currentBlockDelta,\n attributes: {}\n });\n }\n return renderBlocks;\n }\n createBlock(attributes, refBlot) {\n let blotName;\n const formats = {};\n Object.entries(attributes).forEach(_ref3 => {\n let [key, value] = _ref3;\n const isBlockBlot = this.query(key, Scope.BLOCK & Scope.BLOT) != null;\n if (isBlockBlot) {\n blotName = key;\n } else {\n formats[key] = value;\n }\n });\n const block = this.create(blotName || this.statics.defaultChild.blotName, blotName ? attributes[blotName] : undefined);\n this.insertBefore(block, refBlot || undefined);\n const length = block.length();\n Object.entries(formats).forEach(_ref4 => {\n let [key, value] = _ref4;\n block.formatAt(0, length, key, value);\n });\n return block;\n }\n}\nfunction insertInlineContents(parent, index, inlineContents) {\n inlineContents.reduce((index, op) => {\n const length = Op.length(op);\n let attributes = op.attributes || {};\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n const text = op.insert;\n parent.insertAt(index, text);\n const [leaf] = parent.descendant(LeafBlot, index);\n const formats = bubbleFormats(leaf);\n attributes = AttributeMap.diff(formats, attributes) || {};\n } else if (typeof op.insert === 'object') {\n const key = Object.keys(op.insert)[0]; // There should only be one key\n if (key == null) return index;\n parent.insertAt(index, key, op.insert[key]);\n const isInlineEmbed = parent.scroll.query(key, Scope.INLINE) != null;\n if (isInlineEmbed) {\n const [leaf] = parent.descendant(LeafBlot, index);\n const formats = bubbleFormats(leaf);\n attributes = AttributeMap.diff(formats, attributes) || {};\n }\n }\n }\n Object.keys(attributes).forEach(key => {\n parent.formatAt(index, length, key, attributes[key]);\n });\n return index + length;\n }, index);\n}\nexport default Scroll;\n","import { Attributor, ClassAttributor, Scope, StyleAttributor } from 'parchment';\nconst config = {\n scope: Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\nconst AlignAttribute = new Attributor('align', 'align', config);\nconst AlignClass = new ClassAttributor('align', 'ql-align', config);\nconst AlignStyle = new StyleAttributor('align', 'text-align', config);\nexport { AlignAttribute, AlignClass, AlignStyle };\n","import { ClassAttributor, Scope, StyleAttributor } from 'parchment';\nclass ColorAttributor extends StyleAttributor {\n value(domNode) {\n let value = super.value(domNode);\n if (!value.startsWith('rgb(')) return value;\n value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n const hex = value.split(',').map(component => `00${parseInt(component, 10).toString(16)}`.slice(-2)).join('');\n return `#${hex}`;\n }\n}\nconst ColorClass = new ClassAttributor('color', 'ql-color', {\n scope: Scope.INLINE\n});\nconst ColorStyle = new ColorAttributor('color', 'color', {\n scope: Scope.INLINE\n});\nexport { ColorAttributor, ColorClass, ColorStyle };\n","import { ClassAttributor, Scope } from 'parchment';\nimport { ColorAttributor } from './color.js';\nconst BackgroundClass = new ClassAttributor('background', 'ql-bg', {\n scope: Scope.INLINE\n});\nconst BackgroundStyle = new ColorAttributor('background', 'background-color', {\n scope: Scope.INLINE\n});\nexport { BackgroundClass, BackgroundStyle };\n","import Block from '../blots/block.js';\nimport Break from '../blots/break.js';\nimport Cursor from '../blots/cursor.js';\nimport Inline from '../blots/inline.js';\nimport TextBlot, { escapeText } from '../blots/text.js';\nimport Container from '../blots/container.js';\nimport Quill from '../core/quill.js';\nclass CodeBlockContainer extends Container {\n static create(value) {\n const domNode = super.create(value);\n domNode.setAttribute('spellcheck', 'false');\n return domNode;\n }\n code(index, length) {\n return this.children\n // @ts-expect-error\n .map(child => child.length() <= 1 ? '' : child.domNode.innerText).join('\\n').slice(index, index + length);\n }\n html(index, length) {\n // `\\n`s are needed in order to support empty lines at the beginning and the end.\n // https://html.spec.whatwg.org/multipage/syntax.html#element-restrictions\n return `
    \\n${escapeText(this.code(index, length))}\\n
    `;\n }\n}\nclass CodeBlock extends Block {\n static TAB = ' ';\n static register() {\n Quill.register(CodeBlockContainer);\n }\n}\nclass Code extends Inline {}\nCode.blotName = 'code';\nCode.tagName = 'CODE';\nCodeBlock.blotName = 'code-block';\nCodeBlock.className = 'ql-code-block';\nCodeBlock.tagName = 'DIV';\nCodeBlockContainer.blotName = 'code-block-container';\nCodeBlockContainer.className = 'ql-code-block-container';\nCodeBlockContainer.tagName = 'DIV';\nCodeBlockContainer.allowedChildren = [CodeBlock];\nCodeBlock.allowedChildren = [TextBlot, Break, Cursor];\nCodeBlock.requiredContainer = CodeBlockContainer;\nexport { Code, CodeBlockContainer, CodeBlock as default };\n","import { Attributor, ClassAttributor, Scope, StyleAttributor } from 'parchment';\nconst config = {\n scope: Scope.BLOCK,\n whitelist: ['rtl']\n};\nconst DirectionAttribute = new Attributor('direction', 'dir', config);\nconst DirectionClass = new ClassAttributor('direction', 'ql-direction', config);\nconst DirectionStyle = new StyleAttributor('direction', 'direction', config);\nexport { DirectionAttribute, DirectionClass, DirectionStyle };\n","import { ClassAttributor, Scope, StyleAttributor } from 'parchment';\nconst config = {\n scope: Scope.INLINE,\n whitelist: ['serif', 'monospace']\n};\nconst FontClass = new ClassAttributor('font', 'ql-font', config);\nclass FontStyleAttributor extends StyleAttributor {\n value(node) {\n return super.value(node).replace(/[\"']/g, '');\n }\n}\nconst FontStyle = new FontStyleAttributor('font', 'font-family', config);\nexport { FontStyle, FontClass };\n","import { ClassAttributor, Scope, StyleAttributor } from 'parchment';\nconst SizeClass = new ClassAttributor('size', 'ql-size', {\n scope: Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n});\nconst SizeStyle = new StyleAttributor('size', 'font-size', {\n scope: Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n});\nexport { SizeClass, SizeStyle };\n","import { cloneDeep, isEqual } from 'lodash-es';\nimport Delta, { AttributeMap } from 'quill-delta';\nimport { EmbedBlot, Scope, TextBlot } from 'parchment';\nimport Quill from '../core/quill.js';\nimport logger from '../core/logger.js';\nimport Module from '../core/module.js';\nconst debug = logger('quill:keyboard');\nconst SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\nclass Keyboard extends Module {\n static match(evt, binding) {\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(key => {\n return !!binding[key] !== evt[key] && binding[key] !== null;\n })) {\n return false;\n }\n return binding.key === evt.key || binding.key === evt.which;\n }\n constructor(quill, options) {\n super(quill, options);\n this.bindings = {};\n // @ts-expect-error Fix me later\n Object.keys(this.options.bindings).forEach(name => {\n // @ts-expect-error Fix me later\n if (this.options.bindings[name]) {\n // @ts-expect-error Fix me later\n this.addBinding(this.options.bindings[name]);\n }\n });\n this.addBinding({\n key: 'Enter',\n shiftKey: null\n }, this.handleEnter);\n this.addBinding({\n key: 'Enter',\n metaKey: null,\n ctrlKey: null,\n altKey: null\n }, () => {});\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n this.addBinding({\n key: 'Backspace'\n }, {\n collapsed: true\n }, this.handleBackspace);\n this.addBinding({\n key: 'Delete'\n }, {\n collapsed: true\n }, this.handleDelete);\n } else {\n this.addBinding({\n key: 'Backspace'\n }, {\n collapsed: true,\n prefix: /^.?$/\n }, this.handleBackspace);\n this.addBinding({\n key: 'Delete'\n }, {\n collapsed: true,\n suffix: /^.?$/\n }, this.handleDelete);\n }\n this.addBinding({\n key: 'Backspace'\n }, {\n collapsed: false\n }, this.handleDeleteRange);\n this.addBinding({\n key: 'Delete'\n }, {\n collapsed: false\n }, this.handleDeleteRange);\n this.addBinding({\n key: 'Backspace',\n altKey: null,\n ctrlKey: null,\n metaKey: null,\n shiftKey: null\n }, {\n collapsed: true,\n offset: 0\n }, this.handleBackspace);\n this.listen();\n }\n addBinding(keyBinding) {\n let context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const binding = normalize(keyBinding);\n if (binding == null) {\n debug.warn('Attempted to add invalid keyboard binding', binding);\n return;\n }\n if (typeof context === 'function') {\n context = {\n handler: context\n };\n }\n if (typeof handler === 'function') {\n handler = {\n handler\n };\n }\n const keys = Array.isArray(binding.key) ? binding.key : [binding.key];\n keys.forEach(key => {\n const singleBinding = {\n ...binding,\n key,\n ...context,\n ...handler\n };\n this.bindings[singleBinding.key] = this.bindings[singleBinding.key] || [];\n this.bindings[singleBinding.key].push(singleBinding);\n });\n }\n listen() {\n this.quill.root.addEventListener('keydown', evt => {\n if (evt.defaultPrevented || evt.isComposing) return;\n\n // evt.isComposing is false when pressing Enter/Backspace when composing in Safari\n // https://bugs.webkit.org/show_bug.cgi?id=165004\n const isComposing = evt.keyCode === 229 && (evt.key === 'Enter' || evt.key === 'Backspace');\n if (isComposing) return;\n const bindings = (this.bindings[evt.key] || []).concat(this.bindings[evt.which] || []);\n const matches = bindings.filter(binding => Keyboard.match(evt, binding));\n if (matches.length === 0) return;\n // @ts-expect-error\n const blot = Quill.find(evt.target, true);\n if (blot && blot.scroll !== this.quill.scroll) return;\n const range = this.quill.getSelection();\n if (range == null || !this.quill.hasFocus()) return;\n const [line, offset] = this.quill.getLine(range.index);\n const [leafStart, offsetStart] = this.quill.getLeaf(range.index);\n const [leafEnd, offsetEnd] = range.length === 0 ? [leafStart, offsetStart] : this.quill.getLeaf(range.index + range.length);\n const prefixText = leafStart instanceof TextBlot ? leafStart.value().slice(0, offsetStart) : '';\n const suffixText = leafEnd instanceof TextBlot ? leafEnd.value().slice(offsetEnd) : '';\n const curContext = {\n collapsed: range.length === 0,\n // @ts-expect-error Fix me later\n empty: range.length === 0 && line.length() <= 1,\n format: this.quill.getFormat(range),\n line,\n offset,\n prefix: prefixText,\n suffix: suffixText,\n event: evt\n };\n const prevented = matches.some(binding => {\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) {\n return false;\n }\n if (binding.empty != null && binding.empty !== curContext.empty) {\n return false;\n }\n if (binding.offset != null && binding.offset !== curContext.offset) {\n return false;\n }\n if (Array.isArray(binding.format)) {\n // any format is present\n if (binding.format.every(name => curContext.format[name] == null)) {\n return false;\n }\n } else if (typeof binding.format === 'object') {\n // all formats must match\n if (!Object.keys(binding.format).every(name => {\n // @ts-expect-error Fix me later\n if (binding.format[name] === true) return curContext.format[name] != null;\n // @ts-expect-error Fix me later\n if (binding.format[name] === false) return curContext.format[name] == null;\n // @ts-expect-error Fix me later\n return isEqual(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) {\n return false;\n }\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) {\n return false;\n }\n // @ts-expect-error Fix me later\n return binding.handler.call(this, range, curContext, binding) !== true;\n });\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n handleBackspace(range, context) {\n // Check for astral symbols\n const length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n let formats = {};\n const [line] = this.quill.getLine(range.index);\n let delta = new Delta().retain(range.index - length).delete(length);\n if (context.offset === 0) {\n // Always deleting newline here, length always 1\n const [prev] = this.quill.getLine(range.index - 1);\n if (prev) {\n const isPrevLineEmpty = prev.statics.blotName === 'block' && prev.length() <= 1;\n if (!isPrevLineEmpty) {\n // @ts-expect-error Fix me later\n const curFormats = line.formats();\n const prevFormats = this.quill.getFormat(range.index - 1, 1);\n formats = AttributeMap.diff(curFormats, prevFormats) || {};\n if (Object.keys(formats).length > 0) {\n // line.length() - 1 targets \\n in line, another -1 for newline being deleted\n const formatDelta = new Delta()\n // @ts-expect-error Fix me later\n .retain(range.index + line.length() - 2).retain(1, formats);\n delta = delta.compose(formatDelta);\n }\n }\n }\n }\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.focus();\n }\n handleDelete(range, context) {\n // Check for astral symbols\n const length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n let formats = {};\n const [line] = this.quill.getLine(range.index);\n let delta = new Delta().retain(range.index).delete(length);\n // @ts-expect-error Fix me later\n if (context.offset >= line.length() - 1) {\n const [next] = this.quill.getLine(range.index + 1);\n if (next) {\n // @ts-expect-error Fix me later\n const curFormats = line.formats();\n const nextFormats = this.quill.getFormat(range.index, 1);\n formats = AttributeMap.diff(curFormats, nextFormats) || {};\n if (Object.keys(formats).length > 0) {\n delta = delta.retain(next.length() - 1).retain(1, formats);\n }\n }\n }\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.focus();\n }\n handleDeleteRange(range) {\n deleteRange({\n range,\n quill: this.quill\n });\n this.quill.focus();\n }\n handleEnter(range, context) {\n const lineFormats = Object.keys(context.format).reduce((formats, format) => {\n if (this.quill.scroll.query(format, Scope.BLOCK) && !Array.isArray(context.format[format])) {\n formats[format] = context.format[format];\n }\n return formats;\n }, {});\n const delta = new Delta().retain(range.index).delete(range.length).insert('\\n', lineFormats);\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.focus();\n }\n}\nconst defaultOptions = {\n bindings: {\n bold: makeFormatHandler('bold'),\n italic: makeFormatHandler('italic'),\n underline: makeFormatHandler('underline'),\n indent: {\n // highlight tab or tab at beginning of list, indent or blockquote\n key: 'Tab',\n format: ['blockquote', 'indent', 'list'],\n handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', Quill.sources.USER);\n return false;\n }\n },\n outdent: {\n key: 'Tab',\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n // highlight tab or tab at beginning of list, indent or blockquote\n handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', Quill.sources.USER);\n return false;\n }\n },\n 'outdent backspace': {\n key: 'Backspace',\n collapsed: true,\n shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\n format: ['indent', 'list'],\n offset: 0,\n handler(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', Quill.sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, Quill.sources.USER);\n }\n }\n },\n 'indent code-block': makeCodeBlockHandler(true),\n 'outdent code-block': makeCodeBlockHandler(false),\n 'remove tab': {\n key: 'Tab',\n shiftKey: true,\n collapsed: true,\n prefix: /\\t$/,\n handler(range) {\n this.quill.deleteText(range.index - 1, 1, Quill.sources.USER);\n }\n },\n tab: {\n key: 'Tab',\n handler(range, context) {\n if (context.format.table) return true;\n this.quill.history.cutoff();\n const delta = new Delta().retain(range.index).delete(range.length).insert('\\t');\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n return false;\n }\n },\n 'blockquote empty enter': {\n key: 'Enter',\n collapsed: true,\n format: ['blockquote'],\n empty: true,\n handler() {\n this.quill.format('blockquote', false, Quill.sources.USER);\n }\n },\n 'list empty enter': {\n key: 'Enter',\n collapsed: true,\n format: ['list'],\n empty: true,\n handler(range, context) {\n const formats = {\n list: false\n };\n if (context.format.indent) {\n formats.indent = false;\n }\n this.quill.formatLine(range.index, range.length, formats, Quill.sources.USER);\n }\n },\n 'checklist enter': {\n key: 'Enter',\n collapsed: true,\n format: {\n list: 'checked'\n },\n handler(range) {\n const [line, offset] = this.quill.getLine(range.index);\n const formats = {\n // @ts-expect-error Fix me later\n ...line.formats(),\n list: 'checked'\n };\n const delta = new Delta().retain(range.index).insert('\\n', formats)\n // @ts-expect-error Fix me later\n .retain(line.length() - offset - 1).retain(1, {\n list: 'unchecked'\n });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.scrollSelectionIntoView();\n }\n },\n 'header enter': {\n key: 'Enter',\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler(range, context) {\n const [line, offset] = this.quill.getLine(range.index);\n const delta = new Delta().retain(range.index).insert('\\n', context.format)\n // @ts-expect-error Fix me later\n .retain(line.length() - offset - 1).retain(1, {\n header: null\n });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.setSelection(range.index + 1, Quill.sources.SILENT);\n this.quill.scrollSelectionIntoView();\n }\n },\n 'table backspace': {\n key: 'Backspace',\n format: ['table'],\n collapsed: true,\n offset: 0,\n handler() {}\n },\n 'table delete': {\n key: 'Delete',\n format: ['table'],\n collapsed: true,\n suffix: /^$/,\n handler() {}\n },\n 'table enter': {\n key: 'Enter',\n shiftKey: null,\n format: ['table'],\n handler(range) {\n const module = this.quill.getModule('table');\n if (module) {\n // @ts-expect-error\n const [table, row, cell, offset] = module.getTable(range);\n const shift = tableSide(table, row, cell, offset);\n if (shift == null) return;\n let index = table.offset();\n if (shift < 0) {\n const delta = new Delta().retain(index).insert('\\n');\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.setSelection(range.index + 1, range.length, Quill.sources.SILENT);\n } else if (shift > 0) {\n index += table.length();\n const delta = new Delta().retain(index).insert('\\n');\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.setSelection(index, Quill.sources.USER);\n }\n }\n }\n },\n 'table tab': {\n key: 'Tab',\n shiftKey: null,\n format: ['table'],\n handler(range, context) {\n const {\n event,\n line: cell\n } = context;\n const offset = cell.offset(this.quill.scroll);\n if (event.shiftKey) {\n this.quill.setSelection(offset - 1, Quill.sources.USER);\n } else {\n this.quill.setSelection(offset + cell.length(), Quill.sources.USER);\n }\n }\n },\n 'list autofill': {\n key: ' ',\n shiftKey: null,\n collapsed: true,\n format: {\n 'code-block': false,\n blockquote: false,\n table: false\n },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler(range, context) {\n if (this.quill.scroll.query('list') == null) return true;\n const {\n length\n } = context.prefix;\n const [line, offset] = this.quill.getLine(range.index);\n if (offset > length) return true;\n let value;\n switch (context.prefix.trim()) {\n case '[]':\n case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-':\n case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', Quill.sources.USER);\n this.quill.history.cutoff();\n const delta = new Delta().retain(range.index - offset).delete(length + 1)\n // @ts-expect-error Fix me later\n .retain(line.length() - 2 - offset).retain(1, {\n list: value\n });\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, Quill.sources.SILENT);\n return false;\n }\n },\n 'code exit': {\n key: 'Enter',\n collapsed: true,\n format: ['code-block'],\n prefix: /^$/,\n suffix: /^\\s*$/,\n handler(range) {\n const [line, offset] = this.quill.getLine(range.index);\n let numLines = 2;\n let cur = line;\n while (cur != null && cur.length() <= 1 && cur.formats()['code-block']) {\n // @ts-expect-error\n cur = cur.prev;\n numLines -= 1;\n // Requisite prev lines are empty\n if (numLines <= 0) {\n const delta = new Delta()\n // @ts-expect-error Fix me later\n .retain(range.index + line.length() - offset - 2).retain(1, {\n 'code-block': null\n }).delete(1);\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.setSelection(range.index - 1, Quill.sources.SILENT);\n return false;\n }\n }\n return true;\n }\n },\n 'embed left': makeEmbedArrowHandler('ArrowLeft', false),\n 'embed left shift': makeEmbedArrowHandler('ArrowLeft', true),\n 'embed right': makeEmbedArrowHandler('ArrowRight', false),\n 'embed right shift': makeEmbedArrowHandler('ArrowRight', true),\n 'table down': makeTableArrowHandler(false),\n 'table up': makeTableArrowHandler(true)\n }\n};\nKeyboard.DEFAULTS = defaultOptions;\nfunction makeCodeBlockHandler(indent) {\n return {\n key: 'Tab',\n shiftKey: !indent,\n format: {\n 'code-block': true\n },\n handler(range, _ref) {\n let {\n event\n } = _ref;\n const CodeBlock = this.quill.scroll.query('code-block');\n // @ts-expect-error\n const {\n TAB\n } = CodeBlock;\n if (range.length === 0 && !event.shiftKey) {\n this.quill.insertText(range.index, TAB, Quill.sources.USER);\n this.quill.setSelection(range.index + TAB.length, Quill.sources.SILENT);\n return;\n }\n const lines = range.length === 0 ? this.quill.getLines(range.index, 1) : this.quill.getLines(range);\n let {\n index,\n length\n } = range;\n lines.forEach((line, i) => {\n if (indent) {\n line.insertAt(0, TAB);\n if (i === 0) {\n index += TAB.length;\n } else {\n length += TAB.length;\n }\n // @ts-expect-error Fix me later\n } else if (line.domNode.textContent.startsWith(TAB)) {\n line.deleteAt(0, TAB.length);\n if (i === 0) {\n index -= TAB.length;\n } else {\n length -= TAB.length;\n }\n }\n });\n this.quill.update(Quill.sources.USER);\n this.quill.setSelection(index, length, Quill.sources.SILENT);\n }\n };\n}\nfunction makeEmbedArrowHandler(key, shiftKey) {\n const where = key === 'ArrowLeft' ? 'prefix' : 'suffix';\n return {\n key,\n shiftKey,\n altKey: null,\n [where]: /^$/,\n handler(range) {\n let {\n index\n } = range;\n if (key === 'ArrowRight') {\n index += range.length + 1;\n }\n const [leaf] = this.quill.getLeaf(index);\n if (!(leaf instanceof EmbedBlot)) return true;\n if (key === 'ArrowLeft') {\n if (shiftKey) {\n this.quill.setSelection(range.index - 1, range.length + 1, Quill.sources.USER);\n } else {\n this.quill.setSelection(range.index - 1, Quill.sources.USER);\n }\n } else if (shiftKey) {\n this.quill.setSelection(range.index, range.length + 1, Quill.sources.USER);\n } else {\n this.quill.setSelection(range.index + range.length + 1, Quill.sources.USER);\n }\n return false;\n }\n };\n}\nfunction makeFormatHandler(format) {\n return {\n key: format[0],\n shortKey: true,\n handler(range, context) {\n this.quill.format(format, !context.format[format], Quill.sources.USER);\n }\n };\n}\nfunction makeTableArrowHandler(up) {\n return {\n key: up ? 'ArrowUp' : 'ArrowDown',\n collapsed: true,\n format: ['table'],\n handler(range, context) {\n // TODO move to table module\n const key = up ? 'prev' : 'next';\n const cell = context.line;\n const targetRow = cell.parent[key];\n if (targetRow != null) {\n if (targetRow.statics.blotName === 'table-row') {\n // @ts-expect-error\n let targetCell = targetRow.children.head;\n let cur = cell;\n while (cur.prev != null) {\n // @ts-expect-error\n cur = cur.prev;\n targetCell = targetCell.next;\n }\n const index = targetCell.offset(this.quill.scroll) + Math.min(context.offset, targetCell.length() - 1);\n this.quill.setSelection(index, 0, Quill.sources.USER);\n }\n } else {\n // @ts-expect-error\n const targetLine = cell.table()[key];\n if (targetLine != null) {\n if (up) {\n this.quill.setSelection(targetLine.offset(this.quill.scroll) + targetLine.length() - 1, 0, Quill.sources.USER);\n } else {\n this.quill.setSelection(targetLine.offset(this.quill.scroll), 0, Quill.sources.USER);\n }\n }\n }\n return false;\n }\n };\n}\nfunction normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n binding = {\n key: binding\n };\n } else if (typeof binding === 'object') {\n binding = cloneDeep(binding);\n } else {\n return null;\n }\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n return binding;\n}\n\n// TODO: Move into quill.ts or editor.ts\nfunction deleteRange(_ref2) {\n let {\n quill,\n range\n } = _ref2;\n const lines = quill.getLines(range);\n let formats = {};\n if (lines.length > 1) {\n const firstFormats = lines[0].formats();\n const lastFormats = lines[lines.length - 1].formats();\n formats = AttributeMap.diff(lastFormats, firstFormats) || {};\n }\n quill.deleteText(range, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n quill.formatLine(range.index, 1, formats, Quill.sources.USER);\n }\n quill.setSelection(range.index, Quill.sources.SILENT);\n}\nfunction tableSide(_table, row, cell, offset) {\n if (row.prev == null && row.next == null) {\n if (cell.prev == null && cell.next == null) {\n return offset === 0 ? -1 : 1;\n }\n return cell.prev == null ? -1 : 1;\n }\n if (row.prev == null) {\n return -1;\n }\n if (row.next == null) {\n return 1;\n }\n return null;\n}\nexport { Keyboard as default, SHORTKEY, normalize, deleteRange };\n","const normalWeightRegexp = /font-weight:\\s*normal/;\nconst blockTagNames = ['P', 'OL', 'UL'];\nconst isBlockElement = element => {\n return element && blockTagNames.includes(element.tagName);\n};\nconst normalizeEmptyLines = doc => {\n Array.from(doc.querySelectorAll('br')).filter(br => isBlockElement(br.previousElementSibling) && isBlockElement(br.nextElementSibling)).forEach(br => {\n br.parentNode?.removeChild(br);\n });\n};\nconst normalizeFontWeight = doc => {\n Array.from(doc.querySelectorAll('b[style*=\"font-weight\"]')).filter(node => node.getAttribute('style')?.match(normalWeightRegexp)).forEach(node => {\n const fragment = doc.createDocumentFragment();\n fragment.append(...node.childNodes);\n node.parentNode?.replaceChild(fragment, node);\n });\n};\nexport default function normalize(doc) {\n if (doc.querySelector('[id^=\"docs-internal-guid-\"]')) {\n normalizeFontWeight(doc);\n normalizeEmptyLines(doc);\n }\n}\n","const ignoreRegexp = /\\bmso-list:[^;]*ignore/i;\nconst idRegexp = /\\bmso-list:[^;]*\\bl(\\d+)/i;\nconst indentRegexp = /\\bmso-list:[^;]*\\blevel(\\d+)/i;\nconst parseListItem = (element, html) => {\n const style = element.getAttribute('style');\n const idMatch = style?.match(idRegexp);\n if (!idMatch) {\n return null;\n }\n const id = Number(idMatch[1]);\n const indentMatch = style?.match(indentRegexp);\n const indent = indentMatch ? Number(indentMatch[1]) : 1;\n const typeRegexp = new RegExp(`@list l${id}:level${indent}\\\\s*\\\\{[^\\\\}]*mso-level-number-format:\\\\s*([\\\\w-]+)`, 'i');\n const typeMatch = html.match(typeRegexp);\n const type = typeMatch && typeMatch[1] === 'bullet' ? 'bullet' : 'ordered';\n return {\n id,\n indent,\n type,\n element\n };\n};\n\n// list items are represented as `p` tags with styles like `mso-list: l0 level1` where:\n// 1. \"0\" in \"l0\" means the list item id;\n// 2. \"1\" in \"level1\" means the indent level, starting from 1.\nconst normalizeListItem = doc => {\n const msoList = Array.from(doc.querySelectorAll('[style*=mso-list]'));\n const ignored = [];\n const others = [];\n msoList.forEach(node => {\n const shouldIgnore = (node.getAttribute('style') || '').match(ignoreRegexp);\n if (shouldIgnore) {\n ignored.push(node);\n } else {\n others.push(node);\n }\n });\n\n // Each list item contains a marker wrapped with \"mso-list: Ignore\".\n ignored.forEach(node => node.parentNode?.removeChild(node));\n\n // The list stype is not defined inline with the tag, instead, it's in the\n // style tag so we need to pass the html as a string.\n const html = doc.documentElement.innerHTML;\n const listItems = others.map(element => parseListItem(element, html)).filter(parsed => parsed);\n while (listItems.length) {\n const childListItems = [];\n let current = listItems.shift();\n // Group continuous items into the same group (aka \"ul\")\n while (current) {\n childListItems.push(current);\n current = listItems.length && listItems[0]?.element === current.element.nextElementSibling &&\n // Different id means the next item doesn't belong to this group.\n listItems[0].id === current.id ? listItems.shift() : null;\n }\n const ul = document.createElement('ul');\n childListItems.forEach(listItem => {\n const li = document.createElement('li');\n li.setAttribute('data-list', listItem.type);\n if (listItem.indent > 1) {\n li.setAttribute('class', `ql-indent-${listItem.indent - 1}`);\n }\n li.innerHTML = listItem.element.innerHTML;\n ul.appendChild(li);\n });\n const element = childListItems[0]?.element;\n const {\n parentNode\n } = element ?? {};\n if (element) {\n parentNode?.replaceChild(ul, element);\n }\n childListItems.slice(1).forEach(_ref => {\n let {\n element: e\n } = _ref;\n parentNode?.removeChild(e);\n });\n }\n};\nexport default function normalize(doc) {\n if (doc.documentElement.getAttribute('xmlns:w') === 'urn:schemas-microsoft-com:office:word') {\n normalizeListItem(doc);\n }\n}\n","import googleDocs from './normalizers/googleDocs.js';\nimport msWord from './normalizers/msWord.js';\nconst NORMALIZERS = [msWord, googleDocs];\nconst normalizeExternalHTML = doc => {\n if (doc.documentElement) {\n NORMALIZERS.forEach(normalize => {\n normalize(doc);\n });\n }\n};\nexport default normalizeExternalHTML;\n","import { Attributor, BlockBlot, ClassAttributor, EmbedBlot, Scope, StyleAttributor } from 'parchment';\nimport Delta from 'quill-delta';\nimport { BlockEmbed } from '../blots/block.js';\nimport logger from '../core/logger.js';\nimport Module from '../core/module.js';\nimport Quill from '../core/quill.js';\nimport { AlignAttribute, AlignStyle } from '../formats/align.js';\nimport { BackgroundStyle } from '../formats/background.js';\nimport CodeBlock from '../formats/code.js';\nimport { ColorStyle } from '../formats/color.js';\nimport { DirectionAttribute, DirectionStyle } from '../formats/direction.js';\nimport { FontStyle } from '../formats/font.js';\nimport { SizeStyle } from '../formats/size.js';\nimport { deleteRange } from './keyboard.js';\nimport normalizeExternalHTML from './normalizeExternalHTML/index.js';\nconst debug = logger('quill:clipboard');\nconst CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['ol, ul', matchList], ['pre', matchCodeBlock], ['tr', matchTable], ['b', createMatchAlias('bold')], ['i', createMatchAlias('italic')], ['strike', createMatchAlias('strike')], ['style', matchIgnore]];\nconst ATTRIBUTE_ATTRIBUTORS = [AlignAttribute, DirectionAttribute].reduce((memo, attr) => {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\nconst STYLE_ATTRIBUTORS = [AlignStyle, BackgroundStyle, ColorStyle, DirectionStyle, FontStyle, SizeStyle].reduce((memo, attr) => {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\nclass Clipboard extends Module {\n static DEFAULTS = {\n matchers: []\n };\n constructor(quill, options) {\n super(quill, options);\n this.quill.root.addEventListener('copy', e => this.onCaptureCopy(e, false));\n this.quill.root.addEventListener('cut', e => this.onCaptureCopy(e, true));\n this.quill.root.addEventListener('paste', this.onCapturePaste.bind(this));\n this.matchers = [];\n CLIPBOARD_CONFIG.concat(this.options.matchers ?? []).forEach(_ref => {\n let [selector, matcher] = _ref;\n this.addMatcher(selector, matcher);\n });\n }\n addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n convert(_ref2) {\n let {\n html,\n text\n } = _ref2;\n let formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (formats[CodeBlock.blotName]) {\n return new Delta().insert(text || '', {\n [CodeBlock.blotName]: formats[CodeBlock.blotName]\n });\n }\n if (!html) {\n return new Delta().insert(text || '', formats);\n }\n const delta = this.convertHTML(html);\n // Remove trailing newline\n if (deltaEndsWith(delta, '\\n') && (delta.ops[delta.ops.length - 1].attributes == null || formats.table)) {\n return delta.compose(new Delta().retain(delta.length() - 1).delete(1));\n }\n return delta;\n }\n normalizeHTML(doc) {\n normalizeExternalHTML(doc);\n }\n convertHTML(html) {\n const doc = new DOMParser().parseFromString(html, 'text/html');\n this.normalizeHTML(doc);\n const container = doc.body;\n const nodeMatches = new WeakMap();\n const [elementMatchers, textMatchers] = this.prepareMatching(container, nodeMatches);\n return traverse(this.quill.scroll, container, elementMatchers, textMatchers, nodeMatches);\n }\n dangerouslyPasteHTML(index, html) {\n let source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Quill.sources.API;\n if (typeof index === 'string') {\n const delta = this.convert({\n html: index,\n text: ''\n });\n // @ts-expect-error\n this.quill.setContents(delta, html);\n this.quill.setSelection(0, Quill.sources.SILENT);\n } else {\n const paste = this.convert({\n html,\n text: ''\n });\n this.quill.updateContents(new Delta().retain(index).concat(paste), source);\n this.quill.setSelection(index + paste.length(), Quill.sources.SILENT);\n }\n }\n onCaptureCopy(e) {\n let isCut = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (e.defaultPrevented) return;\n e.preventDefault();\n const [range] = this.quill.selection.getRange();\n if (range == null) return;\n const {\n html,\n text\n } = this.onCopy(range, isCut);\n e.clipboardData?.setData('text/plain', text);\n e.clipboardData?.setData('text/html', html);\n if (isCut) {\n deleteRange({\n range,\n quill: this.quill\n });\n }\n }\n\n /*\n * https://www.iana.org/assignments/media-types/text/uri-list\n */\n normalizeURIList(urlList) {\n return urlList.split(/\\r?\\n/)\n // Ignore all comments\n .filter(url => url[0] !== '#').join('\\n');\n }\n onCapturePaste(e) {\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n e.preventDefault();\n const range = this.quill.getSelection(true);\n if (range == null) return;\n const html = e.clipboardData?.getData('text/html');\n let text = e.clipboardData?.getData('text/plain');\n if (!html && !text) {\n const urlList = e.clipboardData?.getData('text/uri-list');\n if (urlList) {\n text = this.normalizeURIList(urlList);\n }\n }\n const files = Array.from(e.clipboardData?.files || []);\n if (!html && files.length > 0) {\n this.quill.uploader.upload(range, files);\n return;\n }\n if (html && files.length > 0) {\n const doc = new DOMParser().parseFromString(html, 'text/html');\n if (doc.body.childElementCount === 1 && doc.body.firstElementChild?.tagName === 'IMG') {\n this.quill.uploader.upload(range, files);\n return;\n }\n }\n this.onPaste(range, {\n html,\n text\n });\n }\n onCopy(range) {\n const text = this.quill.getText(range);\n const html = this.quill.getSemanticHTML(range);\n return {\n html,\n text\n };\n }\n onPaste(range, _ref3) {\n let {\n text,\n html\n } = _ref3;\n const formats = this.quill.getFormat(range.index);\n const pastedDelta = this.convert({\n text,\n html\n }, formats);\n debug.log('onPaste', pastedDelta, {\n text,\n html\n });\n const delta = new Delta().retain(range.index).delete(range.length).concat(pastedDelta);\n this.quill.updateContents(delta, Quill.sources.USER);\n // range.length contributes to delta.length()\n this.quill.setSelection(delta.length() - range.length, Quill.sources.SILENT);\n this.quill.scrollSelectionIntoView();\n }\n prepareMatching(container, nodeMatches) {\n const elementMatchers = [];\n const textMatchers = [];\n this.matchers.forEach(pair => {\n const [selector, matcher] = pair;\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n default:\n Array.from(container.querySelectorAll(selector)).forEach(node => {\n if (nodeMatches.has(node)) {\n const matches = nodeMatches.get(node);\n matches?.push(matcher);\n } else {\n nodeMatches.set(node, [matcher]);\n }\n });\n break;\n }\n });\n return [elementMatchers, textMatchers];\n }\n}\nfunction applyFormat(delta, format, value, scroll) {\n if (!scroll.query(format)) {\n return delta;\n }\n return delta.reduce((newDelta, op) => {\n if (!op.insert) return newDelta;\n if (op.attributes && op.attributes[format]) {\n return newDelta.push(op);\n }\n const formats = value ? {\n [format]: value\n } : {};\n return newDelta.insert(op.insert, {\n ...formats,\n ...op.attributes\n });\n }, new Delta());\n}\nfunction deltaEndsWith(delta, text) {\n let endText = '';\n for (let i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i // eslint-disable-line no-plusplus\n ) {\n const op = delta.ops[i];\n if (typeof op.insert !== 'string') break;\n endText = op.insert + endText;\n }\n return endText.slice(-1 * text.length) === text;\n}\nfunction isLine(node, scroll) {\n if (!(node instanceof Element)) return false;\n const match = scroll.query(node);\n // @ts-expect-error\n if (match && match.prototype instanceof EmbedBlot) return false;\n return ['address', 'article', 'blockquote', 'canvas', 'dd', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'iframe', 'li', 'main', 'nav', 'ol', 'output', 'p', 'pre', 'section', 'table', 'td', 'tr', 'ul', 'video'].includes(node.tagName.toLowerCase());\n}\nfunction isBetweenInlineElements(node, scroll) {\n return node.previousElementSibling && node.nextElementSibling && !isLine(node.previousElementSibling, scroll) && !isLine(node.nextElementSibling, scroll);\n}\nconst preNodes = new WeakMap();\nfunction isPre(node) {\n if (node == null) return false;\n if (!preNodes.has(node)) {\n // @ts-expect-error\n if (node.tagName === 'PRE') {\n preNodes.set(node, true);\n } else {\n preNodes.set(node, isPre(node.parentNode));\n }\n }\n return preNodes.get(node);\n}\nfunction traverse(scroll, node, elementMatchers, textMatchers, nodeMatches) {\n // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce((delta, matcher) => {\n return matcher(node, delta, scroll);\n }, new Delta());\n }\n if (node.nodeType === node.ELEMENT_NODE) {\n return Array.from(node.childNodes || []).reduce((delta, childNode) => {\n let childrenDelta = traverse(scroll, childNode, elementMatchers, textMatchers, nodeMatches);\n if (childNode.nodeType === node.ELEMENT_NODE) {\n childrenDelta = elementMatchers.reduce((reducedDelta, matcher) => {\n return matcher(childNode, reducedDelta, scroll);\n }, childrenDelta);\n childrenDelta = (nodeMatches.get(childNode) || []).reduce((reducedDelta, matcher) => {\n return matcher(childNode, reducedDelta, scroll);\n }, childrenDelta);\n }\n return delta.concat(childrenDelta);\n }, new Delta());\n }\n return new Delta();\n}\nfunction createMatchAlias(format) {\n return (_node, delta, scroll) => {\n return applyFormat(delta, format, true, scroll);\n };\n}\nfunction matchAttributor(node, delta, scroll) {\n const attributes = Attributor.keys(node);\n const classes = ClassAttributor.keys(node);\n const styles = StyleAttributor.keys(node);\n const formats = {};\n attributes.concat(classes).concat(styles).forEach(name => {\n let attr = scroll.query(name, Scope.ATTRIBUTE);\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n attr = STYLE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n return Object.entries(formats).reduce((newDelta, _ref4) => {\n let [name, value] = _ref4;\n return applyFormat(newDelta, name, value, scroll);\n }, delta);\n}\nfunction matchBlot(node, delta, scroll) {\n const match = scroll.query(node);\n if (match == null) return delta;\n // @ts-expect-error\n if (match.prototype instanceof EmbedBlot) {\n const embed = {};\n // @ts-expect-error\n const value = match.value(node);\n if (value != null) {\n // @ts-expect-error\n embed[match.blotName] = value;\n // @ts-expect-error\n return new Delta().insert(embed, match.formats(node, scroll));\n }\n } else {\n // @ts-expect-error\n if (match.prototype instanceof BlockBlot && !deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n if ('blotName' in match && 'formats' in match && typeof match.formats === 'function') {\n return applyFormat(delta, match.blotName, match.formats(node, scroll), scroll);\n }\n }\n return delta;\n}\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\nfunction matchCodeBlock(node, delta, scroll) {\n const match = scroll.query('code-block');\n const language = match && 'formats' in match && typeof match.formats === 'function' ? match.formats(node, scroll) : true;\n return applyFormat(delta, 'code-block', language, scroll);\n}\nfunction matchIgnore() {\n return new Delta();\n}\nfunction matchIndent(node, delta, scroll) {\n const match = scroll.query(node);\n if (match == null ||\n // @ts-expect-error\n match.blotName !== 'list' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n let indent = -1;\n let parent = node.parentNode;\n while (parent != null) {\n // @ts-expect-error\n if (['OL', 'UL'].includes(parent.tagName)) {\n indent += 1;\n }\n parent = parent.parentNode;\n }\n if (indent <= 0) return delta;\n return delta.reduce((composed, op) => {\n if (!op.insert) return composed;\n if (op.attributes && typeof op.attributes.indent === 'number') {\n return composed.push(op);\n }\n return composed.insert(op.insert, {\n indent,\n ...(op.attributes || {})\n });\n }, new Delta());\n}\nfunction matchList(node, delta, scroll) {\n const element = node;\n let list = element.tagName === 'OL' ? 'ordered' : 'bullet';\n const checkedAttr = element.getAttribute('data-checked');\n if (checkedAttr) {\n list = checkedAttr === 'true' ? 'checked' : 'unchecked';\n }\n return applyFormat(delta, 'list', list, scroll);\n}\nfunction matchNewline(node, delta, scroll) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node, scroll) && (node.childNodes.length > 0 || node instanceof HTMLParagraphElement)) {\n return delta.insert('\\n');\n }\n if (delta.length() > 0 && node.nextSibling) {\n let nextSibling = node.nextSibling;\n while (nextSibling != null) {\n if (isLine(nextSibling, scroll)) {\n return delta.insert('\\n');\n }\n const match = scroll.query(nextSibling);\n // @ts-expect-error\n if (match && match.prototype instanceof BlockEmbed) {\n return delta.insert('\\n');\n }\n nextSibling = nextSibling.firstChild;\n }\n }\n }\n return delta;\n}\nfunction matchStyles(node, delta, scroll) {\n const formats = {};\n const style = node.style || {};\n if (style.fontStyle === 'italic') {\n formats.italic = true;\n }\n if (style.textDecoration === 'underline') {\n formats.underline = true;\n }\n if (style.textDecoration === 'line-through') {\n formats.strike = true;\n }\n if (style.fontWeight?.startsWith('bold') ||\n // @ts-expect-error Fix me later\n parseInt(style.fontWeight, 10) >= 700) {\n formats.bold = true;\n }\n delta = Object.entries(formats).reduce((newDelta, _ref5) => {\n let [name, value] = _ref5;\n return applyFormat(newDelta, name, value, scroll);\n }, delta);\n // @ts-expect-error\n if (parseFloat(style.textIndent || 0) > 0) {\n // Could be 0.5in\n return new Delta().insert('\\t').concat(delta);\n }\n return delta;\n}\nfunction matchTable(node, delta, scroll) {\n const table = node.parentElement?.tagName === 'TABLE' ? node.parentElement : node.parentElement?.parentElement;\n if (table != null) {\n const rows = Array.from(table.querySelectorAll('tr'));\n const row = rows.indexOf(node) + 1;\n return applyFormat(delta, 'table', row, scroll);\n }\n return delta;\n}\nfunction matchText(node, delta, scroll) {\n // @ts-expect-error\n let text = node.data;\n // Word represents empty line with  \n if (node.parentElement?.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n if (!isPre(node)) {\n if (text.trim().length === 0 && text.includes('\\n') && !isBetweenInlineElements(node, scroll)) {\n return delta;\n }\n const replacer = (collapse, match) => {\n const replaced = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n return replaced.length < 1 && collapse ? ' ' : replaced;\n };\n text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n if (node.previousSibling == null && node.parentElement != null && isLine(node.parentElement, scroll) || node.previousSibling instanceof Element && isLine(node.previousSibling, scroll)) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n if (node.nextSibling == null && node.parentElement != null && isLine(node.parentElement, scroll) || node.nextSibling instanceof Element && isLine(node.nextSibling, scroll)) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n return delta.insert(text);\n}\nexport { Clipboard as default, matchAttributor, matchBlot, matchNewline, matchText, traverse };\n","import { Scope } from 'parchment';\nimport Module from '../core/module.js';\nimport Quill from '../core/quill.js';\nclass History extends Module {\n static DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n };\n lastRecorded = 0;\n ignoreChange = false;\n stack = {\n undo: [],\n redo: []\n };\n currentRange = null;\n constructor(quill, options) {\n super(quill, options);\n this.quill.on(Quill.events.EDITOR_CHANGE, (eventName, value, oldValue, source) => {\n if (eventName === Quill.events.SELECTION_CHANGE) {\n if (value && source !== Quill.sources.SILENT) {\n this.currentRange = value;\n }\n } else if (eventName === Quill.events.TEXT_CHANGE) {\n if (!this.ignoreChange) {\n if (!this.options.userOnly || source === Quill.sources.USER) {\n this.record(value, oldValue);\n } else {\n this.transform(value);\n }\n }\n this.currentRange = transformRange(this.currentRange, value);\n }\n });\n this.quill.keyboard.addBinding({\n key: 'z',\n shortKey: true\n }, this.undo.bind(this));\n this.quill.keyboard.addBinding({\n key: ['z', 'Z'],\n shortKey: true,\n shiftKey: true\n }, this.redo.bind(this));\n if (/Win/i.test(navigator.platform)) {\n this.quill.keyboard.addBinding({\n key: 'y',\n shortKey: true\n }, this.redo.bind(this));\n }\n this.quill.root.addEventListener('beforeinput', event => {\n if (event.inputType === 'historyUndo') {\n this.undo();\n event.preventDefault();\n } else if (event.inputType === 'historyRedo') {\n this.redo();\n event.preventDefault();\n }\n });\n }\n change(source, dest) {\n if (this.stack[source].length === 0) return;\n const item = this.stack[source].pop();\n if (!item) return;\n const base = this.quill.getContents();\n const inverseDelta = item.delta.invert(base);\n this.stack[dest].push({\n delta: inverseDelta,\n range: transformRange(item.range, inverseDelta)\n });\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(item.delta, Quill.sources.USER);\n this.ignoreChange = false;\n this.restoreSelection(item);\n }\n clear() {\n this.stack = {\n undo: [],\n redo: []\n };\n }\n cutoff() {\n this.lastRecorded = 0;\n }\n record(changeDelta, oldDelta) {\n if (changeDelta.ops.length === 0) return;\n this.stack.redo = [];\n let undoDelta = changeDelta.invert(oldDelta);\n let undoRange = this.currentRange;\n const timestamp = Date.now();\n if (\n // @ts-expect-error Fix me later\n this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n const item = this.stack.undo.pop();\n if (item) {\n undoDelta = undoDelta.compose(item.delta);\n undoRange = item.range;\n }\n } else {\n this.lastRecorded = timestamp;\n }\n if (undoDelta.length() === 0) return;\n this.stack.undo.push({\n delta: undoDelta,\n range: undoRange\n });\n // @ts-expect-error Fix me later\n if (this.stack.undo.length > this.options.maxStack) {\n this.stack.undo.shift();\n }\n }\n redo() {\n this.change('redo', 'undo');\n }\n transform(delta) {\n transformStack(this.stack.undo, delta);\n transformStack(this.stack.redo, delta);\n }\n undo() {\n this.change('undo', 'redo');\n }\n restoreSelection(stackItem) {\n if (stackItem.range) {\n this.quill.setSelection(stackItem.range, Quill.sources.USER);\n } else {\n const index = getLastChangeIndex(this.quill.scroll, stackItem.delta);\n this.quill.setSelection(index, Quill.sources.USER);\n }\n }\n}\nfunction transformStack(stack, delta) {\n let remoteDelta = delta;\n for (let i = stack.length - 1; i >= 0; i -= 1) {\n const oldItem = stack[i];\n stack[i] = {\n delta: remoteDelta.transform(oldItem.delta, true),\n range: oldItem.range && transformRange(oldItem.range, remoteDelta)\n };\n remoteDelta = oldItem.delta.transform(remoteDelta);\n if (stack[i].delta.length() === 0) {\n stack.splice(i, 1);\n }\n }\n}\nfunction endsWithNewlineChange(scroll, delta) {\n const lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n if (lastOp.insert != null) {\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n }\n if (lastOp.attributes != null) {\n return Object.keys(lastOp.attributes).some(attr => {\n return scroll.query(attr, Scope.BLOCK) != null;\n });\n }\n return false;\n}\nfunction getLastChangeIndex(scroll, delta) {\n const deleteLength = delta.reduce((length, op) => {\n return length + (op.delete || 0);\n }, 0);\n let changeIndex = delta.length() - deleteLength;\n if (endsWithNewlineChange(scroll, delta)) {\n changeIndex -= 1;\n }\n return changeIndex;\n}\nfunction transformRange(range, delta) {\n if (!range) return range;\n const start = delta.transformPosition(range.index);\n const end = delta.transformPosition(range.index + range.length);\n return {\n index: start,\n length: end - start\n };\n}\nexport { History as default, getLastChangeIndex };\n","import Delta from 'quill-delta';\nimport Emitter from '../core/emitter.js';\nimport Module from '../core/module.js';\nclass Uploader extends Module {\n constructor(quill, options) {\n super(quill, options);\n quill.root.addEventListener('drop', e => {\n e.preventDefault();\n let native = null;\n if (document.caretRangeFromPoint) {\n native = document.caretRangeFromPoint(e.clientX, e.clientY);\n // @ts-expect-error\n } else if (document.caretPositionFromPoint) {\n // @ts-expect-error\n const position = document.caretPositionFromPoint(e.clientX, e.clientY);\n native = document.createRange();\n native.setStart(position.offsetNode, position.offset);\n native.setEnd(position.offsetNode, position.offset);\n }\n const normalized = native && quill.selection.normalizeNative(native);\n if (normalized) {\n const range = quill.selection.normalizedToRange(normalized);\n if (e.dataTransfer?.files) {\n this.upload(range, e.dataTransfer.files);\n }\n }\n });\n }\n upload(range, files) {\n const uploads = [];\n Array.from(files).forEach(file => {\n if (file && this.options.mimetypes?.includes(file.type)) {\n uploads.push(file);\n }\n });\n if (uploads.length > 0) {\n // @ts-expect-error Fix me later\n this.options.handler.call(this, range, uploads);\n }\n }\n}\nUploader.DEFAULTS = {\n mimetypes: ['image/png', 'image/jpeg'],\n handler(range, files) {\n if (!this.quill.scroll.query('image')) {\n return;\n }\n const promises = files.map(file => {\n return new Promise(resolve => {\n const reader = new FileReader();\n reader.onload = () => {\n resolve(reader.result);\n };\n reader.readAsDataURL(file);\n });\n });\n Promise.all(promises).then(images => {\n const update = images.reduce((delta, image) => {\n return delta.insert({\n image\n });\n }, new Delta().retain(range.index).delete(range.length));\n this.quill.updateContents(update, Emitter.sources.USER);\n this.quill.setSelection(range.index + images.length, Emitter.sources.SILENT);\n });\n }\n};\nexport default Uploader;\n","import Delta from 'quill-delta';\nimport Module from '../core/module.js';\nimport Quill from '../core/quill.js';\nimport { deleteRange } from './keyboard.js';\nconst INSERT_TYPES = ['insertText', 'insertReplacementText'];\nclass Input extends Module {\n constructor(quill, options) {\n super(quill, options);\n quill.root.addEventListener('beforeinput', event => {\n this.handleBeforeInput(event);\n });\n\n // Gboard with English input on Android triggers `compositionstart` sometimes even\n // users are not going to type anything.\n if (!/Android/i.test(navigator.userAgent)) {\n quill.on(Quill.events.COMPOSITION_BEFORE_START, () => {\n this.handleCompositionStart();\n });\n }\n }\n deleteRange(range) {\n deleteRange({\n range,\n quill: this.quill\n });\n }\n replaceText(range) {\n let text = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n if (range.length === 0) return false;\n if (text) {\n // Follow the native behavior that inherits the formats of the first character\n const formats = this.quill.getFormat(range.index, 1);\n this.deleteRange(range);\n this.quill.updateContents(new Delta().retain(range.index).insert(text, formats), Quill.sources.USER);\n } else {\n this.deleteRange(range);\n }\n this.quill.setSelection(range.index + text.length, 0, Quill.sources.SILENT);\n return true;\n }\n handleBeforeInput(event) {\n if (this.quill.composition.isComposing || event.defaultPrevented || !INSERT_TYPES.includes(event.inputType)) {\n return;\n }\n const staticRange = event.getTargetRanges ? event.getTargetRanges()[0] : null;\n if (!staticRange || staticRange.collapsed === true) {\n return;\n }\n const text = getPlainTextFromInputEvent(event);\n if (text == null) {\n return;\n }\n const normalized = this.quill.selection.normalizeNative(staticRange);\n const range = normalized ? this.quill.selection.normalizedToRange(normalized) : null;\n if (range && this.replaceText(range, text)) {\n event.preventDefault();\n }\n }\n handleCompositionStart() {\n const range = this.quill.getSelection();\n if (range) {\n this.replaceText(range);\n }\n }\n}\nfunction getPlainTextFromInputEvent(event) {\n // When `inputType` is \"insertText\":\n // - `event.data` should be string (Safari uses `event.dataTransfer`).\n // - `event.dataTransfer` should be null.\n // When `inputType` is \"insertReplacementText\":\n // - `event.data` should be null.\n // - `event.dataTransfer` should contain \"text/plain\" data.\n\n if (typeof event.data === 'string') {\n return event.data;\n }\n if (event.dataTransfer?.types.includes('text/plain')) {\n return event.dataTransfer.getData('text/plain');\n }\n return null;\n}\nexport default Input;\n","import { ParentBlot } from 'parchment';\nimport Module from '../core/module.js';\nimport Quill from '../core/quill.js';\nconst isMac = /Mac/i.test(navigator.platform);\n\n// Export for testing\nexport const TTL_FOR_VALID_SELECTION_CHANGE = 100;\n\n// A loose check to determine if the shortcut can move the caret before a UI node:\n// [CARET]
    [CONTENT]
    \nconst canMoveCaretBeforeUINode = event => {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight' ||\n // RTL scripts or moving from the end of the previous line\n event.key === 'ArrowUp' || event.key === 'ArrowDown' || event.key === 'Home') {\n return true;\n }\n if (isMac && event.key === 'a' && event.ctrlKey === true) {\n return true;\n }\n return false;\n};\nclass UINode extends Module {\n isListening = false;\n selectionChangeDeadline = 0;\n constructor(quill, options) {\n super(quill, options);\n this.handleArrowKeys();\n this.handleNavigationShortcuts();\n }\n handleArrowKeys() {\n this.quill.keyboard.addBinding({\n key: ['ArrowLeft', 'ArrowRight'],\n offset: 0,\n shiftKey: null,\n handler(range, _ref) {\n let {\n line,\n event\n } = _ref;\n if (!(line instanceof ParentBlot) || !line.uiNode) {\n return true;\n }\n const isRTL = getComputedStyle(line.domNode)['direction'] === 'rtl';\n if (isRTL && event.key !== 'ArrowRight' || !isRTL && event.key !== 'ArrowLeft') {\n return true;\n }\n this.quill.setSelection(range.index - 1, range.length + (event.shiftKey ? 1 : 0), Quill.sources.USER);\n return false;\n }\n });\n }\n handleNavigationShortcuts() {\n this.quill.root.addEventListener('keydown', event => {\n if (!event.defaultPrevented && canMoveCaretBeforeUINode(event)) {\n this.ensureListeningToSelectionChange();\n }\n });\n }\n\n /**\n * We only listen to the `selectionchange` event when\n * there is an intention of moving the caret to the beginning using shortcuts.\n * This is primarily implemented to prevent infinite loops, as we are changing\n * the selection within the handler of a `selectionchange` event.\n */\n ensureListeningToSelectionChange() {\n this.selectionChangeDeadline = Date.now() + TTL_FOR_VALID_SELECTION_CHANGE;\n if (this.isListening) return;\n this.isListening = true;\n const listener = () => {\n this.isListening = false;\n if (Date.now() <= this.selectionChangeDeadline) {\n this.handleSelectionChange();\n }\n };\n document.addEventListener('selectionchange', listener, {\n once: true\n });\n }\n handleSelectionChange() {\n const selection = document.getSelection();\n if (!selection) return;\n const range = selection.getRangeAt(0);\n if (range.collapsed !== true || range.startOffset !== 0) return;\n const line = this.quill.scroll.find(range.startContainer);\n if (!(line instanceof ParentBlot) || !line.uiNode) return;\n const newRange = document.createRange();\n newRange.setStartAfter(line.uiNode);\n newRange.setEndAfter(line.uiNode);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n}\nexport default UINode;\n","import Quill, { Parchment, Range } from './core/quill.js';\nimport Block, { BlockEmbed } from './blots/block.js';\nimport Break from './blots/break.js';\nimport Container from './blots/container.js';\nimport Cursor from './blots/cursor.js';\nimport Embed from './blots/embed.js';\nimport Inline from './blots/inline.js';\nimport Scroll from './blots/scroll.js';\nimport TextBlot from './blots/text.js';\nimport Clipboard from './modules/clipboard.js';\nimport History from './modules/history.js';\nimport Keyboard from './modules/keyboard.js';\nimport Uploader from './modules/uploader.js';\nimport Delta, { Op, OpIterator, AttributeMap } from 'quill-delta';\nimport Input from './modules/input.js';\nimport UINode from './modules/uiNode.js';\nexport { default as Module } from './core/module.js';\nexport { Delta, Op, OpIterator, AttributeMap, Parchment, Range };\nQuill.register({\n 'blots/block': Block,\n 'blots/block/embed': BlockEmbed,\n 'blots/break': Break,\n 'blots/container': Container,\n 'blots/cursor': Cursor,\n 'blots/embed': Embed,\n 'blots/inline': Inline,\n 'blots/scroll': Scroll,\n 'blots/text': TextBlot,\n 'modules/clipboard': Clipboard,\n 'modules/history': History,\n 'modules/keyboard': Keyboard,\n 'modules/uploader': Uploader,\n 'modules/input': Input,\n 'modules/uiNode': UINode\n});\nexport default Quill;\n","import { ClassAttributor, Scope } from 'parchment';\nclass IndentAttributor extends ClassAttributor {\n add(node, value) {\n let normalizedValue = 0;\n if (value === '+1' || value === '-1') {\n const indent = this.value(node) || 0;\n normalizedValue = value === '+1' ? indent + 1 : indent - 1;\n } else if (typeof value === 'number') {\n normalizedValue = value;\n }\n if (normalizedValue === 0) {\n this.remove(node);\n return true;\n }\n return super.add(node, normalizedValue.toString());\n }\n canAdd(node, value) {\n return super.canAdd(node, value) || super.canAdd(node, parseInt(value, 10));\n }\n value(node) {\n return parseInt(super.value(node), 10) || undefined; // Don't return NaN\n }\n}\nconst IndentClass = new IndentAttributor('indent', 'ql-indent', {\n scope: Scope.BLOCK,\n // @ts-expect-error\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\nexport default IndentClass;\n","import Block from '../blots/block.js';\nclass Blockquote extends Block {\n static blotName = 'blockquote';\n static tagName = 'blockquote';\n}\nexport default Blockquote;\n","import Block from '../blots/block.js';\nclass Header extends Block {\n static blotName = 'header';\n static tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n static formats(domNode) {\n return this.tagName.indexOf(domNode.tagName) + 1;\n }\n}\nexport default Header;\n","import Block from '../blots/block.js';\nimport Container from '../blots/container.js';\nimport Quill from '../core/quill.js';\nclass ListContainer extends Container {}\nListContainer.blotName = 'list-container';\nListContainer.tagName = 'OL';\nclass ListItem extends Block {\n static create(value) {\n const node = super.create();\n node.setAttribute('data-list', value);\n return node;\n }\n static formats(domNode) {\n return domNode.getAttribute('data-list') || undefined;\n }\n static register() {\n Quill.register(ListContainer);\n }\n constructor(scroll, domNode) {\n super(scroll, domNode);\n const ui = domNode.ownerDocument.createElement('span');\n const listEventHandler = e => {\n if (!scroll.isEnabled()) return;\n const format = this.statics.formats(domNode, scroll);\n if (format === 'checked') {\n this.format('list', 'unchecked');\n e.preventDefault();\n } else if (format === 'unchecked') {\n this.format('list', 'checked');\n e.preventDefault();\n }\n };\n ui.addEventListener('mousedown', listEventHandler);\n ui.addEventListener('touchstart', listEventHandler);\n this.attachUI(ui);\n }\n format(name, value) {\n if (name === this.statics.blotName && value) {\n this.domNode.setAttribute('data-list', value);\n } else {\n super.format(name, value);\n }\n }\n}\nListItem.blotName = 'list';\nListItem.tagName = 'LI';\nListContainer.allowedChildren = [ListItem];\nListItem.requiredContainer = ListContainer;\nexport { ListContainer, ListItem as default };\n","import Inline from '../blots/inline.js';\nclass Bold extends Inline {\n static blotName = 'bold';\n static tagName = ['STRONG', 'B'];\n static create() {\n return super.create();\n }\n static formats() {\n return true;\n }\n optimize(context) {\n super.optimize(context);\n if (this.domNode.tagName !== this.statics.tagName[0]) {\n this.replaceWith(this.statics.blotName);\n }\n }\n}\nexport default Bold;\n","import Bold from './bold.js';\nclass Italic extends Bold {\n static blotName = 'italic';\n static tagName = ['EM', 'I'];\n}\nexport default Italic;\n","import Inline from '../blots/inline.js';\nclass Link extends Inline {\n static blotName = 'link';\n static tagName = 'A';\n static SANITIZED_URL = 'about:blank';\n static PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel', 'sms'];\n static create(value) {\n const node = super.create(value);\n node.setAttribute('href', this.sanitize(value));\n node.setAttribute('rel', 'noopener noreferrer');\n node.setAttribute('target', '_blank');\n return node;\n }\n static formats(domNode) {\n return domNode.getAttribute('href');\n }\n static sanitize(url) {\n return sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n }\n format(name, value) {\n if (name !== this.statics.blotName || !value) {\n super.format(name, value);\n } else {\n // @ts-expect-error\n this.domNode.setAttribute('href', this.constructor.sanitize(value));\n }\n }\n}\nfunction sanitize(url, protocols) {\n const anchor = document.createElement('a');\n anchor.href = url;\n const protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n return protocols.indexOf(protocol) > -1;\n}\nexport { Link as default, sanitize };\n","import Inline from '../blots/inline.js';\nclass Script extends Inline {\n static blotName = 'script';\n static tagName = ['SUB', 'SUP'];\n static create(value) {\n if (value === 'super') {\n return document.createElement('sup');\n }\n if (value === 'sub') {\n return document.createElement('sub');\n }\n return super.create(value);\n }\n static formats(domNode) {\n if (domNode.tagName === 'SUB') return 'sub';\n if (domNode.tagName === 'SUP') return 'super';\n return undefined;\n }\n}\nexport default Script;\n","import Bold from './bold.js';\nclass Strike extends Bold {\n static blotName = 'strike';\n static tagName = ['S', 'STRIKE'];\n}\nexport default Strike;\n","import Inline from '../blots/inline.js';\nclass Underline extends Inline {\n static blotName = 'underline';\n static tagName = 'U';\n}\nexport default Underline;\n","import Embed from '../blots/embed.js';\nclass Formula extends Embed {\n static blotName = 'formula';\n static className = 'ql-formula';\n static tagName = 'SPAN';\n static create(value) {\n // @ts-expect-error\n if (window.katex == null) {\n throw new Error('Formula module requires KaTeX.');\n }\n const node = super.create(value);\n if (typeof value === 'string') {\n // @ts-expect-error\n window.katex.render(value, node, {\n throwOnError: false,\n errorColor: '#f00'\n });\n node.setAttribute('data-value', value);\n }\n return node;\n }\n static value(domNode) {\n return domNode.getAttribute('data-value');\n }\n html() {\n const {\n formula\n } = this.value();\n return `${formula}`;\n }\n}\nexport default Formula;\n","import { EmbedBlot } from 'parchment';\nimport { sanitize } from './link.js';\nconst ATTRIBUTES = ['alt', 'height', 'width'];\nclass Image extends EmbedBlot {\n static blotName = 'image';\n static tagName = 'IMG';\n static create(value) {\n const node = super.create(value);\n if (typeof value === 'string') {\n node.setAttribute('src', this.sanitize(value));\n }\n return node;\n }\n static formats(domNode) {\n return ATTRIBUTES.reduce((formats, attribute) => {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n static match(url) {\n return /\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url);\n }\n static sanitize(url) {\n return sanitize(url, ['http', 'https', 'data']) ? url : '//:0';\n }\n static value(domNode) {\n return domNode.getAttribute('src');\n }\n format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n super.format(name, value);\n }\n }\n}\nexport default Image;\n","import { BlockEmbed } from '../blots/block.js';\nimport Link from './link.js';\nconst ATTRIBUTES = ['height', 'width'];\nclass Video extends BlockEmbed {\n static blotName = 'video';\n static className = 'ql-video';\n static tagName = 'IFRAME';\n static create(value) {\n const node = super.create(value);\n node.setAttribute('frameborder', '0');\n node.setAttribute('allowfullscreen', 'true');\n node.setAttribute('src', this.sanitize(value));\n return node;\n }\n static formats(domNode) {\n return ATTRIBUTES.reduce((formats, attribute) => {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n static sanitize(url) {\n return Link.sanitize(url);\n }\n static value(domNode) {\n return domNode.getAttribute('src');\n }\n format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n super.format(name, value);\n }\n }\n html() {\n const {\n video\n } = this.value();\n return `${video}`;\n }\n}\nexport default Video;\n","import Delta from 'quill-delta';\nimport { ClassAttributor, Scope } from 'parchment';\nimport Inline from '../blots/inline.js';\nimport Quill from '../core/quill.js';\nimport Module from '../core/module.js';\nimport { blockDelta } from '../blots/block.js';\nimport BreakBlot from '../blots/break.js';\nimport CursorBlot from '../blots/cursor.js';\nimport TextBlot, { escapeText } from '../blots/text.js';\nimport CodeBlock, { CodeBlockContainer } from '../formats/code.js';\nimport { traverse } from './clipboard.js';\nconst TokenAttributor = new ClassAttributor('code-token', 'hljs', {\n scope: Scope.INLINE\n});\nclass CodeToken extends Inline {\n static formats(node, scroll) {\n while (node != null && node !== scroll.domNode) {\n if (node.classList && node.classList.contains(CodeBlock.className)) {\n // @ts-expect-error\n return super.formats(node, scroll);\n }\n // @ts-expect-error\n node = node.parentNode;\n }\n return undefined;\n }\n constructor(scroll, domNode, value) {\n // @ts-expect-error\n super(scroll, domNode, value);\n TokenAttributor.add(this.domNode, value);\n }\n format(format, value) {\n if (format !== CodeToken.blotName) {\n super.format(format, value);\n } else if (value) {\n TokenAttributor.add(this.domNode, value);\n } else {\n TokenAttributor.remove(this.domNode);\n this.domNode.classList.remove(this.statics.className);\n }\n }\n optimize() {\n // @ts-expect-error\n super.optimize(...arguments);\n if (!TokenAttributor.value(this.domNode)) {\n this.unwrap();\n }\n }\n}\nCodeToken.blotName = 'code-token';\nCodeToken.className = 'ql-token';\nclass SyntaxCodeBlock extends CodeBlock {\n static create(value) {\n const domNode = super.create(value);\n if (typeof value === 'string') {\n domNode.setAttribute('data-language', value);\n }\n return domNode;\n }\n static formats(domNode) {\n // @ts-expect-error\n return domNode.getAttribute('data-language') || 'plain';\n }\n static register() {} // Syntax module will register\n\n format(name, value) {\n if (name === this.statics.blotName && value) {\n // @ts-expect-error\n this.domNode.setAttribute('data-language', value);\n } else {\n super.format(name, value);\n }\n }\n replaceWith(name, value) {\n this.formatAt(0, this.length(), CodeToken.blotName, false);\n return super.replaceWith(name, value);\n }\n}\nclass SyntaxCodeBlockContainer extends CodeBlockContainer {\n attach() {\n super.attach();\n this.forceNext = false;\n // @ts-expect-error\n this.scroll.emitMount(this);\n }\n format(name, value) {\n if (name === SyntaxCodeBlock.blotName) {\n this.forceNext = true;\n this.children.forEach(child => {\n // @ts-expect-error\n child.format(name, value);\n });\n }\n }\n formatAt(index, length, name, value) {\n if (name === SyntaxCodeBlock.blotName) {\n this.forceNext = true;\n }\n super.formatAt(index, length, name, value);\n }\n highlight(highlight) {\n let forced = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (this.children.head == null) return;\n const nodes = Array.from(this.domNode.childNodes).filter(node => node !== this.uiNode);\n const text = `${nodes.map(node => node.textContent).join('\\n')}\\n`;\n const language = SyntaxCodeBlock.formats(this.children.head.domNode);\n if (forced || this.forceNext || this.cachedText !== text) {\n if (text.trim().length > 0 || this.cachedText == null) {\n const oldDelta = this.children.reduce((delta, child) => {\n // @ts-expect-error\n return delta.concat(blockDelta(child, false));\n }, new Delta());\n const delta = highlight(text, language);\n oldDelta.diff(delta).reduce((index, _ref) => {\n let {\n retain,\n attributes\n } = _ref;\n // Should be all retains\n if (!retain) return index;\n if (attributes) {\n Object.keys(attributes).forEach(format => {\n if ([SyntaxCodeBlock.blotName, CodeToken.blotName].includes(format)) {\n // @ts-expect-error\n this.formatAt(index, retain, format, attributes[format]);\n }\n });\n }\n // @ts-expect-error\n return index + retain;\n }, 0);\n }\n this.cachedText = text;\n this.forceNext = false;\n }\n }\n html(index, length) {\n const [codeBlock] = this.children.find(index);\n const language = codeBlock ? SyntaxCodeBlock.formats(codeBlock.domNode) : 'plain';\n return `
    \\n${escapeText(this.code(index, length))}\\n
    `;\n }\n optimize(context) {\n super.optimize(context);\n if (this.parent != null && this.children.head != null && this.uiNode != null) {\n const language = SyntaxCodeBlock.formats(this.children.head.domNode);\n // @ts-expect-error\n if (language !== this.uiNode.value) {\n // @ts-expect-error\n this.uiNode.value = language;\n }\n }\n }\n}\nSyntaxCodeBlockContainer.allowedChildren = [SyntaxCodeBlock];\nSyntaxCodeBlock.requiredContainer = SyntaxCodeBlockContainer;\nSyntaxCodeBlock.allowedChildren = [CodeToken, CursorBlot, TextBlot, BreakBlot];\nconst highlight = (lib, language, text) => {\n if (typeof lib.versionString === 'string') {\n const majorVersion = lib.versionString.split('.')[0];\n if (parseInt(majorVersion, 10) >= 11) {\n return lib.highlight(text, {\n language\n }).value;\n }\n }\n return lib.highlight(language, text).value;\n};\nclass Syntax extends Module {\n static register() {\n Quill.register(CodeToken, true);\n Quill.register(SyntaxCodeBlock, true);\n Quill.register(SyntaxCodeBlockContainer, true);\n }\n constructor(quill, options) {\n super(quill, options);\n if (this.options.hljs == null) {\n throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n }\n // @ts-expect-error Fix me later\n this.languages = this.options.languages.reduce((memo, _ref2) => {\n let {\n key\n } = _ref2;\n memo[key] = true;\n return memo;\n }, {});\n this.highlightBlot = this.highlightBlot.bind(this);\n this.initListener();\n this.initTimer();\n }\n initListener() {\n this.quill.on(Quill.events.SCROLL_BLOT_MOUNT, blot => {\n if (!(blot instanceof SyntaxCodeBlockContainer)) return;\n const select = this.quill.root.ownerDocument.createElement('select');\n // @ts-expect-error Fix me later\n this.options.languages.forEach(_ref3 => {\n let {\n key,\n label\n } = _ref3;\n const option = select.ownerDocument.createElement('option');\n option.textContent = label;\n option.setAttribute('value', key);\n select.appendChild(option);\n });\n select.addEventListener('change', () => {\n blot.format(SyntaxCodeBlock.blotName, select.value);\n this.quill.root.focus(); // Prevent scrolling\n this.highlight(blot, true);\n });\n if (blot.uiNode == null) {\n blot.attachUI(select);\n if (blot.children.head) {\n select.value = SyntaxCodeBlock.formats(blot.children.head.domNode);\n }\n }\n });\n }\n initTimer() {\n let timer = null;\n this.quill.on(Quill.events.SCROLL_OPTIMIZE, () => {\n if (timer) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n this.highlight();\n timer = null;\n }, this.options.interval);\n });\n }\n highlight() {\n let blot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n let force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n if (this.quill.selection.composing) return;\n this.quill.update(Quill.sources.USER);\n const range = this.quill.getSelection();\n const blots = blot == null ? this.quill.scroll.descendants(SyntaxCodeBlockContainer) : [blot];\n blots.forEach(container => {\n container.highlight(this.highlightBlot, force);\n });\n this.quill.update(Quill.sources.SILENT);\n if (range != null) {\n this.quill.setSelection(range, Quill.sources.SILENT);\n }\n }\n highlightBlot(text) {\n let language = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'plain';\n language = this.languages[language] ? language : 'plain';\n if (language === 'plain') {\n return escapeText(text).split('\\n').reduce((delta, line, i) => {\n if (i !== 0) {\n delta.insert('\\n', {\n [CodeBlock.blotName]: language\n });\n }\n return delta.insert(line);\n }, new Delta());\n }\n const container = this.quill.root.ownerDocument.createElement('div');\n container.classList.add(CodeBlock.className);\n container.innerHTML = highlight(this.options.hljs, language, text);\n return traverse(this.quill.scroll, container, [(node, delta) => {\n // @ts-expect-error\n const value = TokenAttributor.value(node);\n if (value) {\n return delta.compose(new Delta().retain(delta.length(), {\n [CodeToken.blotName]: value\n }));\n }\n return delta;\n }], [(node, delta) => {\n // @ts-expect-error\n return node.data.split('\\n').reduce((memo, nodeText, i) => {\n if (i !== 0) memo.insert('\\n', {\n [CodeBlock.blotName]: language\n });\n return memo.insert(nodeText);\n }, delta);\n }], new WeakMap());\n }\n}\nSyntax.DEFAULTS = {\n hljs: (() => {\n return window.hljs;\n })(),\n interval: 1000,\n languages: [{\n key: 'plain',\n label: 'Plain'\n }, {\n key: 'bash',\n label: 'Bash'\n }, {\n key: 'cpp',\n label: 'C++'\n }, {\n key: 'cs',\n label: 'C#'\n }, {\n key: 'css',\n label: 'CSS'\n }, {\n key: 'diff',\n label: 'Diff'\n }, {\n key: 'xml',\n label: 'HTML/XML'\n }, {\n key: 'java',\n label: 'Java'\n }, {\n key: 'javascript',\n label: 'JavaScript'\n }, {\n key: 'markdown',\n label: 'Markdown'\n }, {\n key: 'php',\n label: 'PHP'\n }, {\n key: 'python',\n label: 'Python'\n }, {\n key: 'ruby',\n label: 'Ruby'\n }, {\n key: 'sql',\n label: 'SQL'\n }]\n};\nexport { SyntaxCodeBlock as CodeBlock, CodeToken, Syntax as default };\n","import Block from '../blots/block.js';\nimport Container from '../blots/container.js';\nclass TableCell extends Block {\n static blotName = 'table';\n static tagName = 'TD';\n static create(value) {\n const node = super.create();\n if (value) {\n node.setAttribute('data-row', value);\n } else {\n node.setAttribute('data-row', tableId());\n }\n return node;\n }\n static formats(domNode) {\n if (domNode.hasAttribute('data-row')) {\n return domNode.getAttribute('data-row');\n }\n return undefined;\n }\n cellOffset() {\n if (this.parent) {\n return this.parent.children.indexOf(this);\n }\n return -1;\n }\n format(name, value) {\n if (name === TableCell.blotName && value) {\n this.domNode.setAttribute('data-row', value);\n } else {\n super.format(name, value);\n }\n }\n row() {\n return this.parent;\n }\n rowOffset() {\n if (this.row()) {\n return this.row().rowOffset();\n }\n return -1;\n }\n table() {\n return this.row() && this.row().table();\n }\n}\nclass TableRow extends Container {\n static blotName = 'table-row';\n static tagName = 'TR';\n checkMerge() {\n // @ts-expect-error\n if (super.checkMerge() && this.next.children.head != null) {\n // @ts-expect-error\n const thisHead = this.children.head.formats();\n // @ts-expect-error\n const thisTail = this.children.tail.formats();\n // @ts-expect-error\n const nextHead = this.next.children.head.formats();\n // @ts-expect-error\n const nextTail = this.next.children.tail.formats();\n return thisHead.table === thisTail.table && thisHead.table === nextHead.table && thisHead.table === nextTail.table;\n }\n return false;\n }\n optimize(context) {\n super.optimize(context);\n this.children.forEach(child => {\n if (child.next == null) return;\n const childFormats = child.formats();\n const nextFormats = child.next.formats();\n if (childFormats.table !== nextFormats.table) {\n const next = this.splitAfter(child);\n if (next) {\n // @ts-expect-error TODO: parameters of optimize() should be a optional\n next.optimize();\n }\n // We might be able to merge with prev now\n if (this.prev) {\n // @ts-expect-error TODO: parameters of optimize() should be a optional\n this.prev.optimize();\n }\n }\n });\n }\n rowOffset() {\n if (this.parent) {\n return this.parent.children.indexOf(this);\n }\n return -1;\n }\n table() {\n return this.parent && this.parent.parent;\n }\n}\nclass TableBody extends Container {\n static blotName = 'table-body';\n static tagName = 'TBODY';\n}\nclass TableContainer extends Container {\n static blotName = 'table-container';\n static tagName = 'TABLE';\n balanceCells() {\n const rows = this.descendants(TableRow);\n const maxColumns = rows.reduce((max, row) => {\n return Math.max(row.children.length, max);\n }, 0);\n rows.forEach(row => {\n new Array(maxColumns - row.children.length).fill(0).forEach(() => {\n let value;\n if (row.children.head != null) {\n value = TableCell.formats(row.children.head.domNode);\n }\n const blot = this.scroll.create(TableCell.blotName, value);\n row.appendChild(blot);\n // @ts-expect-error TODO: parameters of optimize() should be a optional\n blot.optimize(); // Add break blot\n });\n });\n }\n cells(column) {\n return this.rows().map(row => row.children.at(column));\n }\n deleteColumn(index) {\n // @ts-expect-error\n const [body] = this.descendant(TableBody);\n if (body == null || body.children.head == null) return;\n body.children.forEach(row => {\n const cell = row.children.at(index);\n if (cell != null) {\n cell.remove();\n }\n });\n }\n insertColumn(index) {\n // @ts-expect-error\n const [body] = this.descendant(TableBody);\n if (body == null || body.children.head == null) return;\n body.children.forEach(row => {\n const ref = row.children.at(index);\n // @ts-expect-error\n const value = TableCell.formats(row.children.head.domNode);\n const cell = this.scroll.create(TableCell.blotName, value);\n row.insertBefore(cell, ref);\n });\n }\n insertRow(index) {\n // @ts-expect-error\n const [body] = this.descendant(TableBody);\n if (body == null || body.children.head == null) return;\n const id = tableId();\n const row = this.scroll.create(TableRow.blotName);\n body.children.head.children.forEach(() => {\n const cell = this.scroll.create(TableCell.blotName, id);\n row.appendChild(cell);\n });\n const ref = body.children.at(index);\n body.insertBefore(row, ref);\n }\n rows() {\n const body = this.children.head;\n if (body == null) return [];\n return body.children.map(row => row);\n }\n}\nTableContainer.allowedChildren = [TableBody];\nTableBody.requiredContainer = TableContainer;\nTableBody.allowedChildren = [TableRow];\nTableRow.requiredContainer = TableBody;\nTableRow.allowedChildren = [TableCell];\nTableCell.requiredContainer = TableRow;\nfunction tableId() {\n const id = Math.random().toString(36).slice(2, 6);\n return `row-${id}`;\n}\nexport { TableCell, TableRow, TableBody, TableContainer, tableId };\n","import Delta from 'quill-delta';\nimport Quill from '../core/quill.js';\nimport Module from '../core/module.js';\nimport { TableCell, TableRow, TableBody, TableContainer, tableId } from '../formats/table.js';\nclass Table extends Module {\n static register() {\n Quill.register(TableCell);\n Quill.register(TableRow);\n Quill.register(TableBody);\n Quill.register(TableContainer);\n }\n constructor() {\n super(...arguments);\n this.listenBalanceCells();\n }\n balanceTables() {\n this.quill.scroll.descendants(TableContainer).forEach(table => {\n table.balanceCells();\n });\n }\n deleteColumn() {\n const [table,, cell] = this.getTable();\n if (cell == null) return;\n // @ts-expect-error\n table.deleteColumn(cell.cellOffset());\n this.quill.update(Quill.sources.USER);\n }\n deleteRow() {\n const [, row] = this.getTable();\n if (row == null) return;\n row.remove();\n this.quill.update(Quill.sources.USER);\n }\n deleteTable() {\n const [table] = this.getTable();\n if (table == null) return;\n // @ts-expect-error\n const offset = table.offset();\n // @ts-expect-error\n table.remove();\n this.quill.update(Quill.sources.USER);\n this.quill.setSelection(offset, Quill.sources.SILENT);\n }\n getTable() {\n let range = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.quill.getSelection();\n if (range == null) return [null, null, null, -1];\n const [cell, offset] = this.quill.getLine(range.index);\n if (cell == null || cell.statics.blotName !== TableCell.blotName) {\n return [null, null, null, -1];\n }\n const row = cell.parent;\n const table = row.parent.parent;\n // @ts-expect-error\n return [table, row, cell, offset];\n }\n insertColumn(offset) {\n const range = this.quill.getSelection();\n if (!range) return;\n const [table, row, cell] = this.getTable(range);\n if (cell == null) return;\n const column = cell.cellOffset();\n table.insertColumn(column + offset);\n this.quill.update(Quill.sources.USER);\n let shift = row.rowOffset();\n if (offset === 0) {\n shift += 1;\n }\n this.quill.setSelection(range.index + shift, range.length, Quill.sources.SILENT);\n }\n insertColumnLeft() {\n this.insertColumn(0);\n }\n insertColumnRight() {\n this.insertColumn(1);\n }\n insertRow(offset) {\n const range = this.quill.getSelection();\n if (!range) return;\n const [table, row, cell] = this.getTable(range);\n if (cell == null) return;\n const index = row.rowOffset();\n table.insertRow(index + offset);\n this.quill.update(Quill.sources.USER);\n if (offset > 0) {\n this.quill.setSelection(range, Quill.sources.SILENT);\n } else {\n this.quill.setSelection(range.index + row.children.length, range.length, Quill.sources.SILENT);\n }\n }\n insertRowAbove() {\n this.insertRow(0);\n }\n insertRowBelow() {\n this.insertRow(1);\n }\n insertTable(rows, columns) {\n const range = this.quill.getSelection();\n if (range == null) return;\n const delta = new Array(rows).fill(0).reduce(memo => {\n const text = new Array(columns).fill('\\n').join('');\n return memo.insert(text, {\n table: tableId()\n });\n }, new Delta().retain(range.index));\n this.quill.updateContents(delta, Quill.sources.USER);\n this.quill.setSelection(range.index, Quill.sources.SILENT);\n this.balanceTables();\n }\n listenBalanceCells() {\n this.quill.on(Quill.events.SCROLL_OPTIMIZE, mutations => {\n mutations.some(mutation => {\n if (['TD', 'TR', 'TBODY', 'TABLE'].includes(mutation.target.tagName)) {\n this.quill.once(Quill.events.TEXT_CHANGE, (delta, old, source) => {\n if (source !== Quill.sources.USER) return;\n this.balanceTables();\n });\n return true;\n }\n return false;\n });\n });\n }\n}\nexport default Table;\n","import Delta from 'quill-delta';\nimport { EmbedBlot, Scope } from 'parchment';\nimport Quill from '../core/quill.js';\nimport logger from '../core/logger.js';\nimport Module from '../core/module.js';\nconst debug = logger('quill:toolbar');\nclass Toolbar extends Module {\n constructor(quill, options) {\n super(quill, options);\n if (Array.isArray(this.options.container)) {\n const container = document.createElement('div');\n container.setAttribute('role', 'toolbar');\n addControls(container, this.options.container);\n quill.container?.parentNode?.insertBefore(container, quill.container);\n this.container = container;\n } else if (typeof this.options.container === 'string') {\n this.container = document.querySelector(this.options.container);\n } else {\n this.container = this.options.container;\n }\n if (!(this.container instanceof HTMLElement)) {\n debug.error('Container required for toolbar', this.options);\n return;\n }\n this.container.classList.add('ql-toolbar');\n this.controls = [];\n this.handlers = {};\n if (this.options.handlers) {\n Object.keys(this.options.handlers).forEach(format => {\n const handler = this.options.handlers?.[format];\n if (handler) {\n this.addHandler(format, handler);\n }\n });\n }\n Array.from(this.container.querySelectorAll('button, select')).forEach(input => {\n // @ts-expect-error\n this.attach(input);\n });\n this.quill.on(Quill.events.EDITOR_CHANGE, () => {\n const [range] = this.quill.selection.getRange(); // quill.getSelection triggers update\n this.update(range);\n });\n }\n addHandler(format, handler) {\n this.handlers[format] = handler;\n }\n attach(input) {\n let format = Array.from(input.classList).find(className => {\n return className.indexOf('ql-') === 0;\n });\n if (!format) return;\n format = format.slice('ql-'.length);\n if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button');\n }\n if (this.handlers[format] == null && this.quill.scroll.query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input);\n return;\n }\n const eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, e => {\n let value;\n if (input.tagName === 'SELECT') {\n // @ts-expect-error\n if (input.selectedIndex < 0) return;\n // @ts-expect-error\n const selected = input.options[input.selectedIndex];\n if (selected.hasAttribute('selected')) {\n value = false;\n } else {\n value = selected.value || false;\n }\n } else {\n if (input.classList.contains('ql-active')) {\n value = false;\n } else {\n // @ts-expect-error\n value = input.value || !input.hasAttribute('value');\n }\n e.preventDefault();\n }\n this.quill.focus();\n const [range] = this.quill.selection.getRange();\n if (this.handlers[format] != null) {\n this.handlers[format].call(this, value);\n } else if (\n // @ts-expect-error\n this.quill.scroll.query(format).prototype instanceof EmbedBlot) {\n value = prompt(`Enter ${format}`); // eslint-disable-line no-alert\n if (!value) return;\n this.quill.updateContents(new Delta()\n // @ts-expect-error Fix me later\n .retain(range.index)\n // @ts-expect-error Fix me later\n .delete(range.length).insert({\n [format]: value\n }), Quill.sources.USER);\n } else {\n this.quill.format(format, value, Quill.sources.USER);\n }\n this.update(range);\n });\n this.controls.push([format, input]);\n }\n update(range) {\n const formats = range == null ? {} : this.quill.getFormat(range);\n this.controls.forEach(pair => {\n const [format, input] = pair;\n if (input.tagName === 'SELECT') {\n let option = null;\n if (range == null) {\n option = null;\n } else if (formats[format] == null) {\n option = input.querySelector('option[selected]');\n } else if (!Array.isArray(formats[format])) {\n let value = formats[format];\n if (typeof value === 'string') {\n value = value.replace(/\"/g, '\\\\\"');\n }\n option = input.querySelector(`option[value=\"${value}\"]`);\n }\n if (option == null) {\n // @ts-expect-error TODO fix me later\n input.value = ''; // TODO make configurable?\n // @ts-expect-error TODO fix me later\n input.selectedIndex = -1;\n } else {\n option.selected = true;\n }\n } else if (range == null) {\n input.classList.remove('ql-active');\n input.setAttribute('aria-pressed', 'false');\n } else if (input.hasAttribute('value')) {\n // both being null should match (default values)\n // '1' should match with 1 (headers)\n const value = formats[format];\n const isActive = value === input.getAttribute('value') || value != null && value.toString() === input.getAttribute('value') || value == null && !input.getAttribute('value');\n input.classList.toggle('ql-active', isActive);\n input.setAttribute('aria-pressed', isActive.toString());\n } else {\n const isActive = formats[format] != null;\n input.classList.toggle('ql-active', isActive);\n input.setAttribute('aria-pressed', isActive.toString());\n }\n });\n }\n}\nToolbar.DEFAULTS = {};\nfunction addButton(container, format, value) {\n const input = document.createElement('button');\n input.setAttribute('type', 'button');\n input.classList.add(`ql-${format}`);\n input.setAttribute('aria-pressed', 'false');\n if (value != null) {\n input.value = value;\n input.setAttribute('aria-label', `${format}: ${value}`);\n } else {\n input.setAttribute('aria-label', format);\n }\n container.appendChild(input);\n}\nfunction addControls(container, groups) {\n if (!Array.isArray(groups[0])) {\n // @ts-expect-error\n groups = [groups];\n }\n groups.forEach(controls => {\n const group = document.createElement('span');\n group.classList.add('ql-formats');\n controls.forEach(control => {\n if (typeof control === 'string') {\n addButton(group, control);\n } else {\n const format = Object.keys(control)[0];\n const value = control[format];\n if (Array.isArray(value)) {\n addSelect(group, format, value);\n } else {\n addButton(group, format, value);\n }\n }\n });\n container.appendChild(group);\n });\n}\nfunction addSelect(container, format, values) {\n const input = document.createElement('select');\n input.classList.add(`ql-${format}`);\n values.forEach(value => {\n const option = document.createElement('option');\n if (value !== false) {\n option.setAttribute('value', String(value));\n } else {\n option.setAttribute('selected', 'selected');\n }\n input.appendChild(option);\n });\n container.appendChild(input);\n}\nToolbar.DEFAULTS = {\n container: null,\n handlers: {\n clean() {\n const range = this.quill.getSelection();\n if (range == null) return;\n if (range.length === 0) {\n const formats = this.quill.getFormat();\n Object.keys(formats).forEach(name => {\n // Clean functionality in existing apps only clean inline formats\n if (this.quill.scroll.query(name, Scope.INLINE) != null) {\n this.quill.format(name, false, Quill.sources.USER);\n }\n });\n } else {\n this.quill.removeFormat(range.index, range.length, Quill.sources.USER);\n }\n },\n direction(value) {\n const {\n align\n } = this.quill.getFormat();\n if (value === 'rtl' && align == null) {\n this.quill.format('align', 'right', Quill.sources.USER);\n } else if (!value && align === 'right') {\n this.quill.format('align', false, Quill.sources.USER);\n }\n this.quill.format('direction', value, Quill.sources.USER);\n },\n indent(value) {\n const range = this.quill.getSelection();\n // @ts-expect-error\n const formats = this.quill.getFormat(range);\n // @ts-expect-error\n const indent = parseInt(formats.indent || 0, 10);\n if (value === '+1' || value === '-1') {\n let modifier = value === '+1' ? 1 : -1;\n if (formats.direction === 'rtl') modifier *= -1;\n this.quill.format('indent', indent + modifier, Quill.sources.USER);\n }\n },\n link(value) {\n if (value === true) {\n value = prompt('Enter link URL:'); // eslint-disable-line no-alert\n }\n this.quill.format('link', value, Quill.sources.USER);\n },\n list(value) {\n const range = this.quill.getSelection();\n // @ts-expect-error\n const formats = this.quill.getFormat(range);\n if (value === 'check') {\n if (formats.list === 'checked' || formats.list === 'unchecked') {\n this.quill.format('list', false, Quill.sources.USER);\n } else {\n this.quill.format('list', 'unchecked', Quill.sources.USER);\n }\n } else {\n this.quill.format('list', value, Quill.sources.USER);\n }\n }\n }\n};\nexport { Toolbar as default, addControls };\n","const alignLeftIcon = \"\";\nconst alignCenterIcon = \"\";\nconst alignRightIcon = \"\";\nconst alignJustifyIcon = \"\";\nconst backgroundIcon = \"\";\nconst blockquoteIcon = \"\";\nconst boldIcon = \"\";\nconst cleanIcon = \"\";\nconst codeIcon = \"\";\nconst colorIcon = \"\";\nconst directionLeftToRightIcon = \"\";\nconst directionRightToLeftIcon = \"\";\nconst formulaIcon = \"\";\nconst headerIcon = \"\";\nconst header2Icon = \"\";\nconst header3Icon = \"\";\nconst header4Icon = \"\";\nconst header5Icon = \"\";\nconst header6Icon = \"\";\nconst italicIcon = \"\";\nconst imageIcon = \"\";\nconst indentIcon = \"\";\nconst outdentIcon = \"\";\nconst linkIcon = \"\";\nconst listBulletIcon = \"\";\nconst listCheckIcon = \"\";\nconst listOrderedIcon = \"\";\nconst subscriptIcon = \"\";\nconst superscriptIcon = \"\";\nconst strikeIcon = \"\";\nconst tableIcon = \"\";\nconst underlineIcon = \"\";\nconst videoIcon = \"\";\nexport default {\n align: {\n '': alignLeftIcon,\n center: alignCenterIcon,\n right: alignRightIcon,\n justify: alignJustifyIcon\n },\n background: backgroundIcon,\n blockquote: blockquoteIcon,\n bold: boldIcon,\n clean: cleanIcon,\n code: codeIcon,\n 'code-block': codeIcon,\n color: colorIcon,\n direction: {\n '': directionLeftToRightIcon,\n rtl: directionRightToLeftIcon\n },\n formula: formulaIcon,\n header: {\n '1': headerIcon,\n '2': header2Icon,\n '3': header3Icon,\n '4': header4Icon,\n '5': header5Icon,\n '6': header6Icon\n },\n italic: italicIcon,\n image: imageIcon,\n indent: {\n '+1': indentIcon,\n '-1': outdentIcon\n },\n link: linkIcon,\n list: {\n bullet: listBulletIcon,\n check: listCheckIcon,\n ordered: listOrderedIcon\n },\n script: {\n sub: subscriptIcon,\n super: superscriptIcon\n },\n strike: strikeIcon,\n table: tableIcon,\n underline: underlineIcon,\n video: videoIcon\n};\n","const DropdownIcon = \"\";\nlet optionsCounter = 0;\nfunction toggleAriaAttribute(element, attribute) {\n element.setAttribute(attribute, `${!(element.getAttribute(attribute) === 'true')}`);\n}\nclass Picker {\n constructor(select) {\n this.select = select;\n this.container = document.createElement('span');\n this.buildPicker();\n this.select.style.display = 'none';\n // @ts-expect-error Fix me later\n this.select.parentNode.insertBefore(this.container, this.select);\n this.label.addEventListener('mousedown', () => {\n this.togglePicker();\n });\n this.label.addEventListener('keydown', event => {\n switch (event.key) {\n case 'Enter':\n this.togglePicker();\n break;\n case 'Escape':\n this.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n togglePicker() {\n this.container.classList.toggle('ql-expanded');\n // Toggle aria-expanded and aria-hidden to make the picker accessible\n toggleAriaAttribute(this.label, 'aria-expanded');\n // @ts-expect-error\n toggleAriaAttribute(this.options, 'aria-hidden');\n }\n buildItem(option) {\n const item = document.createElement('span');\n // @ts-expect-error\n item.tabIndex = '0';\n item.setAttribute('role', 'button');\n item.classList.add('ql-picker-item');\n const value = option.getAttribute('value');\n if (value) {\n item.setAttribute('data-value', value);\n }\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent);\n }\n item.addEventListener('click', () => {\n this.selectItem(item, true);\n });\n item.addEventListener('keydown', event => {\n switch (event.key) {\n case 'Enter':\n this.selectItem(item, true);\n event.preventDefault();\n break;\n case 'Escape':\n this.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n return item;\n }\n buildLabel() {\n const label = document.createElement('span');\n label.classList.add('ql-picker-label');\n label.innerHTML = DropdownIcon;\n // @ts-expect-error\n label.tabIndex = '0';\n label.setAttribute('role', 'button');\n label.setAttribute('aria-expanded', 'false');\n this.container.appendChild(label);\n return label;\n }\n buildOptions() {\n const options = document.createElement('span');\n options.classList.add('ql-picker-options');\n\n // Don't want screen readers to read this until options are visible\n options.setAttribute('aria-hidden', 'true');\n // @ts-expect-error\n options.tabIndex = '-1';\n\n // Need a unique id for aria-controls\n options.id = `ql-picker-options-${optionsCounter}`;\n optionsCounter += 1;\n this.label.setAttribute('aria-controls', options.id);\n\n // @ts-expect-error\n this.options = options;\n Array.from(this.select.options).forEach(option => {\n const item = this.buildItem(option);\n options.appendChild(item);\n if (option.selected === true) {\n this.selectItem(item);\n }\n });\n this.container.appendChild(options);\n }\n buildPicker() {\n Array.from(this.select.attributes).forEach(item => {\n this.container.setAttribute(item.name, item.value);\n });\n this.container.classList.add('ql-picker');\n this.label = this.buildLabel();\n this.buildOptions();\n }\n escape() {\n // Close menu and return focus to trigger label\n this.close();\n // Need setTimeout for accessibility to ensure that the browser executes\n // focus on the next process thread and after any DOM content changes\n setTimeout(() => this.label.focus(), 1);\n }\n close() {\n this.container.classList.remove('ql-expanded');\n this.label.setAttribute('aria-expanded', 'false');\n // @ts-expect-error\n this.options.setAttribute('aria-hidden', 'true');\n }\n selectItem(item) {\n let trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const selected = this.container.querySelector('.ql-selected');\n if (item === selected) return;\n if (selected != null) {\n selected.classList.remove('ql-selected');\n }\n if (item == null) return;\n item.classList.add('ql-selected');\n // @ts-expect-error Fix me later\n this.select.selectedIndex = Array.from(item.parentNode.children).indexOf(item);\n if (item.hasAttribute('data-value')) {\n // @ts-expect-error Fix me later\n this.label.setAttribute('data-value', item.getAttribute('data-value'));\n } else {\n this.label.removeAttribute('data-value');\n }\n if (item.hasAttribute('data-label')) {\n // @ts-expect-error Fix me later\n this.label.setAttribute('data-label', item.getAttribute('data-label'));\n } else {\n this.label.removeAttribute('data-label');\n }\n if (trigger) {\n this.select.dispatchEvent(new Event('change'));\n this.close();\n }\n }\n update() {\n let option;\n if (this.select.selectedIndex > -1) {\n const item =\n // @ts-expect-error Fix me later\n this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n option = this.select.options[this.select.selectedIndex];\n // @ts-expect-error\n this.selectItem(item);\n } else {\n this.selectItem(null);\n }\n const isActive = option != null && option !== this.select.querySelector('option[selected]');\n this.label.classList.toggle('ql-active', isActive);\n }\n}\nexport default Picker;\n","import Picker from './picker.js';\nclass ColorPicker extends Picker {\n constructor(select, label) {\n super(select);\n this.label.innerHTML = label;\n this.container.classList.add('ql-color-picker');\n Array.from(this.container.querySelectorAll('.ql-picker-item')).slice(0, 7).forEach(item => {\n item.classList.add('ql-primary');\n });\n }\n buildItem(option) {\n const item = super.buildItem(option);\n item.style.backgroundColor = option.getAttribute('value') || '';\n return item;\n }\n selectItem(item, trigger) {\n super.selectItem(item, trigger);\n const colorLabel = this.label.querySelector('.ql-color-label');\n const value = item ? item.getAttribute('data-value') || '' : '';\n if (colorLabel) {\n if (colorLabel.tagName === 'line') {\n colorLabel.style.stroke = value;\n } else {\n colorLabel.style.fill = value;\n }\n }\n }\n}\nexport default ColorPicker;\n","import Picker from './picker.js';\nclass IconPicker extends Picker {\n constructor(select, icons) {\n super(select);\n this.container.classList.add('ql-icon-picker');\n Array.from(this.container.querySelectorAll('.ql-picker-item')).forEach(item => {\n item.innerHTML = icons[item.getAttribute('data-value') || ''];\n });\n this.defaultItem = this.container.querySelector('.ql-selected');\n this.selectItem(this.defaultItem);\n }\n selectItem(target, trigger) {\n super.selectItem(target, trigger);\n const item = target || this.defaultItem;\n if (item != null) {\n if (this.label.innerHTML === item.innerHTML) return;\n this.label.innerHTML = item.innerHTML;\n }\n }\n}\nexport default IconPicker;\n","const isScrollable = el => {\n const {\n overflowY\n } = getComputedStyle(el, null);\n return overflowY !== 'visible' && overflowY !== 'clip';\n};\nclass Tooltip {\n constructor(quill, boundsContainer) {\n this.quill = quill;\n this.boundsContainer = boundsContainer || document.body;\n this.root = quill.addContainer('ql-tooltip');\n // @ts-expect-error\n this.root.innerHTML = this.constructor.TEMPLATE;\n if (isScrollable(this.quill.root)) {\n this.quill.root.addEventListener('scroll', () => {\n this.root.style.marginTop = `${-1 * this.quill.root.scrollTop}px`;\n });\n }\n this.hide();\n }\n hide() {\n this.root.classList.add('ql-hidden');\n }\n position(reference) {\n const left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n // root.scrollTop should be 0 if scrollContainer !== root\n const top = reference.bottom + this.quill.root.scrollTop;\n this.root.style.left = `${left}px`;\n this.root.style.top = `${top}px`;\n this.root.classList.remove('ql-flip');\n const containerBounds = this.boundsContainer.getBoundingClientRect();\n const rootBounds = this.root.getBoundingClientRect();\n let shift = 0;\n if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right;\n this.root.style.left = `${left + shift}px`;\n }\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left;\n this.root.style.left = `${left + shift}px`;\n }\n if (rootBounds.bottom > containerBounds.bottom) {\n const height = rootBounds.bottom - rootBounds.top;\n const verticalShift = reference.bottom - reference.top + height;\n this.root.style.top = `${top - verticalShift}px`;\n this.root.classList.add('ql-flip');\n }\n return shift;\n }\n show() {\n this.root.classList.remove('ql-editing');\n this.root.classList.remove('ql-hidden');\n }\n}\nexport default Tooltip;\n","import { merge } from 'lodash-es';\nimport Emitter from '../core/emitter.js';\nimport Theme from '../core/theme.js';\nimport ColorPicker from '../ui/color-picker.js';\nimport IconPicker from '../ui/icon-picker.js';\nimport Picker from '../ui/picker.js';\nimport Tooltip from '../ui/tooltip.js';\nconst ALIGNS = [false, 'center', 'right', 'justify'];\nconst COLORS = ['#000000', '#e60000', '#ff9900', '#ffff00', '#008a00', '#0066cc', '#9933ff', '#ffffff', '#facccc', '#ffebcc', '#ffffcc', '#cce8cc', '#cce0f5', '#ebd6ff', '#bbbbbb', '#f06666', '#ffc266', '#ffff66', '#66b966', '#66a3e0', '#c285ff', '#888888', '#a10000', '#b26b00', '#b2b200', '#006100', '#0047b2', '#6b24b2', '#444444', '#5c0000', '#663d00', '#666600', '#003700', '#002966', '#3d1466'];\nconst FONTS = [false, 'serif', 'monospace'];\nconst HEADERS = ['1', '2', '3', false];\nconst SIZES = ['small', false, 'large', 'huge'];\nclass BaseTheme extends Theme {\n constructor(quill, options) {\n super(quill, options);\n const listener = e => {\n if (!document.body.contains(quill.root)) {\n document.body.removeEventListener('click', listener);\n return;\n }\n if (this.tooltip != null &&\n // @ts-expect-error\n !this.tooltip.root.contains(e.target) &&\n // @ts-expect-error\n document.activeElement !== this.tooltip.textbox && !this.quill.hasFocus()) {\n this.tooltip.hide();\n }\n if (this.pickers != null) {\n this.pickers.forEach(picker => {\n // @ts-expect-error\n if (!picker.container.contains(e.target)) {\n picker.close();\n }\n });\n }\n };\n quill.emitter.listenDOM('click', document.body, listener);\n }\n addModule(name) {\n const module = super.addModule(name);\n if (name === 'toolbar') {\n // @ts-expect-error\n this.extendToolbar(module);\n }\n return module;\n }\n buildButtons(buttons, icons) {\n Array.from(buttons).forEach(button => {\n const className = button.getAttribute('class') || '';\n className.split(/\\s+/).forEach(name => {\n if (!name.startsWith('ql-')) return;\n name = name.slice('ql-'.length);\n if (icons[name] == null) return;\n if (name === 'direction') {\n // @ts-expect-error\n button.innerHTML = icons[name][''] + icons[name].rtl;\n } else if (typeof icons[name] === 'string') {\n // @ts-expect-error\n button.innerHTML = icons[name];\n } else {\n // @ts-expect-error\n const value = button.value || '';\n // @ts-expect-error\n if (value != null && icons[name][value]) {\n // @ts-expect-error\n button.innerHTML = icons[name][value];\n }\n }\n });\n });\n }\n buildPickers(selects, icons) {\n this.pickers = Array.from(selects).map(select => {\n if (select.classList.contains('ql-align')) {\n if (select.querySelector('option') == null) {\n fillSelect(select, ALIGNS);\n }\n if (typeof icons.align === 'object') {\n return new IconPicker(select, icons.align);\n }\n }\n if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n const format = select.classList.contains('ql-background') ? 'background' : 'color';\n if (select.querySelector('option') == null) {\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n }\n return new ColorPicker(select, icons[format]);\n }\n if (select.querySelector('option') == null) {\n if (select.classList.contains('ql-font')) {\n fillSelect(select, FONTS);\n } else if (select.classList.contains('ql-header')) {\n fillSelect(select, HEADERS);\n } else if (select.classList.contains('ql-size')) {\n fillSelect(select, SIZES);\n }\n }\n return new Picker(select);\n });\n const update = () => {\n this.pickers.forEach(picker => {\n picker.update();\n });\n };\n this.quill.on(Emitter.events.EDITOR_CHANGE, update);\n }\n}\nBaseTheme.DEFAULTS = merge({}, Theme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n formula() {\n this.quill.theme.tooltip.edit('formula');\n },\n image() {\n let fileInput = this.container.querySelector('input.ql-image[type=file]');\n if (fileInput == null) {\n fileInput = document.createElement('input');\n fileInput.setAttribute('type', 'file');\n fileInput.setAttribute('accept', this.quill.uploader.options.mimetypes.join(', '));\n fileInput.classList.add('ql-image');\n fileInput.addEventListener('change', () => {\n const range = this.quill.getSelection(true);\n this.quill.uploader.upload(range, fileInput.files);\n fileInput.value = '';\n });\n this.container.appendChild(fileInput);\n }\n fileInput.click();\n },\n video() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n});\nclass BaseTooltip extends Tooltip {\n constructor(quill, boundsContainer) {\n super(quill, boundsContainer);\n this.textbox = this.root.querySelector('input[type=\"text\"]');\n this.listen();\n }\n listen() {\n // @ts-expect-error Fix me later\n this.textbox.addEventListener('keydown', event => {\n if (event.key === 'Enter') {\n this.save();\n event.preventDefault();\n } else if (event.key === 'Escape') {\n this.cancel();\n event.preventDefault();\n }\n });\n }\n cancel() {\n this.hide();\n this.restoreFocus();\n }\n edit() {\n let mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n let preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n this.root.classList.remove('ql-hidden');\n this.root.classList.add('ql-editing');\n if (this.textbox == null) return;\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\n }\n const bounds = this.quill.getBounds(this.quill.selection.savedRange);\n if (bounds != null) {\n this.position(bounds);\n }\n this.textbox.select();\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute(`data-${mode}`) || '');\n this.root.setAttribute('data-mode', mode);\n }\n restoreFocus() {\n this.quill.focus({\n preventScroll: true\n });\n }\n save() {\n // @ts-expect-error Fix me later\n let {\n value\n } = this.textbox;\n switch (this.root.getAttribute('data-mode')) {\n case 'link':\n {\n const {\n scrollTop\n } = this.quill.root;\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, Emitter.sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, Emitter.sources.USER);\n }\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n case 'video':\n {\n value = extractVideoUrl(value);\n }\n // eslint-disable-next-line no-fallthrough\n case 'formula':\n {\n if (!value) break;\n const range = this.quill.getSelection(true);\n if (range != null) {\n const index = range.index + range.length;\n this.quill.insertEmbed(index,\n // @ts-expect-error Fix me later\n this.root.getAttribute('data-mode'), value, Emitter.sources.USER);\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', Emitter.sources.USER);\n }\n this.quill.setSelection(index + 2, Emitter.sources.USER);\n }\n break;\n }\n default:\n }\n // @ts-expect-error Fix me later\n this.textbox.value = '';\n this.hide();\n }\n}\nfunction extractVideoUrl(url) {\n let match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n if (match) {\n return `${match[1] || 'https'}://www.youtube.com/embed/${match[2]}?showinfo=0`;\n }\n // eslint-disable-next-line no-cond-assign\n if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) {\n return `${match[1] || 'https'}://player.vimeo.com/video/${match[2]}/`;\n }\n return url;\n}\nfunction fillSelect(select, values) {\n let defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n values.forEach(value => {\n const option = document.createElement('option');\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', String(value));\n }\n select.appendChild(option);\n });\n}\nexport { BaseTooltip, BaseTheme as default };\n","import { merge } from 'lodash-es';\nimport Emitter from '../core/emitter.js';\nimport BaseTheme, { BaseTooltip } from './base.js';\nimport { Range } from '../core/selection.js';\nimport icons from '../ui/icons.js';\nimport Quill from '../core/quill.js';\nconst TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{\n header: 1\n}, {\n header: 2\n}, 'blockquote']];\nclass BubbleTooltip extends BaseTooltip {\n static TEMPLATE = ['', '
    ', '', '', '
    '].join('');\n constructor(quill, bounds) {\n super(quill, bounds);\n this.quill.on(Emitter.events.EDITOR_CHANGE, (type, range, oldRange, source) => {\n if (type !== Emitter.events.SELECTION_CHANGE) return;\n if (range != null && range.length > 0 && source === Emitter.sources.USER) {\n this.show();\n // Lock our width so we will expand beyond our offsetParent boundaries\n this.root.style.left = '0px';\n this.root.style.width = '';\n this.root.style.width = `${this.root.offsetWidth}px`;\n const lines = this.quill.getLines(range.index, range.length);\n if (lines.length === 1) {\n const bounds = this.quill.getBounds(range);\n if (bounds != null) {\n this.position(bounds);\n }\n } else {\n const lastLine = lines[lines.length - 1];\n const index = this.quill.getIndex(lastLine);\n const length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n const indexBounds = this.quill.getBounds(new Range(index, length));\n if (indexBounds != null) {\n this.position(indexBounds);\n }\n }\n } else if (document.activeElement !== this.textbox && this.quill.hasFocus()) {\n this.hide();\n }\n });\n }\n listen() {\n super.listen();\n // @ts-expect-error Fix me later\n this.root.querySelector('.ql-close').addEventListener('click', () => {\n this.root.classList.remove('ql-editing');\n });\n this.quill.on(Emitter.events.SCROLL_OPTIMIZE, () => {\n // Let selection be restored by toolbar handlers before repositioning\n setTimeout(() => {\n if (this.root.classList.contains('ql-hidden')) return;\n const range = this.quill.getSelection();\n if (range != null) {\n const bounds = this.quill.getBounds(range);\n if (bounds != null) {\n this.position(bounds);\n }\n }\n }, 1);\n });\n }\n cancel() {\n this.show();\n }\n position(reference) {\n const shift = super.position(reference);\n const arrow = this.root.querySelector('.ql-tooltip-arrow');\n // @ts-expect-error\n arrow.style.marginLeft = '';\n if (shift !== 0) {\n // @ts-expect-error\n arrow.style.marginLeft = `${-1 * shift - arrow.offsetWidth / 2}px`;\n }\n return shift;\n }\n}\nclass BubbleTheme extends BaseTheme {\n constructor(quill, options) {\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n super(quill, options);\n this.quill.container.classList.add('ql-bubble');\n }\n extendToolbar(toolbar) {\n // @ts-expect-error\n this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n if (toolbar.container != null) {\n this.tooltip.root.appendChild(toolbar.container);\n this.buildButtons(toolbar.container.querySelectorAll('button'), icons);\n this.buildPickers(toolbar.container.querySelectorAll('select'), icons);\n }\n }\n}\nBubbleTheme.DEFAULTS = merge({}, BaseTheme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link(value) {\n if (!value) {\n this.quill.format('link', false, Quill.sources.USER);\n } else {\n // @ts-expect-error\n this.quill.theme.tooltip.edit();\n }\n }\n }\n }\n }\n});\nexport { BubbleTooltip, BubbleTheme as default };\n","import { merge } from 'lodash-es';\nimport Emitter from '../core/emitter.js';\nimport BaseTheme, { BaseTooltip } from './base.js';\nimport LinkBlot from '../formats/link.js';\nimport { Range } from '../core/selection.js';\nimport icons from '../ui/icons.js';\nimport Quill from '../core/quill.js';\nconst TOOLBAR_CONFIG = [[{\n header: ['1', '2', '3', false]\n}], ['bold', 'italic', 'underline', 'link'], [{\n list: 'ordered'\n}, {\n list: 'bullet'\n}], ['clean']];\nclass SnowTooltip extends BaseTooltip {\n static TEMPLATE = ['', '', '', ''].join('');\n preview = this.root.querySelector('a.ql-preview');\n listen() {\n super.listen();\n // @ts-expect-error Fix me later\n this.root.querySelector('a.ql-action').addEventListener('click', event => {\n if (this.root.classList.contains('ql-editing')) {\n this.save();\n } else {\n // @ts-expect-error Fix me later\n this.edit('link', this.preview.textContent);\n }\n event.preventDefault();\n });\n // @ts-expect-error Fix me later\n this.root.querySelector('a.ql-remove').addEventListener('click', event => {\n if (this.linkRange != null) {\n const range = this.linkRange;\n this.restoreFocus();\n this.quill.formatText(range, 'link', false, Emitter.sources.USER);\n delete this.linkRange;\n }\n event.preventDefault();\n this.hide();\n });\n this.quill.on(Emitter.events.SELECTION_CHANGE, (range, oldRange, source) => {\n if (range == null) return;\n if (range.length === 0 && source === Emitter.sources.USER) {\n const [link, offset] = this.quill.scroll.descendant(LinkBlot, range.index);\n if (link != null) {\n this.linkRange = new Range(range.index - offset, link.length());\n const preview = LinkBlot.formats(link.domNode);\n // @ts-expect-error Fix me later\n this.preview.textContent = preview;\n // @ts-expect-error Fix me later\n this.preview.setAttribute('href', preview);\n this.show();\n const bounds = this.quill.getBounds(this.linkRange);\n if (bounds != null) {\n this.position(bounds);\n }\n return;\n }\n } else {\n delete this.linkRange;\n }\n this.hide();\n });\n }\n show() {\n super.show();\n this.root.removeAttribute('data-mode');\n }\n}\nclass SnowTheme extends BaseTheme {\n constructor(quill, options) {\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n super(quill, options);\n this.quill.container.classList.add('ql-snow');\n }\n extendToolbar(toolbar) {\n if (toolbar.container != null) {\n toolbar.container.classList.add('ql-snow');\n this.buildButtons(toolbar.container.querySelectorAll('button'), icons);\n this.buildPickers(toolbar.container.querySelectorAll('select'), icons);\n // @ts-expect-error\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n if (toolbar.container.querySelector('.ql-link')) {\n this.quill.keyboard.addBinding({\n key: 'k',\n shortKey: true\n }, (_range, context) => {\n toolbar.handlers.link.call(toolbar, !context.format.link);\n });\n }\n }\n }\n}\nSnowTheme.DEFAULTS = merge({}, BaseTheme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link(value) {\n if (value) {\n const range = this.quill.getSelection();\n if (range == null || range.length === 0) return;\n let preview = this.quill.getText(range);\n if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = `mailto:${preview}`;\n }\n // @ts-expect-error\n const {\n tooltip\n } = this.quill.theme;\n tooltip.edit('link', preview);\n } else {\n this.quill.format('link', false, Quill.sources.USER);\n }\n }\n }\n }\n }\n});\nexport default SnowTheme;\n","import Quill, { Parchment, Range } from './core.js';\nimport { AlignClass, AlignStyle } from './formats/align.js';\nimport { DirectionAttribute, DirectionClass, DirectionStyle } from './formats/direction.js';\nimport Indent from './formats/indent.js';\nimport Blockquote from './formats/blockquote.js';\nimport Header from './formats/header.js';\nimport List from './formats/list.js';\nimport { BackgroundClass, BackgroundStyle } from './formats/background.js';\nimport { ColorClass, ColorStyle } from './formats/color.js';\nimport { FontClass, FontStyle } from './formats/font.js';\nimport { SizeClass, SizeStyle } from './formats/size.js';\nimport Bold from './formats/bold.js';\nimport Italic from './formats/italic.js';\nimport Link from './formats/link.js';\nimport Script from './formats/script.js';\nimport Strike from './formats/strike.js';\nimport Underline from './formats/underline.js';\nimport Formula from './formats/formula.js';\nimport Image from './formats/image.js';\nimport Video from './formats/video.js';\nimport CodeBlock, { Code as InlineCode } from './formats/code.js';\nimport Syntax from './modules/syntax.js';\nimport Table from './modules/table.js';\nimport Toolbar from './modules/toolbar.js';\nimport Icons from './ui/icons.js';\nimport Picker from './ui/picker.js';\nimport ColorPicker from './ui/color-picker.js';\nimport IconPicker from './ui/icon-picker.js';\nimport Tooltip from './ui/tooltip.js';\nimport BubbleTheme from './themes/bubble.js';\nimport SnowTheme from './themes/snow.js';\nQuill.register({\n 'attributors/attribute/direction': DirectionAttribute,\n 'attributors/class/align': AlignClass,\n 'attributors/class/background': BackgroundClass,\n 'attributors/class/color': ColorClass,\n 'attributors/class/direction': DirectionClass,\n 'attributors/class/font': FontClass,\n 'attributors/class/size': SizeClass,\n 'attributors/style/align': AlignStyle,\n 'attributors/style/background': BackgroundStyle,\n 'attributors/style/color': ColorStyle,\n 'attributors/style/direction': DirectionStyle,\n 'attributors/style/font': FontStyle,\n 'attributors/style/size': SizeStyle\n}, true);\nQuill.register({\n 'formats/align': AlignClass,\n 'formats/direction': DirectionClass,\n 'formats/indent': Indent,\n 'formats/background': BackgroundStyle,\n 'formats/color': ColorStyle,\n 'formats/font': FontClass,\n 'formats/size': SizeClass,\n 'formats/blockquote': Blockquote,\n 'formats/code-block': CodeBlock,\n 'formats/header': Header,\n 'formats/list': List,\n 'formats/bold': Bold,\n 'formats/code': InlineCode,\n 'formats/italic': Italic,\n 'formats/link': Link,\n 'formats/script': Script,\n 'formats/strike': Strike,\n 'formats/underline': Underline,\n 'formats/formula': Formula,\n 'formats/image': Image,\n 'formats/video': Video,\n 'modules/syntax': Syntax,\n 'modules/table': Table,\n 'modules/toolbar': Toolbar,\n 'themes/bubble': BubbleTheme,\n 'themes/snow': SnowTheme,\n 'ui/icons': Icons,\n 'ui/picker': Picker,\n 'ui/icon-picker': IconPicker,\n 'ui/color-picker': ColorPicker,\n 'ui/tooltip': Tooltip\n}, true);\nexport { Module } from './core.js';\nexport { Parchment, Range };\nexport default Quill;\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","export default function transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopedSlidesLimit: true,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor() {\n let el;\n let params;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n\n if (exact === void 0) {\n exact = false;\n }\n\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler() {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (threshold === void 0) {\n threshold = 0.5;\n }\n\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n $(el).attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < swiper.loopedSlides; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlides.push(slides.eq(index)[0]);\n prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\n }\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getWindow } from 'ssr-window';\nexport default function Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n\n const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`
    ${slide}
    `);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides\n } = swiper.params;\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n\n emit('virtualUpdate');\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n\n return slidesToRender;\n }()\n });\n\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n\n return;\n }\n\n const prependIndexes = [];\n const appendIndexes = [];\n\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n\n appendIndexes.forEach(index => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach(index => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n\n update(true);\n }\n\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n\n function removeAllSlides() {\n swiper.virtual.slides = [];\n\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","export default function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n init();\n render();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl,\n progress\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n }\n\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n $el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n clearTimeout(dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n\n emit('scrollbarDragStart', e);\n }\n\n function onDragMove(e) {\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const {\n scrollbar,\n touchEventsTouch,\n touchEventsDesktop,\n params,\n support\n } = swiper;\n const $el = scrollbar.$el;\n if (!$el) return;\n const target = $el[0];\n const activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n\n function init() {\n const {\n scrollbar,\n $el: $swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let $el = $(params.el);\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n if ($dragEl.length === 0) {\n $dragEl = $(`
    `);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.scrollbar;\n const $el = swiper.scrollbar.$el;\n\n if ($el) {\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n\n disableDraggable();\n }\n\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.scrollbar;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n init();\n updateSize();\n setTranslate();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\nexport default function Zoom(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n\n scale = value;\n }\n\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n } // Events\n\n\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n\n if (!support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n\n isScaling = true;\n }\n\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n }\n\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n return;\n }\n\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n } // Define if we need image drag\n\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n\n if (e.cancelable) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n } // Velocity\n\n\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY; // Define if we need image drag\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n } // Toggle Zoom\n\n\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const {\n passiveListener\n } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n } // Attach/Detach Events\n\n\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n });\n swiper.controller = {\n control: undefined\n };\n\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n } // xxx: for now i will just save one spline function to to\n\n\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\n }\n }\n\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\nexport default function A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n\n function addElId($el, id) {\n $el.attr('id', id);\n }\n\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.each(bulletEl => {\n const $bulletEl = $(bulletEl);\n\n if (swiper.params.pagination.clickable) {\n makeElFocusable($bulletEl);\n\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n }\n }\n\n if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n $bulletEl.attr('aria-current', 'true');\n } else {\n $bulletEl.removeAttr('aria-current');\n }\n });\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n const handleFocus = e => {\n const slideEl = e.target.closest(`.${swiper.params.slideClass}`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n\n const initSlides = () => {\n const params = swiper.params.a11y;\n\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n\n if (params.slideRole) {\n addElRole($(swiper.slides), params.slideRole);\n }\n\n const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n\n if (params.slideLabelMessage) {\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n }\n };\n\n const init = () => {\n const params = swiper.params.a11y;\n swiper.$el.append(liveRegion); // Container\n\n const $containerEl = swiper.$el;\n\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n } // Wrapper\n\n\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live); // Slide\n\n initSlides(); // Navigation\n\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.on('focus', handleFocus, true);\n };\n\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.off('focus', handleFocus, true);\n }\n\n on('beforeInit', () => {\n liveRegion = $(``);\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n let timeout;\n swiper.autoplay = {\n running: false,\n paused: false\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n\n function run() {\n if (!swiper.size) {\n swiper.autoplay.running = false;\n swiper.autoplay.paused = false;\n return;\n }\n\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs\n\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}","import { now } from '../../shared/utils.js';\nexport default function freeMode(_ref) {\n let {\n swiper,\n extendParams,\n emit,\n once\n } = _ref;\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n\n function onTouchStart() {\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n\n function onTouchMove() {\n const {\n touchEventsData: data,\n touches\n } = swiper; // Velocity\n\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n\n function onTouchEnd(_ref2) {\n let {\n currentPos\n } = _ref2;\n const {\n params,\n $wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper; // Time diff\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n } // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n\n\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n } // Fix duration\n\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}","import * as i7 from '@angular/cdk/portal';\nimport { ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, Injectable, Optional, Inject, ViewChild, forwardRef, TemplateRef, ContentChild, Directive, NgModule } from '@angular/core';\nimport { Subscription, Subject, merge } from 'rxjs';\nimport { ESCAPE, SPACE, ENTER, PAGE_DOWN, PAGE_UP, END, HOME, DOWN_ARROW, UP_ARROW, RIGHT_ARROW, LEFT_ARROW } from '@angular/cdk/keycodes';\nimport { take, startWith, takeUntil, debounceTime, filter } from 'rxjs/operators';\nimport * as i1$1 from '@angular/material/datepicker';\nimport { DateRange, matDatepickerAnimations, MAT_DATEPICKER_SCROLL_STRATEGY, MatDatepickerModule, MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER } from '@angular/material/datepicker';\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { DateAdapter, mixinColor, MAT_DATE_LOCALE } from '@angular/material/core';\nimport * as i2 from '@angular/cdk/bidi';\nimport * as i3 from '@angular/material/button';\nimport { MatButtonModule } from '@angular/material/button';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i9 from '@angular/cdk/overlay';\nimport { OverlayConfig } from '@angular/cdk/overlay';\nimport * as i2$1 from '@angular/forms';\nimport { Validators, NG_VALUE_ACCESSOR, NG_VALIDATORS, ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport * as i4 from '@angular/material/icon';\nimport { MatIconModule } from '@angular/material/icon';\nimport * as i2$2 from '@angular/material/form-field';\nimport * as i7$1 from '@angular/material/input';\nimport { MAT_INPUT_VALUE_ACCESSOR, MatInputModule } from '@angular/material/input';\nimport * as i8 from '@angular/material/dialog';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport * as i1$2 from '@angular/cdk/platform';\nimport { PlatformModule } from '@angular/cdk/platform';\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\nconst NGX_MAT_DATE_FORMATS = new InjectionToken('ngx-mat-date-formats');\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n/**\r\n * An internal class that represents the data corresponding to a single calendar cell.\r\n * @docs-private\r\n */\r\nclass NgxMatCalendarCell {\r\n constructor(value, displayValue, ariaLabel, enabled, cssClasses = {}, compareValue = value, rawValue) {\r\n this.value = value;\r\n this.displayValue = displayValue;\r\n this.ariaLabel = ariaLabel;\r\n this.enabled = enabled;\r\n this.cssClasses = cssClasses;\r\n this.compareValue = compareValue;\r\n this.rawValue = rawValue;\r\n }\r\n}\r\n/**\r\n * An internal component used to display calendar data in a table.\r\n * @docs-private\r\n */\r\nclass NgxMatCalendarBody {\r\n constructor(_elementRef, _ngZone) {\r\n this._elementRef = _elementRef;\r\n this._ngZone = _ngZone;\r\n /** The number of columns in the table. */\r\n this.numCols = 7;\r\n /** The cell number of the active cell in the table. */\r\n this.activeCell = 0;\r\n /** Whether a range is being selected. */\r\n this.isRange = false;\r\n /**\r\n * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\r\n * maintained even as the table resizes.\r\n */\r\n this.cellAspectRatio = 1;\r\n /** Start of the preview range. */\r\n this.previewStart = null;\r\n /** End of the preview range. */\r\n this.previewEnd = null;\r\n /** Emits when a new value is selected. */\r\n this.selectedValueChange = new EventEmitter();\r\n /** Emits when the preview has changed as a result of a user action. */\r\n this.previewChange = new EventEmitter();\r\n /**\r\n * Event handler for when the user enters an element\r\n * inside the calendar body (e.g. by hovering in or focus).\r\n */\r\n this._enterHandler = (event) => {\r\n if (this._skipNextFocus && event.type === 'focus') {\r\n this._skipNextFocus = false;\r\n return;\r\n }\r\n // We only need to hit the zone when we're selecting a range.\r\n if (event.target && this.isRange) {\r\n const cell = this._getCellFromElement(event.target);\r\n if (cell) {\r\n this._ngZone.run(() => this.previewChange.emit({ value: cell.enabled ? cell : null, event }));\r\n }\r\n }\r\n };\r\n /**\r\n * Event handler for when the user's pointer leaves an element\r\n * inside the calendar body (e.g. by hovering out or blurring).\r\n */\r\n this._leaveHandler = (event) => {\r\n // We only need to hit the zone when we're selecting a range.\r\n if (this.previewEnd !== null && this.isRange) {\r\n // Only reset the preview end value when leaving cells. This looks better, because\r\n // we have a gap between the cells and the rows and we don't want to remove the\r\n // range just for it to show up again when the user moves a few pixels to the side.\r\n if (event.target && isTableCell(event.target)) {\r\n this._ngZone.run(() => this.previewChange.emit({ value: null, event }));\r\n }\r\n }\r\n };\r\n _ngZone.runOutsideAngular(() => {\r\n const element = _elementRef.nativeElement;\r\n element.addEventListener('mouseenter', this._enterHandler, true);\r\n element.addEventListener('focus', this._enterHandler, true);\r\n element.addEventListener('mouseleave', this._leaveHandler, true);\r\n element.addEventListener('blur', this._leaveHandler, true);\r\n });\r\n }\r\n /** Called when a cell is clicked. */\r\n _cellClicked(cell, event) {\r\n if (cell.enabled) {\r\n this.selectedValueChange.emit({ value: cell.value, event });\r\n }\r\n }\r\n /** Returns whether a cell should be marked as selected. */\r\n _isSelected(cell) {\r\n return this.startValue === cell.compareValue || this.endValue === cell.compareValue;\r\n }\r\n ngOnChanges(changes) {\r\n const columnChanges = changes['numCols'];\r\n const { rows, numCols } = this;\r\n if (changes['rows'] || columnChanges) {\r\n this._firstRowOffset = rows && rows.length && rows[0].length ? numCols - rows[0].length : 0;\r\n }\r\n if (changes['cellAspectRatio'] || columnChanges || !this._cellPadding) {\r\n this._cellPadding = `${50 * this.cellAspectRatio / numCols}%`;\r\n }\r\n if (columnChanges || !this._cellWidth) {\r\n this._cellWidth = `${100 / numCols}%`;\r\n }\r\n }\r\n ngOnDestroy() {\r\n const element = this._elementRef.nativeElement;\r\n element.removeEventListener('mouseenter', this._enterHandler, true);\r\n element.removeEventListener('focus', this._enterHandler, true);\r\n element.removeEventListener('mouseleave', this._leaveHandler, true);\r\n element.removeEventListener('blur', this._leaveHandler, true);\r\n }\r\n /** Returns whether a cell is active. */\r\n _isActiveCell(rowIndex, colIndex) {\r\n let cellNumber = rowIndex * this.numCols + colIndex;\r\n // Account for the fact that the first row may not have as many cells.\r\n if (rowIndex) {\r\n cellNumber -= this._firstRowOffset;\r\n }\r\n return cellNumber == this.activeCell;\r\n }\r\n /** Focuses the active cell after the microtask queue is empty. */\r\n _focusActiveCell(movePreview = true) {\r\n this._ngZone.runOutsideAngular(() => {\r\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\r\n const activeCell = this._elementRef.nativeElement.querySelector('.ngx-mat-calendar-body-active');\r\n if (activeCell) {\r\n if (!movePreview) {\r\n this._skipNextFocus = true;\r\n }\r\n activeCell.focus();\r\n }\r\n });\r\n });\r\n }\r\n /** Gets whether a value is the start of the main range. */\r\n _isRangeStart(value) {\r\n return isStart(value, this.startValue, this.endValue);\r\n }\r\n /** Gets whether a value is the end of the main range. */\r\n _isRangeEnd(value) {\r\n return isEnd(value, this.startValue, this.endValue);\r\n }\r\n /** Gets whether a value is within the currently-selected range. */\r\n _isInRange(value) {\r\n return isInRange(value, this.startValue, this.endValue, this.isRange);\r\n }\r\n /** Gets whether a value is the start of the comparison range. */\r\n _isComparisonStart(value) {\r\n return isStart(value, this.comparisonStart, this.comparisonEnd);\r\n }\r\n /** Whether the cell is a start bridge cell between the main and comparison ranges. */\r\n _isComparisonBridgeStart(value, rowIndex, colIndex) {\r\n if (!this._isComparisonStart(value) || this._isRangeStart(value) || !this._isInRange(value)) {\r\n return false;\r\n }\r\n let previousCell = this.rows[rowIndex][colIndex - 1];\r\n if (!previousCell) {\r\n const previousRow = this.rows[rowIndex - 1];\r\n previousCell = previousRow && previousRow[previousRow.length - 1];\r\n }\r\n return previousCell && !this._isRangeEnd(previousCell.compareValue);\r\n }\r\n /** Whether the cell is an end bridge cell between the main and comparison ranges. */\r\n _isComparisonBridgeEnd(value, rowIndex, colIndex) {\r\n if (!this._isComparisonEnd(value) || this._isRangeEnd(value) || !this._isInRange(value)) {\r\n return false;\r\n }\r\n let nextCell = this.rows[rowIndex][colIndex + 1];\r\n if (!nextCell) {\r\n const nextRow = this.rows[rowIndex + 1];\r\n nextCell = nextRow && nextRow[0];\r\n }\r\n return nextCell && !this._isRangeStart(nextCell.compareValue);\r\n }\r\n /** Gets whether a value is the end of the comparison range. */\r\n _isComparisonEnd(value) {\r\n return isEnd(value, this.comparisonStart, this.comparisonEnd);\r\n }\r\n /** Gets whether a value is within the current comparison range. */\r\n _isInComparisonRange(value) {\r\n return isInRange(value, this.comparisonStart, this.comparisonEnd, this.isRange);\r\n }\r\n /** Gets whether a value is the start of the preview range. */\r\n _isPreviewStart(value) {\r\n return isStart(value, this.previewStart, this.previewEnd);\r\n }\r\n /** Gets whether a value is the end of the preview range. */\r\n _isPreviewEnd(value) {\r\n return isEnd(value, this.previewStart, this.previewEnd);\r\n }\r\n /** Gets whether a value is inside the preview range. */\r\n _isInPreview(value) {\r\n return isInRange(value, this.previewStart, this.previewEnd, this.isRange);\r\n }\r\n /** Finds the NgxMatCalendarCell that corresponds to a DOM node. */\r\n _getCellFromElement(element) {\r\n let cell;\r\n if (isTableCell(element)) {\r\n cell = element;\r\n }\r\n else if (isTableCell(element.parentNode)) {\r\n cell = element.parentNode;\r\n }\r\n if (cell) {\r\n const row = cell.getAttribute('data-ngx-mat-row');\r\n const col = cell.getAttribute('data-ngx-mat-col');\r\n if (row && col) {\r\n return this.rows[parseInt(row)][parseInt(col)];\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NgxMatCalendarBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatCalendarBody, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });\r\n/** @nocollapse */ /** @nocollapse */ NgxMatCalendarBody.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.1\", type: NgxMatCalendarBody, selector: \"[ngx-mat-calendar-body]\", inputs: { label: \"label\", rows: \"rows\", todayValue: \"todayValue\", startValue: \"startValue\", endValue: \"endValue\", labelMinRequiredCells: \"labelMinRequiredCells\", numCols: \"numCols\", activeCell: \"activeCell\", isRange: \"isRange\", cellAspectRatio: \"cellAspectRatio\", comparisonStart: \"comparisonStart\", comparisonEnd: \"comparisonEnd\", previewStart: \"previewStart\", previewEnd: \"previewEnd\" }, outputs: { selectedValueChange: \"selectedValueChange\", previewChange: \"previewChange\" }, host: { attributes: { \"role\": \"grid\", \"aria-readonly\": \"true\" }, classAttribute: \"ngx-mat-calendar-body\" }, exportAs: [\"NgxMatCalendarBody\"], usesOnChanges: true, ngImport: i0, template: \"\\r\\n\\r\\n \\r\\n {{label}}\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n {{_firstRowOffset >= labelMinRequiredCells ? label : ''}}\\r\\n \\r\\n \\r\\n
    \\r\\n {{item.displayValue}}\\r\\n
    \\r\\n
    \\r\\n \\r\\n\\r\\n\", styles: [\".mat-calendar-body{min-width:224px}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.7142857143%;padding-right:4.7142857143%}.mat-calendar-body-cell{position:relative;height:0;line-height:0;text-align:center;outline:none;cursor:pointer}.mat-calendar-body-cell:before,.mat-calendar-body-cell:after,.mat-calendar-body-cell-preview{content:\\\"\\\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;height:90%;width:100%}.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range):before,.mat-calendar-body-range-start:after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start):before,.mat-calendar-body-comparison-start:after,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range):before,[dir=rtl] .mat-calendar-body-range-start:after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start):before,[dir=rtl] .mat-calendar-body-comparison-start:after,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:0;border-radius:0 999px 999px 0}.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range):before,.mat-calendar-body-range-end:after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end):before,.mat-calendar-body-comparison-end:after,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range):before,[dir=rtl] .mat-calendar-body-range-end:after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end):before,[dir=rtl] .mat-calendar-body-comparison-end:after,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{left:5%;border-radius:999px 0 0 999px}[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end:after,[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start:after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-start.mat-calendar-body-range-end:after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end:after,.mat-calendar-body-comparison-end.mat-calendar-body-range-start:after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start:after{width:90%}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:dashed 1px;border-bottom:dashed 1px}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:dashed 1px}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:dashed 1px}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:dashed 1px}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:dashed 1px}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}.cdk-high-contrast-active .mat-calendar-body-cell-content{border:none}.cdk-high-contrast-active .mat-datepicker-popup:not(:empty),.cdk-high-contrast-active .mat-calendar-body-selected{outline:solid 1px}.cdk-high-contrast-active .mat-calendar-body-today{outline:dotted 1px}.cdk-high-contrast-active .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected),.cdk-high-contrast-active .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){outline:dotted 2px}[dir=rtl] .mat-calendar-body-label{text-align:right}@media (hover: none){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){background-color:transparent}}\\n\"], directives: [{ type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatCalendarBody, decorators: [{\r\n type: Component,\r\n args: [{ selector: '[ngx-mat-calendar-body]', host: {\r\n 'class': 'ngx-mat-calendar-body',\r\n 'role': 'grid',\r\n 'aria-readonly': 'true'\r\n }, exportAs: 'NgxMatCalendarBody', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\r\\n\\r\\n \\r\\n {{label}}\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n {{_firstRowOffset >= labelMinRequiredCells ? label : ''}}\\r\\n \\r\\n \\r\\n
    \\r\\n {{item.displayValue}}\\r\\n
    \\r\\n
    \\r\\n \\r\\n\\r\\n\", styles: [\".mat-calendar-body{min-width:224px}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.7142857143%;padding-right:4.7142857143%}.mat-calendar-body-cell{position:relative;height:0;line-height:0;text-align:center;outline:none;cursor:pointer}.mat-calendar-body-cell:before,.mat-calendar-body-cell:after,.mat-calendar-body-cell-preview{content:\\\"\\\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;height:90%;width:100%}.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range):before,.mat-calendar-body-range-start:after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start):before,.mat-calendar-body-comparison-start:after,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range):before,[dir=rtl] .mat-calendar-body-range-start:after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start):before,[dir=rtl] .mat-calendar-body-comparison-start:after,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:0;border-radius:0 999px 999px 0}.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range):before,.mat-calendar-body-range-end:after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end):before,.mat-calendar-body-comparison-end:after,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range):before,[dir=rtl] .mat-calendar-body-range-end:after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end):before,[dir=rtl] .mat-calendar-body-comparison-end:after,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{left:5%;border-radius:999px 0 0 999px}[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end:after,[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start:after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-start.mat-calendar-body-range-end:after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end:after,.mat-calendar-body-comparison-end.mat-calendar-body-range-start:after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start:after{width:90%}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:dashed 1px;border-bottom:dashed 1px}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:dashed 1px}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:dashed 1px}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:dashed 1px}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:dashed 1px}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}.cdk-high-contrast-active .mat-calendar-body-cell-content{border:none}.cdk-high-contrast-active .mat-datepicker-popup:not(:empty),.cdk-high-contrast-active .mat-calendar-body-selected{outline:solid 1px}.cdk-high-contrast-active .mat-calendar-body-today{outline:dotted 1px}.cdk-high-contrast-active .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected),.cdk-high-contrast-active .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){outline:dotted 2px}[dir=rtl] .mat-calendar-body-label{text-align:right}@media (hover: none){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){background-color:transparent}}\\n\"] }]\r\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { label: [{\r\n type: Input\r\n }], rows: [{\r\n type: Input\r\n }], todayValue: [{\r\n type: Input\r\n }], startValue: [{\r\n type: Input\r\n }], endValue: [{\r\n type: Input\r\n }], labelMinRequiredCells: [{\r\n type: Input\r\n }], numCols: [{\r\n type: Input\r\n }], activeCell: [{\r\n type: Input\r\n }], isRange: [{\r\n type: Input\r\n }], cellAspectRatio: [{\r\n type: Input\r\n }], comparisonStart: [{\r\n type: Input\r\n }], comparisonEnd: [{\r\n type: Input\r\n }], previewStart: [{\r\n type: Input\r\n }], previewEnd: [{\r\n type: Input\r\n }], selectedValueChange: [{\r\n type: Output\r\n }], previewChange: [{\r\n type: Output\r\n }] } });\r\n/** Checks whether a node is a table cell element. */\r\nfunction isTableCell(node) {\r\n return node.nodeName === 'TD';\r\n}\r\n/** Checks whether a value is the start of a range. */\r\nfunction isStart(value, start, end) {\r\n return end !== null && start !== end && value < end && value === start;\r\n}\r\n/** Checks whether a value is the end of a range. */\r\nfunction isEnd(value, start, end) {\r\n return start !== null && start !== end && value >= start && value === end;\r\n}\r\n/** Checks whether a value is inside of a range. */\r\nfunction isInRange(value, start, end, rangeEnabled) {\r\n return rangeEnabled && start !== null && end !== null && start !== end &&\r\n value >= start && value <= end;\r\n}\n\nclass NgxMatDateAdapter extends DateAdapter {\r\n /**\r\n * Check if two date have same time\r\n * @param a Date 1\r\n * @param b Date 2\r\n */\r\n isSameTime(a, b) {\r\n if (a == null || b == null)\r\n return true;\r\n return this.getHour(a) === this.getHour(b)\r\n && this.getMinute(a) === this.getMinute(b)\r\n && this.getSecond(a) === this.getSecond(b);\r\n }\r\n /**\r\n * Copy time from a date to a another date\r\n * @param toDate\r\n * @param fromDate\r\n */\r\n copyTime(toDate, fromDate) {\r\n this.setHour(toDate, this.getHour(fromDate));\r\n this.setMinute(toDate, this.getMinute(fromDate));\r\n this.setSecond(toDate, this.getSecond(fromDate));\r\n }\r\n /**\r\n * Compares two dates.\r\n * @param first The first date to compare.\r\n * @param second The second date to compare.\r\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\r\n * a number greater than 0 if the first date is later.\r\n */\r\n compareDateWithTime(first, second, showSeconds) {\r\n let res = super.compareDate(first, second) ||\r\n this.getHour(first) - this.getHour(second) ||\r\n this.getMinute(first) - this.getMinute(second);\r\n if (showSeconds) {\r\n res = res || this.getSecond(first) - this.getSecond(second);\r\n }\r\n return res;\r\n }\r\n /**\r\n * Set time by using default values\r\n * @param defaultTime List default values [hour, minute, second]\r\n */\r\n setTimeByDefaultValues(date, defaultTime) {\r\n if (!Array.isArray(defaultTime)) {\r\n throw Error('@Input DefaultTime should be an array');\r\n }\r\n this.setHour(date, defaultTime[0] || 0);\r\n this.setMinute(date, defaultTime[1] || 0);\r\n this.setSecond(date, defaultTime[2] || 0);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n/** Injection token used to customize the date range selection behavior. */\r\nconst NGX_MAT_DATE_RANGE_SELECTION_STRATEGY = new InjectionToken('NGX_MAT_DATE_RANGE_SELECTION_STRATEGY');\r\n/** Provides the default date range selection behavior. */\r\nclass DefaultNgxMatCalendarRangeStrategy {\r\n constructor(_dateAdapter) {\r\n this._dateAdapter = _dateAdapter;\r\n }\r\n selectionFinished(date, currentRange) {\r\n let { start, end } = currentRange;\r\n if (start == null) {\r\n start = date;\r\n }\r\n else if (end == null && date && this._dateAdapter.compareDate(date, start) >= 0) {\r\n end = date;\r\n }\r\n else {\r\n start = date;\r\n end = null;\r\n }\r\n return new DateRange(start, end);\r\n }\r\n createPreview(activeDate, currentRange) {\r\n let start = null;\r\n let end = null;\r\n if (currentRange.start && !currentRange.end && activeDate) {\r\n start = currentRange.start;\r\n end = activeDate;\r\n }\r\n return new DateRange(start, end);\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ DefaultNgxMatCalendarRangeStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DefaultNgxMatCalendarRangeStrategy, deps: [{ token: NgxMatDateAdapter }], target: i0.ɵɵFactoryTarget.Injectable });\r\n/** @nocollapse */ /** @nocollapse */ DefaultNgxMatCalendarRangeStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DefaultNgxMatCalendarRangeStrategy });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DefaultNgxMatCalendarRangeStrategy, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: NgxMatDateAdapter }]; } });\n\nconst LIMIT_TIMES = {\r\n minHour: 0,\r\n maxHour: 24,\r\n minMinute: 0,\r\n maxMinute: 60,\r\n minSecond: 0,\r\n maxSecond: 60,\r\n meridian: 12\r\n};\r\nconst MERIDIANS = {\r\n AM: 'AM',\r\n PM: 'PM'\r\n};\r\nconst DEFAULT_STEP = 1;\r\nconst NUMERIC_REGEX = /[^0-9]/g;\r\nconst PATTERN_INPUT_HOUR = /^(2[0-3]|[0-1][0-9]|[0-9])$/;\r\nconst PATTERN_INPUT_MINUTE = /^([0-5][0-9]|[0-9])$/;\r\nconst PATTERN_INPUT_SECOND = /^([0-5][0-9]|[0-9])$/;\r\nfunction formatTwoDigitTimeValue(val) {\r\n const txt = val.toString();\r\n return txt.length > 1 ? txt : `0${txt}`;\r\n}\r\nfunction createMissingDateImplError(provider) {\r\n return Error(`NgxMatDatepicker: No provider found for ${provider}. You must import one of the following ` +\r\n `modules at your application root: NgxMatNativeDateModule, NgxMatMomentModule, or provide a ` +\r\n `custom implementation.`);\r\n}\r\n/** Formats a range of years. */\r\nfunction formatYearRange(start, end) {\r\n return `${start} \\u2013 ${end}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\nconst DAYS_PER_WEEK = 7;\r\n/**\r\n * An internal component used to display a single month in the datepicker.\r\n * @docs-private\r\n */\r\nclass NgxMatMonthView {\r\n constructor(_changeDetectorRef, _dateFormats, _dateAdapter, _dir, _rangeStrategy) {\r\n this._changeDetectorRef = _changeDetectorRef;\r\n this._dateFormats = _dateFormats;\r\n this._dateAdapter = _dateAdapter;\r\n this._dir = _dir;\r\n this._rangeStrategy = _rangeStrategy;\r\n this._rerenderSubscription = Subscription.EMPTY;\r\n /** Emits when a new date is selected. */\r\n this.selectedChange = new EventEmitter();\r\n /** Emits when any date is selected. */\r\n this._userSelection = new EventEmitter();\r\n /** Emits when any date is activated. */\r\n this.activeDateChange = new EventEmitter();\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('NgxMatDateAdapter');\r\n }\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('NGX_MAT_DATE_FORMATS');\r\n }\r\n this._activeDate = this._dateAdapter.today();\r\n }\r\n /**\r\n * The date to display in this month view (everything other than the month and year is ignored).\r\n */\r\n get activeDate() { return this._activeDate; }\r\n set activeDate(value) {\r\n const oldActiveDate = this._activeDate;\r\n const validDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\r\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\r\n if (!this._hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\r\n this._init();\r\n }\r\n }\r\n /** The currently selected date. */\r\n get selected() { return this._selected; }\r\n set selected(value) {\r\n if (value instanceof DateRange) {\r\n this._selected = value;\r\n }\r\n else {\r\n this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n this._setRanges(this._selected);\r\n }\r\n /** The minimum selectable date. */\r\n get minDate() { return this._minDate; }\r\n set minDate(value) {\r\n this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n /** The maximum selectable date. */\r\n get maxDate() { return this._maxDate; }\r\n set maxDate(value) {\r\n this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n ngAfterContentInit() {\r\n this._rerenderSubscription = this._dateAdapter.localeChanges\r\n .pipe(startWith(null))\r\n .subscribe(() => this._init());\r\n }\r\n ngOnDestroy() {\r\n this._rerenderSubscription.unsubscribe();\r\n }\r\n /** Handles when a new date is selected. */\r\n _dateSelected(event) {\r\n const date = event.value;\r\n const selectedYear = this._dateAdapter.getYear(this.activeDate);\r\n const selectedMonth = this._dateAdapter.getMonth(this.activeDate);\r\n const selectedDate = this._dateAdapter.createDate(selectedYear, selectedMonth, date);\r\n let rangeStartDate;\r\n let rangeEndDate;\r\n if (this._selected instanceof DateRange) {\r\n rangeStartDate = this._getDateInCurrentMonth(this._selected.start);\r\n rangeEndDate = this._getDateInCurrentMonth(this._selected.end);\r\n }\r\n else {\r\n rangeStartDate = rangeEndDate = this._getDateInCurrentMonth(this._selected);\r\n }\r\n if (rangeStartDate !== date || rangeEndDate !== date) {\r\n this.selectedChange.emit(selectedDate);\r\n }\r\n this._userSelection.emit({ value: selectedDate, event: event.event });\r\n }\r\n /** Handles keydown events on the calendar body when calendar is in month view. */\r\n _handleCalendarBodyKeydown(event) {\r\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\r\n // disabled ones from being selected. This may not be ideal, we should look into whether\r\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\r\n const oldActiveDate = this._activeDate;\r\n const isRtl = this._isRtl();\r\n switch (event.keyCode) {\r\n case LEFT_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? 1 : -1);\r\n break;\r\n case RIGHT_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? -1 : 1);\r\n break;\r\n case UP_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -7);\r\n break;\r\n case DOWN_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 7);\r\n break;\r\n case HOME:\r\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 1 - this._dateAdapter.getDate(this._activeDate));\r\n break;\r\n case END:\r\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, (this._dateAdapter.getNumDaysInMonth(this._activeDate) -\r\n this._dateAdapter.getDate(this._activeDate)));\r\n break;\r\n case PAGE_UP:\r\n this.activeDate = event.altKey ?\r\n this._dateAdapter.addCalendarYears(this._activeDate, -1) :\r\n this._dateAdapter.addCalendarMonths(this._activeDate, -1);\r\n break;\r\n case PAGE_DOWN:\r\n this.activeDate = event.altKey ?\r\n this._dateAdapter.addCalendarYears(this._activeDate, 1) :\r\n this._dateAdapter.addCalendarMonths(this._activeDate, 1);\r\n break;\r\n case ENTER:\r\n case SPACE:\r\n if (!this.dateFilter || this.dateFilter(this._activeDate)) {\r\n this._dateSelected({ value: this._dateAdapter.getDate(this._activeDate), event });\r\n // Prevent unexpected default actions such as form submission.\r\n event.preventDefault();\r\n }\r\n return;\r\n case ESCAPE:\r\n // Abort the current range selection if the user presses escape mid-selection.\r\n if (this._previewEnd != null) {\r\n this._previewStart = this._previewEnd = null;\r\n this.selectedChange.emit(null);\r\n this._userSelection.emit({ value: null, event });\r\n event.preventDefault();\r\n event.stopPropagation(); // Prevents the overlay from closing.\r\n }\r\n return;\r\n default:\r\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\r\n return;\r\n }\r\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\r\n this.activeDateChange.emit(this.activeDate);\r\n }\r\n this._focusActiveCell();\r\n // Prevent unexpected default actions such as form submission.\r\n event.preventDefault();\r\n }\r\n /** Initializes this month view. */\r\n _init() {\r\n this._setRanges(this.selected);\r\n this._todayDate = this._getCellCompareValue(this._dateAdapter.today());\r\n this._monthLabel =\r\n this._dateAdapter.getMonthNames('short')[this._dateAdapter.getMonth(this.activeDate)]\r\n .toLocaleUpperCase();\r\n let firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), 1);\r\n this._firstWeekOffset =\r\n (DAYS_PER_WEEK + this._dateAdapter.getDayOfWeek(firstOfMonth) -\r\n this._dateAdapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;\r\n this._initWeekdays();\r\n this._createWeekCells();\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n /** Focuses the active cell after the microtask queue is empty. */\r\n _focusActiveCell(movePreview) {\r\n this._matCalendarBody._focusActiveCell(movePreview);\r\n }\r\n /** Called when the user has activated a new cell and the preview needs to be updated. */\r\n _previewChanged({ event, value: cell }) {\r\n if (this._rangeStrategy) {\r\n // We can assume that this will be a range, because preview\r\n // events aren't fired for single date selections.\r\n const value = cell ? cell.rawValue : null;\r\n const previewRange = this._rangeStrategy.createPreview(value, this.selected, event);\r\n this._previewStart = this._getCellCompareValue(previewRange.start);\r\n this._previewEnd = this._getCellCompareValue(previewRange.end);\r\n // Note that here we need to use `detectChanges`, rather than `markForCheck`, because\r\n // the way `_focusActiveCell` is set up at the moment makes it fire at the wrong time\r\n // when navigating one month back using the keyboard which will cause this handler\r\n // to throw a \"changed after checked\" error when updating the preview state.\r\n this._changeDetectorRef.detectChanges();\r\n }\r\n }\r\n /** Initializes the weekdays. */\r\n _initWeekdays() {\r\n const firstDayOfWeek = this._dateAdapter.getFirstDayOfWeek();\r\n const narrowWeekdays = this._dateAdapter.getDayOfWeekNames('narrow');\r\n const longWeekdays = this._dateAdapter.getDayOfWeekNames('long');\r\n // Rotate the labels for days of the week based on the configured first day of the week.\r\n let weekdays = longWeekdays.map((long, i) => {\r\n return { long, narrow: narrowWeekdays[i] };\r\n });\r\n this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\r\n }\r\n /** Creates MatCalendarCells for the dates in this month. */\r\n _createWeekCells() {\r\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate);\r\n const dateNames = this._dateAdapter.getDateNames();\r\n this._weeks = [[]];\r\n for (let i = 0, cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {\r\n if (cell == DAYS_PER_WEEK) {\r\n this._weeks.push([]);\r\n cell = 0;\r\n }\r\n const date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), i + 1);\r\n const enabled = this._shouldEnableDate(date);\r\n const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.dateA11yLabel);\r\n const cellClasses = this.dateClass ? this.dateClass(date) : undefined;\r\n this._weeks[this._weeks.length - 1].push(new NgxMatCalendarCell(i + 1, dateNames[i], ariaLabel, enabled, cellClasses, this._getCellCompareValue(date), date));\r\n }\r\n }\r\n /** Date filter for the month */\r\n _shouldEnableDate(date) {\r\n return !!date &&\r\n (!this.minDate || this._dateAdapter.compareDate(date, this.minDate) >= 0) &&\r\n (!this.maxDate || this._dateAdapter.compareDate(date, this.maxDate) <= 0) &&\r\n (!this.dateFilter || this.dateFilter(date));\r\n }\r\n /**\r\n * Gets the date in this month that the given Date falls on.\r\n * Returns null if the given Date is in another month.\r\n */\r\n _getDateInCurrentMonth(date) {\r\n return date && this._hasSameMonthAndYear(date, this.activeDate) ?\r\n this._dateAdapter.getDate(date) : null;\r\n }\r\n /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */\r\n _hasSameMonthAndYear(d1, d2) {\r\n return !!(d1 && d2 && this._dateAdapter.getMonth(d1) == this._dateAdapter.getMonth(d2) &&\r\n this._dateAdapter.getYear(d1) == this._dateAdapter.getYear(d2));\r\n }\r\n /** Gets the value that will be used to one cell to another. */\r\n _getCellCompareValue(date) {\r\n if (date) {\r\n // We use the time since the Unix epoch to compare dates in this view, rather than the\r\n // cell values, because we need to support ranges that span across multiple months/years.\r\n const year = this._dateAdapter.getYear(date);\r\n const month = this._dateAdapter.getMonth(date);\r\n const day = this._dateAdapter.getDate(date);\r\n return new Date(year, month, day).getTime();\r\n }\r\n return null;\r\n }\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n _getValidDateOrNull(obj) {\r\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n /** Determines whether the user has the RTL layout direction. */\r\n _isRtl() {\r\n return this._dir && this._dir.value === 'rtl';\r\n }\r\n /** Sets the current range based on a model value. */\r\n _setRanges(selectedValue) {\r\n if (selectedValue instanceof DateRange) {\r\n this._rangeStart = this._getCellCompareValue(selectedValue.start);\r\n this._rangeEnd = this._getCellCompareValue(selectedValue.end);\r\n this._isRange = true;\r\n }\r\n else {\r\n this._rangeStart = this._rangeEnd = this._getCellCompareValue(selectedValue);\r\n this._isRange = false;\r\n }\r\n this._comparisonRangeStart = this._getCellCompareValue(this.comparisonStart);\r\n this._comparisonRangeEnd = this._getCellCompareValue(this.comparisonEnd);\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NgxMatMonthView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatMonthView, deps: [{ token: i0.ChangeDetectorRef }, { token: NGX_MAT_DATE_FORMATS, optional: true }, { token: NgxMatDateAdapter, optional: true }, { token: i2.Directionality, optional: true }, { token: NGX_MAT_DATE_RANGE_SELECTION_STRATEGY, optional: true }], target: i0.ɵɵFactoryTarget.Component });\r\n/** @nocollapse */ /** @nocollapse */ NgxMatMonthView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.1\", type: NgxMatMonthView, selector: \"ngx-mat-month-view\", inputs: { activeDate: \"activeDate\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\", dateClass: \"dateClass\", comparisonStart: \"comparisonStart\", comparisonEnd: \"comparisonEnd\" }, outputs: { selectedChange: \"selectedChange\", _userSelection: \"_userSelection\", activeDateChange: \"activeDateChange\" }, viewQueries: [{ propertyName: \"_matCalendarBody\", first: true, predicate: NgxMatCalendarBody, descendants: true }], exportAs: [\"ngxMatMonthView\"], ngImport: i0, template: \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    {{day.narrow}}
    \\r\\n\", components: [{ type: NgxMatCalendarBody, selector: \"[ngx-mat-calendar-body]\", inputs: [\"label\", \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"labelMinRequiredCells\", \"numCols\", \"activeCell\", \"isRange\", \"cellAspectRatio\", \"comparisonStart\", \"comparisonEnd\", \"previewStart\", \"previewEnd\"], outputs: [\"selectedValueChange\", \"previewChange\"], exportAs: [\"NgxMatCalendarBody\"] }], directives: [{ type: i1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatMonthView, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'ngx-mat-month-view', exportAs: 'ngxMatMonthView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    {{day.narrow}}
    \\r\\n\" }]\r\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\r\n type: Optional\r\n }, {\r\n type: Inject,\r\n args: [NGX_MAT_DATE_FORMATS]\r\n }] }, { type: NgxMatDateAdapter, decorators: [{\r\n type: Optional\r\n }] }, { type: i2.Directionality, decorators: [{\r\n type: Optional\r\n }] }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [NGX_MAT_DATE_RANGE_SELECTION_STRATEGY]\r\n }, {\r\n type: Optional\r\n }] }]; }, propDecorators: { activeDate: [{\r\n type: Input\r\n }], selected: [{\r\n type: Input\r\n }], minDate: [{\r\n type: Input\r\n }], maxDate: [{\r\n type: Input\r\n }], dateFilter: [{\r\n type: Input\r\n }], dateClass: [{\r\n type: Input\r\n }], comparisonStart: [{\r\n type: Input\r\n }], comparisonEnd: [{\r\n type: Input\r\n }], selectedChange: [{\r\n type: Output\r\n }], _userSelection: [{\r\n type: Output\r\n }], activeDateChange: [{\r\n type: Output\r\n }], _matCalendarBody: [{\r\n type: ViewChild,\r\n args: [NgxMatCalendarBody]\r\n }] } });\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\nconst yearsPerPage = 24;\r\nconst yearsPerRow = 4;\r\n/**\r\n * An internal component used to display a year selector in the datepicker.\r\n * @docs-private\r\n */\r\nclass NgxMatMultiYearView {\r\n constructor(_changeDetectorRef, _dateAdapter, _dir) {\r\n this._changeDetectorRef = _changeDetectorRef;\r\n this._dateAdapter = _dateAdapter;\r\n this._dir = _dir;\r\n this._rerenderSubscription = Subscription.EMPTY;\r\n /** Emits when a new year is selected. */\r\n this.selectedChange = new EventEmitter();\r\n /** Emits the selected year. This doesn't imply a change on the selected date */\r\n this.yearSelected = new EventEmitter();\r\n /** Emits when any date is activated. */\r\n this.activeDateChange = new EventEmitter();\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('NgxMatDateAdapter');\r\n }\r\n this._activeDate = this._dateAdapter.today();\r\n }\r\n /** The date to display in this multi-year view (everything other than the year is ignored). */\r\n get activeDate() { return this._activeDate; }\r\n set activeDate(value) {\r\n let oldActiveDate = this._activeDate;\r\n const validDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\r\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\r\n if (!isSameMultiYearView(this._dateAdapter, oldActiveDate, this._activeDate, this.minDate, this.maxDate)) {\r\n this._init();\r\n }\r\n }\r\n /** The currently selected date. */\r\n get selected() { return this._selected; }\r\n set selected(value) {\r\n if (value instanceof DateRange) {\r\n this._selected = value;\r\n }\r\n else {\r\n this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n this._setSelectedYear(value);\r\n }\r\n /** The minimum selectable date. */\r\n get minDate() { return this._minDate; }\r\n set minDate(value) {\r\n this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n /** The maximum selectable date. */\r\n get maxDate() { return this._maxDate; }\r\n set maxDate(value) {\r\n this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n ngAfterContentInit() {\r\n this._rerenderSubscription = this._dateAdapter.localeChanges\r\n .pipe(startWith(null))\r\n .subscribe(() => this._init());\r\n }\r\n ngOnDestroy() {\r\n this._rerenderSubscription.unsubscribe();\r\n }\r\n /** Initializes this multi-year view. */\r\n _init() {\r\n this._todayYear = this._dateAdapter.getYear(this._dateAdapter.today());\r\n // We want a range years such that we maximize the number of\r\n // enabled dates visible at once. This prevents issues where the minimum year\r\n // is the last item of a page OR the maximum year is the first item of a page.\r\n // The offset from the active year to the \"slot\" for the starting year is the\r\n // *actual* first rendered year in the multi-year view.\r\n const activeYear = this._dateAdapter.getYear(this._activeDate);\r\n const minYearOfPage = activeYear - getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\r\n this._years = [];\r\n for (let i = 0, row = []; i < yearsPerPage; i++) {\r\n row.push(minYearOfPage + i);\r\n if (row.length == yearsPerRow) {\r\n this._years.push(row.map(year => this._createCellForYear(year)));\r\n row = [];\r\n }\r\n }\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n /** Handles when a new year is selected. */\r\n _yearSelected(event) {\r\n const year = event.value;\r\n this.yearSelected.emit(this._dateAdapter.createDate(year, 0, 1));\r\n let month = this._dateAdapter.getMonth(this.activeDate);\r\n let daysInMonth = this._dateAdapter.getNumDaysInMonth(this._dateAdapter.createDate(year, month, 1));\r\n this.selectedChange.emit(this._dateAdapter.createDate(year, month, Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\r\n }\r\n /** Handles keydown events on the calendar body when calendar is in multi-year view. */\r\n _handleCalendarBodyKeydown(event) {\r\n const oldActiveDate = this._activeDate;\r\n const isRtl = this._isRtl();\r\n switch (event.keyCode) {\r\n case LEFT_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? 1 : -1);\r\n break;\r\n case RIGHT_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? -1 : 1);\r\n break;\r\n case UP_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -yearsPerRow);\r\n break;\r\n case DOWN_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);\r\n break;\r\n case HOME:\r\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate));\r\n break;\r\n case END:\r\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerPage - getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate) - 1);\r\n break;\r\n case PAGE_UP:\r\n this.activeDate =\r\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\r\n break;\r\n case PAGE_DOWN:\r\n this.activeDate =\r\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\r\n break;\r\n case ENTER:\r\n case SPACE:\r\n this._yearSelected({ value: this._dateAdapter.getYear(this._activeDate), event });\r\n break;\r\n default:\r\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\r\n return;\r\n }\r\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\r\n this.activeDateChange.emit(this.activeDate);\r\n }\r\n this._focusActiveCell();\r\n // Prevent unexpected default actions such as form submission.\r\n event.preventDefault();\r\n }\r\n _getActiveCell() {\r\n return getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\r\n }\r\n /** Focuses the active cell after the microtask queue is empty. */\r\n _focusActiveCell() {\r\n this._matCalendarBody._focusActiveCell();\r\n }\r\n /** Creates an MatCalendarCell for the given year. */\r\n _createCellForYear(year) {\r\n let yearName = this._dateAdapter.getYearName(this._dateAdapter.createDate(year, 0, 1));\r\n return new NgxMatCalendarCell(year, yearName, yearName, this._shouldEnableYear(year));\r\n }\r\n /** Whether the given year is enabled. */\r\n _shouldEnableYear(year) {\r\n // disable if the year is greater than maxDate lower than minDate\r\n if (year === undefined || year === null ||\r\n (this.maxDate && year > this._dateAdapter.getYear(this.maxDate)) ||\r\n (this.minDate && year < this._dateAdapter.getYear(this.minDate))) {\r\n return false;\r\n }\r\n // enable if it reaches here and there's no filter defined\r\n if (!this.dateFilter) {\r\n return true;\r\n }\r\n const firstOfYear = this._dateAdapter.createDate(year, 0, 1);\r\n // If any date in the year is enabled count the year as enabled.\r\n for (let date = firstOfYear; this._dateAdapter.getYear(date) == year; date = this._dateAdapter.addCalendarDays(date, 1)) {\r\n if (this.dateFilter(date)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n _getValidDateOrNull(obj) {\r\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n /** Determines whether the user has the RTL layout direction. */\r\n _isRtl() {\r\n return this._dir && this._dir.value === 'rtl';\r\n }\r\n /** Sets the currently-highlighted year based on a model value. */\r\n _setSelectedYear(value) {\r\n this._selectedYear = null;\r\n if (value instanceof DateRange) {\r\n const displayValue = value.start || value.end;\r\n if (displayValue) {\r\n this._selectedYear = this._dateAdapter.getYear(displayValue);\r\n }\r\n }\r\n else if (value) {\r\n this._selectedYear = this._dateAdapter.getYear(value);\r\n }\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NgxMatMultiYearView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatMultiYearView, deps: [{ token: i0.ChangeDetectorRef }, { token: NgxMatDateAdapter, optional: true }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component });\r\n/** @nocollapse */ /** @nocollapse */ NgxMatMultiYearView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.1\", type: NgxMatMultiYearView, selector: \"ngx-mat-multi-year-view\", inputs: { activeDate: \"activeDate\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\" }, outputs: { selectedChange: \"selectedChange\", yearSelected: \"yearSelected\", activeDateChange: \"activeDateChange\" }, viewQueries: [{ propertyName: \"_matCalendarBody\", first: true, predicate: NgxMatCalendarBody, descendants: true }], exportAs: [\"ngxMatMultiYearView\"], ngImport: i0, template: \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n\", components: [{ type: NgxMatCalendarBody, selector: \"[ngx-mat-calendar-body]\", inputs: [\"label\", \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"labelMinRequiredCells\", \"numCols\", \"activeCell\", \"isRange\", \"cellAspectRatio\", \"comparisonStart\", \"comparisonEnd\", \"previewStart\", \"previewEnd\"], outputs: [\"selectedValueChange\", \"previewChange\"], exportAs: [\"NgxMatCalendarBody\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatMultiYearView, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'ngx-mat-multi-year-view', exportAs: 'ngxMatMultiYearView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n\\r\\n\" }]\r\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: NgxMatDateAdapter, decorators: [{\r\n type: Optional\r\n }] }, { type: i2.Directionality, decorators: [{\r\n type: Optional\r\n }] }]; }, propDecorators: { activeDate: [{\r\n type: Input\r\n }], selected: [{\r\n type: Input\r\n }], minDate: [{\r\n type: Input\r\n }], maxDate: [{\r\n type: Input\r\n }], dateFilter: [{\r\n type: Input\r\n }], selectedChange: [{\r\n type: Output\r\n }], yearSelected: [{\r\n type: Output\r\n }], activeDateChange: [{\r\n type: Output\r\n }], _matCalendarBody: [{\r\n type: ViewChild,\r\n args: [NgxMatCalendarBody]\r\n }] } });\r\nfunction isSameMultiYearView(dateAdapter, date1, date2, minDate, maxDate) {\r\n const year1 = dateAdapter.getYear(date1);\r\n const year2 = dateAdapter.getYear(date2);\r\n const startingYear = getStartingYear(dateAdapter, minDate, maxDate);\r\n return Math.floor((year1 - startingYear) / yearsPerPage) ===\r\n Math.floor((year2 - startingYear) / yearsPerPage);\r\n}\r\n/**\r\n * When the multi-year view is first opened, the active year will be in view.\r\n * So we compute how many years are between the active year and the *slot* where our\r\n * \"startingYear\" will render when paged into view.\r\n */\r\nfunction getActiveOffset(dateAdapter, activeDate, minDate, maxDate) {\r\n const activeYear = dateAdapter.getYear(activeDate);\r\n return euclideanModulo((activeYear - getStartingYear(dateAdapter, minDate, maxDate)), yearsPerPage);\r\n}\r\n/**\r\n * We pick a \"starting\" year such that either the maximum year would be at the end\r\n * or the minimum year would be at the beginning of a page.\r\n */\r\nfunction getStartingYear(dateAdapter, minDate, maxDate) {\r\n let startingYear = 0;\r\n if (maxDate) {\r\n const maxYear = dateAdapter.getYear(maxDate);\r\n startingYear = maxYear - yearsPerPage + 1;\r\n }\r\n else if (minDate) {\r\n startingYear = dateAdapter.getYear(minDate);\r\n }\r\n return startingYear;\r\n}\r\n/** Gets remainder that is non-negative, even if first number is negative */\r\nfunction euclideanModulo(a, b) {\r\n return (a % b + b) % b;\r\n}\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n/**\r\n * An internal component used to display a single year in the datepicker.\r\n * @docs-private\r\n */\r\nclass NgxMatYearView {\r\n constructor(_changeDetectorRef, _dateFormats, _dateAdapter, _dir) {\r\n this._changeDetectorRef = _changeDetectorRef;\r\n this._dateFormats = _dateFormats;\r\n this._dateAdapter = _dateAdapter;\r\n this._dir = _dir;\r\n this._rerenderSubscription = Subscription.EMPTY;\r\n /** Emits when a new month is selected. */\r\n this.selectedChange = new EventEmitter();\r\n /** Emits the selected month. This doesn't imply a change on the selected date */\r\n this.monthSelected = new EventEmitter();\r\n /** Emits when any date is activated. */\r\n this.activeDateChange = new EventEmitter();\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('NgxMatDateAdapter');\r\n }\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('NGX_MAT_DATE_FORMATS');\r\n }\r\n this._activeDate = this._dateAdapter.today();\r\n }\r\n /** The date to display in this year view (everything other than the year is ignored). */\r\n get activeDate() { return this._activeDate; }\r\n set activeDate(value) {\r\n let oldActiveDate = this._activeDate;\r\n const validDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\r\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\r\n if (this._dateAdapter.getYear(oldActiveDate) !== this._dateAdapter.getYear(this._activeDate)) {\r\n this._init();\r\n }\r\n }\r\n /** The currently selected date. */\r\n get selected() { return this._selected; }\r\n set selected(value) {\r\n if (value instanceof DateRange) {\r\n this._selected = value;\r\n }\r\n else {\r\n this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n this._setSelectedMonth(value);\r\n }\r\n /** The minimum selectable date. */\r\n get minDate() { return this._minDate; }\r\n set minDate(value) {\r\n this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n /** The maximum selectable date. */\r\n get maxDate() { return this._maxDate; }\r\n set maxDate(value) {\r\n this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n ngAfterContentInit() {\r\n this._rerenderSubscription = this._dateAdapter.localeChanges\r\n .pipe(startWith(null))\r\n .subscribe(() => this._init());\r\n }\r\n ngOnDestroy() {\r\n this._rerenderSubscription.unsubscribe();\r\n }\r\n /** Handles when a new month is selected. */\r\n _monthSelected(event) {\r\n const month = event.value;\r\n const normalizedDate = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\r\n this.monthSelected.emit(normalizedDate);\r\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(normalizedDate);\r\n this.selectedChange.emit(this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\r\n }\r\n /** Handles keydown events on the calendar body when calendar is in year view. */\r\n _handleCalendarBodyKeydown(event) {\r\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\r\n // disabled ones from being selected. This may not be ideal, we should look into whether\r\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\r\n const oldActiveDate = this._activeDate;\r\n const isRtl = this._isRtl();\r\n switch (event.keyCode) {\r\n case LEFT_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? 1 : -1);\r\n break;\r\n case RIGHT_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? -1 : 1);\r\n break;\r\n case UP_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -4);\r\n break;\r\n case DOWN_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 4);\r\n break;\r\n case HOME:\r\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -this._dateAdapter.getMonth(this._activeDate));\r\n break;\r\n case END:\r\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 11 - this._dateAdapter.getMonth(this._activeDate));\r\n break;\r\n case PAGE_UP:\r\n this.activeDate =\r\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -10 : -1);\r\n break;\r\n case PAGE_DOWN:\r\n this.activeDate =\r\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? 10 : 1);\r\n break;\r\n case ENTER:\r\n case SPACE:\r\n this._monthSelected({ value: this._dateAdapter.getMonth(this._activeDate), event });\r\n break;\r\n default:\r\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\r\n return;\r\n }\r\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\r\n this.activeDateChange.emit(this.activeDate);\r\n }\r\n this._focusActiveCell();\r\n // Prevent unexpected default actions such as form submission.\r\n event.preventDefault();\r\n }\r\n /** Initializes this year view. */\r\n _init() {\r\n this._setSelectedMonth(this.selected);\r\n this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today());\r\n this._yearLabel = this._dateAdapter.getYearName(this.activeDate);\r\n let monthNames = this._dateAdapter.getMonthNames('short');\r\n // First row of months only contains 5 elements so we can fit the year label on the same row.\r\n this._months = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]].map(row => row.map(month => this._createCellForMonth(month, monthNames[month])));\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n /** Focuses the active cell after the microtask queue is empty. */\r\n _focusActiveCell() {\r\n this._matCalendarBody._focusActiveCell();\r\n }\r\n /**\r\n * Gets the month in this year that the given Date falls on.\r\n * Returns null if the given Date is in another year.\r\n */\r\n _getMonthInCurrentYear(date) {\r\n return date && this._dateAdapter.getYear(date) == this._dateAdapter.getYear(this.activeDate) ?\r\n this._dateAdapter.getMonth(date) : null;\r\n }\r\n /** Creates an MatCalendarCell for the given month. */\r\n _createCellForMonth(month, monthName) {\r\n let ariaLabel = this._dateAdapter.format(this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1), this._dateFormats.display.monthYearA11yLabel);\r\n return new NgxMatCalendarCell(month, monthName.toLocaleUpperCase(), ariaLabel, this._shouldEnableMonth(month));\r\n }\r\n /** Whether the given month is enabled. */\r\n _shouldEnableMonth(month) {\r\n const activeYear = this._dateAdapter.getYear(this.activeDate);\r\n if (month === undefined || month === null ||\r\n this._isYearAndMonthAfterMaxDate(activeYear, month) ||\r\n this._isYearAndMonthBeforeMinDate(activeYear, month)) {\r\n return false;\r\n }\r\n if (!this.dateFilter) {\r\n return true;\r\n }\r\n const firstOfMonth = this._dateAdapter.createDate(activeYear, month, 1);\r\n // If any date in the month is enabled count the month as enabled.\r\n for (let date = firstOfMonth; this._dateAdapter.getMonth(date) == month; date = this._dateAdapter.addCalendarDays(date, 1)) {\r\n if (this.dateFilter(date)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n /**\r\n * Tests whether the combination month/year is after this.maxDate, considering\r\n * just the month and year of this.maxDate\r\n */\r\n _isYearAndMonthAfterMaxDate(year, month) {\r\n if (this.maxDate) {\r\n const maxYear = this._dateAdapter.getYear(this.maxDate);\r\n const maxMonth = this._dateAdapter.getMonth(this.maxDate);\r\n return year > maxYear || (year === maxYear && month > maxMonth);\r\n }\r\n return false;\r\n }\r\n /**\r\n * Tests whether the combination month/year is before this.minDate, considering\r\n * just the month and year of this.minDate\r\n */\r\n _isYearAndMonthBeforeMinDate(year, month) {\r\n if (this.minDate) {\r\n const minYear = this._dateAdapter.getYear(this.minDate);\r\n const minMonth = this._dateAdapter.getMonth(this.minDate);\r\n return year < minYear || (year === minYear && month < minMonth);\r\n }\r\n return false;\r\n }\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n _getValidDateOrNull(obj) {\r\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n /** Determines whether the user has the RTL layout direction. */\r\n _isRtl() {\r\n return this._dir && this._dir.value === 'rtl';\r\n }\r\n /** Sets the currently-selected month based on a model value. */\r\n _setSelectedMonth(value) {\r\n if (value instanceof DateRange) {\r\n this._selectedMonth = this._getMonthInCurrentYear(value.start) ||\r\n this._getMonthInCurrentYear(value.end);\r\n }\r\n else {\r\n this._selectedMonth = this._getMonthInCurrentYear(value);\r\n }\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NgxMatYearView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatYearView, deps: [{ token: i0.ChangeDetectorRef }, { token: NGX_MAT_DATE_FORMATS, optional: true }, { token: NgxMatDateAdapter, optional: true }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component });\r\n/** @nocollapse */ /** @nocollapse */ NgxMatYearView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.1\", type: NgxMatYearView, selector: \"ngx-mat-year-view\", inputs: { activeDate: \"activeDate\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\" }, outputs: { selectedChange: \"selectedChange\", monthSelected: \"monthSelected\", activeDateChange: \"activeDateChange\" }, viewQueries: [{ propertyName: \"_matCalendarBody\", first: true, predicate: NgxMatCalendarBody, descendants: true }], exportAs: [\"ngxMatYearView\"], ngImport: i0, template: \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n\", components: [{ type: NgxMatCalendarBody, selector: \"[ngx-mat-calendar-body]\", inputs: [\"label\", \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"labelMinRequiredCells\", \"numCols\", \"activeCell\", \"isRange\", \"cellAspectRatio\", \"comparisonStart\", \"comparisonEnd\", \"previewStart\", \"previewEnd\"], outputs: [\"selectedValueChange\", \"previewChange\"], exportAs: [\"NgxMatCalendarBody\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatYearView, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'ngx-mat-year-view', exportAs: 'ngxMatYearView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
    \\r\\n\" }]\r\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\r\n type: Optional\r\n }, {\r\n type: Inject,\r\n args: [NGX_MAT_DATE_FORMATS]\r\n }] }, { type: NgxMatDateAdapter, decorators: [{\r\n type: Optional\r\n }] }, { type: i2.Directionality, decorators: [{\r\n type: Optional\r\n }] }]; }, propDecorators: { activeDate: [{\r\n type: Input\r\n }], selected: [{\r\n type: Input\r\n }], minDate: [{\r\n type: Input\r\n }], maxDate: [{\r\n type: Input\r\n }], dateFilter: [{\r\n type: Input\r\n }], selectedChange: [{\r\n type: Output\r\n }], monthSelected: [{\r\n type: Output\r\n }], activeDateChange: [{\r\n type: Output\r\n }], _matCalendarBody: [{\r\n type: ViewChild,\r\n args: [NgxMatCalendarBody]\r\n }] } });\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n/** Default header for NgxMatCalendar */\r\nclass NgxMatCalendarHeader {\r\n constructor(_intl, calendar, _dateAdapter, _dateFormats, changeDetectorRef) {\r\n this._intl = _intl;\r\n this.calendar = calendar;\r\n this._dateAdapter = _dateAdapter;\r\n this._dateFormats = _dateFormats;\r\n this.calendar.stateChanges.subscribe(() => changeDetectorRef.markForCheck());\r\n }\r\n /** The label for the current calendar view. */\r\n get periodButtonText() {\r\n if (this.calendar.currentView == 'month') {\r\n return this._dateAdapter\r\n .format(this.calendar.activeDate, this._dateFormats.display.monthYearLabel)\r\n .toLocaleUpperCase();\r\n }\r\n if (this.calendar.currentView == 'year') {\r\n return this._dateAdapter.getYearName(this.calendar.activeDate);\r\n }\r\n // The offset from the active year to the \"slot\" for the starting year is the\r\n // *actual* first rendered year in the multi-year view, and the last year is\r\n // just yearsPerPage - 1 away.\r\n const activeYear = this._dateAdapter.getYear(this.calendar.activeDate);\r\n const minYearOfPage = activeYear - getActiveOffset(this._dateAdapter, this.calendar.activeDate, this.calendar.minDate, this.calendar.maxDate);\r\n const maxYearOfPage = minYearOfPage + yearsPerPage - 1;\r\n const minYearName = this._dateAdapter.getYearName(this._dateAdapter.createDate(minYearOfPage, 0, 1));\r\n const maxYearName = this._dateAdapter.getYearName(this._dateAdapter.createDate(maxYearOfPage, 0, 1));\r\n return formatYearRange(minYearName, maxYearName);\r\n }\r\n get periodButtonLabel() {\r\n return this.calendar.currentView == 'month' ?\r\n this._intl.switchToMultiYearViewLabel : this._intl.switchToMonthViewLabel;\r\n }\r\n /** The label for the previous button. */\r\n get prevButtonLabel() {\r\n return {\r\n 'month': this._intl.prevMonthLabel,\r\n 'year': this._intl.prevYearLabel,\r\n 'multi-year': this._intl.prevMultiYearLabel\r\n }[this.calendar.currentView];\r\n }\r\n /** The label for the next button. */\r\n get nextButtonLabel() {\r\n return {\r\n 'month': this._intl.nextMonthLabel,\r\n 'year': this._intl.nextYearLabel,\r\n 'multi-year': this._intl.nextMultiYearLabel\r\n }[this.calendar.currentView];\r\n }\r\n /** Handles user clicks on the period label. */\r\n currentPeriodClicked() {\r\n this.calendar.currentView = this.calendar.currentView == 'month' ? 'multi-year' : 'month';\r\n }\r\n /** Handles user clicks on the previous button. */\r\n previousClicked() {\r\n this.calendar.activeDate = this.calendar.currentView == 'month' ?\r\n this._dateAdapter.addCalendarMonths(this.calendar.activeDate, -1) :\r\n this._dateAdapter.addCalendarYears(this.calendar.activeDate, this.calendar.currentView == 'year' ? -1 : -yearsPerPage);\r\n }\r\n /** Handles user clicks on the next button. */\r\n nextClicked() {\r\n this.calendar.activeDate = this.calendar.currentView == 'month' ?\r\n this._dateAdapter.addCalendarMonths(this.calendar.activeDate, 1) :\r\n this._dateAdapter.addCalendarYears(this.calendar.activeDate, this.calendar.currentView == 'year' ? 1 : yearsPerPage);\r\n }\r\n /** Whether the previous period button is enabled. */\r\n previousEnabled() {\r\n if (!this.calendar.minDate) {\r\n return true;\r\n }\r\n return !this.calendar.minDate ||\r\n !this._isSameView(this.calendar.activeDate, this.calendar.minDate);\r\n }\r\n /** Whether the next period button is enabled. */\r\n nextEnabled() {\r\n return !this.calendar.maxDate ||\r\n !this._isSameView(this.calendar.activeDate, this.calendar.maxDate);\r\n }\r\n /** Whether the two dates represent the same view in the current view mode (month or year). */\r\n _isSameView(date1, date2) {\r\n if (this.calendar.currentView == 'month') {\r\n return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2) &&\r\n this._dateAdapter.getMonth(date1) == this._dateAdapter.getMonth(date2);\r\n }\r\n if (this.calendar.currentView == 'year') {\r\n return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2);\r\n }\r\n // Otherwise we are in 'multi-year' view.\r\n return isSameMultiYearView(this._dateAdapter, date1, date2, this.calendar.minDate, this.calendar.maxDate);\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NgxMatCalendarHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatCalendarHeader, deps: [{ token: i1$1.MatDatepickerIntl }, { token: forwardRef(() => NgxMatCalendar) }, { token: NgxMatDateAdapter, optional: true }, { token: NGX_MAT_DATE_FORMATS, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\r\n/** @nocollapse */ /** @nocollapse */ NgxMatCalendarHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.1\", type: NgxMatCalendarHeader, selector: \"ngx-mat-calendar-header\", exportAs: [\"ngxMatCalendarHeader\"], ngImport: i0, template: \"
    \\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\", components: [{ type: i3.MatButton, selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatCalendarHeader, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'ngx-mat-calendar-header', exportAs: 'ngxMatCalendarHeader', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"
    \\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 }], ctorParameters: function () { return [{ type: i1$1.MatDatepickerIntl }, { type: NgxMatCalendar, decorators: [{\r\n type: Inject,\r\n args: [forwardRef(() => NgxMatCalendar)]\r\n }] }, { type: NgxMatDateAdapter, decorators: [{\r\n type: Optional\r\n }] }, { type: undefined, decorators: [{\r\n type: Optional\r\n }, {\r\n type: Inject,\r\n args: [NGX_MAT_DATE_FORMATS]\r\n }] }, { type: i0.ChangeDetectorRef }]; } });\r\n/**\r\n * A calendar that is used as part of the datepicker.\r\n * @docs-private\r\n */\r\nclass NgxMatCalendar {\r\n constructor(_intl, _dateAdapter, _dateFormats, _changeDetectorRef) {\r\n this._dateAdapter = _dateAdapter;\r\n this._dateFormats = _dateFormats;\r\n this._changeDetectorRef = _changeDetectorRef;\r\n /**\r\n * Used for scheduling that focus should be moved to the active cell on the next tick.\r\n * We need to schedule it, rather than do it immediately, because we have to wait\r\n * for Angular to re-evaluate the view children.\r\n */\r\n this._moveFocusOnNextTick = false;\r\n /** Whether the calendar should be started in month or year view. */\r\n this.startView = 'month';\r\n /** Emits when the currently selected date changes. */\r\n this.selectedChange = new EventEmitter();\r\n /**\r\n * Emits the year chosen in multiyear view.\r\n * This doesn't imply a change on the selected date.\r\n */\r\n this.yearSelected = new EventEmitter();\r\n /**\r\n * Emits the month chosen in year view.\r\n * This doesn't imply a change on the selected date.\r\n */\r\n this.monthSelected = new EventEmitter();\r\n /** Emits when any date is selected. */\r\n this._userSelection = new EventEmitter();\r\n /**\r\n * Emits whenever there is a state change that the header may need to respond to.\r\n */\r\n this.stateChanges = new Subject();\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('NgxDateAdapter');\r\n }\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('NGX_MAT_DATE_FORMATS');\r\n }\r\n this._intlChanges = _intl.changes.subscribe(() => {\r\n _changeDetectorRef.markForCheck();\r\n this.stateChanges.next();\r\n });\r\n }\r\n /** A date representing the period (month or year) to start the calendar in. */\r\n get startAt() { return this._startAt; }\r\n set startAt(value) {\r\n this._startAt = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n /** The currently selected date. */\r\n get selected() { return this._selected; }\r\n set selected(value) {\r\n this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n /** The minimum selectable date. */\r\n get minDate() { return this._minDate; }\r\n set minDate(value) {\r\n this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n /** The maximum selectable date. */\r\n get maxDate() { return this._maxDate; }\r\n set maxDate(value) {\r\n this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n /**\r\n * The current active date. This determines which time period is shown and which date is\r\n * highlighted when using keyboard navigation.\r\n */\r\n get activeDate() { return this._clampedActiveDate; }\r\n set activeDate(value) {\r\n this._clampedActiveDate = this._dateAdapter.clampDate(value, this.minDate, this.maxDate);\r\n this.stateChanges.next();\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n /** Whether the calendar is in month view. */\r\n get currentView() { return this._currentView; }\r\n set currentView(value) {\r\n this._currentView = value;\r\n this._moveFocusOnNextTick = true;\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n ngAfterContentInit() {\r\n this._calendarHeaderPortal = new ComponentPortal(this.headerComponent || NgxMatCalendarHeader);\r\n this.activeDate = this.startAt || this._dateAdapter.today();\r\n // Assign to the private property since we don't want to move focus on init.\r\n this._currentView = this.startView;\r\n }\r\n ngAfterViewChecked() {\r\n if (this._moveFocusOnNextTick) {\r\n this._moveFocusOnNextTick = false;\r\n this.focusActiveCell();\r\n }\r\n }\r\n ngOnDestroy() {\r\n this._intlChanges.unsubscribe();\r\n this.stateChanges.complete();\r\n }\r\n ngOnChanges(changes) {\r\n const change = changes['minDate'] || changes['maxDate'] || changes['dateFilter'];\r\n if (change && !change.firstChange) {\r\n const view = this._getCurrentViewComponent();\r\n if (view) {\r\n // We need to `detectChanges` manually here, because the `minDate`, `maxDate` etc. are\r\n // passed down to the view via data bindings which won't be up-to-date when we call `_init`.\r\n this._changeDetectorRef.detectChanges();\r\n view._init();\r\n }\r\n }\r\n this.stateChanges.next();\r\n }\r\n focusActiveCell() {\r\n this._getCurrentViewComponent()._focusActiveCell();\r\n }\r\n /** Updates today's date after an update of the active date */\r\n updateTodaysDate() {\r\n let view = this.currentView == 'month' ? this.monthView :\r\n (this.currentView == 'year' ? this.yearView : this.multiYearView);\r\n view.ngAfterContentInit();\r\n }\r\n /** Handles date selection in the month view. */\r\n _dateSelected(date) {\r\n if (date && !this._dateAdapter.sameDate(date, this.selected)) {\r\n this.selectedChange.emit(date);\r\n }\r\n }\r\n /** Handles year selection in the multiyear view. */\r\n _yearSelectedInMultiYearView(normalizedYear) {\r\n this.yearSelected.emit(normalizedYear);\r\n }\r\n /** Handles month selection in the year view. */\r\n _monthSelectedInYearView(normalizedMonth) {\r\n this.monthSelected.emit(normalizedMonth);\r\n }\r\n _userSelected() {\r\n this._userSelection.emit();\r\n }\r\n /** Handles year/month selection in the multi-year/year views. */\r\n _goToDateInView(date, view) {\r\n this.activeDate = date;\r\n this.currentView = view;\r\n }\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n _getValidDateOrNull(obj) {\r\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n /** Returns the component instance that corresponds to the current calendar view. */\r\n _getCurrentViewComponent() {\r\n return this.monthView || this.yearView || this.multiYearView;\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NgxMatCalendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatCalendar, deps: [{ token: i1$1.MatDatepickerIntl }, { token: NgxMatDateAdapter, optional: true }, { token: NGX_MAT_DATE_FORMATS, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\r\n/** @nocollapse */ /** @nocollapse */ NgxMatCalendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.1\", type: NgxMatCalendar, selector: \"ngx-mat-calendar\", inputs: { headerComponent: \"headerComponent\", startAt: \"startAt\", startView: \"startView\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\", dateClass: \"dateClass\" }, outputs: { selectedChange: \"selectedChange\", yearSelected: \"yearSelected\", monthSelected: \"monthSelected\", _userSelection: \"_userSelection\" }, host: { classAttribute: \"mat-calendar\" }, viewQueries: [{ propertyName: \"monthView\", first: true, predicate: NgxMatMonthView, descendants: true }, { propertyName: \"yearView\", first: true, predicate: NgxMatYearView, descendants: true }, { propertyName: \"multiYearView\", first: true, predicate: NgxMatMultiYearView, descendants: true }], exportAs: [\"ngxMatCalendar\"], usesOnChanges: true, ngImport: i0, template: \"\\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\", styles: [\".mat-calendar{display:block}.mat-calendar-header{padding:8px 8px 0}.mat-calendar-content{padding:0 8px 8px;outline:none}.mat-calendar-controls{display:flex;margin:5% calc(4.71429% - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0}.mat-calendar-arrow{display:inline-block;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top-width:5px;border-top-style:solid;margin:0 0 0 5px;vertical-align:middle}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.mat-calendar-previous-button,.mat-calendar-next-button{position:relative}.mat-calendar-previous-button:after,.mat-calendar-next-button:after{top:0;left:0;right:0;bottom:0;position:absolute;content:\\\"\\\";margin:15.5px;border:0 solid currentColor;border-top-width:2px}[dir=rtl] .mat-calendar-previous-button,[dir=rtl] .mat-calendar-next-button{transform:rotate(180deg)}.mat-calendar-previous-button:after{border-left-width:2px;transform:translate(2px) rotate(-45deg)}.mat-calendar-next-button:after{border-right-width:2px;transform:translate(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider:after{content:\\\"\\\";position:absolute;top:0;left:-8px;right:-8px;height:1px}\\n\"], components: [{ type: NgxMatMonthView, selector: \"ngx-mat-month-view\", inputs: [\"activeDate\", \"selected\", \"minDate\", \"maxDate\", \"dateFilter\", \"dateClass\", \"comparisonStart\", \"comparisonEnd\"], outputs: [\"selectedChange\", \"_userSelection\", \"activeDateChange\"], exportAs: [\"ngxMatMonthView\"] }, { type: NgxMatYearView, selector: \"ngx-mat-year-view\", inputs: [\"activeDate\", \"selected\", \"minDate\", \"maxDate\", \"dateFilter\"], outputs: [\"selectedChange\", \"monthSelected\", \"activeDateChange\"], exportAs: [\"ngxMatYearView\"] }, { type: NgxMatMultiYearView, selector: \"ngx-mat-multi-year-view\", inputs: [\"activeDate\", \"selected\", \"minDate\", \"maxDate\", \"dateFilter\"], outputs: [\"selectedChange\", \"yearSelected\", \"activeDateChange\"], exportAs: [\"ngxMatMultiYearView\"] }], directives: [{ type: i7.CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }, { type: i1.NgSwitch, selector: \"[ngSwitch]\", inputs: [\"ngSwitch\"] }, { type: i1.NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: [\"ngSwitchCase\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatCalendar, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'ngx-mat-calendar', host: {\r\n 'class': 'mat-calendar',\r\n }, exportAs: 'ngxMatCalendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: \"\\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\", styles: [\".mat-calendar{display:block}.mat-calendar-header{padding:8px 8px 0}.mat-calendar-content{padding:0 8px 8px;outline:none}.mat-calendar-controls{display:flex;margin:5% calc(4.71429% - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0}.mat-calendar-arrow{display:inline-block;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top-width:5px;border-top-style:solid;margin:0 0 0 5px;vertical-align:middle}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.mat-calendar-previous-button,.mat-calendar-next-button{position:relative}.mat-calendar-previous-button:after,.mat-calendar-next-button:after{top:0;left:0;right:0;bottom:0;position:absolute;content:\\\"\\\";margin:15.5px;border:0 solid currentColor;border-top-width:2px}[dir=rtl] .mat-calendar-previous-button,[dir=rtl] .mat-calendar-next-button{transform:rotate(180deg)}.mat-calendar-previous-button:after{border-left-width:2px;transform:translate(2px) rotate(-45deg)}.mat-calendar-next-button:after{border-right-width:2px;transform:translate(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider:after{content:\\\"\\\";position:absolute;top:0;left:-8px;right:-8px;height:1px}\\n\"] }]\r\n }], ctorParameters: function () { return [{ type: i1$1.MatDatepickerIntl }, { type: NgxMatDateAdapter, decorators: [{\r\n type: Optional\r\n }] }, { type: undefined, decorators: [{\r\n type: Optional\r\n }, {\r\n type: Inject,\r\n args: [NGX_MAT_DATE_FORMATS]\r\n }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { headerComponent: [{\r\n type: Input\r\n }], startAt: [{\r\n type: Input\r\n }], startView: [{\r\n type: Input\r\n }], selected: [{\r\n type: Input\r\n }], minDate: [{\r\n type: Input\r\n }], maxDate: [{\r\n type: Input\r\n }], dateFilter: [{\r\n type: Input\r\n }], dateClass: [{\r\n type: Input\r\n }], selectedChange: [{\r\n type: Output\r\n }], yearSelected: [{\r\n type: Output\r\n }], monthSelected: [{\r\n type: Output\r\n }], _userSelection: [{\r\n type: Output\r\n }], monthView: [{\r\n type: ViewChild,\r\n args: [NgxMatMonthView]\r\n }], yearView: [{\r\n type: ViewChild,\r\n args: [NgxMatYearView]\r\n }], multiYearView: [{\r\n type: ViewChild,\r\n args: [NgxMatMultiYearView]\r\n }] } });\n\nclass NgxMatTimepickerComponent {\r\n constructor(_dateAdapter, cd, formBuilder) {\r\n this._dateAdapter = _dateAdapter;\r\n this.cd = cd;\r\n this.formBuilder = formBuilder;\r\n this.disabled = false;\r\n this.showSpinners = true;\r\n this.stepHour = DEFAULT_STEP;\r\n this.stepMinute = DEFAULT_STEP;\r\n this.stepSecond = DEFAULT_STEP;\r\n this.showSeconds = false;\r\n this.disableMinute = false;\r\n this.enableMeridian = false;\r\n this.color = 'primary';\r\n this.meridian = MERIDIANS.AM;\r\n this._onChange = () => { };\r\n this._onTouched = () => { };\r\n this._destroyed = new Subject();\r\n this.pattern = PATTERN_INPUT_HOUR;\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('NgxMatDateAdapter');\r\n }\r\n this.form = this.formBuilder.group({\r\n hour: [{ value: null, disabled: this.disabled }, [Validators.required, Validators.pattern(PATTERN_INPUT_HOUR)]],\r\n minute: [{ value: null, disabled: this.disabled }, [Validators.required, Validators.pattern(PATTERN_INPUT_MINUTE)]],\r\n second: [{ value: null, disabled: this.disabled }, [Validators.required, Validators.pattern(PATTERN_INPUT_SECOND)]]\r\n });\r\n }\r\n /** Hour */\r\n get hour() {\r\n let val = Number(this.form.controls['hour'].value);\r\n return isNaN(val) ? 0 : val;\r\n }\r\n ;\r\n get minute() {\r\n let val = Number(this.form.controls['minute'].value);\r\n return isNaN(val) ? 0 : val;\r\n }\r\n ;\r\n get second() {\r\n let val = Number(this.form.controls['second'].value);\r\n return isNaN(val) ? 0 : val;\r\n }\r\n ;\r\n /** Whether or not the form is valid */\r\n get valid() {\r\n return this.form.valid;\r\n }\r\n ngOnInit() {\r\n this.form.valueChanges.pipe(takeUntil(this._destroyed), debounceTime(400)).subscribe(val => {\r\n this._updateModel();\r\n });\r\n }\r\n ngOnChanges(changes) {\r\n if (changes.disabled || changes.disableMinute) {\r\n this._setDisableStates();\r\n }\r\n }\r\n ngOnDestroy() {\r\n this._destroyed.next();\r\n this._destroyed.complete();\r\n }\r\n /**\r\n * Writes a new value to the element.\r\n * @param obj\r\n */\r\n writeValue(val) {\r\n if (val != null) {\r\n this._model = val;\r\n }\r\n else {\r\n this._model = this._dateAdapter.today();\r\n if (this.defaultTime != null) {\r\n this._dateAdapter.setTimeByDefaultValues(this._model, this.defaultTime);\r\n }\r\n }\r\n this._updateHourMinuteSecond();\r\n }\r\n /** Registers a callback function that is called when the control's value changes in the UI. */\r\n registerOnChange(fn) {\r\n this._onChange = fn;\r\n }\r\n /**\r\n * Set the function to be called when the control receives a touch event.\r\n */\r\n registerOnTouched(fn) {\r\n this._onTouched = fn;\r\n }\r\n /** Enables or disables the appropriate DOM element */\r\n setDisabledState(isDisabled) {\r\n this._disabled = isDisabled;\r\n this.cd.markForCheck();\r\n }\r\n /**\r\n * Format input\r\n * @param input\r\n */\r\n formatInput(input) {\r\n input.value = input.value.replace(NUMERIC_REGEX, '');\r\n }\r\n /** Toggle meridian */\r\n toggleMeridian() {\r\n this.meridian = (this.meridian === MERIDIANS.AM) ? MERIDIANS.PM : MERIDIANS.AM;\r\n this.change('hour');\r\n }\r\n /** Change property of time */\r\n change(prop, up) {\r\n const next = this._getNextValueByProp(prop, up);\r\n this.form.controls[prop].setValue(formatTwoDigitTimeValue(next), { onlySelf: false, emitEvent: false });\r\n this._updateModel();\r\n }\r\n /** Update controls of form by model */\r\n _updateHourMinuteSecond() {\r\n let _hour = this._dateAdapter.getHour(this._model);\r\n const _minute = this._dateAdapter.getMinute(this._model);\r\n const _second = this._dateAdapter.getSecond(this._model);\r\n if (this.enableMeridian) {\r\n if (_hour >= LIMIT_TIMES.meridian) {\r\n _hour = _hour - LIMIT_TIMES.meridian;\r\n this.meridian = MERIDIANS.PM;\r\n }\r\n else {\r\n this.meridian = MERIDIANS.AM;\r\n }\r\n if (_hour === 0) {\r\n _hour = LIMIT_TIMES.meridian;\r\n }\r\n }\r\n this.form.controls['hour'].setValue(formatTwoDigitTimeValue(_hour));\r\n this.form.controls['minute'].setValue(formatTwoDigitTimeValue(_minute));\r\n this.form.controls['second'].setValue(formatTwoDigitTimeValue(_second));\r\n }\r\n /** Update model */\r\n _updateModel() {\r\n let _hour = this.hour;\r\n if (this.enableMeridian) {\r\n if (this.meridian === MERIDIANS.AM && _hour === LIMIT_TIMES.meridian) {\r\n _hour = 0;\r\n }\r\n else if (this.meridian === MERIDIANS.PM && _hour !== LIMIT_TIMES.meridian) {\r\n _hour = _hour + LIMIT_TIMES.meridian;\r\n }\r\n }\r\n this._dateAdapter.setHour(this._model, _hour);\r\n this._dateAdapter.setMinute(this._model, this.minute);\r\n this._dateAdapter.setSecond(this._model, this.second);\r\n this._onChange(this._model);\r\n }\r\n /**\r\n * Get next value by property\r\n * @param prop\r\n * @param up\r\n */\r\n _getNextValueByProp(prop, up) {\r\n const keyProp = prop[0].toUpperCase() + prop.slice(1);\r\n const min = LIMIT_TIMES[`min${keyProp}`];\r\n let max = LIMIT_TIMES[`max${keyProp}`];\r\n if (prop === 'hour' && this.enableMeridian) {\r\n max = LIMIT_TIMES.meridian;\r\n }\r\n let next;\r\n if (up == null) {\r\n next = this[prop] % (max);\r\n if (prop === 'hour' && this.enableMeridian) {\r\n if (next === 0)\r\n next = max;\r\n }\r\n }\r\n else {\r\n next = up ? this[prop] + this[`step${keyProp}`] : this[prop] - this[`step${keyProp}`];\r\n if (prop === 'hour' && this.enableMeridian) {\r\n next = next % (max + 1);\r\n if (next === 0)\r\n next = up ? 1 : max;\r\n }\r\n else {\r\n next = next % max;\r\n }\r\n if (up) {\r\n next = next > max ? (next - max + min) : next;\r\n }\r\n else {\r\n next = next < min ? (next - min + max) : next;\r\n }\r\n }\r\n return next;\r\n }\r\n /**\r\n * Set disable states\r\n */\r\n _setDisableStates() {\r\n if (this.disabled) {\r\n this.form.disable();\r\n }\r\n else {\r\n this.form.enable();\r\n if (this.disableMinute) {\r\n this.form.get('minute').disable();\r\n if (this.showSeconds) {\r\n this.form.get('second').disable();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NgxMatTimepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatTimepickerComponent, deps: [{ token: NgxMatDateAdapter, optional: true }, { token: i0.ChangeDetectorRef }, { token: i2$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });\r\n/** @nocollapse */ /** @nocollapse */ NgxMatTimepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.1\", type: NgxMatTimepickerComponent, selector: \"ngx-mat-timepicker\", inputs: { disabled: \"disabled\", showSpinners: \"showSpinners\", stepHour: \"stepHour\", stepMinute: \"stepMinute\", stepSecond: \"stepSecond\", showSeconds: \"showSeconds\", disableMinute: \"disableMinute\", enableMeridian: \"enableMeridian\", defaultTime: \"defaultTime\", color: \"color\" }, host: { classAttribute: \"ngx-mat-timepicker\" }, providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef((() => NgxMatTimepickerComponent)),\r\n multi: true\r\n }\r\n ], exportAs: [\"ngxMatTimepicker\"], usesOnChanges: true, ngImport: i0, template: \"
    \\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 \\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 \\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 \\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
    \", styles: [\".ngx-mat-timepicker{font-size:13px}.ngx-mat-timepicker form{min-width:90px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td{text-align:center}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td.ngx-mat-timepicker-spacer{font-weight:bold}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td.ngx-mat-timepicker-meridian .mat-button{min-width:64px;line-height:36px;min-width:0;border-radius:50%;width:36px;height:36px;padding:0;flex-shrink:0}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-icon-button{height:24px;width:24px;line-height:24px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-icon-button .mat-icon{font-size:24px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-form-field{width:20px;max-width:20px;text-align:center}\\n\"], components: [{ type: i3.MatButton, selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }, { type: i4.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { type: i2$2.MatFormField, selector: \"mat-form-field\", inputs: [\"color\", \"appearance\", \"hideRequiredMarker\", \"hintLabel\", \"floatLabel\"], exportAs: [\"matFormField\"] }], directives: [{ type: i2$1.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { type: i2$1.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { type: i2$1.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i7$1.MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]\", inputs: [\"disabled\", \"id\", \"placeholder\", \"required\", \"type\", \"errorStateMatcher\", \"aria-describedby\", \"value\", \"readonly\"], exportAs: [\"matInput\"] }, { type: i2$1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { type: i2$1.MaxLengthValidator, selector: \"[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]\", inputs: [\"maxlength\"] }, { type: i2$1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i2$1.FormControlName, selector: \"[formControlName]\", inputs: [\"formControlName\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"] }], encapsulation: i0.ViewEncapsulation.None });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatTimepickerComponent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'ngx-mat-timepicker', host: {\r\n 'class': 'ngx-mat-timepicker'\r\n }, providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef((() => NgxMatTimepickerComponent)),\r\n multi: true\r\n }\r\n ], exportAs: 'ngxMatTimepicker', encapsulation: ViewEncapsulation.None, template: \"
    \\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 \\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 \\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 \\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
    \", styles: [\".ngx-mat-timepicker{font-size:13px}.ngx-mat-timepicker form{min-width:90px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td{text-align:center}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td.ngx-mat-timepicker-spacer{font-weight:bold}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td.ngx-mat-timepicker-meridian .mat-button{min-width:64px;line-height:36px;min-width:0;border-radius:50%;width:36px;height:36px;padding:0;flex-shrink:0}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-icon-button{height:24px;width:24px;line-height:24px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-icon-button .mat-icon{font-size:24px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-form-field{width:20px;max-width:20px;text-align:center}\\n\"] }]\r\n }], ctorParameters: function () { return [{ type: NgxMatDateAdapter, decorators: [{\r\n type: Optional\r\n }] }, { type: i0.ChangeDetectorRef }, { type: i2$1.FormBuilder }]; }, propDecorators: { disabled: [{\r\n type: Input\r\n }], showSpinners: [{\r\n type: Input\r\n }], stepHour: [{\r\n type: Input\r\n }], stepMinute: [{\r\n type: Input\r\n }], stepSecond: [{\r\n type: Input\r\n }], showSeconds: [{\r\n type: Input\r\n }], disableMinute: [{\r\n type: Input\r\n }], enableMeridian: [{\r\n type: Input\r\n }], defaultTime: [{\r\n type: Input\r\n }], color: [{\r\n type: Input\r\n }] } });\n\n/** Used to generate a unique ID for each datepicker instance. */\r\nlet datepickerUid = 0;\r\n// Boilerplate for applying mixins to MatDatepickerContent.\r\n/** @docs-private */\r\nconst _MatDatetimepickerContentBase = mixinColor(class {\r\n constructor(_elementRef) {\r\n this._elementRef = _elementRef;\r\n }\r\n});\r\n/**\r\n * Component used as the content for the datepicker dialog and popup. We use this instead of using\r\n * NgxMatCalendar directly as the content so we can control the initial focus. This also gives us a\r\n * place to put additional features of the popup that are not part of the calendar itself in the\r\n * future. (e.g. confirmation buttons).\r\n * @docs-private\r\n */\r\nclass NgxMatDatetimeContent extends _MatDatetimepickerContentBase {\r\n constructor(elementRef, cd, _viewContainerRef) {\r\n super(elementRef);\r\n this.cd = cd;\r\n this._viewContainerRef = _viewContainerRef;\r\n }\r\n /** Whether or not the selected date is valid (min,max...) */\r\n get valid() {\r\n if (this.datepicker.hideTime)\r\n return this.datepicker.valid;\r\n return this._timePicker && this._timePicker.valid && this.datepicker.valid;\r\n }\r\n get isViewMonth() {\r\n if (!this._calendar || this._calendar.currentView == null)\r\n return true;\r\n return this._calendar.currentView == 'month';\r\n }\r\n ngAfterViewInit() {\r\n this._calendar.focusActiveCell();\r\n if (this.datepicker._customIcon) {\r\n this._templateCustomIconPortal = new TemplatePortal(this.datepicker._customIcon, this._viewContainerRef);\r\n this.cd.detectChanges();\r\n }\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NgxMatDatetimeContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatDatetimeContent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });\r\n/** @nocollapse */ /** @nocollapse */ NgxMatDatetimeContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.1\", type: NgxMatDatetimeContent, selector: \"ngx-mat-datetime-content\", inputs: { color: \"color\" }, host: { properties: { \"@transformPanel\": \"\\\"enter\\\"\", \"class.mat-datepicker-content-touch\": \"datepicker.touchUi\" }, classAttribute: \"mat-datepicker-content\" }, viewQueries: [{ propertyName: \"_calendar\", first: true, predicate: NgxMatCalendar, descendants: true }, { propertyName: \"_timePicker\", first: true, predicate: NgxMatTimepickerComponent, descendants: true }], exportAs: [\"ngxMatDatetimeContent\"], usesInheritance: true, ngImport: i0, template: \"\\r\\n\\r\\n\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \", styles: [\".mat-datepicker-content{display:block;border-radius:4px;box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-datepicker-content .mat-calendar{width:296px}.mat-datepicker-content .time-container{display:flex;position:relative;padding-top:5px;justify-content:center}.mat-datepicker-content .time-container.disable-seconds .ngx-mat-timepicker .table{margin-left:9px}.mat-datepicker-content .time-container:before{content:\\\"\\\";position:absolute;top:0;left:0;right:0;height:1px;background-color:#0000001f}.mat-datepicker-content .actions{display:flex;padding:5px 15px 10px;justify-content:flex-end}\\n\"], components: [{ type: NgxMatCalendar, selector: \"ngx-mat-calendar\", inputs: [\"headerComponent\", \"startAt\", \"startView\", \"selected\", \"minDate\", \"maxDate\", \"dateFilter\", \"dateClass\"], outputs: [\"selectedChange\", \"yearSelected\", \"monthSelected\", \"_userSelection\"], exportAs: [\"ngxMatCalendar\"] }, { type: NgxMatTimepickerComponent, selector: \"ngx-mat-timepicker\", inputs: [\"disabled\", \"showSpinners\", \"stepHour\", \"stepMinute\", \"stepSecond\", \"showSeconds\", \"disableMinute\", \"enableMeridian\", \"defaultTime\", \"color\"], exportAs: [\"ngxMatTimepicker\"] }, { type: i3.MatButton, selector: \"button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]\", inputs: [\"disabled\", \"disableRipple\", \"color\"], exportAs: [\"matButton\"] }, { type: i4.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }], directives: [{ type: i1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i2$1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { type: i2$1.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { type: i7.CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }], animations: [\r\n matDatepickerAnimations.transformPanel,\r\n matDatepickerAnimations.fadeInCalendar,\r\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatDatetimeContent, decorators: [{\r\n type: Component,\r\n args: [{ selector: 'ngx-mat-datetime-content', host: {\r\n 'class': 'mat-datepicker-content',\r\n '[@transformPanel]': '\"enter\"',\r\n '[class.mat-datepicker-content-touch]': 'datepicker.touchUi',\r\n }, animations: [\r\n matDatepickerAnimations.transformPanel,\r\n matDatepickerAnimations.fadeInCalendar,\r\n ], exportAs: 'ngxMatDatetimeContent', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['color'], template: \"\\r\\n\\r\\n\\r\\n
    \\r\\n \\r\\n \\r\\n
    \\r\\n
    \\r\\n \\r\\n
    \\r\\n
    \", styles: [\".mat-datepicker-content{display:block;border-radius:4px;box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-datepicker-content .mat-calendar{width:296px}.mat-datepicker-content .time-container{display:flex;position:relative;padding-top:5px;justify-content:center}.mat-datepicker-content .time-container.disable-seconds .ngx-mat-timepicker .table{margin-left:9px}.mat-datepicker-content .time-container:before{content:\\\"\\\";position:absolute;top:0;left:0;right:0;height:1px;background-color:#0000001f}.mat-datepicker-content .actions{display:flex;padding:5px 15px 10px;justify-content:flex-end}\\n\"] }]\r\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { _calendar: [{\r\n type: ViewChild,\r\n args: [NgxMatCalendar]\r\n }], _timePicker: [{\r\n type: ViewChild,\r\n args: [NgxMatTimepickerComponent]\r\n }] } });\r\n// TODO(mmalerba): We use a component instead of a directive here so the user can use implicit\r\n// template reference variables (e.g. #d vs #d=\"matDatepicker\"). We can change this to a directive\r\n// if angular adds support for `exportAs: '$implicit'` on directives.\r\n/** Component responsible for managing the datepicker popup/dialog. */\r\nclass NgxMatDatetimePicker {\r\n constructor(_dialog, _overlay, _ngZone, _viewContainerRef, scrollStrategy, _dateAdapter, _dir, _document) {\r\n this._dialog = _dialog;\r\n this._overlay = _overlay;\r\n this._ngZone = _ngZone;\r\n this._viewContainerRef = _viewContainerRef;\r\n this._dateAdapter = _dateAdapter;\r\n this._dir = _dir;\r\n this._document = _document;\r\n /** The view that the calendar should start in. */\r\n this.startView = 'month';\r\n this._defaultColor = 'primary';\r\n this._touchUi = false;\r\n this._hideTime = false;\r\n /**\r\n * Emits selected year in multiyear view.\r\n * This doesn't imply a change on the selected date.\r\n */\r\n this.yearSelected = new EventEmitter();\r\n /**\r\n * Emits selected month in year view.\r\n * This doesn't imply a change on the selected date.\r\n */\r\n this.monthSelected = new EventEmitter();\r\n /** Emits when the datepicker has been opened. */\r\n this.openedStream = new EventEmitter();\r\n /** Emits when the datepicker has been closed. */\r\n this.closedStream = new EventEmitter();\r\n this._opened = false;\r\n this._showSpinners = true;\r\n this._showSeconds = false;\r\n this._stepHour = DEFAULT_STEP;\r\n this._stepMinute = DEFAULT_STEP;\r\n this._stepSecond = DEFAULT_STEP;\r\n this._enableMeridian = false;\r\n this._hasBackdrop = true;\r\n /** The id for the datepicker calendar. */\r\n this.id = `mat-datepicker-${datepickerUid++}`;\r\n this._validSelected = null;\r\n /** The element that was focused before the datepicker was opened. */\r\n this._focusedElementBeforeOpen = null;\r\n /** Subscription to value changes in the associated input element. */\r\n this._inputSubscription = Subscription.EMPTY;\r\n /** Emits when the datepicker is disabled. */\r\n this.stateChanges = new Subject();\r\n /** Emits new selected date when selected date changes. */\r\n this._selectedChanged = new Subject();\r\n /** The form control validator for the min date. */\r\n this._minValidator = () => {\r\n return (!this._minDate || !this._selected ||\r\n this._dateAdapter.compareDateWithTime(this._minDate, this._selected, this.showSeconds) <= 0) ?\r\n null : { 'matDatetimePickerMin': { 'min': this._minDate, 'actual': this._selected } };\r\n };\r\n /** The form control validator for the max date. */\r\n this._maxValidator = () => {\r\n return (!this._maxDate || !this._selected ||\r\n this._dateAdapter.compareDateWithTime(this._maxDate, this._selected, this.showSeconds) >= 0) ?\r\n null : { 'matDatetimePickerMax': { 'max': this._maxDate, 'actual': this._selected } };\r\n };\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('NgxMatDateAdapter');\r\n }\r\n this._scrollStrategy = scrollStrategy;\r\n }\r\n /** The date to open the calendar to initially. */\r\n get startAt() {\r\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\r\n // selected value is.\r\n return this._startAt || (this.datepickerInput ? this.datepickerInput.value : null);\r\n }\r\n set startAt(value) {\r\n this._startAt = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n /** Default Color palette to use on the datepicker's calendar. */\r\n get defaultColor() {\r\n return this._defaultColor;\r\n }\r\n set defaultColor(value) {\r\n this._defaultColor = value;\r\n }\r\n /** Color palette to use on the datepicker's calendar. */\r\n get color() {\r\n return this._color ||\r\n (this.datepickerInput ? this.datepickerInput._getThemePalette() : 'primary');\r\n }\r\n set color(value) {\r\n this._color = value;\r\n }\r\n /**\r\n * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather\r\n * than a popup and elements have more padding to allow for bigger touch targets.\r\n */\r\n get touchUi() { return this._touchUi; }\r\n set touchUi(value) {\r\n this._touchUi = coerceBooleanProperty(value);\r\n }\r\n get hideTime() { return this._hideTime; }\r\n set hideTime(value) {\r\n this._hideTime = coerceBooleanProperty(value);\r\n }\r\n /** Whether the datepicker pop-up should be disabled. */\r\n get disabled() {\r\n return this._disabled === undefined && this.datepickerInput ?\r\n this.datepickerInput.disabled : !!this._disabled;\r\n }\r\n set disabled(value) {\r\n const newValue = coerceBooleanProperty(value);\r\n if (newValue !== this._disabled) {\r\n this._disabled = newValue;\r\n this.stateChanges.next(newValue);\r\n }\r\n }\r\n /** Whether the calendar is open. */\r\n get opened() { return this._opened; }\r\n set opened(value) { value ? this.open() : this.close(); }\r\n /** Whether the timepicker'spinners is shown. */\r\n get showSpinners() { return this._showSpinners; }\r\n set showSpinners(value) { this._showSpinners = value; }\r\n /** Whether the second part is disabled. */\r\n get showSeconds() { return this._showSeconds; }\r\n set showSeconds(value) { this._showSeconds = value; }\r\n /** Step hour */\r\n get stepHour() { return this._stepHour; }\r\n set stepHour(value) { this._stepHour = value; }\r\n /** Step minute */\r\n get stepMinute() { return this._stepMinute; }\r\n set stepMinute(value) { this._stepMinute = value; }\r\n /** Step second */\r\n get stepSecond() { return this._stepSecond; }\r\n set stepSecond(value) { this._stepSecond = value; }\r\n /** Enable meridian */\r\n get enableMeridian() { return this._enableMeridian; }\r\n set enableMeridian(value) { this._enableMeridian = value; }\r\n /** disable minute */\r\n get disableMinute() { return this._disableMinute; }\r\n set disableMinute(value) { this._disableMinute = value; }\r\n /** Step second */\r\n get defaultTime() { return this._defaultTime; }\r\n set defaultTime(value) { this._defaultTime = value; }\r\n /** The currently selected date. */\r\n get _selected() { return this._validSelected; }\r\n set _selected(value) { this._validSelected = value; }\r\n /** The minimum selectable date. */\r\n get _minDate() {\r\n return this.datepickerInput && this.datepickerInput.min;\r\n }\r\n /** The maximum selectable date. */\r\n get _maxDate() {\r\n return this.datepickerInput && this.datepickerInput.max;\r\n }\r\n get valid() {\r\n const minValidators = this._minValidator();\r\n const maxValidators = this._maxValidator();\r\n return minValidators == null && maxValidators == null;\r\n }\r\n get _dateFilter() {\r\n return this.datepickerInput && this.datepickerInput._dateFilter;\r\n }\r\n ngOnDestroy() {\r\n this.close();\r\n if (this._popupRef) {\r\n this._popupRef.dispose();\r\n this._popupComponentRef = null;\r\n }\r\n this._inputSubscription.unsubscribe();\r\n this.stateChanges.complete();\r\n }\r\n /** Selects the given date */\r\n select(date) {\r\n this._dateAdapter.copyTime(date, this._selected);\r\n this._selected = date;\r\n }\r\n /** Emits the selected year in multiyear view */\r\n _selectYear(normalizedYear) {\r\n this.yearSelected.emit(normalizedYear);\r\n }\r\n /** Emits selected month in year view */\r\n _selectMonth(normalizedMonth) {\r\n this.monthSelected.emit(normalizedMonth);\r\n }\r\n /** OK button handler and close*/\r\n ok() {\r\n const cloned = this._dateAdapter.clone(this._selected);\r\n this._selectedChanged.next(cloned);\r\n this.close();\r\n }\r\n /** Cancel and close */\r\n cancel() {\r\n this._selected = this._rawValue;\r\n this.close();\r\n }\r\n /**\r\n * Register an input with this datepicker.\r\n * @param input The datepicker input to register with this datepicker.\r\n */\r\n _registerInput(input) {\r\n if (this.datepickerInput) {\r\n throw Error('A NgxMatDatepicker can only be associated with a single input.');\r\n }\r\n this.datepickerInput = input;\r\n this._inputSubscription =\r\n this.datepickerInput._valueChange.subscribe((value) => this._selected = value);\r\n }\r\n /** Open the calendar. */\r\n open() {\r\n this._rawValue = this._selected != null\r\n ? this._dateAdapter.clone(this._selected) : null;\r\n if (this._selected == null) {\r\n this._selected = this._dateAdapter.today();\r\n if (this.defaultTime != null) {\r\n this._dateAdapter.setTimeByDefaultValues(this._selected, this.defaultTime);\r\n }\r\n }\r\n if (this._opened || this.disabled) {\r\n return;\r\n }\r\n if (!this.datepickerInput) {\r\n throw Error('Attempted to open an NgxMatDatepicker with no associated input.');\r\n }\r\n if (this._document) {\r\n this._focusedElementBeforeOpen = this._document.activeElement;\r\n }\r\n this.touchUi ? this._openAsDialog() : this._openAsPopup();\r\n this._opened = true;\r\n this.openedStream.emit();\r\n }\r\n /** Close the calendar. */\r\n close() {\r\n if (!this._opened) {\r\n return;\r\n }\r\n if (this._popupRef && this._popupRef.hasAttached()) {\r\n this._popupRef.detach();\r\n }\r\n if (this._dialogRef) {\r\n this._dialogRef.close();\r\n this._dialogRef = null;\r\n }\r\n if (this._calendarPortal && this._calendarPortal.isAttached) {\r\n this._calendarPortal.detach();\r\n }\r\n const completeClose = () => {\r\n // The `_opened` could've been reset already if\r\n // we got two events in quick succession.\r\n if (this._opened) {\r\n this._opened = false;\r\n this.closedStream.emit();\r\n this._focusedElementBeforeOpen = null;\r\n }\r\n };\r\n if (this._focusedElementBeforeOpen &&\r\n typeof this._focusedElementBeforeOpen.focus === 'function') {\r\n // Because IE moves focus asynchronously, we can't count on it being restored before we've\r\n // marked the datepicker as closed. If the event fires out of sequence and the element that\r\n // we're refocusing opens the datepicker on focus, the user could be stuck with not being\r\n // able to close the calendar at all. We work around it by making the logic, that marks\r\n // the datepicker as closed, async as well.\r\n this._focusedElementBeforeOpen.focus();\r\n setTimeout(completeClose);\r\n }\r\n else {\r\n completeClose();\r\n }\r\n }\r\n /** Open the calendar as a dialog. */\r\n _openAsDialog() {\r\n // Usually this would be handled by `open` which ensures that we can only have one overlay\r\n // open at a time, however since we reset the variables in async handlers some overlays\r\n // may slip through if the user opens and closes multiple times in quick succession (e.g.\r\n // by holding down the enter key).\r\n if (this._dialogRef) {\r\n this._dialogRef.close();\r\n }\r\n this._dialogRef = this._dialog.open(NgxMatDatetimeContent, {\r\n direction: this._dir ? this._dir.value : 'ltr',\r\n viewContainerRef: this._viewContainerRef,\r\n panelClass: 'mat-datepicker-dialog',\r\n hasBackdrop: this._hasBackdrop\r\n });\r\n this._dialogRef.afterClosed().subscribe(() => this.close());\r\n this._dialogRef.componentInstance.datepicker = this;\r\n this._setColor();\r\n }\r\n /** Open the calendar as a popup. */\r\n _openAsPopup() {\r\n if (!this._calendarPortal) {\r\n this._calendarPortal = new ComponentPortal(NgxMatDatetimeContent, this._viewContainerRef);\r\n }\r\n if (!this._popupRef) {\r\n this._createPopup();\r\n }\r\n if (!this._popupRef.hasAttached()) {\r\n this._popupComponentRef = this._popupRef.attach(this._calendarPortal);\r\n this._popupComponentRef.instance.datepicker = this;\r\n this._setColor();\r\n // Update the position once the calendar has rendered.\r\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\r\n this._popupRef.updatePosition();\r\n });\r\n }\r\n }\r\n /** Create the popup. */\r\n _createPopup() {\r\n const overlayConfig = new OverlayConfig({\r\n positionStrategy: this._createPopupPositionStrategy(),\r\n hasBackdrop: this._hasBackdrop,\r\n backdropClass: 'mat-overlay-transparent-backdrop',\r\n direction: this._dir,\r\n scrollStrategy: this._scrollStrategy(),\r\n panelClass: 'mat-datepicker-popup',\r\n });\r\n this._popupRef = this._overlay.create(overlayConfig);\r\n this._popupRef.overlayElement.setAttribute('role', 'dialog');\r\n merge(this._popupRef.backdropClick(), this._popupRef.detachments(), this._popupRef.keydownEvents().pipe(filter(event => {\r\n // Closing on alt + up is only valid when there's an input associated with the datepicker.\r\n return event.keyCode === ESCAPE ||\r\n (this.datepickerInput && event.altKey && event.keyCode === UP_ARROW);\r\n }))).subscribe(event => {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n (this._hasBackdrop && event) ? this.cancel() : this.close();\r\n });\r\n }\r\n /** Create the popup PositionStrategy. */\r\n _createPopupPositionStrategy() {\r\n return this._overlay.position()\r\n .flexibleConnectedTo(this.datepickerInput.getConnectedOverlayOrigin())\r\n .withTransformOriginOn('.mat-datepicker-content')\r\n .withFlexibleDimensions(false)\r\n .withViewportMargin(8)\r\n .withLockedPosition()\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'bottom'\r\n }\r\n ]);\r\n }\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n _getValidDateOrNull(obj) {\r\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n /** Passes the current theme color along to the calendar overlay. */\r\n _setColor() {\r\n const color = this.color;\r\n if (this._popupComponentRef) {\r\n this._popupComponentRef.instance.color = color;\r\n }\r\n if (this._dialogRef) {\r\n this._dialogRef.componentInstance.color = color;\r\n }\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NgxMatDatetimePicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatDatetimePicker, deps: [{ token: i8.MatDialog }, { token: i9.Overlay }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: MAT_DATEPICKER_SCROLL_STRATEGY }, { token: NgxMatDateAdapter, optional: true }, { token: i2.Directionality, optional: true }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Component });\r\n/** @nocollapse */ /** @nocollapse */ NgxMatDatetimePicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.1\", type: NgxMatDatetimePicker, selector: \"ngx-mat-datetime-picker\", inputs: { calendarHeaderComponent: \"calendarHeaderComponent\", startAt: \"startAt\", startView: \"startView\", defaultColor: \"defaultColor\", color: \"color\", touchUi: \"touchUi\", hideTime: \"hideTime\", disabled: \"disabled\", panelClass: \"panelClass\", dateClass: \"dateClass\", opened: \"opened\", showSpinners: \"showSpinners\", showSeconds: \"showSeconds\", stepHour: \"stepHour\", stepMinute: \"stepMinute\", stepSecond: \"stepSecond\", enableMeridian: \"enableMeridian\", disableMinute: \"disableMinute\", defaultTime: \"defaultTime\" }, outputs: { yearSelected: \"yearSelected\", monthSelected: \"monthSelected\", openedStream: \"opened\", closedStream: \"closed\" }, queries: [{ propertyName: \"_customIcon\", first: true, predicate: TemplateRef, descendants: true }], exportAs: [\"ngxMatDatetimePicker\"], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatDatetimePicker, decorators: [{\r\n type: Component,\r\n args: [{\r\n selector: 'ngx-mat-datetime-picker',\r\n template: '',\r\n exportAs: 'ngxMatDatetimePicker',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n }]\r\n }], ctorParameters: function () { return [{ type: i8.MatDialog }, { type: i9.Overlay }, { type: i0.NgZone }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\r\n type: Inject,\r\n args: [MAT_DATEPICKER_SCROLL_STRATEGY]\r\n }] }, { type: NgxMatDateAdapter, decorators: [{\r\n type: Optional\r\n }] }, { type: i2.Directionality, decorators: [{\r\n type: Optional\r\n }] }, { type: undefined, decorators: [{\r\n type: Optional\r\n }, {\r\n type: Inject,\r\n args: [DOCUMENT]\r\n }] }]; }, propDecorators: { calendarHeaderComponent: [{\r\n type: Input\r\n }], _customIcon: [{\r\n type: ContentChild,\r\n args: [TemplateRef]\r\n }], startAt: [{\r\n type: Input\r\n }], startView: [{\r\n type: Input\r\n }], defaultColor: [{\r\n type: Input\r\n }], color: [{\r\n type: Input\r\n }], touchUi: [{\r\n type: Input\r\n }], hideTime: [{\r\n type: Input\r\n }], disabled: [{\r\n type: Input\r\n }], yearSelected: [{\r\n type: Output\r\n }], monthSelected: [{\r\n type: Output\r\n }], panelClass: [{\r\n type: Input\r\n }], dateClass: [{\r\n type: Input\r\n }], openedStream: [{\r\n type: Output,\r\n args: ['opened']\r\n }], closedStream: [{\r\n type: Output,\r\n args: ['closed']\r\n }], opened: [{\r\n type: Input\r\n }], showSpinners: [{\r\n type: Input\r\n }], showSeconds: [{\r\n type: Input\r\n }], stepHour: [{\r\n type: Input\r\n }], stepMinute: [{\r\n type: Input\r\n }], stepSecond: [{\r\n type: Input\r\n }], enableMeridian: [{\r\n type: Input\r\n }], disableMinute: [{\r\n type: Input\r\n }], defaultTime: [{\r\n type: Input\r\n }] } });\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n/** @docs-private */\r\nconst MAT_DATEPICKER_VALUE_ACCESSOR = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgxMatDatetimeInput),\r\n multi: true\r\n};\r\n/** @docs-private */\r\nconst MAT_DATEPICKER_VALIDATORS = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NgxMatDatetimeInput),\r\n multi: true\r\n};\r\n/**\r\n * An event used for datepicker input and change events. We don't always have access to a native\r\n * input or change event because the event may have been triggered by the user clicking on the\r\n * calendar popup. For consistency, we always use MatDatetimePickerInputEvent instead.\r\n */\r\nclass MatDatetimePickerInputEvent {\r\n constructor(\r\n /** Reference to the datepicker input component that emitted the event. */\r\n target, \r\n /** Reference to the native input element associated with the datepicker input. */\r\n targetElement) {\r\n this.target = target;\r\n this.targetElement = targetElement;\r\n this.value = this.target.value;\r\n }\r\n}\r\n/** Directive used to connect an input to a matDatetimePicker. */\r\nclass NgxMatDatetimeInput {\r\n constructor(_elementRef, _dateAdapter, _dateFormats, _formField) {\r\n this._elementRef = _elementRef;\r\n this._dateAdapter = _dateAdapter;\r\n this._dateFormats = _dateFormats;\r\n this._formField = _formField;\r\n /** Emits when a `change` event is fired on this ``. */\r\n this.dateChange = new EventEmitter();\r\n /** Emits when an `input` event is fired on this ``. */\r\n this.dateInput = new EventEmitter();\r\n /** Emits when the value changes (either due to user input or programmatic change). */\r\n this._valueChange = new EventEmitter();\r\n /** Emits when the disabled state has changed */\r\n this.stateChanges = new EventEmitter();\r\n this._onTouched = () => { };\r\n this._cvaOnChange = () => { };\r\n this._validatorOnChange = () => { };\r\n this._datepickerSubscription = Subscription.EMPTY;\r\n this._localeSubscription = Subscription.EMPTY;\r\n /** The form control validator for whether the input parses. */\r\n this._parseValidator = () => {\r\n return this._lastValueValid ?\r\n null : { 'matDatetimePickerParse': { 'text': this._elementRef.nativeElement.value } };\r\n };\r\n /** The form control validator for the min date. */\r\n this._minValidator = (control) => {\r\n const controlValue = this._getValidDateOrNull(this._dateAdapter.deserialize(control.value));\r\n return (!this.min || !controlValue ||\r\n this._dateAdapter.compareDateWithTime(this.min, controlValue, this._datepicker.showSeconds) <= 0) ?\r\n null : { 'matDatetimePickerMin': { 'min': this.min, 'actual': controlValue } };\r\n };\r\n /** The form control validator for the max date. */\r\n this._maxValidator = (control) => {\r\n const controlValue = this._getValidDateOrNull(this._dateAdapter.deserialize(control.value));\r\n return (!this.max || !controlValue ||\r\n this._dateAdapter.compareDateWithTime(this.max, controlValue, this._datepicker.showSeconds) >= 0) ?\r\n null : { 'matDatetimePickerMax': { 'max': this.max, 'actual': controlValue } };\r\n };\r\n /** The form control validator for the date filter. */\r\n this._filterValidator = (control) => {\r\n const controlValue = this._getValidDateOrNull(this._dateAdapter.deserialize(control.value));\r\n return !this._dateFilter || !controlValue || this._dateFilter(controlValue) ?\r\n null : { 'matDatetimePickerFilter': true };\r\n };\r\n /** The combined form control validator for this input. */\r\n this._validator = Validators.compose([this._parseValidator, this._minValidator, this._maxValidator, this._filterValidator]);\r\n /** Whether the last value set on the input was valid. */\r\n this._lastValueValid = false;\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('NgxMatDateAdapter');\r\n }\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('NGX_MAT_DATE_FORMATS');\r\n }\r\n // Update the displayed date when the locale changes.\r\n this._localeSubscription = _dateAdapter.localeChanges.subscribe(() => {\r\n this.value = this.value;\r\n });\r\n }\r\n /** The datepicker that this input is associated with. */\r\n set ngxMatDatetimePicker(value) {\r\n if (!value) {\r\n return;\r\n }\r\n this._datepicker = value;\r\n this._datepicker._registerInput(this);\r\n this._datepickerSubscription.unsubscribe();\r\n this._datepickerSubscription = this._datepicker._selectedChanged.subscribe((selected) => {\r\n this.value = selected;\r\n this._cvaOnChange(selected);\r\n this._onTouched();\r\n this.dateInput.emit(new MatDatetimePickerInputEvent(this, this._elementRef.nativeElement));\r\n this.dateChange.emit(new MatDatetimePickerInputEvent(this, this._elementRef.nativeElement));\r\n });\r\n }\r\n /** Function that can be used to filter out dates within the datepicker. */\r\n set ngxMatDatetimePickerFilter(value) {\r\n this._dateFilter = value;\r\n this._validatorOnChange();\r\n }\r\n /** The value of the input. */\r\n get value() { return this._value; }\r\n set value(value) {\r\n value = this._dateAdapter.deserialize(value);\r\n this._lastValueValid = !value || this._dateAdapter.isValid(value);\r\n value = this._getValidDateOrNull(value);\r\n const oldDate = this.value;\r\n this._value = value;\r\n this._formatValue(value);\r\n if (!this._dateAdapter.sameDate(oldDate, value)) {\r\n this._valueChange.emit(value);\r\n }\r\n }\r\n /** The minimum valid date. */\r\n get min() { return this._min; }\r\n set min(value) {\r\n this._min = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n this._validatorOnChange();\r\n }\r\n /** The maximum valid date. */\r\n get max() { return this._max; }\r\n set max(value) {\r\n this._max = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n this._validatorOnChange();\r\n }\r\n /** Whether the datepicker-input is disabled. */\r\n get disabled() { return !!this._disabled; }\r\n set disabled(value) {\r\n const newValue = value != null && `${value}` !== 'false';\r\n const element = this._elementRef.nativeElement;\r\n if (this._disabled !== newValue) {\r\n this._disabled = newValue;\r\n this.stateChanges.emit(undefined);\r\n }\r\n // We need to null check the `blur` method, because it's undefined during SSR.\r\n if (newValue && element.blur) {\r\n // Normally, native input elements automatically blur if they turn disabled. This behavior\r\n // is problematic, because it would mean that it triggers another change detection cycle,\r\n // which then causes a changed after checked error if the input element was focused before.\r\n element.blur();\r\n }\r\n }\r\n ngOnDestroy() {\r\n this._datepickerSubscription.unsubscribe();\r\n this._localeSubscription.unsubscribe();\r\n this._valueChange.complete();\r\n this.stateChanges.complete();\r\n }\r\n /** @docs-private */\r\n registerOnValidatorChange(fn) {\r\n this._validatorOnChange = fn;\r\n }\r\n /** @docs-private */\r\n validate(c) {\r\n return this._validator ? this._validator(c) : null;\r\n }\r\n /**\r\n * @deprecated\r\n * @breaking-change 8.0.0 Use `getConnectedOverlayOrigin` instead\r\n */\r\n getPopupConnectionElementRef() {\r\n return this.getConnectedOverlayOrigin();\r\n }\r\n /**\r\n * Gets the element that the datepicker popup should be connected to.\r\n * @return The element to connect the popup to.\r\n */\r\n getConnectedOverlayOrigin() {\r\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\r\n }\r\n // Implemented as part of ControlValueAccessor.\r\n writeValue(value) {\r\n this.value = value;\r\n }\r\n // Implemented as part of ControlValueAccessor.\r\n registerOnChange(fn) {\r\n this._cvaOnChange = fn;\r\n }\r\n // Implemented as part of ControlValueAccessor.\r\n registerOnTouched(fn) {\r\n this._onTouched = fn;\r\n }\r\n // Implemented as part of ControlValueAccessor.\r\n setDisabledState(isDisabled) {\r\n this.disabled = isDisabled;\r\n }\r\n _onKeydown(event) {\r\n const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;\r\n if (this._datepicker && isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\r\n this._datepicker.open();\r\n event.preventDefault();\r\n }\r\n }\r\n _onInput(value) {\r\n const lastValueWasValid = this._lastValueValid;\r\n let date = this._dateAdapter.parse(value, this._dateFormats.parse.dateInput);\r\n this._lastValueValid = !date || this._dateAdapter.isValid(date);\r\n date = this._getValidDateOrNull(date);\r\n const isSameTime = this._dateAdapter.isSameTime(date, this._value);\r\n if ((date != null && (!isSameTime || !this._dateAdapter.sameDate(date, this._value)))\r\n || (date == null && this._value != null)) {\r\n this._value = date;\r\n this._cvaOnChange(date);\r\n this._valueChange.emit(date);\r\n this.dateInput.emit(new MatDatetimePickerInputEvent(this, this._elementRef.nativeElement));\r\n }\r\n else if (lastValueWasValid !== this._lastValueValid) {\r\n this._validatorOnChange();\r\n }\r\n }\r\n _onChange() {\r\n this.dateChange.emit(new MatDatetimePickerInputEvent(this, this._elementRef.nativeElement));\r\n }\r\n /** Returns the palette used by the input's form field, if any. */\r\n _getThemePalette() {\r\n return this._formField ? this._formField.color : undefined;\r\n }\r\n /** Handles blur events on the input. */\r\n _onBlur() {\r\n // Reformat the input only if we have a valid value.\r\n if (this.value) {\r\n this._formatValue(this.value);\r\n }\r\n this._onTouched();\r\n }\r\n /** Handles focus events on the input. */\r\n _onFocus() {\r\n // Close datetime picker if opened\r\n if (this._datepicker && this._datepicker.opened) {\r\n this._datepicker.cancel();\r\n }\r\n }\r\n /** Formats a value and sets it on the input element. */\r\n _formatValue(value) {\r\n this._elementRef.nativeElement.value =\r\n value ? this._dateAdapter.format(value, this._dateFormats.display.dateInput) : '';\r\n }\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n _getValidDateOrNull(obj) {\r\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NgxMatDatetimeInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatDatetimeInput, deps: [{ token: i0.ElementRef }, { token: NgxMatDateAdapter, optional: true }, { token: NGX_MAT_DATE_FORMATS, optional: true }, { token: i2$2.MatFormField, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\r\n/** @nocollapse */ /** @nocollapse */ NgxMatDatetimeInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: NgxMatDatetimeInput, selector: \"input[ngxMatDatetimePicker]\", inputs: { ngxMatDatetimePicker: \"ngxMatDatetimePicker\", ngxMatDatetimePickerFilter: \"ngxMatDatetimePickerFilter\", value: \"value\", min: \"min\", max: \"max\", disabled: \"disabled\" }, outputs: { dateChange: \"dateChange\", dateInput: \"dateInput\" }, host: { listeners: { \"input\": \"_onInput($event.target.value)\", \"change\": \"_onChange()\", \"blur\": \"_onBlur()\", \"focus\": \"_onFocus()\", \"keydown\": \"_onKeydown($event)\" }, properties: { \"attr.aria-haspopup\": \"_datepicker ? \\\"dialog\\\" : null\", \"attr.aria-owns\": \"(_datepicker?.opened && _datepicker.id) || null\", \"attr.min\": \"min ? _dateAdapter.toIso8601(min) : null\", \"attr.max\": \"max ? _dateAdapter.toIso8601(max) : null\", \"disabled\": \"disabled\" } }, providers: [\r\n MAT_DATEPICKER_VALUE_ACCESSOR,\r\n MAT_DATEPICKER_VALIDATORS,\r\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: NgxMatDatetimeInput },\r\n ], exportAs: [\"ngxMatDatetimePickerInput\"], ngImport: i0 });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatDatetimeInput, decorators: [{\r\n type: Directive,\r\n args: [{\r\n selector: 'input[ngxMatDatetimePicker]',\r\n providers: [\r\n MAT_DATEPICKER_VALUE_ACCESSOR,\r\n MAT_DATEPICKER_VALIDATORS,\r\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: NgxMatDatetimeInput },\r\n ],\r\n host: {\r\n '[attr.aria-haspopup]': '_datepicker ? \"dialog\" : null',\r\n '[attr.aria-owns]': '(_datepicker?.opened && _datepicker.id) || null',\r\n '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',\r\n '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',\r\n '[disabled]': 'disabled',\r\n '(input)': '_onInput($event.target.value)',\r\n '(change)': '_onChange()',\r\n '(blur)': '_onBlur()',\r\n '(focus)': '_onFocus()',\r\n '(keydown)': '_onKeydown($event)',\r\n },\r\n exportAs: 'ngxMatDatetimePickerInput',\r\n }]\r\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: NgxMatDateAdapter, decorators: [{\r\n type: Optional\r\n }] }, { type: undefined, decorators: [{\r\n type: Optional\r\n }, {\r\n type: Inject,\r\n args: [NGX_MAT_DATE_FORMATS]\r\n }] }, { type: i2$2.MatFormField, decorators: [{\r\n type: Optional\r\n }] }]; }, propDecorators: { ngxMatDatetimePicker: [{\r\n type: Input\r\n }], ngxMatDatetimePickerFilter: [{\r\n type: Input\r\n }], value: [{\r\n type: Input\r\n }], min: [{\r\n type: Input\r\n }], max: [{\r\n type: Input\r\n }], disabled: [{\r\n type: Input\r\n }], dateChange: [{\r\n type: Output\r\n }], dateInput: [{\r\n type: Output\r\n }] } });\n\nclass NgxMatTimepickerModule {\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NgxMatTimepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatTimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\n/** @nocollapse */ /** @nocollapse */ NgxMatTimepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatTimepickerModule, declarations: [NgxMatTimepickerComponent], imports: [CommonModule,\r\n MatInputModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule], exports: [NgxMatTimepickerComponent] });\r\n/** @nocollapse */ /** @nocollapse */ NgxMatTimepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatTimepickerModule, imports: [[\r\n CommonModule,\r\n MatInputModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n ]] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatTimepickerModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n imports: [\r\n CommonModule,\r\n MatInputModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n ],\r\n exports: [\r\n NgxMatTimepickerComponent\r\n ],\r\n declarations: [\r\n NgxMatTimepickerComponent\r\n ]\r\n }]\r\n }] });\n\nclass NgxMatDatetimePickerModule {\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NgxMatDatetimePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatDatetimePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\n/** @nocollapse */ /** @nocollapse */ NgxMatDatetimePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatDatetimePickerModule, declarations: [NgxMatDatetimePicker,\r\n NgxMatDatetimeContent,\r\n NgxMatDatetimeInput,\r\n NgxMatCalendar,\r\n NgxMatMonthView,\r\n NgxMatCalendarBody,\r\n NgxMatYearView,\r\n NgxMatMultiYearView,\r\n NgxMatCalendarHeader], imports: [CommonModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n PortalModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatInputModule,\r\n NgxMatTimepickerModule], exports: [NgxMatDatetimePicker,\r\n NgxMatDatetimeInput,\r\n NgxMatCalendar,\r\n NgxMatMonthView,\r\n NgxMatCalendarBody,\r\n NgxMatYearView,\r\n NgxMatMultiYearView,\r\n NgxMatCalendarHeader] });\r\n/** @nocollapse */ /** @nocollapse */ NgxMatDatetimePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatDatetimePickerModule, providers: [\r\n MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,\r\n {\r\n provide: NGX_MAT_DATE_RANGE_SELECTION_STRATEGY,\r\n useClass: DefaultNgxMatCalendarRangeStrategy\r\n }\r\n ], imports: [[\r\n CommonModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n PortalModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatInputModule,\r\n NgxMatTimepickerModule\r\n ]] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatDatetimePickerModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n imports: [\r\n CommonModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n PortalModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatInputModule,\r\n NgxMatTimepickerModule\r\n ],\r\n exports: [\r\n NgxMatDatetimePicker,\r\n NgxMatDatetimeInput,\r\n NgxMatCalendar,\r\n NgxMatMonthView,\r\n NgxMatCalendarBody,\r\n NgxMatYearView,\r\n NgxMatMultiYearView,\r\n NgxMatCalendarHeader\r\n ],\r\n declarations: [\r\n NgxMatDatetimePicker,\r\n NgxMatDatetimeContent,\r\n NgxMatDatetimeInput,\r\n NgxMatCalendar,\r\n NgxMatMonthView,\r\n NgxMatCalendarBody,\r\n NgxMatYearView,\r\n NgxMatMultiYearView,\r\n NgxMatCalendarHeader\r\n ],\r\n entryComponents: [\r\n NgxMatDatetimeContent,\r\n NgxMatCalendarHeader\r\n ],\r\n providers: [\r\n MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,\r\n {\r\n provide: NGX_MAT_DATE_RANGE_SELECTION_STRATEGY,\r\n useClass: DefaultNgxMatCalendarRangeStrategy\r\n }\r\n ]\r\n }]\r\n }] });\n\n// TODO(mmalerba): Remove when we no longer support safari 9.\r\n/** Whether the browser supports the Intl API. */\r\nlet SUPPORTS_INTL_API;\r\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\r\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\r\n// the consumer is providing a polyfilled `Map`. See:\r\n// https://github.com/Microsoft/ChakraCore/issues/3189\r\n// https://github.com/angular/components/issues/15687\r\ntry {\r\n SUPPORTS_INTL_API = typeof Intl != 'undefined';\r\n}\r\ncatch {\r\n SUPPORTS_INTL_API = false;\r\n}\r\n/** The default month names to use if Intl API is not available. */\r\nconst DEFAULT_MONTH_NAMES = {\r\n 'long': [\r\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September',\r\n 'October', 'November', 'December'\r\n ],\r\n 'short': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\r\n 'narrow': ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\r\n};\r\n/** The default date names to use if Intl API is not available. */\r\nconst DEFAULT_DATE_NAMES = range(31, i => String(i + 1));\r\n/** The default day of the week names to use if Intl API is not available. */\r\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\r\n 'long': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\r\n 'short': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\r\n 'narrow': ['S', 'M', 'T', 'W', 'T', 'F', 'S']\r\n};\r\n/**\r\n * Matches strings that have the form of a valid RFC 3339 string\r\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\r\n * because the regex will match strings an with out of bounds month, date, etc.\r\n */\r\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\r\n/** Creates an array and fills it with values. */\r\nfunction range(length, valueFunction) {\r\n const valuesArray = Array(length);\r\n for (let i = 0; i < length; i++) {\r\n valuesArray[i] = valueFunction(i);\r\n }\r\n return valuesArray;\r\n}\r\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\r\nclass NgxMatNativeDateAdapter extends NgxMatDateAdapter {\r\n constructor(matDateLocale, platform) {\r\n super();\r\n /**\r\n * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\r\n * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\r\n * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\r\n * will produce `'8/13/1800'`.\r\n *\r\n * TODO(mmalerba): drop this variable. It's not being used in the code right now. We're now\r\n * getting the string representation of a Date object from its utc representation. We're keeping\r\n * it here for sometime, just for precaution, in case we decide to revert some of these changes\r\n * though.\r\n */\r\n this.useUtcForDisplay = true;\r\n super.setLocale(matDateLocale);\r\n // IE does its own time zone correction, so we disable this on IE.\r\n this.useUtcForDisplay = !platform.TRIDENT;\r\n this._clampDate = platform.TRIDENT || platform.EDGE;\r\n }\r\n getYear(date) {\r\n return date.getFullYear();\r\n }\r\n getMonth(date) {\r\n return date.getMonth();\r\n }\r\n getDate(date) {\r\n return date.getDate();\r\n }\r\n getDayOfWeek(date) {\r\n return date.getDay();\r\n }\r\n getMonthNames(style) {\r\n if (SUPPORTS_INTL_API) {\r\n const dtf = new Intl.DateTimeFormat(this.locale, { month: style, timeZone: 'utc' });\r\n return range(12, i => this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\r\n }\r\n return DEFAULT_MONTH_NAMES[style];\r\n }\r\n getDateNames() {\r\n if (SUPPORTS_INTL_API) {\r\n const dtf = new Intl.DateTimeFormat(this.locale, { day: 'numeric', timeZone: 'utc' });\r\n return range(31, i => this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));\r\n }\r\n return DEFAULT_DATE_NAMES;\r\n }\r\n getDayOfWeekNames(style) {\r\n if (SUPPORTS_INTL_API) {\r\n const dtf = new Intl.DateTimeFormat(this.locale, { weekday: style, timeZone: 'utc' });\r\n return range(7, i => this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));\r\n }\r\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\r\n }\r\n getYearName(date) {\r\n if (SUPPORTS_INTL_API) {\r\n const dtf = new Intl.DateTimeFormat(this.locale, { year: 'numeric', timeZone: 'utc' });\r\n return this._stripDirectionalityCharacters(this._format(dtf, date));\r\n }\r\n return String(this.getYear(date));\r\n }\r\n getFirstDayOfWeek() {\r\n // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\r\n return 0;\r\n }\r\n getNumDaysInMonth(date) {\r\n return this.getDate(this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0));\r\n }\r\n clone(date) {\r\n return new Date(date.getTime());\r\n }\r\n createDate(year, month, date) {\r\n // Check for invalid month and date (except upper bound on date which we have to check after\r\n // creating the Date).\r\n if (month < 0 || month > 11) {\r\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\r\n }\r\n if (date < 1) {\r\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\r\n }\r\n let result = this._createDateWithOverflow(year, month, date);\r\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\r\n if (result.getMonth() != month) {\r\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\r\n }\r\n return result;\r\n }\r\n today() {\r\n return new Date();\r\n }\r\n parse(value) {\r\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\r\n // parameters.\r\n if (typeof value == 'number') {\r\n return new Date(value);\r\n }\r\n return value ? new Date(Date.parse(value)) : null;\r\n }\r\n format(date, displayFormat) {\r\n if (!this.isValid(date)) {\r\n throw Error('NativeDateAdapter: Cannot format invalid date.');\r\n }\r\n if (SUPPORTS_INTL_API) {\r\n // On IE and Edge the i18n API will throw a hard error that can crash the entire app\r\n // if we attempt to format a date whose year is less than 1 or greater than 9999.\r\n if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\r\n date = this.clone(date);\r\n date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\r\n }\r\n displayFormat = { ...displayFormat, timeZone: 'utc' };\r\n const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\r\n return this._stripDirectionalityCharacters(this._format(dtf, date));\r\n }\r\n return this._stripDirectionalityCharacters(date.toDateString());\r\n }\r\n addCalendarYears(date, years) {\r\n return this.addCalendarMonths(date, years * 12);\r\n }\r\n addCalendarMonths(date, months) {\r\n let newDate = this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + months, this.getDate(date));\r\n // It's possible to wind up in the wrong month if the original month has more days than the new\r\n // month. In this case we want to go to the last day of the desired month.\r\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\r\n // guarantee this.\r\n if (this.getMonth(newDate) != ((this.getMonth(date) + months) % 12 + 12) % 12) {\r\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\r\n }\r\n return newDate;\r\n }\r\n addCalendarDays(date, days) {\r\n return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date) + days);\r\n }\r\n toIso8601(date) {\r\n return [\r\n date.getUTCFullYear(),\r\n this._2digit(date.getUTCMonth() + 1),\r\n this._2digit(date.getUTCDate())\r\n ].join('-');\r\n }\r\n /**\r\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\r\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\r\n * invalid date for all other values.\r\n */\r\n deserialize(value) {\r\n if (typeof value === 'string') {\r\n if (!value) {\r\n return null;\r\n }\r\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\r\n // string is the right format first.\r\n if (ISO_8601_REGEX.test(value)) {\r\n let date = new Date(value);\r\n if (this.isValid(date)) {\r\n return date;\r\n }\r\n }\r\n }\r\n return super.deserialize(value);\r\n }\r\n isDateInstance(obj) {\r\n return obj instanceof Date;\r\n }\r\n isValid(date) {\r\n return !isNaN(date.getTime());\r\n }\r\n invalid() {\r\n return new Date(NaN);\r\n }\r\n getHour(date) {\r\n return date.getHours();\r\n }\r\n getMinute(date) {\r\n return date.getMinutes();\r\n }\r\n getSecond(date) {\r\n return date.getSeconds();\r\n }\r\n setHour(date, value) {\r\n date.setHours(value);\r\n }\r\n setMinute(date, value) {\r\n date.setMinutes(value);\r\n }\r\n setSecond(date, value) {\r\n date.setSeconds(value);\r\n }\r\n /** Creates a date but allows the month and date to overflow. */\r\n _createDateWithOverflow(year, month, date) {\r\n const result = new Date(year, month, date);\r\n // We need to correct for the fact that JS native Date treats years in range [0, 99] as\r\n // abbreviations for 19xx.\r\n if (year >= 0 && year < 100) {\r\n result.setFullYear(this.getYear(result) - 1900);\r\n }\r\n return result;\r\n }\r\n /**\r\n * Pads a number to make it two digits.\r\n * @param n The number to pad.\r\n * @returns The padded number.\r\n */\r\n _2digit(n) {\r\n return ('00' + n).slice(-2);\r\n }\r\n /**\r\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\r\n * other browsers do not. We remove them to make output consistent and because they interfere with\r\n * date parsing.\r\n * @param str The string to strip direction characters from.\r\n * @returns The stripped string.\r\n */\r\n _stripDirectionalityCharacters(str) {\r\n return str.replace(/[\\u200e\\u200f]/g, '');\r\n }\r\n /**\r\n * When converting Date object to string, javascript built-in functions may return wrong\r\n * results because it applies its internal DST rules. The DST rules around the world change\r\n * very frequently, and the current valid rule is not always valid in previous years though.\r\n * We work around this problem building a new Date object which has its internal UTC\r\n * representation with the local date and time.\r\n * @param dtf Intl.DateTimeFormat object, containg the desired string format. It must have\r\n * timeZone set to 'utc' to work fine.\r\n * @param date Date from which we want to get the string representation according to dtf\r\n * @returns A Date object with its UTC representation based on the passed in date info\r\n */\r\n _format(dtf, date) {\r\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\r\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\r\n const d = new Date();\r\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\r\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\r\n return dtf.format(d);\r\n }\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NgxMatNativeDateAdapter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatNativeDateAdapter, deps: [{ token: MAT_DATE_LOCALE, optional: true }, { token: i1$2.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\r\n/** @nocollapse */ /** @nocollapse */ NgxMatNativeDateAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatNativeDateAdapter });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatNativeDateAdapter, decorators: [{\r\n type: Injectable\r\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\r\n type: Optional\r\n }, {\r\n type: Inject,\r\n args: [MAT_DATE_LOCALE]\r\n }] }, { type: i1$2.Platform }]; } });\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\nconst DEFAULT_DATE_INPUT = {\r\n year: 'numeric', month: 'numeric', day: 'numeric',\r\n hour12: false, hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\"\r\n};\r\nconst NGX_MAT_NATIVE_DATE_FORMATS = {\r\n parse: {\r\n dateInput: DEFAULT_DATE_INPUT,\r\n },\r\n display: {\r\n dateInput: DEFAULT_DATE_INPUT,\r\n monthYearLabel: { year: 'numeric', month: 'short' },\r\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\r\n monthYearA11yLabel: { year: 'numeric', month: 'long' },\r\n }\r\n};\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\nclass NgxNativeDateModule {\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NgxNativeDateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxNativeDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\n/** @nocollapse */ /** @nocollapse */ NgxNativeDateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxNativeDateModule, imports: [PlatformModule] });\r\n/** @nocollapse */ /** @nocollapse */ NgxNativeDateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxNativeDateModule, providers: [\r\n { provide: NgxMatDateAdapter, useClass: NgxMatNativeDateAdapter },\r\n ], imports: [[PlatformModule]] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxNativeDateModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n imports: [PlatformModule],\r\n providers: [\r\n { provide: NgxMatDateAdapter, useClass: NgxMatNativeDateAdapter },\r\n ],\r\n }]\r\n }] });\r\nclass NgxMatNativeDateModule {\r\n}\r\n/** @nocollapse */ /** @nocollapse */ NgxMatNativeDateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatNativeDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\r\n/** @nocollapse */ /** @nocollapse */ NgxMatNativeDateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatNativeDateModule, imports: [NgxNativeDateModule] });\r\n/** @nocollapse */ /** @nocollapse */ NgxMatNativeDateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatNativeDateModule, providers: [{ provide: NGX_MAT_DATE_FORMATS, useValue: NGX_MAT_NATIVE_DATE_FORMATS }], imports: [[NgxNativeDateModule]] });\r\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: NgxMatNativeDateModule, decorators: [{\r\n type: NgModule,\r\n args: [{\r\n imports: [NgxNativeDateModule],\r\n providers: [{ provide: NGX_MAT_DATE_FORMATS, useValue: NGX_MAT_NATIVE_DATE_FORMATS }],\r\n }]\r\n }] });\n\n/*\r\n * Public API Surface of ngx-mat-datetime-picker\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { DefaultNgxMatCalendarRangeStrategy, MAT_DATEPICKER_VALIDATORS, MAT_DATEPICKER_VALUE_ACCESSOR, MatDatetimePickerInputEvent, NGX_MAT_DATE_FORMATS, NGX_MAT_DATE_RANGE_SELECTION_STRATEGY, NGX_MAT_NATIVE_DATE_FORMATS, NgxMatCalendar, NgxMatCalendarBody, NgxMatCalendarCell, NgxMatCalendarHeader, NgxMatDateAdapter, NgxMatDatetimeContent, NgxMatDatetimeInput, NgxMatDatetimePicker, NgxMatDatetimePickerModule, NgxMatMonthView, NgxMatMultiYearView, NgxMatNativeDateAdapter, NgxMatNativeDateModule, NgxMatTimepickerComponent, NgxMatTimepickerModule, NgxMatYearView, NgxNativeDateModule, getActiveOffset, isSameMultiYearView, yearsPerPage, yearsPerRow };\n","/**\n * @license Angular v13.0.2\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\n/**\n * An injectable service that produces an animation sequence programmatically within an\n * Angular component or directive.\n * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.\n *\n * @usageNotes\n *\n * To use this service, add it to your component or directive as a dependency.\n * The service is instantiated along with your component.\n *\n * Apps do not typically need to create their own animation players, but if you\n * do need to, follow these steps:\n *\n * 1. Use the `build()` method to create a programmatic animation using the\n * `animate()` function. The method returns an `AnimationFactory` instance.\n *\n * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.\n *\n * 3. Use the player object to control the animation programmatically.\n *\n * For example:\n *\n * ```ts\n * // import the service from BrowserAnimationsModule\n * import {AnimationBuilder} from '@angular/animations';\n * // require the service as a dependency\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first define a reusable animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // use the returned factory object to create a player\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass AnimationBuilder {\n}\n/**\n * A factory object returned from the `AnimationBuilder`.`build()` method.\n *\n * @publicApi\n */\nclass AnimationFactory {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Specifies automatic styling.\n *\n * @publicApi\n */\nconst AUTO_STYLE = '*';\n/**\n * Creates a named animation trigger, containing a list of `state()`\n * and `transition()` entries to be evaluated when the expression\n * bound to the trigger changes.\n *\n * @param name An identifying string.\n * @param definitions An animation definition object, containing an array of `state()`\n * and `transition()` declarations.\n *\n * @return An object that encapsulates the trigger data.\n *\n * @usageNotes\n * Define an animation trigger in the `animations` section of `@Component` metadata.\n * In the template, reference the trigger by name and bind it to a trigger expression that\n * evaluates to a defined animation state, using the following format:\n *\n * `[@triggerName]=\"expression\"`\n *\n * Animation trigger bindings convert all values to strings, and then match the\n * previous and current values against any linked transitions.\n * Booleans can be specified as `1` or `true` and `0` or `false`.\n *\n * ### Usage Example\n *\n * The following example creates an animation trigger reference based on the provided\n * name value.\n * The provided animation value is expected to be an array consisting of state and\n * transition declarations.\n *\n * ```typescript\n * @Component({\n * selector: \"my-component\",\n * templateUrl: \"my-component-tpl.html\",\n * animations: [\n * trigger(\"myAnimationTrigger\", [\n * state(...),\n * state(...),\n * transition(...),\n * transition(...)\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"something\";\n * }\n * ```\n *\n * The template associated with this component makes use of the defined trigger\n * by binding to an element within its template code.\n *\n * ```html\n * \n *
    ...
    \n * ```\n *\n * ### Using an inline function\n * The `transition` animation method also supports reading an inline function which can decide\n * if its associated animation should be run.\n *\n * ```typescript\n * // this method is run each time the `myAnimationTrigger` trigger value changes.\n * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:\n string]: any}): boolean {\n * // notice that `element` and `params` are also available here\n * return toState == 'yes-please-animate';\n * }\n *\n * @Component({\n * selector: 'my-component',\n * templateUrl: 'my-component-tpl.html',\n * animations: [\n * trigger('myAnimationTrigger', [\n * transition(myInlineMatcherFn, [\n * // the animation sequence code\n * ]),\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"yes-please-animate\";\n * }\n * ```\n *\n * ### Disabling Animations\n * When true, the special animation control binding `@.disabled` binding prevents\n * all animations from rendering.\n * Place the `@.disabled` binding on an element to disable\n * animations on the element itself, as well as any inner animation triggers\n * within the element.\n *\n * The following example shows how to use this feature:\n *\n * ```typescript\n * @Component({\n * selector: 'my-component',\n * template: `\n *
    \n *
    \n *
    \n * `,\n * animations: [\n * trigger(\"childAnimation\", [\n * // ...\n * ])\n * ]\n * })\n * class MyComponent {\n * isDisabled = true;\n * exp = '...';\n * }\n * ```\n *\n * When `@.disabled` is true, it prevents the `@childAnimation` trigger from animating,\n * along with any inner animations.\n *\n * ### Disable animations application-wide\n * When an area of the template is set to have animations disabled,\n * **all** inner components have their animations disabled as well.\n * This means that you can disable all animations for an app\n * by placing a host binding set on `@.disabled` on the topmost Angular component.\n *\n * ```typescript\n * import {Component, HostBinding} from '@angular/core';\n *\n * @Component({\n * selector: 'app-component',\n * templateUrl: 'app.component.html',\n * })\n * class AppComponent {\n * @HostBinding('@.disabled')\n * public animationsDisabled = true;\n * }\n * ```\n *\n * ### Overriding disablement of inner animations\n * Despite inner animations being disabled, a parent animation can `query()`\n * for inner elements located in disabled areas of the template and still animate\n * them if needed. This is also the case for when a sub animation is\n * queried by a parent and then later animated using `animateChild()`.\n *\n * ### Detecting when an animation is disabled\n * If a region of the DOM (or the entire application) has its animations disabled, the animation\n * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides\n * an instance of an `AnimationEvent`. If animations are disabled,\n * the `.disabled` flag on the event is true.\n *\n * @publicApi\n */\nfunction trigger(name, definitions) {\n return { type: 7 /* Trigger */, name, definitions, options: {} };\n}\n/**\n * Defines an animation step that combines styling information with timing information.\n *\n * @param timings Sets `AnimateTimings` for the parent animation.\n * A string in the format \"duration [delay] [easing]\".\n * - Duration and delay are expressed as a number and optional time unit,\n * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.\n * The default unit is milliseconds.\n * - The easing value controls how the animation accelerates and decelerates\n * during its runtime. Value is one of `ease`, `ease-in`, `ease-out`,\n * `ease-in-out`, or a `cubic-bezier()` function call.\n * If not supplied, no easing is applied.\n *\n * For example, the string \"1s 100ms ease-out\" specifies a duration of\n * 1000 milliseconds, and delay of 100 ms, and the \"ease-out\" easing style,\n * which decelerates near the end of the duration.\n * @param styles Sets AnimationStyles for the parent animation.\n * A function call to either `style()` or `keyframes()`\n * that returns a collection of CSS style entries to be applied to the parent animation.\n * When null, uses the styles from the destination state.\n * This is useful when describing an animation step that will complete an animation;\n * see \"Animating to the final state\" in `transitions()`.\n * @returns An object that encapsulates the animation step.\n *\n * @usageNotes\n * Call within an animation `sequence()`, `{@link animations/group group()}`, or\n * `transition()` call to specify an animation step\n * that applies given style data to the parent animation for a given amount of time.\n *\n * ### Syntax Examples\n * **Timing examples**\n *\n * The following examples show various `timings` specifications.\n * - `animate(500)` : Duration is 500 milliseconds.\n * - `animate(\"1s\")` : Duration is 1000 milliseconds.\n * - `animate(\"100ms 0.5s\")` : Duration is 100 milliseconds, delay is 500 milliseconds.\n * - `animate(\"5s ease-in\")` : Duration is 5000 milliseconds, easing in.\n * - `animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\")` : Duration is 5000 milliseconds, delay is 10\n * milliseconds, easing according to a bezier curve.\n *\n * **Style examples**\n *\n * The following example calls `style()` to set a single CSS style.\n * ```typescript\n * animate(500, style({ background: \"red\" }))\n * ```\n * The following example calls `keyframes()` to set a CSS style\n * to different values for successive keyframes.\n * ```typescript\n * animate(500, keyframes(\n * [\n * style({ background: \"blue\" }),\n * style({ background: \"red\" })\n * ])\n * ```\n *\n * @publicApi\n */\nfunction animate(timings, styles = null) {\n return { type: 4 /* Animate */, styles, timings };\n}\n/**\n * @description Defines a list of animation steps to be run in parallel.\n *\n * @param steps An array of animation step objects.\n * - When steps are defined by `style()` or `animate()`\n * function calls, each call within the group is executed instantly.\n * - To specify offset styles to be applied at a later time, define steps with\n * `keyframes()`, or use `animate()` calls with a delay value.\n * For example:\n *\n * ```typescript\n * group([\n * animate(\"1s\", style({ background: \"black\" })),\n * animate(\"2s\", style({ color: \"white\" }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the group data.\n *\n * @usageNotes\n * Grouped animations are useful when a series of styles must be\n * animated at different starting times and closed off at different ending times.\n *\n * When called within a `sequence()` or a\n * `transition()` call, does not continue to the next\n * instruction until all of the inner animation steps have completed.\n *\n * @publicApi\n */\nfunction group(steps, options = null) {\n return { type: 3 /* Group */, steps, options };\n}\n/**\n * Defines a list of animation steps to be run sequentially, one by one.\n *\n * @param steps An array of animation step objects.\n * - Steps defined by `style()` calls apply the styling data immediately.\n * - Steps defined by `animate()` calls apply the styling data over time\n * as specified by the timing data.\n *\n * ```typescript\n * sequence([\n * style({ opacity: 0 }),\n * animate(\"1s\", style({ opacity: 1 }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the sequence data.\n *\n * @usageNotes\n * When you pass an array of steps to a\n * `transition()` call, the steps run sequentially by default.\n * Compare this to the `{@link animations/group group()}` call, which runs animation steps in\n *parallel.\n *\n * When a sequence is used within a `{@link animations/group group()}` or a `transition()` call,\n * execution continues to the next instruction only after each of the inner animation\n * steps have completed.\n *\n * @publicApi\n **/\nfunction sequence(steps, options = null) {\n return { type: 2 /* Sequence */, steps, options };\n}\n/**\n * Declares a key/value object containing CSS properties/styles that\n * can then be used for an animation `state`, within an animation `sequence`,\n * or as styling data for calls to `animate()` and `keyframes()`.\n *\n * @param tokens A set of CSS styles or HTML styles associated with an animation state.\n * The value can be any of the following:\n * - A key-value style pair associating a CSS property with a value.\n * - An array of key-value style pairs.\n * - An asterisk (*), to use auto-styling, where styles are derived from the element\n * being animated and applied to the animation when it starts.\n *\n * Auto-styling can be used to define a state that depends on layout or other\n * environmental factors.\n *\n * @return An object that encapsulates the style data.\n *\n * @usageNotes\n * The following examples create animation styles that collect a set of\n * CSS property values:\n *\n * ```typescript\n * // string values for CSS properties\n * style({ background: \"red\", color: \"blue\" })\n *\n * // numerical pixel values\n * style({ width: 100, height: 0 })\n * ```\n *\n * The following example uses auto-styling to allow an element to animate from\n * a height of 0 up to its full height:\n *\n * ```\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * @publicApi\n **/\nfunction style(tokens) {\n return { type: 6 /* Style */, styles: tokens, offset: null };\n}\n/**\n * Declares an animation state within a trigger attached to an element.\n *\n * @param name One or more names for the defined state in a comma-separated string.\n * The following reserved state names can be supplied to define a style for specific use\n * cases:\n *\n * - `void` You can associate styles with this name to be used when\n * the element is detached from the application. For example, when an `ngIf` evaluates\n * to false, the state of the associated element is void.\n * - `*` (asterisk) Indicates the default state. You can associate styles with this name\n * to be used as the fallback when the state that is being animated is not declared\n * within the trigger.\n *\n * @param styles A set of CSS styles associated with this state, created using the\n * `style()` function.\n * This set of styles persists on the element once the state has been reached.\n * @param options Parameters that can be passed to the state when it is invoked.\n * 0 or more key-value pairs.\n * @return An object that encapsulates the new state data.\n *\n * @usageNotes\n * Use the `trigger()` function to register states to an animation trigger.\n * Use the `transition()` function to animate between states.\n * When a state is active within a component, its associated styles persist on the element,\n * even when the animation ends.\n *\n * @publicApi\n **/\nfunction state(name, styles, options) {\n return { type: 0 /* State */, name, styles, options };\n}\n/**\n * Defines a set of animation styles, associating each style with an optional `offset` value.\n *\n * @param steps A set of animation styles with optional offset data.\n * The optional `offset` value for a style specifies a percentage of the total animation\n * time at which that style is applied.\n * @returns An object that encapsulates the keyframes data.\n *\n * @usageNotes\n * Use with the `animate()` call. Instead of applying animations\n * from the current state\n * to the destination state, keyframes describe how each style entry is applied and at what point\n * within the animation arc.\n * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).\n *\n * ### Usage\n *\n * In the following example, the offset values describe\n * when each `backgroundColor` value is applied. The color is red at the start, and changes to\n * blue when 20% of the total time has elapsed.\n *\n * ```typescript\n * // the provided offset values\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\", offset: 0 }),\n * style({ backgroundColor: \"blue\", offset: 0.2 }),\n * style({ backgroundColor: \"orange\", offset: 0.3 }),\n * style({ backgroundColor: \"black\", offset: 1 })\n * ]))\n * ```\n *\n * If there are no `offset` values specified in the style entries, the offsets\n * are calculated automatically.\n *\n * ```typescript\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\" }) // offset = 0\n * style({ backgroundColor: \"blue\" }) // offset = 0.33\n * style({ backgroundColor: \"orange\" }) // offset = 0.66\n * style({ backgroundColor: \"black\" }) // offset = 1\n * ]))\n *```\n\n * @publicApi\n */\nfunction keyframes(steps) {\n return { type: 5 /* Keyframes */, steps };\n}\n/**\n * Declares an animation transition as a sequence of animation steps to run when a given\n * condition is satisfied. The condition is a Boolean expression or function that compares\n * the previous and current animation states, and returns true if this transition should occur.\n * When the state criteria of a defined transition are met, the associated animation is\n * triggered.\n *\n * @param stateChangeExpr A Boolean expression or function that compares the previous and current\n * animation states, and returns true if this transition should occur. Note that \"true\" and \"false\"\n * match 1 and 0, respectively. An expression is evaluated each time a state change occurs in the\n * animation trigger element.\n * The animation steps run when the expression evaluates to true.\n *\n * - A state-change string takes the form \"state1 => state2\", where each side is a defined animation\n * state, or an asterix (*) to refer to a dynamic start or end state.\n * - The expression string can contain multiple comma-separated statements;\n * for example \"state1 => state2, state3 => state4\".\n * - Special values `:enter` and `:leave` initiate a transition on the entry and exit states,\n * equivalent to \"void => *\" and \"* => void\".\n * - Special values `:increment` and `:decrement` initiate a transition when a numeric value has\n * increased or decreased in value.\n * - A function is executed each time a state change occurs in the animation trigger element.\n * The animation steps run when the function returns true.\n *\n * @param steps One or more animation objects, as returned by the `animate()` or\n * `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param options An options object that can contain a delay value for the start of the animation,\n * and additional developer-defined parameters. Provided values for additional parameters are used\n * as defaults, and override values can be passed to the caller on invocation.\n * @returns An object that encapsulates the transition data.\n *\n * @usageNotes\n * The template associated with a component binds an animation trigger to an element.\n *\n * ```HTML\n * \n *
    ...
    \n * ```\n *\n * All transitions are defined within an animation trigger,\n * along with named states that the transitions change to and from.\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * // define states\n * state(\"on\", style({ background: \"green\" })),\n * state(\"off\", style({ background: \"grey\" })),\n * ...]\n * ```\n *\n * Note that when you call the `sequence()` function within a `{@link animations/group group()}`\n * or a `transition()` call, execution does not continue to the next instruction\n * until each of the inner animation steps have completed.\n *\n * ### Syntax examples\n *\n * The following examples define transitions between the two defined states (and default states),\n * using various options:\n *\n * ```typescript\n * // Transition occurs when the state value\n * // bound to \"myAnimationTrigger\" changes from \"on\" to \"off\"\n * transition(\"on => off\", animate(500))\n * // Run the same animation for both directions\n * transition(\"on <=> off\", animate(500))\n * // Define multiple state-change pairs separated by commas\n * transition(\"on => off, off => void\", animate(500))\n * ```\n *\n * ### Special values for state-change expressions\n *\n * - Catch-all state change for when an element is inserted into the page and the\n * destination state is unknown:\n *\n * ```typescript\n * transition(\"void => *\", [\n * style({ opacity: 0 }),\n * animate(500)\n * ])\n * ```\n *\n * - Capture a state change between any states:\n *\n * `transition(\"* => *\", animate(\"1s 0s\"))`\n *\n * - Entry and exit transitions:\n *\n * ```typescript\n * transition(\":enter\", [\n * style({ opacity: 0 }),\n * animate(500, style({ opacity: 1 }))\n * ]),\n * transition(\":leave\", [\n * animate(500, style({ opacity: 0 }))\n * ])\n * ```\n *\n * - Use `:increment` and `:decrement` to initiate transitions:\n *\n * ```typescript\n * transition(\":increment\", group([\n * query(':enter', [\n * style({ left: '100%' }),\n * animate('0.5s ease-out', style('*'))\n * ]),\n * query(':leave', [\n * animate('0.5s ease-out', style({ left: '-100%' }))\n * ])\n * ]))\n *\n * transition(\":decrement\", group([\n * query(':enter', [\n * style({ left: '100%' }),\n * animate('0.5s ease-out', style('*'))\n * ]),\n * query(':leave', [\n * animate('0.5s ease-out', style({ left: '-100%' }))\n * ])\n * ]))\n * ```\n *\n * ### State-change functions\n *\n * Here is an example of a `fromState` specified as a state-change function that invokes an\n * animation when true:\n *\n * ```typescript\n * transition((fromState, toState) =>\n * {\n * return fromState == \"off\" && toState == \"on\";\n * },\n * animate(\"1s 0s\"))\n * ```\n *\n * ### Animating to the final state\n *\n * If the final step in a transition is a call to `animate()` that uses a timing value\n * with no style data, that step is automatically considered the final animation arc,\n * for the element to reach the final state. Angular automatically adds or removes\n * CSS styles to ensure that the element is in the correct final state.\n *\n * The following example defines a transition that starts by hiding the element,\n * then makes sure that it animates properly to whatever state is currently active for trigger:\n *\n * ```typescript\n * transition(\"void => *\", [\n * style({ opacity: 0 }),\n * animate(500)\n * ])\n * ```\n * ### Boolean value matching\n * If a trigger binding value is a Boolean, it can be matched using a transition expression\n * that compares true and false or 1 and 0. For example:\n *\n * ```\n * // in the template\n *
    ...
    \n * // in the component metadata\n * trigger('openClose', [\n * state('true', style({ height: '*' })),\n * state('false', style({ height: '0px' })),\n * transition('false <=> true', animate(500))\n * ])\n * ```\n *\n * @publicApi\n **/\nfunction transition(stateChangeExpr, steps, options = null) {\n return { type: 1 /* Transition */, expr: stateChangeExpr, animation: steps, options };\n}\n/**\n * Produces a reusable animation that can be invoked in another animation or sequence,\n * by calling the `useAnimation()` function.\n *\n * @param steps One or more animation objects, as returned by the `animate()`\n * or `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional developer-defined parameters.\n * Provided values for additional parameters are used as defaults,\n * and override values can be passed to the caller on invocation.\n * @returns An object that encapsulates the animation data.\n *\n * @usageNotes\n * The following example defines a reusable animation, providing some default parameter\n * values.\n *\n * ```typescript\n * var fadeAnimation = animation([\n * style({ opacity: '{{ start }}' }),\n * animate('{{ time }}',\n * style({ opacity: '{{ end }}'}))\n * ],\n * { params: { time: '1000ms', start: 0, end: 1 }});\n * ```\n *\n * The following invokes the defined animation with a call to `useAnimation()`,\n * passing in override parameter values.\n *\n * ```js\n * useAnimation(fadeAnimation, {\n * params: {\n * time: '2s',\n * start: 1,\n * end: 0\n * }\n * })\n * ```\n *\n * If any of the passed-in parameter values are missing from this call,\n * the default values are used. If one or more parameter values are missing before a step is\n * animated, `useAnimation()` throws an error.\n *\n * @publicApi\n */\nfunction animation(steps, options = null) {\n return { type: 8 /* Reference */, animation: steps, options };\n}\n/**\n * Executes a queried inner animation element within an animation sequence.\n *\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional override values for developer-defined parameters.\n * @return An object that encapsulates the child animation data.\n *\n * @usageNotes\n * Each time an animation is triggered in Angular, the parent animation\n * has priority and any child animations are blocked. In order\n * for a child animation to run, the parent animation must query each of the elements\n * containing child animations, and run them using this function.\n *\n * Note that this feature is designed to be used with `query()` and it will only work\n * with animations that are assigned using the Angular animation library. CSS keyframes\n * and transitions are not handled by this API.\n *\n * `animateChild()` does not currently work with route transition animations. Please see\n * GitHub Issue {@link https://github.com/angular/angular/issues/30477 #30477} for more\n * information.\n *\n * @publicApi\n */\nfunction animateChild(options = null) {\n return { type: 9 /* AnimateChild */, options };\n}\n/**\n * Starts a reusable animation that is created using the `animation()` function.\n *\n * @param animation The reusable animation to start.\n * @param options An options object that can contain a delay value for the start of\n * the animation, and additional override values for developer-defined parameters.\n * @return An object that contains the animation parameters.\n *\n * @publicApi\n */\nfunction useAnimation(animation, options = null) {\n return { type: 10 /* AnimateRef */, animation, options };\n}\n/**\n * Finds one or more inner elements within the current element that is\n * being animated within a sequence. Use with `animate()`.\n *\n * @param selector The element to query, or a set of elements that contain Angular-specific\n * characteristics, specified with one or more of the following tokens.\n * - `query(\":enter\")` or `query(\":leave\")` : Query for newly inserted/removed elements.\n * - `query(\":animating\")` : Query all currently animating elements.\n * - `query(\"@triggerName\")` : Query elements that contain an animation trigger.\n * - `query(\"@*\")` : Query all elements that contain an animation triggers.\n * - `query(\":self\")` : Include the current element into the animation sequence.\n *\n * @param animation One or more animation steps to apply to the queried element or elements.\n * An array is treated as an animation sequence.\n * @param options An options object. Use the 'limit' field to limit the total number of\n * items to collect.\n * @return An object that encapsulates the query data.\n *\n * @usageNotes\n * Tokens can be merged into a combined query selector string. For example:\n *\n * ```typescript\n * query(':self, .record:enter, .record:leave, @subTrigger', [...])\n * ```\n *\n * The `query()` function collects multiple elements and works internally by using\n * `element.querySelectorAll`. Use the `limit` field of an options object to limit\n * the total number of items to be collected. For example:\n *\n * ```js\n * query('div', [\n * animate(...),\n * animate(...)\n * ], { limit: 1 })\n * ```\n *\n * By default, throws an error when zero items are found. Set the\n * `optional` flag to ignore this error. For example:\n *\n * ```js\n * query('.some-element-that-may-not-be-there', [\n * animate(...),\n * animate(...)\n * ], { optional: true })\n * ```\n *\n * ### Usage Example\n *\n * The following example queries for inner elements and animates them\n * individually using `animate()`.\n *\n * ```typescript\n * @Component({\n * selector: 'inner',\n * template: `\n *
    \n *

    Title

    \n *
    \n * Blah blah blah\n *
    \n *
    \n * `,\n * animations: [\n * trigger('queryAnimation', [\n * transition('* => goAnimate', [\n * // hide the inner elements\n * query('h1', style({ opacity: 0 })),\n * query('.content', style({ opacity: 0 })),\n *\n * // animate the inner elements in, one by one\n * query('h1', animate(1000, style({ opacity: 1 }))),\n * query('.content', animate(1000, style({ opacity: 1 }))),\n * ])\n * ])\n * ]\n * })\n * class Cmp {\n * exp = '';\n *\n * goAnimate() {\n * this.exp = 'goAnimate';\n * }\n * }\n * ```\n *\n * @publicApi\n */\nfunction query(selector, animation, options = null) {\n return { type: 11 /* Query */, selector, animation, options };\n}\n/**\n * Use within an animation `query()` call to issue a timing gap after\n * each queried item is animated.\n *\n * @param timings A delay value.\n * @param animation One ore more animation steps.\n * @returns An object that encapsulates the stagger data.\n *\n * @usageNotes\n * In the following example, a container element wraps a list of items stamped out\n * by an `ngFor`. The container element contains an animation trigger that will later be set\n * to query for each of the inner items.\n *\n * Each time items are added, the opacity fade-in animation runs,\n * and each removed item is faded out.\n * When either of these animations occur, the stagger effect is\n * applied after each item's animation is started.\n *\n * ```html\n * \n * \n *
    \n *
    \n *
    \n * {{ item }}\n *
    \n *
    \n * ```\n *\n * Here is the component code:\n *\n * ```typescript\n * import {trigger, transition, style, animate, query, stagger} from '@angular/animations';\n * @Component({\n * templateUrl: 'list.component.html',\n * animations: [\n * trigger('listAnimation', [\n * ...\n * ])\n * ]\n * })\n * class ListComponent {\n * items = [];\n *\n * showItems() {\n * this.items = [0,1,2,3,4];\n * }\n *\n * hideItems() {\n * this.items = [];\n * }\n *\n * toggle() {\n * this.items.length ? this.hideItems() : this.showItems();\n * }\n * }\n * ```\n *\n * Here is the animation trigger code:\n *\n * ```typescript\n * trigger('listAnimation', [\n * transition('* => *', [ // each time the binding value changes\n * query(':leave', [\n * stagger(100, [\n * animate('0.5s', style({ opacity: 0 }))\n * ])\n * ]),\n * query(':enter', [\n * style({ opacity: 0 }),\n * stagger(100, [\n * animate('0.5s', style({ opacity: 1 }))\n * ])\n * ])\n * ])\n * ])\n * ```\n *\n * @publicApi\n */\nfunction stagger(timings, animation) {\n return { type: 12 /* Stagger */, timings, animation };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction scheduleMicroTask(cb) {\n Promise.resolve(null).then(cb);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * An empty programmatic controller for reusable animations.\n * Used internally when animations are disabled, to avoid\n * checking for the null case when an animation player is expected.\n *\n * @see `animate()`\n * @see `AnimationPlayer`\n * @see `GroupPlayer`\n *\n * @publicApi\n */\nclass NoopAnimationPlayer {\n constructor(duration = 0, delay = 0) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._started = false;\n this._destroyed = false;\n this._finished = false;\n this._position = 0;\n this.parentPlayer = null;\n this.totalTime = duration + delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n init() { }\n play() {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n }\n /** @internal */\n triggerMicrotask() {\n scheduleMicroTask(() => this._onFinish());\n }\n _onStart() {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n pause() { }\n restart() { }\n finish() {\n this._onFinish();\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n if (!this.hasStarted()) {\n this._onStart();\n }\n this.finish();\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this._started = false;\n }\n setPosition(position) {\n this._position = this.totalTime ? position * this.totalTime : 1;\n }\n getPosition() {\n return this.totalTime ? this._position / this.totalTime : 1;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A programmatic controller for a group of reusable animations.\n * Used internally to control animations.\n *\n * @see `AnimationPlayer`\n * @see `{@link animations/group group()}`\n *\n */\nclass AnimationGroupPlayer {\n constructor(_players) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this._onDestroyFns = [];\n this.parentPlayer = null;\n this.totalTime = 0;\n this.players = _players;\n let doneCount = 0;\n let destroyCount = 0;\n let startCount = 0;\n const total = this.players.length;\n if (total == 0) {\n scheduleMicroTask(() => this._onFinish());\n }\n else {\n this.players.forEach(player => {\n player.onDone(() => {\n if (++doneCount == total) {\n this._onFinish();\n }\n });\n player.onDestroy(() => {\n if (++destroyCount == total) {\n this._onDestroy();\n }\n });\n player.onStart(() => {\n if (++startCount == total) {\n this._onStart();\n }\n });\n });\n }\n this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this.players.forEach(player => player.init());\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n _onStart() {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n play() {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach(player => player.play());\n }\n pause() {\n this.players.forEach(player => player.pause());\n }\n restart() {\n this.players.forEach(player => player.restart());\n }\n finish() {\n this._onFinish();\n this.players.forEach(player => player.finish());\n }\n destroy() {\n this._onDestroy();\n }\n _onDestroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._onFinish();\n this.players.forEach(player => player.destroy());\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this.players.forEach(player => player.reset());\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n setPosition(p) {\n const timeAtPosition = p * this.totalTime;\n this.players.forEach(player => {\n const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;\n player.setPosition(position);\n });\n }\n getPosition() {\n const longestPlayer = this.players.reduce((longestSoFar, player) => {\n const newPlayerIsLongest = longestSoFar === null || player.totalTime > longestSoFar.totalTime;\n return newPlayerIsLongest ? player : longestSoFar;\n }, null);\n return longestPlayer != null ? longestPlayer.getPosition() : 0;\n }\n beforeDestroy() {\n this.players.forEach(player => {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n });\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ɵPRE_STYLE = '!';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AUTO_STYLE, AnimationBuilder, AnimationFactory, NoopAnimationPlayer, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, AnimationGroupPlayer as ɵAnimationGroupPlayer, ɵPRE_STYLE };\n","import { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, QueryList, Directive, Input, InjectionToken, Optional, EventEmitter, Output, NgModule } from '@angular/core';\nimport { Subject, Subscription, BehaviorSubject, of } from 'rxjs';\nimport { hasModifierKey, A, Z, ZERO, NINE, END, HOME, LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW, TAB, ALT, CONTROL, MAC_META, META, SHIFT } from '@angular/cdk/keycodes';\nimport { tap, debounceTime, filter, map, take, skip, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { coerceBooleanProperty, coerceElement } from '@angular/cdk/coercion';\nimport * as i1 from '@angular/cdk/platform';\nimport { _getFocusedElementPierceShadowDom, normalizePassiveListenerOptions, _getEventTarget, _getShadowRoot, PlatformModule } from '@angular/cdk/platform';\nimport * as i1$1 from '@angular/cdk/observers';\nimport { ObserversModule } from '@angular/cdk/observers';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** IDs are delimited by an empty space, as per the spec. */\nconst ID_DELIMITER = ' ';\n/**\n * Adds the given ID to the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction addAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n if (ids.some(existingId => existingId.trim() == id.trim())) {\n return;\n }\n ids.push(id.trim());\n el.setAttribute(attr, ids.join(ID_DELIMITER));\n}\n/**\n * Removes the given ID from the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction removeAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n const filteredIds = ids.filter(val => val != id.trim());\n if (filteredIds.length) {\n el.setAttribute(attr, filteredIds.join(ID_DELIMITER));\n }\n else {\n el.removeAttribute(attr);\n }\n}\n/**\n * Gets the list of IDs referenced by the given ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction getAriaReferenceIds(el, attr) {\n // Get string array of all individual ids (whitespace delimited) in the attribute value\n return (el.getAttribute(attr) || '').match(/\\S+/g) || [];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** ID used for the body container where all messages are appended. */\nconst MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';\n/** ID prefix used for each created message element. */\nconst CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';\n/** Attribute given to each host element that is described by a message element. */\nconst CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';\n/** Global incremental identifier for each registered message element. */\nlet nextId = 0;\n/** Global map of all registered message elements that have been placed into the document. */\nconst messageRegistry = new Map();\n/** Container for all registered messages. */\nlet messagesContainer = null;\n/**\n * Utility that creates visually hidden elements with a message content. Useful for elements that\n * want to use aria-describedby to further describe themselves without adding additional visual\n * content.\n */\nclass AriaDescriber {\n constructor(_document) {\n this._document = _document;\n }\n describe(hostElement, message, role) {\n if (!this._canBeDescribed(hostElement, message)) {\n return;\n }\n const key = getKey(message, role);\n if (typeof message !== 'string') {\n // We need to ensure that the element has an ID.\n setMessageId(message);\n messageRegistry.set(key, { messageElement: message, referenceCount: 0 });\n }\n else if (!messageRegistry.has(key)) {\n this._createMessageElement(message, role);\n }\n if (!this._isElementDescribedByMessage(hostElement, key)) {\n this._addMessageReference(hostElement, key);\n }\n }\n removeDescription(hostElement, message, role) {\n if (!message || !this._isElementNode(hostElement)) {\n return;\n }\n const key = getKey(message, role);\n if (this._isElementDescribedByMessage(hostElement, key)) {\n this._removeMessageReference(hostElement, key);\n }\n // If the message is a string, it means that it's one that we created for the\n // consumer so we can remove it safely, otherwise we should leave it in place.\n if (typeof message === 'string') {\n const registeredMessage = messageRegistry.get(key);\n if (registeredMessage && registeredMessage.referenceCount === 0) {\n this._deleteMessageElement(key);\n }\n }\n if (messagesContainer && messagesContainer.childNodes.length === 0) {\n this._deleteMessagesContainer();\n }\n }\n /** Unregisters all created message elements and removes the message container. */\n ngOnDestroy() {\n const describedElements = this._document.querySelectorAll(`[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}]`);\n for (let i = 0; i < describedElements.length; i++) {\n this._removeCdkDescribedByReferenceIds(describedElements[i]);\n describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n if (messagesContainer) {\n this._deleteMessagesContainer();\n }\n messageRegistry.clear();\n }\n /**\n * Creates a new element in the visually hidden message container element with the message\n * as its content and adds it to the message registry.\n */\n _createMessageElement(message, role) {\n const messageElement = this._document.createElement('div');\n setMessageId(messageElement);\n messageElement.textContent = message;\n if (role) {\n messageElement.setAttribute('role', role);\n }\n this._createMessagesContainer();\n messagesContainer.appendChild(messageElement);\n messageRegistry.set(getKey(message, role), { messageElement, referenceCount: 0 });\n }\n /** Deletes the message element from the global messages container. */\n _deleteMessageElement(key) {\n const registeredMessage = messageRegistry.get(key);\n registeredMessage?.messageElement?.remove();\n messageRegistry.delete(key);\n }\n /** Creates the global container for all aria-describedby messages. */\n _createMessagesContainer() {\n if (!messagesContainer) {\n const preExistingContainer = this._document.getElementById(MESSAGES_CONTAINER_ID);\n // When going from the server to the client, we may end up in a situation where there's\n // already a container on the page, but we don't have a reference to it. Clear the\n // old container so we don't get duplicates. Doing this, instead of emptying the previous\n // container, should be slightly faster.\n preExistingContainer?.remove();\n messagesContainer = this._document.createElement('div');\n messagesContainer.id = MESSAGES_CONTAINER_ID;\n // We add `visibility: hidden` in order to prevent text in this container from\n // being searchable by the browser's Ctrl + F functionality.\n // Screen-readers will still read the description for elements with aria-describedby even\n // when the description element is not visible.\n messagesContainer.style.visibility = 'hidden';\n // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that\n // the description element doesn't impact page layout.\n messagesContainer.classList.add('cdk-visually-hidden');\n this._document.body.appendChild(messagesContainer);\n }\n }\n /** Deletes the global messages container. */\n _deleteMessagesContainer() {\n if (messagesContainer) {\n messagesContainer.remove();\n messagesContainer = null;\n }\n }\n /** Removes all cdk-describedby messages that are hosted through the element. */\n _removeCdkDescribedByReferenceIds(element) {\n // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX\n const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby').filter(id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0);\n element.setAttribute('aria-describedby', originalReferenceIds.join(' '));\n }\n /**\n * Adds a message reference to the element using aria-describedby and increments the registered\n * message's reference count.\n */\n _addMessageReference(element, key) {\n const registeredMessage = messageRegistry.get(key);\n // Add the aria-describedby reference and set the\n // describedby_host attribute to mark the element.\n addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, '');\n registeredMessage.referenceCount++;\n }\n /**\n * Removes a message reference from the element using aria-describedby\n * and decrements the registered message's reference count.\n */\n _removeMessageReference(element, key) {\n const registeredMessage = messageRegistry.get(key);\n registeredMessage.referenceCount--;\n removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n /** Returns true if the element has been described by the provided message ID. */\n _isElementDescribedByMessage(element, key) {\n const referenceIds = getAriaReferenceIds(element, 'aria-describedby');\n const registeredMessage = messageRegistry.get(key);\n const messageId = registeredMessage && registeredMessage.messageElement.id;\n return !!messageId && referenceIds.indexOf(messageId) != -1;\n }\n /** Determines whether a message can be described on a particular element. */\n _canBeDescribed(element, message) {\n if (!this._isElementNode(element)) {\n return false;\n }\n if (message && typeof message === 'object') {\n // We'd have to make some assumptions about the description element's text, if the consumer\n // passed in an element. Assume that if an element is passed in, the consumer has verified\n // that it can be used as a description.\n return true;\n }\n const trimmedMessage = message == null ? '' : `${message}`.trim();\n const ariaLabel = element.getAttribute('aria-label');\n // We shouldn't set descriptions if they're exactly the same as the `aria-label` of the\n // element, because screen readers will end up reading out the same text twice in a row.\n return trimmedMessage ? !ariaLabel || ariaLabel.trim() !== trimmedMessage : false;\n }\n /** Checks whether a node is an Element node. */\n _isElementNode(element) {\n return element.nodeType === this._document.ELEMENT_NODE;\n }\n}\nAriaDescriber.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AriaDescriber, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nAriaDescriber.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AriaDescriber, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: AriaDescriber, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n/** Gets a key that can be used to look messages up in the registry. */\nfunction getKey(message, role) {\n return typeof message === 'string' ? `${role || ''}/${message}` : message;\n}\n/** Assigns a unique ID to an element, if it doesn't have one already. */\nfunction setMessageId(element) {\n if (!element.id) {\n element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${nextId++}`;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nclass ListKeyManager {\n constructor(_items) {\n this._items = _items;\n this._activeItemIndex = -1;\n this._activeItem = null;\n this._wrap = false;\n this._letterKeyStream = new Subject();\n this._typeaheadSubscription = Subscription.EMPTY;\n this._vertical = true;\n this._allowedModifierKeys = [];\n this._homeAndEnd = false;\n /**\n * Predicate function that can be used to check whether an item should be skipped\n * by the key manager. By default, disabled items are skipped.\n */\n this._skipPredicateFn = (item) => item.disabled;\n // Buffer for the letters that the user has pressed when the typeahead option is turned on.\n this._pressedLetters = [];\n /**\n * Stream that emits any time the TAB key is pressed, so components can react\n * when focus is shifted off of the list.\n */\n this.tabOut = new Subject();\n /** Stream that emits whenever the active item of the list manager changes. */\n this.change = new Subject();\n // We allow for the items to be an array because, in some cases, the consumer may\n // not have access to a QueryList of the items they want to manage (e.g. when the\n // items aren't being collected via `ViewChildren` or `ContentChildren`).\n if (_items instanceof QueryList) {\n _items.changes.subscribe((newItems) => {\n if (this._activeItem) {\n const itemArray = newItems.toArray();\n const newIndex = itemArray.indexOf(this._activeItem);\n if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n this._activeItemIndex = newIndex;\n }\n }\n });\n }\n }\n /**\n * Sets the predicate function that determines which items should be skipped by the\n * list key manager.\n * @param predicate Function that determines whether the given item should be skipped.\n */\n skipPredicate(predicate) {\n this._skipPredicateFn = predicate;\n return this;\n }\n /**\n * Configures wrapping mode, which determines whether the active item will wrap to\n * the other end of list when there are no more items in the given direction.\n * @param shouldWrap Whether the list should wrap when reaching the end.\n */\n withWrap(shouldWrap = true) {\n this._wrap = shouldWrap;\n return this;\n }\n /**\n * Configures whether the key manager should be able to move the selection vertically.\n * @param enabled Whether vertical selection should be enabled.\n */\n withVerticalOrientation(enabled = true) {\n this._vertical = enabled;\n return this;\n }\n /**\n * Configures the key manager to move the selection horizontally.\n * Passing in `null` will disable horizontal movement.\n * @param direction Direction in which the selection can be moved.\n */\n withHorizontalOrientation(direction) {\n this._horizontal = direction;\n return this;\n }\n /**\n * Modifier keys which are allowed to be held down and whose default actions will be prevented\n * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.\n */\n withAllowedModifierKeys(keys) {\n this._allowedModifierKeys = keys;\n return this;\n }\n /**\n * Turns on typeahead mode which allows users to set the active item by typing.\n * @param debounceInterval Time to wait after the last keystroke before setting the active item.\n */\n withTypeAhead(debounceInterval = 200) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n this._items.length &&\n this._items.some(item => typeof item.getLabel !== 'function')) {\n throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n this._typeaheadSubscription.unsubscribe();\n // Debounce the presses of non-navigational keys, collect the ones that correspond to letters\n // and convert those letters back into a string. Afterwards find the first item that starts\n // with that string and select it.\n this._typeaheadSubscription = this._letterKeyStream\n .pipe(tap(letter => this._pressedLetters.push(letter)), debounceTime(debounceInterval), filter(() => this._pressedLetters.length > 0), map(() => this._pressedLetters.join('')))\n .subscribe(inputString => {\n const items = this._getItemsArray();\n // Start at 1 because we want to start searching at the item immediately\n // following the current active item.\n for (let i = 1; i < items.length + 1; i++) {\n const index = (this._activeItemIndex + i) % items.length;\n const item = items[index];\n if (!this._skipPredicateFn(item) &&\n item.getLabel().toUpperCase().trim().indexOf(inputString) === 0) {\n this.setActiveItem(index);\n break;\n }\n }\n this._pressedLetters = [];\n });\n return this;\n }\n /**\n * Configures the key manager to activate the first and last items\n * respectively when the Home or End key is pressed.\n * @param enabled Whether pressing the Home or End key activates the first/last item.\n */\n withHomeAndEnd(enabled = true) {\n this._homeAndEnd = enabled;\n return this;\n }\n setActiveItem(item) {\n const previousActiveItem = this._activeItem;\n this.updateActiveItem(item);\n if (this._activeItem !== previousActiveItem) {\n this.change.next(this._activeItemIndex);\n }\n }\n /**\n * Sets the active item depending on the key event passed in.\n * @param event Keyboard event to be used for determining which element should be active.\n */\n onKeydown(event) {\n const keyCode = event.keyCode;\n const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\n const isModifierAllowed = modifiers.every(modifier => {\n return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1;\n });\n switch (keyCode) {\n case TAB:\n this.tabOut.next();\n return;\n case DOWN_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setNextItemActive();\n break;\n }\n else {\n return;\n }\n case UP_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setPreviousItemActive();\n break;\n }\n else {\n return;\n }\n case RIGHT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive();\n break;\n }\n else {\n return;\n }\n case LEFT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive();\n break;\n }\n else {\n return;\n }\n case HOME:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setFirstItemActive();\n break;\n }\n else {\n return;\n }\n case END:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setLastItemActive();\n break;\n }\n else {\n return;\n }\n default:\n if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {\n // Attempt to use the `event.key` which also maps it to the user's keyboard language,\n // otherwise fall back to resolving alphanumeric characters via the keyCode.\n if (event.key && event.key.length === 1) {\n this._letterKeyStream.next(event.key.toLocaleUpperCase());\n }\n else if ((keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE)) {\n this._letterKeyStream.next(String.fromCharCode(keyCode));\n }\n }\n // Note that we return here, in order to avoid preventing\n // the default action of non-navigational keys.\n return;\n }\n this._pressedLetters = [];\n event.preventDefault();\n }\n /** Index of the currently active item. */\n get activeItemIndex() {\n return this._activeItemIndex;\n }\n /** The active item. */\n get activeItem() {\n return this._activeItem;\n }\n /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n isTyping() {\n return this._pressedLetters.length > 0;\n }\n /** Sets the active item to the first enabled item in the list. */\n setFirstItemActive() {\n this._setActiveItemByIndex(0, 1);\n }\n /** Sets the active item to the last enabled item in the list. */\n setLastItemActive() {\n this._setActiveItemByIndex(this._items.length - 1, -1);\n }\n /** Sets the active item to the next enabled item in the list. */\n setNextItemActive() {\n this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);\n }\n /** Sets the active item to a previous enabled item in the list. */\n setPreviousItemActive() {\n this._activeItemIndex < 0 && this._wrap\n ? this.setLastItemActive()\n : this._setActiveItemByDelta(-1);\n }\n updateActiveItem(item) {\n const itemArray = this._getItemsArray();\n const index = typeof item === 'number' ? item : itemArray.indexOf(item);\n const activeItem = itemArray[index];\n // Explicitly check for `null` and `undefined` because other falsy values are valid.\n this._activeItem = activeItem == null ? null : activeItem;\n this._activeItemIndex = index;\n }\n /**\n * This method sets the active item, given a list of items and the delta between the\n * currently active item and the new active item. It will calculate differently\n * depending on whether wrap mode is turned on.\n */\n _setActiveItemByDelta(delta) {\n this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta);\n }\n /**\n * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n * down the list until it finds an item that is not disabled, and it will wrap if it\n * encounters either end of the list.\n */\n _setActiveInWrapMode(delta) {\n const items = this._getItemsArray();\n for (let i = 1; i <= items.length; i++) {\n const index = (this._activeItemIndex + delta * i + items.length) % items.length;\n const item = items[index];\n if (!this._skipPredicateFn(item)) {\n this.setActiveItem(index);\n return;\n }\n }\n }\n /**\n * Sets the active item properly given the default mode. In other words, it will\n * continue to move down the list until it finds an item that is not disabled. If\n * it encounters either end of the list, it will stop and not wrap.\n */\n _setActiveInDefaultMode(delta) {\n this._setActiveItemByIndex(this._activeItemIndex + delta, delta);\n }\n /**\n * Sets the active item to the first enabled item starting at the index specified. If the\n * item is disabled, it will move in the fallbackDelta direction until it either\n * finds an enabled item or encounters the end of the list.\n */\n _setActiveItemByIndex(index, fallbackDelta) {\n const items = this._getItemsArray();\n if (!items[index]) {\n return;\n }\n while (this._skipPredicateFn(items[index])) {\n index += fallbackDelta;\n if (!items[index]) {\n return;\n }\n }\n this.setActiveItem(index);\n }\n /** Returns the items as an array. */\n _getItemsArray() {\n return this._items instanceof QueryList ? this._items.toArray() : this._items;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass ActiveDescendantKeyManager extends ListKeyManager {\n setActiveItem(index) {\n if (this.activeItem) {\n this.activeItem.setInactiveStyles();\n }\n super.setActiveItem(index);\n if (this.activeItem) {\n this.activeItem.setActiveStyles();\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass FocusKeyManager extends ListKeyManager {\n constructor() {\n super(...arguments);\n this._origin = 'program';\n }\n /**\n * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls.\n * @param origin Focus origin to be used when focusing items.\n */\n setFocusOrigin(origin) {\n this._origin = origin;\n return this;\n }\n setActiveItem(item) {\n super.setActiveItem(item);\n if (this.activeItem) {\n this.activeItem.focus(this._origin);\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Configuration for the isFocusable method.\n */\nclass IsFocusableConfig {\n constructor() {\n /**\n * Whether to count an element as focusable even if it is not currently visible.\n */\n this.ignoreVisibility = false;\n }\n}\n// The InteractivityChecker leans heavily on the ally.js accessibility utilities.\n// Methods like `isTabbable` are only covering specific edge-cases for the browsers which are\n// supported.\n/**\n * Utility for checking the interactivity of an element, such as whether is is focusable or\n * tabbable.\n */\nclass InteractivityChecker {\n constructor(_platform) {\n this._platform = _platform;\n }\n /**\n * Gets whether an element is disabled.\n *\n * @param element Element to be checked.\n * @returns Whether the element is disabled.\n */\n isDisabled(element) {\n // This does not capture some cases, such as a non-form control with a disabled attribute or\n // a form control inside of a disabled form, but should capture the most common cases.\n return element.hasAttribute('disabled');\n }\n /**\n * Gets whether an element is visible for the purposes of interactivity.\n *\n * This will capture states like `display: none` and `visibility: hidden`, but not things like\n * being clipped by an `overflow: hidden` parent or being outside the viewport.\n *\n * @returns Whether the element is visible.\n */\n isVisible(element) {\n return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';\n }\n /**\n * Gets whether an element can be reached via Tab key.\n * Assumes that the element has already been checked with isFocusable.\n *\n * @param element Element to be checked.\n * @returns Whether the element is tabbable.\n */\n isTabbable(element) {\n // Nothing is tabbable on the server 😎\n if (!this._platform.isBrowser) {\n return false;\n }\n const frameElement = getFrameElement(getWindow(element));\n if (frameElement) {\n // Frame elements inherit their tabindex onto all child elements.\n if (getTabIndexValue(frameElement) === -1) {\n return false;\n }\n // Browsers disable tabbing to an element inside of an invisible frame.\n if (!this.isVisible(frameElement)) {\n return false;\n }\n }\n let nodeName = element.nodeName.toLowerCase();\n let tabIndexValue = getTabIndexValue(element);\n if (element.hasAttribute('contenteditable')) {\n return tabIndexValue !== -1;\n }\n if (nodeName === 'iframe' || nodeName === 'object') {\n // The frame or object's content may be tabbable depending on the content, but it's\n // not possibly to reliably detect the content of the frames. We always consider such\n // elements as non-tabbable.\n return false;\n }\n // In iOS, the browser only considers some specific elements as tabbable.\n if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n return false;\n }\n if (nodeName === 'audio') {\n // Audio elements without controls enabled are never tabbable, regardless\n // of the tabindex attribute explicitly being set.\n if (!element.hasAttribute('controls')) {\n return false;\n }\n // Audio elements with controls are by default tabbable unless the\n // tabindex attribute is set to `-1` explicitly.\n return tabIndexValue !== -1;\n }\n if (nodeName === 'video') {\n // For all video elements, if the tabindex attribute is set to `-1`, the video\n // is not tabbable. Note: We cannot rely on the default `HTMLElement.tabIndex`\n // property as that one is set to `-1` in Chrome, Edge and Safari v13.1. The\n // tabindex attribute is the source of truth here.\n if (tabIndexValue === -1) {\n return false;\n }\n // If the tabindex is explicitly set, and not `-1` (as per check before), the\n // video element is always tabbable (regardless of whether it has controls or not).\n if (tabIndexValue !== null) {\n return true;\n }\n // Otherwise (when no explicit tabindex is set), a video is only tabbable if it\n // has controls enabled. Firefox is special as videos are always tabbable regardless\n // of whether there are controls or not.\n return this._platform.FIREFOX || element.hasAttribute('controls');\n }\n return element.tabIndex >= 0;\n }\n /**\n * Gets whether an element can be focused by the user.\n *\n * @param element Element to be checked.\n * @param config The config object with options to customize this method's behavior\n * @returns Whether the element is focusable.\n */\n isFocusable(element, config) {\n // Perform checks in order of left to most expensive.\n // Again, naive approach that does not capture many edge cases and browser quirks.\n return (isPotentiallyFocusable(element) &&\n !this.isDisabled(element) &&\n (config?.ignoreVisibility || this.isVisible(element)));\n }\n}\nInteractivityChecker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InteractivityChecker, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nInteractivityChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InteractivityChecker, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InteractivityChecker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }]; } });\n/**\n * Returns the frame element from a window object. Since browsers like MS Edge throw errors if\n * the frameElement property is being accessed from a different host address, this property\n * should be accessed carefully.\n */\nfunction getFrameElement(window) {\n try {\n return window.frameElement;\n }\n catch {\n return null;\n }\n}\n/** Checks whether the specified element has any geometry / rectangles. */\nfunction hasGeometry(element) {\n // Use logic from jQuery to check for an invisible element.\n // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n return !!(element.offsetWidth ||\n element.offsetHeight ||\n (typeof element.getClientRects === 'function' && element.getClientRects().length));\n}\n/** Gets whether an element's */\nfunction isNativeFormElement(element) {\n let nodeName = element.nodeName.toLowerCase();\n return (nodeName === 'input' ||\n nodeName === 'select' ||\n nodeName === 'button' ||\n nodeName === 'textarea');\n}\n/** Gets whether an element is an ``. */\nfunction isHiddenInput(element) {\n return isInputElement(element) && element.type == 'hidden';\n}\n/** Gets whether an element is an anchor that has an href attribute. */\nfunction isAnchorWithHref(element) {\n return isAnchorElement(element) && element.hasAttribute('href');\n}\n/** Gets whether an element is an input element. */\nfunction isInputElement(element) {\n return element.nodeName.toLowerCase() == 'input';\n}\n/** Gets whether an element is an anchor element. */\nfunction isAnchorElement(element) {\n return element.nodeName.toLowerCase() == 'a';\n}\n/** Gets whether an element has a valid tabindex. */\nfunction hasValidTabIndex(element) {\n if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n return false;\n }\n let tabIndex = element.getAttribute('tabindex');\n return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n */\nfunction getTabIndexValue(element) {\n if (!hasValidTabIndex(element)) {\n return null;\n }\n // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n return isNaN(tabIndex) ? -1 : tabIndex;\n}\n/** Checks whether the specified element is potentially tabbable on iOS */\nfunction isPotentiallyTabbableIOS(element) {\n let nodeName = element.nodeName.toLowerCase();\n let inputType = nodeName === 'input' && element.type;\n return (inputType === 'text' ||\n inputType === 'password' ||\n nodeName === 'select' ||\n nodeName === 'textarea');\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n */\nfunction isPotentiallyFocusable(element) {\n // Inputs are potentially focusable *unless* they're type=\"hidden\".\n if (isHiddenInput(element)) {\n return false;\n }\n return (isNativeFormElement(element) ||\n isAnchorWithHref(element) ||\n element.hasAttribute('contenteditable') ||\n hasValidTabIndex(element));\n}\n/** Gets the parent window of a DOM node with regards of being inside of an iframe. */\nfunction getWindow(node) {\n // ownerDocument is null if `node` itself *is* a document.\n return (node.ownerDocument && node.ownerDocument.defaultView) || window;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class currently uses a relatively simple approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to be misaligned.\n *\n * @deprecated Use `ConfigurableFocusTrap` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrap {\n constructor(_element, _checker, _ngZone, _document, deferAnchors = false) {\n this._element = _element;\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n this._hasAttached = false;\n // Event listeners for the anchors. Need to be regular functions so that we can unbind them later.\n this.startAnchorListener = () => this.focusLastTabbableElement();\n this.endAnchorListener = () => this.focusFirstTabbableElement();\n this._enabled = true;\n if (!deferAnchors) {\n this.attachAnchors();\n }\n }\n /** Whether the focus trap is active. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(value, this._startAnchor);\n this._toggleAnchorTabIndex(value, this._endAnchor);\n }\n }\n /** Destroys the focus trap by cleaning up the anchors. */\n destroy() {\n const startAnchor = this._startAnchor;\n const endAnchor = this._endAnchor;\n if (startAnchor) {\n startAnchor.removeEventListener('focus', this.startAnchorListener);\n startAnchor.remove();\n }\n if (endAnchor) {\n endAnchor.removeEventListener('focus', this.endAnchorListener);\n endAnchor.remove();\n }\n this._startAnchor = this._endAnchor = null;\n this._hasAttached = false;\n }\n /**\n * Inserts the anchors into the DOM. This is usually done automatically\n * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n * @returns Whether the focus trap managed to attach successfully. This may not be the case\n * if the target element isn't currently in the DOM.\n */\n attachAnchors() {\n // If we're not on the browser, there can be no focus to trap.\n if (this._hasAttached) {\n return true;\n }\n this._ngZone.runOutsideAngular(() => {\n if (!this._startAnchor) {\n this._startAnchor = this._createAnchor();\n this._startAnchor.addEventListener('focus', this.startAnchorListener);\n }\n if (!this._endAnchor) {\n this._endAnchor = this._createAnchor();\n this._endAnchor.addEventListener('focus', this.endAnchorListener);\n }\n });\n if (this._element.parentNode) {\n this._element.parentNode.insertBefore(this._startAnchor, this._element);\n this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);\n this._hasAttached = true;\n }\n return this._hasAttached;\n }\n /**\n * Waits for the zone to stabilize, then focuses the first tabbable element.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusInitialElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusInitialElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the first tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusFirstTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the last tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusLastTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusLastTabbableElement(options)));\n });\n }\n /**\n * Get the specified boundary element of the trapped region.\n * @param bound The boundary to get (start or end of trapped region).\n * @returns The boundary element.\n */\n _getRegionBoundary(bound) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n for (let i = 0; i < markers.length; i++) {\n // @breaking-change 8.0.0\n if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated ` +\n `attribute will be removed in 8.0.0.`, markers[i]);\n }\n else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` +\n `will be removed in 8.0.0.`, markers[i]);\n }\n }\n }\n if (bound == 'start') {\n return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n }\n return markers.length\n ? markers[markers.length - 1]\n : this._getLastTabbableElement(this._element);\n }\n /**\n * Focuses the element that should be focused when the focus trap is initialized.\n * @returns Whether focus was moved successfully.\n */\n focusInitialElement(options) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` + `[cdkFocusInitial]`);\n if (redirectToElement) {\n // @breaking-change 8.0.0\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n redirectToElement.hasAttribute(`cdk-focus-initial`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` +\n `use 'cdkFocusInitial' instead. The deprecated attribute ` +\n `will be removed in 8.0.0`, redirectToElement);\n }\n // Warn the consumer if the element they've pointed to\n // isn't focusable, when not in production mode.\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n !this._checker.isFocusable(redirectToElement)) {\n console.warn(`Element matching '[cdkFocusInitial]' is not focusable.`, redirectToElement);\n }\n if (!this._checker.isFocusable(redirectToElement)) {\n const focusableChild = this._getFirstTabbableElement(redirectToElement);\n focusableChild?.focus(options);\n return !!focusableChild;\n }\n redirectToElement.focus(options);\n return true;\n }\n return this.focusFirstTabbableElement(options);\n }\n /**\n * Focuses the first tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusFirstTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('start');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Focuses the last tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusLastTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('end');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Checks whether the focus trap has successfully been attached.\n */\n hasAttached() {\n return this._hasAttached;\n }\n /** Get the first tabbable element from a DOM subtree (inclusive). */\n _getFirstTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n const children = root.children;\n for (let i = 0; i < children.length; i++) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n ? this._getFirstTabbableElement(children[i])\n : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Get the last tabbable element from a DOM subtree (inclusive). */\n _getLastTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in reverse DOM order.\n const children = root.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n ? this._getLastTabbableElement(children[i])\n : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Creates an anchor element. */\n _createAnchor() {\n const anchor = this._document.createElement('div');\n this._toggleAnchorTabIndex(this._enabled, anchor);\n anchor.classList.add('cdk-visually-hidden');\n anchor.classList.add('cdk-focus-trap-anchor');\n anchor.setAttribute('aria-hidden', 'true');\n return anchor;\n }\n /**\n * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.\n * @param isEnabled Whether the focus trap is enabled.\n * @param anchor Anchor on which to toggle the tabindex.\n */\n _toggleAnchorTabIndex(isEnabled, anchor) {\n // Remove the tabindex completely, rather than setting it to -1, because if the\n // element has a tabindex, the user might still hit it when navigating with the arrow keys.\n isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');\n }\n /**\n * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.\n * @param enabled: Whether the anchors should trap Tab.\n */\n toggleAnchors(enabled) {\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(enabled, this._startAnchor);\n this._toggleAnchorTabIndex(enabled, this._endAnchor);\n }\n }\n /** Executes a function when the zone is stable. */\n _executeOnStable(fn) {\n if (this._ngZone.isStable) {\n fn();\n }\n else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n}\n/**\n * Factory that allows easy instantiation of focus traps.\n * @deprecated Use `ConfigurableFocusTrapFactory` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrapFactory {\n constructor(_checker, _ngZone, _document) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n }\n /**\n * Creates a focus-trapped region around the given element.\n * @param element The element around which focus will be trapped.\n * @param deferCaptureElements Defers the creation of focus-capturing elements to be done\n * manually by the user.\n * @returns The created focus trap instance.\n */\n create(element, deferCaptureElements = false) {\n return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements);\n }\n}\nFocusTrapFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusTrapFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusTrapFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n/** Directive for trapping focus within a region. */\nclass CdkTrapFocus {\n constructor(_elementRef, _focusTrapFactory, \n /**\n * @deprecated No longer being used. To be removed.\n * @breaking-change 13.0.0\n */\n _document) {\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n this._previouslyFocusedElement = null;\n this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n }\n /** Whether the focus trap is active. */\n get enabled() {\n return this.focusTrap.enabled;\n }\n set enabled(value) {\n this.focusTrap.enabled = coerceBooleanProperty(value);\n }\n /**\n * Whether the directive should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n get autoCapture() {\n return this._autoCapture;\n }\n set autoCapture(value) {\n this._autoCapture = coerceBooleanProperty(value);\n }\n ngOnDestroy() {\n this.focusTrap.destroy();\n // If we stored a previously focused element when using autoCapture, return focus to that\n // element now that the trapped region is being destroyed.\n if (this._previouslyFocusedElement) {\n this._previouslyFocusedElement.focus();\n this._previouslyFocusedElement = null;\n }\n }\n ngAfterContentInit() {\n this.focusTrap.attachAnchors();\n if (this.autoCapture) {\n this._captureFocus();\n }\n }\n ngDoCheck() {\n if (!this.focusTrap.hasAttached()) {\n this.focusTrap.attachAnchors();\n }\n }\n ngOnChanges(changes) {\n const autoCaptureChange = changes['autoCapture'];\n if (autoCaptureChange &&\n !autoCaptureChange.firstChange &&\n this.autoCapture &&\n this.focusTrap.hasAttached()) {\n this._captureFocus();\n }\n }\n _captureFocus() {\n this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();\n this.focusTrap.focusInitialElementWhenReady();\n }\n}\nCdkTrapFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkTrapFocus, deps: [{ token: i0.ElementRef }, { token: FocusTrapFactory }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTrapFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkTrapFocus, selector: \"[cdkTrapFocus]\", inputs: { enabled: [\"cdkTrapFocus\", \"enabled\"], autoCapture: [\"cdkTrapFocusAutoCapture\", \"autoCapture\"] }, exportAs: [\"cdkTrapFocus\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkTrapFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTrapFocus]',\n exportAs: 'cdkTrapFocus',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FocusTrapFactory }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { enabled: [{\n type: Input,\n args: ['cdkTrapFocus']\n }], autoCapture: [{\n type: Input,\n args: ['cdkTrapFocusAutoCapture']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class that allows for trapping focus within a DOM element.\n *\n * This class uses a strategy pattern that determines how it traps focus.\n * See FocusTrapInertStrategy.\n */\nclass ConfigurableFocusTrap extends FocusTrap {\n constructor(_element, _checker, _ngZone, _document, _focusTrapManager, _inertStrategy, config) {\n super(_element, _checker, _ngZone, _document, config.defer);\n this._focusTrapManager = _focusTrapManager;\n this._inertStrategy = _inertStrategy;\n this._focusTrapManager.register(this);\n }\n /** Whether the FocusTrap is enabled. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._enabled) {\n this._focusTrapManager.register(this);\n }\n else {\n this._focusTrapManager.deregister(this);\n }\n }\n /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */\n destroy() {\n this._focusTrapManager.deregister(this);\n super.destroy();\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _enable() {\n this._inertStrategy.preventFocus(this);\n this.toggleAnchors(true);\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _disable() {\n this._inertStrategy.allowFocus(this);\n this.toggleAnchors(false);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The injection token used to specify the inert strategy. */\nconst FOCUS_TRAP_INERT_STRATEGY = new InjectionToken('FOCUS_TRAP_INERT_STRATEGY');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Lightweight FocusTrapInertStrategy that adds a document focus event\n * listener to redirect focus back inside the FocusTrap.\n */\nclass EventListenerFocusTrapInertStrategy {\n constructor() {\n /** Focus event handler. */\n this._listener = null;\n }\n /** Adds a document event listener that keeps focus inside the FocusTrap. */\n preventFocus(focusTrap) {\n // Ensure there's only one listener per document\n if (this._listener) {\n focusTrap._document.removeEventListener('focus', this._listener, true);\n }\n this._listener = (e) => this._trapFocus(focusTrap, e);\n focusTrap._ngZone.runOutsideAngular(() => {\n focusTrap._document.addEventListener('focus', this._listener, true);\n });\n }\n /** Removes the event listener added in preventFocus. */\n allowFocus(focusTrap) {\n if (!this._listener) {\n return;\n }\n focusTrap._document.removeEventListener('focus', this._listener, true);\n this._listener = null;\n }\n /**\n * Refocuses the first element in the FocusTrap if the focus event target was outside\n * the FocusTrap.\n *\n * This is an event listener callback. The event listener is added in runOutsideAngular,\n * so all this code runs outside Angular as well.\n */\n _trapFocus(focusTrap, event) {\n const target = event.target;\n const focusTrapRoot = focusTrap._element;\n // Don't refocus if target was in an overlay, because the overlay might be associated\n // with an element inside the FocusTrap, ex. mat-select.\n if (target && !focusTrapRoot.contains(target) && !target.closest?.('div.cdk-overlay-pane')) {\n // Some legacy FocusTrap usages have logic that focuses some element on the page\n // just before FocusTrap is destroyed. For backwards compatibility, wait\n // to be sure FocusTrap is still enabled before refocusing.\n setTimeout(() => {\n // Check whether focus wasn't put back into the focus trap while the timeout was pending.\n if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) {\n focusTrap.focusFirstTabbableElement();\n }\n });\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injectable that ensures only the most recently enabled FocusTrap is active. */\nclass FocusTrapManager {\n constructor() {\n // A stack of the FocusTraps on the page. Only the FocusTrap at the\n // top of the stack is active.\n this._focusTrapStack = [];\n }\n /**\n * Disables the FocusTrap at the top of the stack, and then pushes\n * the new FocusTrap onto the stack.\n */\n register(focusTrap) {\n // Dedupe focusTraps that register multiple times.\n this._focusTrapStack = this._focusTrapStack.filter(ft => ft !== focusTrap);\n let stack = this._focusTrapStack;\n if (stack.length) {\n stack[stack.length - 1]._disable();\n }\n stack.push(focusTrap);\n focusTrap._enable();\n }\n /**\n * Removes the FocusTrap from the stack, and activates the\n * FocusTrap that is the new top of the stack.\n */\n deregister(focusTrap) {\n focusTrap._disable();\n const stack = this._focusTrapStack;\n const i = stack.indexOf(focusTrap);\n if (i !== -1) {\n stack.splice(i, 1);\n if (stack.length) {\n stack[stack.length - 1]._enable();\n }\n }\n }\n}\nFocusTrapManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusTrapManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFocusTrapManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusTrapManager, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusTrapManager, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Factory that allows easy instantiation of configurable focus traps. */\nclass ConfigurableFocusTrapFactory {\n constructor(_checker, _ngZone, _focusTrapManager, _document, _inertStrategy) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._focusTrapManager = _focusTrapManager;\n this._document = _document;\n // TODO split up the strategies into different modules, similar to DateAdapter.\n this._inertStrategy = _inertStrategy || new EventListenerFocusTrapInertStrategy();\n }\n create(element, config = { defer: false }) {\n let configObject;\n if (typeof config === 'boolean') {\n configObject = { defer: config };\n }\n else {\n configObject = config;\n }\n return new ConfigurableFocusTrap(element, this._checker, this._ngZone, this._document, this._focusTrapManager, this._inertStrategy, configObject);\n }\n}\nConfigurableFocusTrapFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ConfigurableFocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: FocusTrapManager }, { token: DOCUMENT }, { token: FOCUS_TRAP_INERT_STRATEGY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nConfigurableFocusTrapFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ConfigurableFocusTrapFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ConfigurableFocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: FocusTrapManager }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_TRAP_INERT_STRATEGY]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */\nfunction isFakeMousedownFromScreenReader(event) {\n // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on\n // a clickable element. We can distinguish these events when both `offsetX` and `offsetY` are\n // zero. Note that there's an edge case where the user could click the 0x0 spot of the screen\n // themselves, but that is unlikely to contain interaction elements. Historically we used to\n // check `event.buttons === 0`, however that no longer works on recent versions of NVDA.\n return event.offsetX === 0 && event.offsetY === 0;\n}\n/** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */\nfunction isFakeTouchstartFromScreenReader(event) {\n const touch = (event.touches && event.touches[0]) || (event.changedTouches && event.changedTouches[0]);\n // A fake `touchstart` can be distinguished from a real one by looking at the `identifier`\n // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe,\n // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10\n // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88.\n return (!!touch &&\n touch.identifier === -1 &&\n (touch.radiusX == null || touch.radiusX === 1) &&\n (touch.radiusY == null || touch.radiusY === 1));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injectable options for the InputModalityDetector. These are shallowly merged with the default\n * options.\n */\nconst INPUT_MODALITY_DETECTOR_OPTIONS = new InjectionToken('cdk-input-modality-detector-options');\n/**\n * Default options for the InputModalityDetector.\n *\n * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect\n * keyboard input modality) for two reasons:\n *\n * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open\n * in new tab', and are thus less representative of actual keyboard interaction.\n * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but\n * confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore\n * these keys so as to not update the input modality.\n *\n * Note that we do not by default ignore the right Meta key on Safari because it has the same key\n * code as the ContextMenu key on other browsers. When we switch to using event.key, we can\n * distinguish between the two.\n */\nconst INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS = {\n ignoreKeys: [ALT, CONTROL, MAC_META, META, SHIFT],\n};\n/**\n * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown\n * event to be attributed as mouse and not touch.\n *\n * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found\n * that a value of around 650ms seems appropriate.\n */\nconst TOUCH_BUFFER_MS = 650;\n/**\n * Event listener options that enable capturing and also mark the listener as passive if the browser\n * supports it.\n */\nconst modalityEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/**\n * Service that detects the user's input modality.\n *\n * This service does not update the input modality when a user navigates with a screen reader\n * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC\n * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not\n * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a\n * screen reader is akin to visually scanning a page, and should not be interpreted as actual user\n * input interaction.\n *\n * When a user is not navigating but *interacting* with a screen reader, this service attempts to\n * update the input modality to keyboard, but in general this service's behavior is largely\n * undefined.\n */\nclass InputModalityDetector {\n constructor(_platform, ngZone, document, options) {\n this._platform = _platform;\n /**\n * The most recently detected input modality event target. Is null if no input modality has been\n * detected or if the associated event target is null for some unknown reason.\n */\n this._mostRecentTarget = null;\n /** The underlying BehaviorSubject that emits whenever an input modality is detected. */\n this._modality = new BehaviorSubject(null);\n /**\n * The timestamp of the last touch input modality. Used to determine whether mousedown events\n * should be attributed to mouse or touch.\n */\n this._lastTouchMs = 0;\n /**\n * Handles keydown events. Must be an arrow function in order to preserve the context when it gets\n * bound.\n */\n this._onKeydown = (event) => {\n // If this is one of the keys we should ignore, then ignore it and don't update the input\n // modality to keyboard.\n if (this._options?.ignoreKeys?.some(keyCode => keyCode === event.keyCode)) {\n return;\n }\n this._modality.next('keyboard');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles mousedown events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onMousedown = (event) => {\n // Touches trigger both touch and mouse events, so we need to distinguish between mouse events\n // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely\n // after the previous touch event.\n if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) {\n return;\n }\n // Fake mousedown events are fired by some screen readers when controls are activated by the\n // screen reader. Attribute them to keyboard input modality.\n this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles touchstart events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onTouchstart = (event) => {\n // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart\n // events are fired. Again, attribute to keyboard input modality.\n if (isFakeTouchstartFromScreenReader(event)) {\n this._modality.next('keyboard');\n return;\n }\n // Store the timestamp of this touch event, as it's used to distinguish between mouse events\n // triggered via mouse vs touch.\n this._lastTouchMs = Date.now();\n this._modality.next('touch');\n this._mostRecentTarget = _getEventTarget(event);\n };\n this._options = {\n ...INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS,\n ...options,\n };\n // Skip the first emission as it's null.\n this.modalityDetected = this._modality.pipe(skip(1));\n this.modalityChanged = this.modalityDetected.pipe(distinctUntilChanged());\n // If we're not in a browser, this service should do nothing, as there's no relevant input\n // modality to detect.\n if (_platform.isBrowser) {\n ngZone.runOutsideAngular(() => {\n document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n });\n }\n }\n /** The most recently detected input modality. */\n get mostRecentModality() {\n return this._modality.value;\n }\n ngOnDestroy() {\n this._modality.complete();\n if (this._platform.isBrowser) {\n document.removeEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.removeEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.removeEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n }\n }\n}\nInputModalityDetector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InputModalityDetector, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT }, { token: INPUT_MODALITY_DETECTOR_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nInputModalityDetector.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InputModalityDetector, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: InputModalityDetector, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [INPUT_MODALITY_DETECTOR_OPTIONS]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken('liveAnnouncerElement', {\n providedIn: 'root',\n factory: LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY,\n});\n/** @docs-private */\nfunction LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY() {\n return null;\n}\n/** Injection token that can be used to configure the default options for the LiveAnnouncer. */\nconst LIVE_ANNOUNCER_DEFAULT_OPTIONS = new InjectionToken('LIVE_ANNOUNCER_DEFAULT_OPTIONS');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass LiveAnnouncer {\n constructor(elementToken, _ngZone, _document, _defaultOptions) {\n this._ngZone = _ngZone;\n this._defaultOptions = _defaultOptions;\n // We inject the live element and document as `any` because the constructor signature cannot\n // reference browser globals (HTMLElement, Document) on non-browser environments, since having\n // a class decorator causes TypeScript to preserve the constructor signature types.\n this._document = _document;\n this._liveElement = elementToken || this._createLiveElement();\n }\n announce(message, ...args) {\n const defaultOptions = this._defaultOptions;\n let politeness;\n let duration;\n if (args.length === 1 && typeof args[0] === 'number') {\n duration = args[0];\n }\n else {\n [politeness, duration] = args;\n }\n this.clear();\n clearTimeout(this._previousTimeout);\n if (!politeness) {\n politeness =\n defaultOptions && defaultOptions.politeness ? defaultOptions.politeness : 'polite';\n }\n if (duration == null && defaultOptions) {\n duration = defaultOptions.duration;\n }\n // TODO: ensure changing the politeness works on all environments we support.\n this._liveElement.setAttribute('aria-live', politeness);\n // This 100ms timeout is necessary for some browser + screen-reader combinations:\n // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\n // second time without clearing and then using a non-zero delay.\n // (using JAWS 17 at time of this writing).\n return this._ngZone.runOutsideAngular(() => {\n return new Promise(resolve => {\n clearTimeout(this._previousTimeout);\n this._previousTimeout = setTimeout(() => {\n this._liveElement.textContent = message;\n resolve();\n if (typeof duration === 'number') {\n this._previousTimeout = setTimeout(() => this.clear(), duration);\n }\n }, 100);\n });\n });\n }\n /**\n * Clears the current text from the announcer element. Can be used to prevent\n * screen readers from reading the text out again while the user is going\n * through the page landmarks.\n */\n clear() {\n if (this._liveElement) {\n this._liveElement.textContent = '';\n }\n }\n ngOnDestroy() {\n clearTimeout(this._previousTimeout);\n this._liveElement?.remove();\n this._liveElement = null;\n }\n _createLiveElement() {\n const elementClass = 'cdk-live-announcer-element';\n const previousElements = this._document.getElementsByClassName(elementClass);\n const liveEl = this._document.createElement('div');\n // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n for (let i = 0; i < previousElements.length; i++) {\n previousElements[i].remove();\n }\n liveEl.classList.add(elementClass);\n liveEl.classList.add('cdk-visually-hidden');\n liveEl.setAttribute('aria-atomic', 'true');\n liveEl.setAttribute('aria-live', 'polite');\n this._document.body.appendChild(liveEl);\n return liveEl;\n }\n}\nLiveAnnouncer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: LiveAnnouncer, deps: [{ token: LIVE_ANNOUNCER_ELEMENT_TOKEN, optional: true }, { token: i0.NgZone }, { token: DOCUMENT }, { token: LIVE_ANNOUNCER_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nLiveAnnouncer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: LiveAnnouncer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: LiveAnnouncer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_ELEMENT_TOKEN]\n }] }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_DEFAULT_OPTIONS]\n }] }]; } });\n/**\n * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility\n * with a wider range of browsers and screen readers.\n */\nclass CdkAriaLive {\n constructor(_elementRef, _liveAnnouncer, _contentObserver, _ngZone) {\n this._elementRef = _elementRef;\n this._liveAnnouncer = _liveAnnouncer;\n this._contentObserver = _contentObserver;\n this._ngZone = _ngZone;\n this._politeness = 'polite';\n }\n /** The aria-live politeness level to use when announcing messages. */\n get politeness() {\n return this._politeness;\n }\n set politeness(value) {\n this._politeness = value === 'off' || value === 'assertive' ? value : 'polite';\n if (this._politeness === 'off') {\n if (this._subscription) {\n this._subscription.unsubscribe();\n this._subscription = null;\n }\n }\n else if (!this._subscription) {\n this._subscription = this._ngZone.runOutsideAngular(() => {\n return this._contentObserver.observe(this._elementRef).subscribe(() => {\n // Note that we use textContent here, rather than innerText, in order to avoid a reflow.\n const elementText = this._elementRef.nativeElement.textContent;\n // The `MutationObserver` fires also for attribute\n // changes which we don't want to announce.\n if (elementText !== this._previousAnnouncedText) {\n this._liveAnnouncer.announce(elementText, this._politeness);\n this._previousAnnouncedText = elementText;\n }\n });\n });\n }\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n }\n}\nCdkAriaLive.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAriaLive, deps: [{ token: i0.ElementRef }, { token: LiveAnnouncer }, { token: i1$1.ContentObserver }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAriaLive.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkAriaLive, selector: \"[cdkAriaLive]\", inputs: { politeness: [\"cdkAriaLive\", \"politeness\"] }, exportAs: [\"cdkAriaLive\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAriaLive, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkAriaLive]',\n exportAs: 'cdkAriaLive',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: LiveAnnouncer }, { type: i1$1.ContentObserver }, { type: i0.NgZone }]; }, propDecorators: { politeness: [{\n type: Input,\n args: ['cdkAriaLive']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** InjectionToken for FocusMonitorOptions. */\nconst FOCUS_MONITOR_DEFAULT_OPTIONS = new InjectionToken('cdk-focus-monitor-default-options');\n/**\n * Event listener options that enable capturing and also\n * mark the listener as passive if the browser supports it.\n */\nconst captureEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/** Monitors mouse and keyboard events to determine the cause of focus events. */\nclass FocusMonitor {\n constructor(_ngZone, _platform, _inputModalityDetector, \n /** @breaking-change 11.0.0 make document required */\n document, options) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._inputModalityDetector = _inputModalityDetector;\n /** The focus origin that the next focus event is a result of. */\n this._origin = null;\n /** Whether the window has just been focused. */\n this._windowFocused = false;\n /**\n * Whether the origin was determined via a touch interaction. Necessary as properly attributing\n * focus events to touch interactions requires special logic.\n */\n this._originFromTouchInteraction = false;\n /** Map of elements being monitored to their info. */\n this._elementInfo = new Map();\n /** The number of elements currently being monitored. */\n this._monitoredElementCount = 0;\n /**\n * Keeps track of the root nodes to which we've currently bound a focus/blur handler,\n * as well as the number of monitored elements that they contain. We have to treat focus/blur\n * handlers differently from the rest of the events, because the browser won't emit events\n * to the document when focus moves inside of a shadow root.\n */\n this._rootNodeFocusListenerCount = new Map();\n /**\n * Event listener for `focus` events on the window.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._windowFocusListener = () => {\n // Make a note of when the window regains focus, so we can\n // restore the origin info for the focused element.\n this._windowFocused = true;\n this._windowFocusTimeoutId = setTimeout(() => (this._windowFocused = false));\n };\n /** Subject for stopping our InputModalityDetector subscription. */\n this._stopInputModalityDetector = new Subject();\n /**\n * Event listener for `focus` and 'blur' events on the document.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._rootNodeFocusAndBlurListener = (event) => {\n const target = _getEventTarget(event);\n const handler = event.type === 'focus' ? this._onFocus : this._onBlur;\n // We need to walk up the ancestor chain in order to support `checkChildren`.\n for (let element = target; element; element = element.parentElement) {\n handler.call(this, event, element);\n }\n };\n this._document = document;\n this._detectionMode = options?.detectionMode || 0 /* IMMEDIATE */;\n }\n monitor(element, checkChildren = false) {\n const nativeElement = coerceElement(element);\n // Do nothing if we're not on the browser platform or the passed in node isn't an element.\n if (!this._platform.isBrowser || nativeElement.nodeType !== 1) {\n return of(null);\n }\n // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to\n // the shadow root, rather than the `document`, because the browser won't emit focus events\n // to the `document`, if focus is moving within the same shadow root.\n const rootNode = _getShadowRoot(nativeElement) || this._getDocument();\n const cachedInfo = this._elementInfo.get(nativeElement);\n // Check if we're already monitoring this element.\n if (cachedInfo) {\n if (checkChildren) {\n // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren\n // observers into ones that behave as if `checkChildren` was turned on. We need a more\n // robust solution.\n cachedInfo.checkChildren = true;\n }\n return cachedInfo.subject;\n }\n // Create monitored element info.\n const info = {\n checkChildren: checkChildren,\n subject: new Subject(),\n rootNode,\n };\n this._elementInfo.set(nativeElement, info);\n this._registerGlobalListeners(info);\n return info.subject;\n }\n stopMonitoring(element) {\n const nativeElement = coerceElement(element);\n const elementInfo = this._elementInfo.get(nativeElement);\n if (elementInfo) {\n elementInfo.subject.complete();\n this._setClasses(nativeElement);\n this._elementInfo.delete(nativeElement);\n this._removeGlobalListeners(elementInfo);\n }\n }\n focusVia(element, origin, options) {\n const nativeElement = coerceElement(element);\n const focusedElement = this._getDocument().activeElement;\n // If the element is focused already, calling `focus` again won't trigger the event listener\n // which means that the focus classes won't be updated. If that's the case, update the classes\n // directly without waiting for an event.\n if (nativeElement === focusedElement) {\n this._getClosestElementsInfo(nativeElement).forEach(([currentElement, info]) => this._originChanged(currentElement, origin, info));\n }\n else {\n this._setOrigin(origin);\n // `focus` isn't available on the server\n if (typeof nativeElement.focus === 'function') {\n nativeElement.focus(options);\n }\n }\n }\n ngOnDestroy() {\n this._elementInfo.forEach((_info, element) => this.stopMonitoring(element));\n }\n /** Access injected document if available or fallback to global document reference */\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n _getFocusOrigin(focusEventTarget) {\n if (this._origin) {\n // If the origin was realized via a touch interaction, we need to perform additional checks\n // to determine whether the focus origin should be attributed to touch or program.\n if (this._originFromTouchInteraction) {\n return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program';\n }\n else {\n return this._origin;\n }\n }\n // If the window has just regained focus, we can restore the most recent origin from before the\n // window blurred. Otherwise, we've reached the point where we can't identify the source of the\n // focus. This typically means one of two things happened:\n //\n // 1) The element was programmatically focused, or\n // 2) The element was focused via screen reader navigation (which generally doesn't fire\n // events).\n //\n // Because we can't distinguish between these two cases, we default to setting `program`.\n return this._windowFocused && this._lastFocusOrigin ? this._lastFocusOrigin : 'program';\n }\n /**\n * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a\n * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we\n * handle a focus event following a touch interaction, we need to determine whether (1) the focus\n * event was directly caused by the touch interaction or (2) the focus event was caused by a\n * subsequent programmatic focus call triggered by the touch interaction.\n * @param focusEventTarget The target of the focus event under examination.\n */\n _shouldBeAttributedToTouch(focusEventTarget) {\n // Please note that this check is not perfect. Consider the following edge case:\n //\n //
    \n //
    \n //
    \n //\n // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches\n // #child, #parent is programmatically focused. This code will attribute the focus to touch\n // instead of program. This is a relatively minor edge-case that can be worked around by using\n // focusVia(parent, 'program') to focus #parent.\n return (this._detectionMode === 1 /* EVENTUAL */ ||\n !!focusEventTarget?.contains(this._inputModalityDetector._mostRecentTarget));\n }\n /**\n * Sets the focus classes on the element based on the given focus origin.\n * @param element The element to update the classes on.\n * @param origin The focus origin.\n */\n _setClasses(element, origin) {\n element.classList.toggle('cdk-focused', !!origin);\n element.classList.toggle('cdk-touch-focused', origin === 'touch');\n element.classList.toggle('cdk-keyboard-focused', origin === 'keyboard');\n element.classList.toggle('cdk-mouse-focused', origin === 'mouse');\n element.classList.toggle('cdk-program-focused', origin === 'program');\n }\n /**\n * Updates the focus origin. If we're using immediate detection mode, we schedule an async\n * function to clear the origin at the end of a timeout. The duration of the timeout depends on\n * the origin being set.\n * @param origin The origin to set.\n * @param isFromInteraction Whether we are setting the origin from an interaction event.\n */\n _setOrigin(origin, isFromInteraction = false) {\n this._ngZone.runOutsideAngular(() => {\n this._origin = origin;\n this._originFromTouchInteraction = origin === 'touch' && isFromInteraction;\n // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms\n // for a touch event). We reset the origin at the next tick because Firefox focuses one tick\n // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for\n // a touch event because when a touch event is fired, the associated focus event isn't yet in\n // the event queue. Before doing so, clear any pending timeouts.\n if (this._detectionMode === 0 /* IMMEDIATE */) {\n clearTimeout(this._originTimeoutId);\n const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1;\n this._originTimeoutId = setTimeout(() => (this._origin = null), ms);\n }\n });\n }\n /**\n * Handles focus events on a registered element.\n * @param event The focus event.\n * @param element The monitored element.\n */\n _onFocus(event, element) {\n // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent\n // focus event affecting the monitored element. If we want to use the origin of the first event\n // instead we should check for the cdk-focused class here and return if the element already has\n // it. (This only matters for elements that have includesChildren = true).\n // If we are not counting child-element-focus as focused, make sure that the event target is the\n // monitored element itself.\n const elementInfo = this._elementInfo.get(element);\n const focusEventTarget = _getEventTarget(event);\n if (!elementInfo || (!elementInfo.checkChildren && element !== focusEventTarget)) {\n return;\n }\n this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo);\n }\n /**\n * Handles blur events on a registered element.\n * @param event The blur event.\n * @param element The monitored element.\n */\n _onBlur(event, element) {\n // If we are counting child-element-focus as focused, make sure that we aren't just blurring in\n // order to focus another child of the monitored element.\n const elementInfo = this._elementInfo.get(element);\n if (!elementInfo ||\n (elementInfo.checkChildren &&\n event.relatedTarget instanceof Node &&\n element.contains(event.relatedTarget))) {\n return;\n }\n this._setClasses(element);\n this._emitOrigin(elementInfo.subject, null);\n }\n _emitOrigin(subject, origin) {\n this._ngZone.run(() => subject.next(origin));\n }\n _registerGlobalListeners(elementInfo) {\n if (!this._platform.isBrowser) {\n return;\n }\n const rootNode = elementInfo.rootNode;\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0;\n if (!rootNodeFocusListeners) {\n this._ngZone.runOutsideAngular(() => {\n rootNode.addEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.addEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n });\n }\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1);\n // Register global listeners when first element is monitored.\n if (++this._monitoredElementCount === 1) {\n // Note: we listen to events in the capture phase so we\n // can detect them even if the user stops propagation.\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n window.addEventListener('focus', this._windowFocusListener);\n });\n // The InputModalityDetector is also just a collection of global listeners.\n this._inputModalityDetector.modalityDetected\n .pipe(takeUntil(this._stopInputModalityDetector))\n .subscribe(modality => {\n this._setOrigin(modality, true /* isFromInteraction */);\n });\n }\n }\n _removeGlobalListeners(elementInfo) {\n const rootNode = elementInfo.rootNode;\n if (this._rootNodeFocusListenerCount.has(rootNode)) {\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode);\n if (rootNodeFocusListeners > 1) {\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1);\n }\n else {\n rootNode.removeEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.removeEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n this._rootNodeFocusListenerCount.delete(rootNode);\n }\n }\n // Unregister global listeners when last element is unmonitored.\n if (!--this._monitoredElementCount) {\n const window = this._getWindow();\n window.removeEventListener('focus', this._windowFocusListener);\n // Equivalently, stop our InputModalityDetector subscription.\n this._stopInputModalityDetector.next();\n // Clear timeouts for all potentially pending timeouts to prevent the leaks.\n clearTimeout(this._windowFocusTimeoutId);\n clearTimeout(this._originTimeoutId);\n }\n }\n /** Updates all the state on an element once its focus origin has changed. */\n _originChanged(element, origin, elementInfo) {\n this._setClasses(element, origin);\n this._emitOrigin(elementInfo.subject, origin);\n this._lastFocusOrigin = origin;\n }\n /**\n * Collects the `MonitoredElementInfo` of a particular element and\n * all of its ancestors that have enabled `checkChildren`.\n * @param element Element from which to start the search.\n */\n _getClosestElementsInfo(element) {\n const results = [];\n this._elementInfo.forEach((info, currentElement) => {\n if (currentElement === element || (info.checkChildren && currentElement.contains(element))) {\n results.push([currentElement, info]);\n }\n });\n return results;\n }\n}\nFocusMonitor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusMonitor, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: InputModalityDetector }, { token: DOCUMENT, optional: true }, { token: FOCUS_MONITOR_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusMonitor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusMonitor, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FocusMonitor, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: InputModalityDetector }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_MONITOR_DEFAULT_OPTIONS]\n }] }]; } });\n/**\n * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or\n * programmatically) and adds corresponding classes to the element.\n *\n * There are two variants of this directive:\n * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is\n * focused.\n * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.\n */\nclass CdkMonitorFocus {\n constructor(_elementRef, _focusMonitor) {\n this._elementRef = _elementRef;\n this._focusMonitor = _focusMonitor;\n this.cdkFocusChange = new EventEmitter();\n }\n ngAfterViewInit() {\n const element = this._elementRef.nativeElement;\n this._monitorSubscription = this._focusMonitor\n .monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus'))\n .subscribe(origin => this.cdkFocusChange.emit(origin));\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n if (this._monitorSubscription) {\n this._monitorSubscription.unsubscribe();\n }\n }\n}\nCdkMonitorFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkMonitorFocus, deps: [{ token: i0.ElementRef }, { token: FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive });\nCdkMonitorFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkMonitorFocus, selector: \"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]\", outputs: { cdkFocusChange: \"cdkFocusChange\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkMonitorFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FocusMonitor }]; }, propDecorators: { cdkFocusChange: [{\n type: Output\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** CSS class applied to the document body when in black-on-white high-contrast mode. */\nconst BLACK_ON_WHITE_CSS_CLASS = 'cdk-high-contrast-black-on-white';\n/** CSS class applied to the document body when in white-on-black high-contrast mode. */\nconst WHITE_ON_BLACK_CSS_CLASS = 'cdk-high-contrast-white-on-black';\n/** CSS class applied to the document body when in high-contrast mode. */\nconst HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = 'cdk-high-contrast-active';\n/**\n * Service to determine whether the browser is currently in a high-contrast-mode environment.\n *\n * Microsoft Windows supports an accessibility feature called \"High Contrast Mode\". This mode\n * changes the appearance of all applications, including web applications, to dramatically increase\n * contrast.\n *\n * IE, Edge, and Firefox currently support this mode. Chrome does not support Windows High Contrast\n * Mode. This service does not detect high-contrast mode as added by the Chrome \"High Contrast\"\n * browser extension.\n */\nclass HighContrastModeDetector {\n constructor(_platform, document) {\n this._platform = _platform;\n this._document = document;\n }\n /** Gets the current high-contrast-mode for the page. */\n getHighContrastMode() {\n if (!this._platform.isBrowser) {\n return 0 /* NONE */;\n }\n // Create a test element with an arbitrary background-color that is neither black nor\n // white; high-contrast mode will coerce the color to either black or white. Also ensure that\n // appending the test element to the DOM does not affect layout by absolutely positioning it\n const testElement = this._document.createElement('div');\n testElement.style.backgroundColor = 'rgb(1,2,3)';\n testElement.style.position = 'absolute';\n this._document.body.appendChild(testElement);\n // Get the computed style for the background color, collapsing spaces to normalize between\n // browsers. Once we get this color, we no longer need the test element. Access the `window`\n // via the document so we can fake it in tests. Note that we have extra null checks, because\n // this logic will likely run during app bootstrap and throwing can break the entire app.\n const documentWindow = this._document.defaultView || window;\n const computedStyle = documentWindow && documentWindow.getComputedStyle\n ? documentWindow.getComputedStyle(testElement)\n : null;\n const computedColor = ((computedStyle && computedStyle.backgroundColor) || '').replace(/ /g, '');\n testElement.remove();\n switch (computedColor) {\n case 'rgb(0,0,0)':\n return 2 /* WHITE_ON_BLACK */;\n case 'rgb(255,255,255)':\n return 1 /* BLACK_ON_WHITE */;\n }\n return 0 /* NONE */;\n }\n /** Applies CSS classes indicating high-contrast mode to document body (browser-only). */\n _applyBodyHighContrastModeCssClasses() {\n if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) {\n const bodyClasses = this._document.body.classList;\n // IE11 doesn't support `classList` operations with multiple arguments\n bodyClasses.remove(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n bodyClasses.remove(BLACK_ON_WHITE_CSS_CLASS);\n bodyClasses.remove(WHITE_ON_BLACK_CSS_CLASS);\n this._hasCheckedHighContrastMode = true;\n const mode = this.getHighContrastMode();\n if (mode === 1 /* BLACK_ON_WHITE */) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n bodyClasses.add(BLACK_ON_WHITE_CSS_CLASS);\n }\n else if (mode === 2 /* WHITE_ON_BLACK */) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n bodyClasses.add(WHITE_ON_BLACK_CSS_CLASS);\n }\n }\n }\n}\nHighContrastModeDetector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: HighContrastModeDetector, deps: [{ token: i1.Platform }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nHighContrastModeDetector.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: HighContrastModeDetector, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: HighContrastModeDetector, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass A11yModule {\n constructor(highContrastModeDetector) {\n highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n }\n}\nA11yModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: A11yModule, deps: [{ token: HighContrastModeDetector }], target: i0.ɵɵFactoryTarget.NgModule });\nA11yModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: A11yModule, declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus], imports: [PlatformModule, ObserversModule], exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus] });\nA11yModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: A11yModule, imports: [[PlatformModule, ObserversModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: A11yModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [PlatformModule, ObserversModule],\n declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n }]\n }], ctorParameters: function () { return [{ type: HighContrastModeDetector }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A11yModule, ActiveDescendantKeyManager, AriaDescriber, CDK_DESCRIBEDBY_HOST_ATTRIBUTE, CDK_DESCRIBEDBY_ID_PREFIX, CdkAriaLive, CdkMonitorFocus, CdkTrapFocus, ConfigurableFocusTrap, ConfigurableFocusTrapFactory, EventListenerFocusTrapInertStrategy, FOCUS_MONITOR_DEFAULT_OPTIONS, FOCUS_TRAP_INERT_STRATEGY, FocusKeyManager, FocusMonitor, FocusTrap, FocusTrapFactory, HighContrastModeDetector, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS, INPUT_MODALITY_DETECTOR_OPTIONS, InputModalityDetector, InteractivityChecker, IsFocusableConfig, LIVE_ANNOUNCER_DEFAULT_OPTIONS, LIVE_ANNOUNCER_ELEMENT_TOKEN, LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY, ListKeyManager, LiveAnnouncer, MESSAGES_CONTAINER_ID, isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Input, EventEmitter, Optional, Inject, SkipSelf, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/collections';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Subject, Subscription } from 'rxjs';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Used to generate unique ID for each accordion. */\nlet nextId$1 = 0;\n/**\n * Injection token that can be used to reference instances of `CdkAccordion`. It serves\n * as alternative token to the actual `CdkAccordion` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_ACCORDION = new InjectionToken('CdkAccordion');\n/**\n * Directive whose purpose is to manage the expanded state of CdkAccordionItem children.\n */\nclass CdkAccordion {\n constructor() {\n /** Emits when the state of the accordion changes */\n this._stateChanges = new Subject();\n /** Stream that emits true/false when openAll/closeAll is triggered. */\n this._openCloseAllActions = new Subject();\n /** A readonly id value to use for unique selection coordination. */\n this.id = `cdk-accordion-${nextId$1++}`;\n this._multi = false;\n }\n /** Whether the accordion should allow multiple expanded accordion items simultaneously. */\n get multi() {\n return this._multi;\n }\n set multi(multi) {\n this._multi = coerceBooleanProperty(multi);\n }\n /** Opens all enabled accordion items in an accordion where multi is enabled. */\n openAll() {\n if (this._multi) {\n this._openCloseAllActions.next(true);\n }\n }\n /** Closes all enabled accordion items in an accordion where multi is enabled. */\n closeAll() {\n this._openCloseAllActions.next(false);\n }\n ngOnChanges(changes) {\n this._stateChanges.next(changes);\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n this._openCloseAllActions.complete();\n }\n}\nCdkAccordion.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAccordion, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCdkAccordion.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkAccordion, selector: \"cdk-accordion, [cdkAccordion]\", inputs: { multi: \"multi\" }, providers: [{ provide: CDK_ACCORDION, useExisting: CdkAccordion }], exportAs: [\"cdkAccordion\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAccordion, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-accordion, [cdkAccordion]',\n exportAs: 'cdkAccordion',\n providers: [{ provide: CDK_ACCORDION, useExisting: CdkAccordion }],\n }]\n }], propDecorators: { multi: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Used to generate unique ID for each accordion item. */\nlet nextId = 0;\n/**\n * An basic directive expected to be extended and decorated as a component. Sets up all\n * events and attributes needed to be managed by a CdkAccordion parent.\n */\nclass CdkAccordionItem {\n constructor(accordion, _changeDetectorRef, _expansionDispatcher) {\n this.accordion = accordion;\n this._changeDetectorRef = _changeDetectorRef;\n this._expansionDispatcher = _expansionDispatcher;\n /** Subscription to openAll/closeAll events. */\n this._openCloseAllSubscription = Subscription.EMPTY;\n /** Event emitted every time the AccordionItem is closed. */\n this.closed = new EventEmitter();\n /** Event emitted every time the AccordionItem is opened. */\n this.opened = new EventEmitter();\n /** Event emitted when the AccordionItem is destroyed. */\n this.destroyed = new EventEmitter();\n /**\n * Emits whenever the expanded state of the accordion changes.\n * Primarily used to facilitate two-way binding.\n * @docs-private\n */\n this.expandedChange = new EventEmitter();\n /** The unique AccordionItem id. */\n this.id = `cdk-accordion-child-${nextId++}`;\n this._expanded = false;\n this._disabled = false;\n /** Unregister function for _expansionDispatcher. */\n this._removeUniqueSelectionListener = () => { };\n this._removeUniqueSelectionListener = _expansionDispatcher.listen((id, accordionId) => {\n if (this.accordion &&\n !this.accordion.multi &&\n this.accordion.id === accordionId &&\n this.id !== id) {\n this.expanded = false;\n }\n });\n // When an accordion item is hosted in an accordion, subscribe to open/close events.\n if (this.accordion) {\n this._openCloseAllSubscription = this._subscribeToOpenCloseAllActions();\n }\n }\n /** Whether the AccordionItem is expanded. */\n get expanded() {\n return this._expanded;\n }\n set expanded(expanded) {\n expanded = coerceBooleanProperty(expanded);\n // Only emit events and update the internal value if the value changes.\n if (this._expanded !== expanded) {\n this._expanded = expanded;\n this.expandedChange.emit(expanded);\n if (expanded) {\n this.opened.emit();\n /**\n * In the unique selection dispatcher, the id parameter is the id of the CdkAccordionItem,\n * the name value is the id of the accordion.\n */\n const accordionId = this.accordion ? this.accordion.id : this.id;\n this._expansionDispatcher.notify(this.id, accordionId);\n }\n else {\n this.closed.emit();\n }\n // Ensures that the animation will run when the value is set outside of an `@Input`.\n // This includes cases like the open, close and toggle methods.\n this._changeDetectorRef.markForCheck();\n }\n }\n /** Whether the AccordionItem is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(disabled) {\n this._disabled = coerceBooleanProperty(disabled);\n }\n /** Emits an event for the accordion item being destroyed. */\n ngOnDestroy() {\n this.opened.complete();\n this.closed.complete();\n this.destroyed.emit();\n this.destroyed.complete();\n this._removeUniqueSelectionListener();\n this._openCloseAllSubscription.unsubscribe();\n }\n /** Toggles the expanded state of the accordion item. */\n toggle() {\n if (!this.disabled) {\n this.expanded = !this.expanded;\n }\n }\n /** Sets the expanded state of the accordion item to false. */\n close() {\n if (!this.disabled) {\n this.expanded = false;\n }\n }\n /** Sets the expanded state of the accordion item to true. */\n open() {\n if (!this.disabled) {\n this.expanded = true;\n }\n }\n _subscribeToOpenCloseAllActions() {\n return this.accordion._openCloseAllActions.subscribe(expanded => {\n // Only change expanded state if item is enabled\n if (!this.disabled) {\n this.expanded = expanded;\n }\n });\n }\n}\nCdkAccordionItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAccordionItem, deps: [{ token: CDK_ACCORDION, optional: true, skipSelf: true }, { token: i0.ChangeDetectorRef }, { token: i1.UniqueSelectionDispatcher }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAccordionItem.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkAccordionItem, selector: \"cdk-accordion-item, [cdkAccordionItem]\", inputs: { expanded: \"expanded\", disabled: \"disabled\" }, outputs: { closed: \"closed\", opened: \"opened\", destroyed: \"destroyed\", expandedChange: \"expandedChange\" }, providers: [\n // Provide `CDK_ACCORDION` as undefined to prevent nested accordion items from\n // registering to the same accordion.\n { provide: CDK_ACCORDION, useValue: undefined },\n ], exportAs: [\"cdkAccordionItem\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAccordionItem, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-accordion-item, [cdkAccordionItem]',\n exportAs: 'cdkAccordionItem',\n providers: [\n // Provide `CDK_ACCORDION` as undefined to prevent nested accordion items from\n // registering to the same accordion.\n { provide: CDK_ACCORDION, useValue: undefined },\n ],\n }]\n }], ctorParameters: function () { return [{ type: CdkAccordion, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_ACCORDION]\n }, {\n type: SkipSelf\n }] }, { type: i0.ChangeDetectorRef }, { type: i1.UniqueSelectionDispatcher }]; }, propDecorators: { closed: [{\n type: Output\n }], opened: [{\n type: Output\n }], destroyed: [{\n type: Output\n }], expandedChange: [{\n type: Output\n }], expanded: [{\n type: Input\n }], disabled: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass CdkAccordionModule {\n}\nCdkAccordionModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAccordionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCdkAccordionModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAccordionModule, declarations: [CdkAccordion, CdkAccordionItem], exports: [CdkAccordion, CdkAccordionItem] });\nCdkAccordionModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAccordionModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkAccordionModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkAccordion, CdkAccordionItem],\n declarations: [CdkAccordion, CdkAccordionItem],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkAccordion, CdkAccordionItem, CdkAccordionModule };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, Injectable, Optional, Inject, Directive, Output, Input, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-brower because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\nconst DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {\n providedIn: 'root',\n factory: DIR_DOCUMENT_FACTORY,\n});\n/** @docs-private */\nfunction DIR_DOCUMENT_FACTORY() {\n return inject(DOCUMENT);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\nclass Directionality {\n constructor(_document) {\n /** The current 'ltr' or 'rtl' value. */\n this.value = 'ltr';\n /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n this.change = new EventEmitter();\n if (_document) {\n // TODO: handle 'auto' value -\n // We still need to account for dir=\"auto\".\n // It looks like HTMLElemenet.dir is also \"auto\" when that's set to the attribute,\n // but getComputedStyle return either \"ltr\" or \"rtl\". avoiding getComputedStyle for now\n const bodyDir = _document.body ? _document.body.dir : null;\n const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n const value = bodyDir || htmlDir;\n this.value = value === 'ltr' || value === 'rtl' ? value : 'ltr';\n }\n }\n ngOnDestroy() {\n this.change.complete();\n }\n}\nDirectionality.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Directionality, deps: [{ token: DIR_DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nDirectionality.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Directionality, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Directionality, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DIR_DOCUMENT]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Directive to listen for changes of direction of part of the DOM.\n *\n * Provides itself as Directionality such that descendant directives only need to ever inject\n * Directionality to get the closest direction.\n */\nclass Dir {\n constructor() {\n /** Normalized direction that accounts for invalid/unsupported values. */\n this._dir = 'ltr';\n /** Whether the `value` has been set to its initial value. */\n this._isInitialized = false;\n /** Event emitted when the direction changes. */\n this.change = new EventEmitter();\n }\n /** @docs-private */\n get dir() {\n return this._dir;\n }\n set dir(value) {\n const old = this._dir;\n const normalizedValue = value ? value.toLowerCase() : value;\n this._rawDir = value;\n this._dir = normalizedValue === 'ltr' || normalizedValue === 'rtl' ? normalizedValue : 'ltr';\n if (old !== this._dir && this._isInitialized) {\n this.change.emit(this._dir);\n }\n }\n /** Current layout direction of the element. */\n get value() {\n return this.dir;\n }\n /** Initialize once default value has been set. */\n ngAfterContentInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n this.change.complete();\n }\n}\nDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Dir, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: Dir, selector: \"[dir]\", inputs: { dir: \"dir\" }, outputs: { change: \"dirChange\" }, host: { properties: { \"attr.dir\": \"_rawDir\" } }, providers: [{ provide: Directionality, useExisting: Dir }], exportAs: [\"dir\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Dir, decorators: [{\n type: Directive,\n args: [{\n selector: '[dir]',\n providers: [{ provide: Directionality, useExisting: Dir }],\n host: { '[attr.dir]': '_rawDir' },\n exportAs: 'dir',\n }]\n }], propDecorators: { change: [{\n type: Output,\n args: ['dirChange']\n }], dir: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass BidiModule {\n}\nBidiModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BidiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBidiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BidiModule, declarations: [Dir], exports: [Dir] });\nBidiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BidiModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BidiModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [Dir],\n declarations: [Dir],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BidiModule, DIR_DOCUMENT, Dir, Directionality };\n","import { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, InjectionToken, EventEmitter, Directive, Optional, Input, Output, NgModule } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A pending copy-to-clipboard operation.\n *\n * The implementation of copying text to the clipboard modifies the DOM and\n * forces a relayout. This relayout can take too long if the string is large,\n * causing the execCommand('copy') to happen too long after the user clicked.\n * This results in the browser refusing to copy. This object lets the\n * relayout happen in a separate tick from copying by providing a copy function\n * that can be called later.\n *\n * Destroy must be called when no longer in use, regardless of whether `copy` is\n * called.\n */\nclass PendingCopy {\n constructor(text, _document) {\n this._document = _document;\n const textarea = (this._textarea = this._document.createElement('textarea'));\n const styles = textarea.style;\n // Hide the element for display and accessibility. Set a fixed position so the page layout\n // isn't affected. We use `fixed` with `top: 0`, because focus is moved into the textarea\n // for a split second and if it's off-screen, some browsers will attempt to scroll it into view.\n styles.position = 'fixed';\n styles.top = styles.opacity = '0';\n styles.left = '-999em';\n textarea.setAttribute('aria-hidden', 'true');\n textarea.value = text;\n this._document.body.appendChild(textarea);\n }\n /** Finishes copying the text. */\n copy() {\n const textarea = this._textarea;\n let successful = false;\n try {\n // Older browsers could throw if copy is not supported.\n if (textarea) {\n const currentFocus = this._document.activeElement;\n textarea.select();\n textarea.setSelectionRange(0, textarea.value.length);\n successful = this._document.execCommand('copy');\n if (currentFocus) {\n currentFocus.focus();\n }\n }\n }\n catch {\n // Discard error.\n // Initial setting of {@code successful} will represent failure here.\n }\n return successful;\n }\n /** Cleans up DOM changes used to perform the copy operation. */\n destroy() {\n const textarea = this._textarea;\n if (textarea) {\n textarea.remove();\n this._textarea = undefined;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A service for copying text to the clipboard.\n */\nclass Clipboard {\n constructor(document) {\n this._document = document;\n }\n /**\n * Copies the provided text into the user's clipboard.\n *\n * @param text The string to copy.\n * @returns Whether the operation was successful.\n */\n copy(text) {\n const pendingCopy = this.beginCopy(text);\n const successful = pendingCopy.copy();\n pendingCopy.destroy();\n return successful;\n }\n /**\n * Prepares a string to be copied later. This is useful for large strings\n * which take too long to successfully render and be copied in the same tick.\n *\n * The caller must call `destroy` on the returned `PendingCopy`.\n *\n * @param text The string to copy.\n * @returns the pending copy operation.\n */\n beginCopy(text) {\n return new PendingCopy(text, this._document);\n }\n}\nClipboard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Clipboard, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nClipboard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Clipboard, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Clipboard, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Injection token that can be used to provide the default options to `CdkCopyToClipboard`. */\nconst CDK_COPY_TO_CLIPBOARD_CONFIG = new InjectionToken('CDK_COPY_TO_CLIPBOARD_CONFIG');\n/**\n * Provides behavior for a button that when clicked copies content into user's\n * clipboard.\n */\nclass CdkCopyToClipboard {\n constructor(_clipboard, _ngZone, config) {\n this._clipboard = _clipboard;\n this._ngZone = _ngZone;\n /** Content to be copied. */\n this.text = '';\n /**\n * How many times to attempt to copy the text. This may be necessary for longer text, because\n * the browser needs time to fill an intermediate textarea element and copy the content.\n */\n this.attempts = 1;\n /**\n * Emits when some text is copied to the clipboard. The\n * emitted value indicates whether copying was successful.\n */\n this.copied = new EventEmitter();\n /** Copies that are currently being attempted. */\n this._pending = new Set();\n if (config && config.attempts != null) {\n this.attempts = config.attempts;\n }\n }\n /** Copies the current text to the clipboard. */\n copy(attempts = this.attempts) {\n if (attempts > 1) {\n let remainingAttempts = attempts;\n const pending = this._clipboard.beginCopy(this.text);\n this._pending.add(pending);\n const attempt = () => {\n const successful = pending.copy();\n if (!successful && --remainingAttempts && !this._destroyed) {\n // We use 1 for the timeout since it's more predictable when flushing in unit tests.\n this._currentTimeout = this._ngZone.runOutsideAngular(() => setTimeout(attempt, 1));\n }\n else {\n this._currentTimeout = null;\n this._pending.delete(pending);\n pending.destroy();\n this.copied.emit(successful);\n }\n };\n attempt();\n }\n else {\n this.copied.emit(this._clipboard.copy(this.text));\n }\n }\n ngOnDestroy() {\n if (this._currentTimeout) {\n clearTimeout(this._currentTimeout);\n }\n this._pending.forEach(copy => copy.destroy());\n this._pending.clear();\n this._destroyed = true;\n }\n}\nCdkCopyToClipboard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkCopyToClipboard, deps: [{ token: Clipboard }, { token: i0.NgZone }, { token: CDK_COPY_TO_CLIPBOARD_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkCopyToClipboard.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkCopyToClipboard, selector: \"[cdkCopyToClipboard]\", inputs: { text: [\"cdkCopyToClipboard\", \"text\"], attempts: [\"cdkCopyToClipboardAttempts\", \"attempts\"] }, outputs: { copied: \"cdkCopyToClipboardCopied\" }, host: { listeners: { \"click\": \"copy()\" } }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkCopyToClipboard, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkCopyToClipboard]',\n host: {\n '(click)': 'copy()',\n },\n }]\n }], ctorParameters: function () { return [{ type: Clipboard }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_COPY_TO_CLIPBOARD_CONFIG]\n }] }]; }, propDecorators: { text: [{\n type: Input,\n args: ['cdkCopyToClipboard']\n }], attempts: [{\n type: Input,\n args: ['cdkCopyToClipboardAttempts']\n }], copied: [{\n type: Output,\n args: ['cdkCopyToClipboardCopied']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass ClipboardModule {\n}\nClipboardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ClipboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nClipboardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ClipboardModule, declarations: [CdkCopyToClipboard], exports: [CdkCopyToClipboard] });\nClipboardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ClipboardModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ClipboardModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CdkCopyToClipboard],\n exports: [CdkCopyToClipboard],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CDK_COPY_TO_CLIPBOARD_CONFIG, CdkCopyToClipboard, Clipboard, ClipboardModule, PendingCopy };\n","import { ElementRef } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Coerces a data-bound value (typically a string) to a boolean. */\nfunction coerceBooleanProperty(value) {\n return value != null && `${value}` !== 'false';\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction coerceNumberProperty(value, fallbackValue = 0) {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\n/**\n * Whether the provided value is considered a number.\n * @docs-private\n */\nfunction _isNumberValue(value) {\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n return !isNaN(parseFloat(value)) && !isNaN(Number(value));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction coerceArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Coerces a value to a CSS pixel value. */\nfunction coerceCssPixelValue(value) {\n if (value == null) {\n return '';\n }\n return typeof value === 'string' ? value : `${value}px`;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Coerces an ElementRef or an Element into an element.\n * Useful for APIs that can accept either a ref or the native element itself.\n */\nfunction coerceElement(elementOrRef) {\n return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Coerces a value to an array of trimmed non-empty strings.\n * Any input that is not an array, `null` or `undefined` will be turned into a string\n * via `toString()` and subsequently split with the given separator.\n * `null` and `undefined` will result in an empty array.\n * This results in the following outcomes:\n * - `null` -> `[]`\n * - `[null]` -> `[\"null\"]`\n * - `[\"a\", \"b \", \" \"]` -> `[\"a\", \"b\"]`\n * - `[1, [2, 3]]` -> `[\"1\", \"2,3\"]`\n * - `[{ a: 0 }]` -> `[\"[object Object]\"]`\n * - `{ a: 0 }` -> `[\"[object\", \"Object]\"]`\n *\n * Useful for defining CSS classes or table columns.\n * @param value the value to coerce into an array of strings\n * @param separator split-separator if value isn't an array\n */\nfunction coerceStringArray(value, separator = /\\s+/) {\n const result = [];\n if (value != null) {\n const sourceValues = Array.isArray(value) ? value : `${value}`.split(separator);\n for (const sourceValue of sourceValues) {\n const trimmedString = `${sourceValue}`.trim();\n if (trimmedString) {\n result.push(trimmedString);\n }\n }\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport { _isNumberValue, coerceArray, coerceBooleanProperty, coerceCssPixelValue, coerceElement, coerceNumberProperty, coerceStringArray };\n","import { isObservable, of, Subject } from 'rxjs';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass DataSource {\n}\n/** Checks whether an object is a data source. */\nfunction isDataSource(value) {\n // Check if the value is a DataSource by observing if it has a connect function. Cannot\n // be checked as an `instanceof DataSource` since people could create their own sources\n // that match the interface, but don't extend DataSource.\n return value && typeof value.connect === 'function';\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** DataSource wrapper for a native array. */\nclass ArrayDataSource extends DataSource {\n constructor(_data) {\n super();\n this._data = _data;\n }\n connect() {\n return isObservable(this._data) ? this._data : of(this._data);\n }\n disconnect() { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A repeater that destroys views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will always construct a new embedded view for each item.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _DisposeViewRepeaterStrategy {\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = viewContainerRef.createEmbeddedView(insertContext.templateRef, insertContext.context, insertContext.index);\n operation = 1 /* INSERTED */;\n }\n else if (currentIndex == null) {\n viewContainerRef.remove(adjustedPreviousIndex);\n operation = 3 /* REMOVED */;\n }\n else {\n view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n operation = 2 /* MOVED */;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view?.context,\n operation,\n record,\n });\n }\n });\n }\n detach() { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A repeater that caches views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will reuse one of the cached views instead of creating a new\n * embedded view. Recycling cached views reduces the quantity of expensive DOM\n * inserts.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _RecycleViewRepeaterStrategy {\n constructor() {\n /**\n * The size of the cache used to store unused views.\n * Setting the cache size to `0` will disable caching. Defaults to 20 views.\n */\n this.viewCacheSize = 20;\n /**\n * View cache that stores embedded view instances that have been previously stamped out,\n * but don't are not currently rendered. The view repeater will reuse these views rather than\n * creating brand new ones.\n *\n * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance.\n */\n this._viewCache = [];\n }\n /** Apply changes to the DOM. */\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n // Rearrange the views to put them in the right location.\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n // Item added.\n const viewArgsFactory = () => itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = this._insertView(viewArgsFactory, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = view ? 1 /* INSERTED */ : 0 /* REPLACED */;\n }\n else if (currentIndex == null) {\n // Item removed.\n this._detachAndCacheView(adjustedPreviousIndex, viewContainerRef);\n operation = 3 /* REMOVED */;\n }\n else {\n // Item moved.\n view = this._moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = 2 /* MOVED */;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view?.context,\n operation,\n record,\n });\n }\n });\n }\n detach() {\n for (const view of this._viewCache) {\n view.destroy();\n }\n this._viewCache = [];\n }\n /**\n * Inserts a view for a new item, either from the cache or by creating a new\n * one. Returns `undefined` if the item was inserted into a cached view.\n */\n _insertView(viewArgsFactory, currentIndex, viewContainerRef, value) {\n const cachedView = this._insertViewFromCache(currentIndex, viewContainerRef);\n if (cachedView) {\n cachedView.context.$implicit = value;\n return undefined;\n }\n const viewArgs = viewArgsFactory();\n return viewContainerRef.createEmbeddedView(viewArgs.templateRef, viewArgs.context, viewArgs.index);\n }\n /** Detaches the view at the given index and inserts into the view cache. */\n _detachAndCacheView(index, viewContainerRef) {\n const detachedView = viewContainerRef.detach(index);\n this._maybeCacheView(detachedView, viewContainerRef);\n }\n /** Moves view at the previous index to the current index. */\n _moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, value) {\n const view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n view.context.$implicit = value;\n return view;\n }\n /**\n * Cache the given detached view. If the cache is full, the view will be\n * destroyed.\n */\n _maybeCacheView(view, viewContainerRef) {\n if (this._viewCache.length < this.viewCacheSize) {\n this._viewCache.push(view);\n }\n else {\n const index = viewContainerRef.indexOf(view);\n // The host component could remove views from the container outside of\n // the view repeater. It's unlikely this will occur, but just in case,\n // destroy the view on its own, otherwise destroy it through the\n // container to ensure that all the references are removed.\n if (index === -1) {\n view.destroy();\n }\n else {\n viewContainerRef.remove(index);\n }\n }\n }\n /** Inserts a recycled view from the cache at the given index. */\n _insertViewFromCache(index, viewContainerRef) {\n const cachedView = this._viewCache.pop();\n if (cachedView) {\n viewContainerRef.insert(cachedView, index);\n }\n return cachedView || null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class to be used to power selecting one or more options from a list.\n */\nclass SelectionModel {\n constructor(_multiple = false, initiallySelectedValues, _emitChanges = true) {\n this._multiple = _multiple;\n this._emitChanges = _emitChanges;\n /** Currently-selected values. */\n this._selection = new Set();\n /** Keeps track of the deselected options that haven't been emitted by the change event. */\n this._deselectedToEmit = [];\n /** Keeps track of the selected options that haven't been emitted by the change event. */\n this._selectedToEmit = [];\n /** Event emitted when the value has changed. */\n this.changed = new Subject();\n if (initiallySelectedValues && initiallySelectedValues.length) {\n if (_multiple) {\n initiallySelectedValues.forEach(value => this._markSelected(value));\n }\n else {\n this._markSelected(initiallySelectedValues[0]);\n }\n // Clear the array in order to avoid firing the change event for preselected values.\n this._selectedToEmit.length = 0;\n }\n }\n /** Selected values. */\n get selected() {\n if (!this._selected) {\n this._selected = Array.from(this._selection.values());\n }\n return this._selected;\n }\n /**\n * Selects a value or an array of values.\n */\n select(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._markSelected(value));\n this._emitChangeEvent();\n }\n /**\n * Deselects a value or an array of values.\n */\n deselect(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._unmarkSelected(value));\n this._emitChangeEvent();\n }\n /**\n * Toggles a value between selected and deselected.\n */\n toggle(value) {\n this.isSelected(value) ? this.deselect(value) : this.select(value);\n }\n /**\n * Clears all of the selected values.\n */\n clear() {\n this._unmarkAll();\n this._emitChangeEvent();\n }\n /**\n * Determines whether a value is selected.\n */\n isSelected(value) {\n return this._selection.has(value);\n }\n /**\n * Determines whether the model does not have a value.\n */\n isEmpty() {\n return this._selection.size === 0;\n }\n /**\n * Determines whether the model has a value.\n */\n hasValue() {\n return !this.isEmpty();\n }\n /**\n * Sorts the selected values based on a predicate function.\n */\n sort(predicate) {\n if (this._multiple && this.selected) {\n this._selected.sort(predicate);\n }\n }\n /**\n * Gets whether multiple values can be selected.\n */\n isMultipleSelection() {\n return this._multiple;\n }\n /** Emits a change event and clears the records of selected and deselected values. */\n _emitChangeEvent() {\n // Clear the selected values so they can be re-cached.\n this._selected = null;\n if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n this.changed.next({\n source: this,\n added: this._selectedToEmit,\n removed: this._deselectedToEmit,\n });\n this._deselectedToEmit = [];\n this._selectedToEmit = [];\n }\n }\n /** Selects a value. */\n _markSelected(value) {\n if (!this.isSelected(value)) {\n if (!this._multiple) {\n this._unmarkAll();\n }\n this._selection.add(value);\n if (this._emitChanges) {\n this._selectedToEmit.push(value);\n }\n }\n }\n /** Deselects a value. */\n _unmarkSelected(value) {\n if (this.isSelected(value)) {\n this._selection.delete(value);\n if (this._emitChanges) {\n this._deselectedToEmit.push(value);\n }\n }\n }\n /** Clears out the selected values. */\n _unmarkAll() {\n if (!this.isEmpty()) {\n this._selection.forEach(value => this._unmarkSelected(value));\n }\n }\n /**\n * Verifies the value assignment and throws an error if the specified value array is\n * including multiple values while the selection model is not supporting multiple values.\n */\n _verifyValueAssignment(values) {\n if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMultipleValuesInSingleSelectionError();\n }\n }\n}\n/**\n * Returns an error that reports that multiple values are passed into a selection model\n * with a single value.\n * @docs-private\n */\nfunction getMultipleValuesInSingleSelectionError() {\n return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\nclass UniqueSelectionDispatcher {\n constructor() {\n this._listeners = [];\n }\n /**\n * Notify other items that selection for the given name has been set.\n * @param id ID of the item.\n * @param name Name of the item.\n */\n notify(id, name) {\n for (let listener of this._listeners) {\n listener(id, name);\n }\n }\n /**\n * Listen for future changes to item selection.\n * @return Function used to deregister listener\n */\n listen(listener) {\n this._listeners.push(listener);\n return () => {\n this._listeners = this._listeners.filter((registered) => {\n return listener !== registered;\n });\n };\n }\n ngOnDestroy() {\n this._listeners = [];\n }\n}\nUniqueSelectionDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: UniqueSelectionDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nUniqueSelectionDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: UniqueSelectionDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: UniqueSelectionDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only.\n * @docs-private\n */\nconst _VIEW_REPEATER_STRATEGY = new InjectionToken('_ViewRepeater');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ArrayDataSource, DataSource, SelectionModel, UniqueSelectionDispatcher, _DisposeViewRepeaterStrategy, _RecycleViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, getMultipleValuesInSingleSelectionError, isDataSource };\n","import * as i0 from '@angular/core';\nimport { Injectable, Inject, InjectionToken, Directive, Input, EventEmitter, Optional, SkipSelf, Output, Self, ContentChildren, ContentChild, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport * as i1 from '@angular/cdk/scrolling';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { _getEventTarget, normalizePassiveListenerOptions, _getShadowRoot } from '@angular/cdk/platform';\nimport { coerceBooleanProperty, coerceElement, coerceArray, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { isFakeTouchstartFromScreenReader, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { Subject, Subscription, interval, animationFrameScheduler, Observable, merge } from 'rxjs';\nimport { takeUntil, startWith, map, take, tap, switchMap } from 'rxjs/operators';\nimport * as i3 from '@angular/cdk/bidi';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Shallow-extends a stylesheet object with another stylesheet-like object.\n * Note that the keys in `source` have to be dash-cased.\n * @docs-private\n */\nfunction extendStyles(dest, source, importantProperties) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n const value = source[key];\n if (value) {\n dest.setProperty(key, value, importantProperties?.has(key) ? 'important' : '');\n }\n else {\n dest.removeProperty(key);\n }\n }\n }\n return dest;\n}\n/**\n * Toggles whether the native drag interactions should be enabled for an element.\n * @param element Element on which to toggle the drag interactions.\n * @param enable Whether the drag interactions should be enabled.\n * @docs-private\n */\nfunction toggleNativeDragInteractions(element, enable) {\n const userSelect = enable ? '' : 'none';\n extendStyles(element.style, {\n 'touch-action': enable ? '' : 'none',\n '-webkit-user-drag': enable ? '' : 'none',\n '-webkit-tap-highlight-color': enable ? '' : 'transparent',\n 'user-select': userSelect,\n '-ms-user-select': userSelect,\n '-webkit-user-select': userSelect,\n '-moz-user-select': userSelect,\n });\n}\n/**\n * Toggles whether an element is visible while preserving its dimensions.\n * @param element Element whose visibility to toggle\n * @param enable Whether the element should be visible.\n * @param importantProperties Properties to be set as `!important`.\n * @docs-private\n */\nfunction toggleVisibility(element, enable, importantProperties) {\n extendStyles(element.style, {\n position: enable ? '' : 'fixed',\n top: enable ? '' : '0',\n opacity: enable ? '' : '0',\n left: enable ? '' : '-999em',\n }, importantProperties);\n}\n/**\n * Combines a transform string with an optional other transform\n * that exited before the base transform was applied.\n */\nfunction combineTransforms(transform, initialTransform) {\n return initialTransform && initialTransform != 'none'\n ? transform + ' ' + initialTransform\n : transform;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Parses a CSS time value to milliseconds. */\nfunction parseCssTimeUnitsToMs(value) {\n // Some browsers will return it in seconds, whereas others will return milliseconds.\n const multiplier = value.toLowerCase().indexOf('ms') > -1 ? 1 : 1000;\n return parseFloat(value) * multiplier;\n}\n/** Gets the transform transition duration, including the delay, of an element in milliseconds. */\nfunction getTransformTransitionDurationInMs(element) {\n const computedStyle = getComputedStyle(element);\n const transitionedProperties = parseCssPropertyValue(computedStyle, 'transition-property');\n const property = transitionedProperties.find(prop => prop === 'transform' || prop === 'all');\n // If there's no transition for `all` or `transform`, we shouldn't do anything.\n if (!property) {\n return 0;\n }\n // Get the index of the property that we're interested in and match\n // it up to the same index in `transition-delay` and `transition-duration`.\n const propertyIndex = transitionedProperties.indexOf(property);\n const rawDurations = parseCssPropertyValue(computedStyle, 'transition-duration');\n const rawDelays = parseCssPropertyValue(computedStyle, 'transition-delay');\n return (parseCssTimeUnitsToMs(rawDurations[propertyIndex]) +\n parseCssTimeUnitsToMs(rawDelays[propertyIndex]));\n}\n/** Parses out multiple values from a computed style into an array. */\nfunction parseCssPropertyValue(computedStyle, name) {\n const value = computedStyle.getPropertyValue(name);\n return value.split(',').map(part => part.trim());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Gets a mutable version of an element's bounding `ClientRect`. */\nfunction getMutableClientRect(element) {\n const clientRect = element.getBoundingClientRect();\n // We need to clone the `clientRect` here, because all the values on it are readonly\n // and we need to be able to update them. Also we can't use a spread here, because\n // the values on a `ClientRect` aren't own properties. See:\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect#Notes\n return {\n top: clientRect.top,\n right: clientRect.right,\n bottom: clientRect.bottom,\n left: clientRect.left,\n width: clientRect.width,\n height: clientRect.height,\n x: clientRect.x,\n y: clientRect.y,\n };\n}\n/**\n * Checks whether some coordinates are within a `ClientRect`.\n * @param clientRect ClientRect that is being checked.\n * @param x Coordinates along the X axis.\n * @param y Coordinates along the Y axis.\n */\nfunction isInsideClientRect(clientRect, x, y) {\n const { top, bottom, left, right } = clientRect;\n return y >= top && y <= bottom && x >= left && x <= right;\n}\n/**\n * Updates the top/left positions of a `ClientRect`, as well as their bottom/right counterparts.\n * @param clientRect `ClientRect` that should be updated.\n * @param top Amount to add to the `top` position.\n * @param left Amount to add to the `left` position.\n */\nfunction adjustClientRect(clientRect, top, left) {\n clientRect.top += top;\n clientRect.bottom = clientRect.top + clientRect.height;\n clientRect.left += left;\n clientRect.right = clientRect.left + clientRect.width;\n}\n/**\n * Checks whether the pointer coordinates are close to a ClientRect.\n * @param rect ClientRect to check against.\n * @param threshold Threshold around the ClientRect.\n * @param pointerX Coordinates along the X axis.\n * @param pointerY Coordinates along the Y axis.\n */\nfunction isPointerNearClientRect(rect, threshold, pointerX, pointerY) {\n const { top, right, bottom, left, width, height } = rect;\n const xThreshold = width * threshold;\n const yThreshold = height * threshold;\n return (pointerY > top - yThreshold &&\n pointerY < bottom + yThreshold &&\n pointerX > left - xThreshold &&\n pointerX < right + xThreshold);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Keeps track of the scroll position and dimensions of the parents of an element. */\nclass ParentPositionTracker {\n constructor(_document, _viewportRuler) {\n this._document = _document;\n this._viewportRuler = _viewportRuler;\n /** Cached positions of the scrollable parent elements. */\n this.positions = new Map();\n }\n /** Clears the cached positions. */\n clear() {\n this.positions.clear();\n }\n /** Caches the positions. Should be called at the beginning of a drag sequence. */\n cache(elements) {\n this.clear();\n this.positions.set(this._document, {\n scrollPosition: this._viewportRuler.getViewportScrollPosition(),\n });\n elements.forEach(element => {\n this.positions.set(element, {\n scrollPosition: { top: element.scrollTop, left: element.scrollLeft },\n clientRect: getMutableClientRect(element),\n });\n });\n }\n /** Handles scrolling while a drag is taking place. */\n handleScroll(event) {\n const target = _getEventTarget(event);\n const cachedPosition = this.positions.get(target);\n if (!cachedPosition) {\n return null;\n }\n const scrollPosition = cachedPosition.scrollPosition;\n let newTop;\n let newLeft;\n if (target === this._document) {\n const viewportScrollPosition = this._viewportRuler.getViewportScrollPosition();\n newTop = viewportScrollPosition.top;\n newLeft = viewportScrollPosition.left;\n }\n else {\n newTop = target.scrollTop;\n newLeft = target.scrollLeft;\n }\n const topDifference = scrollPosition.top - newTop;\n const leftDifference = scrollPosition.left - newLeft;\n // Go through and update the cached positions of the scroll\n // parents that are inside the element that was scrolled.\n this.positions.forEach((position, node) => {\n if (position.clientRect && target !== node && target.contains(node)) {\n adjustClientRect(position.clientRect, topDifference, leftDifference);\n }\n });\n scrollPosition.top = newTop;\n scrollPosition.left = newLeft;\n return { top: topDifference, left: leftDifference };\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Creates a deep clone of an element. */\nfunction deepCloneNode(node) {\n const clone = node.cloneNode(true);\n const descendantsWithId = clone.querySelectorAll('[id]');\n const nodeName = node.nodeName.toLowerCase();\n // Remove the `id` to avoid having multiple elements with the same id on the page.\n clone.removeAttribute('id');\n for (let i = 0; i < descendantsWithId.length; i++) {\n descendantsWithId[i].removeAttribute('id');\n }\n if (nodeName === 'canvas') {\n transferCanvasData(node, clone);\n }\n else if (nodeName === 'input' || nodeName === 'select' || nodeName === 'textarea') {\n transferInputData(node, clone);\n }\n transferData('canvas', node, clone, transferCanvasData);\n transferData('input, textarea, select', node, clone, transferInputData);\n return clone;\n}\n/** Matches elements between an element and its clone and allows for their data to be cloned. */\nfunction transferData(selector, node, clone, callback) {\n const descendantElements = node.querySelectorAll(selector);\n if (descendantElements.length) {\n const cloneElements = clone.querySelectorAll(selector);\n for (let i = 0; i < descendantElements.length; i++) {\n callback(descendantElements[i], cloneElements[i]);\n }\n }\n}\n// Counter for unique cloned radio button names.\nlet cloneUniqueId = 0;\n/** Transfers the data of one input element to another. */\nfunction transferInputData(source, clone) {\n // Browsers throw an error when assigning the value of a file input programmatically.\n if (clone.type !== 'file') {\n clone.value = source.value;\n }\n // Radio button `name` attributes must be unique for radio button groups\n // otherwise original radio buttons can lose their checked state\n // once the clone is inserted in the DOM.\n if (clone.type === 'radio' && clone.name) {\n clone.name = `mat-clone-${clone.name}-${cloneUniqueId++}`;\n }\n}\n/** Transfers the data of one canvas element to another. */\nfunction transferCanvasData(source, clone) {\n const context = clone.getContext('2d');\n if (context) {\n // In some cases `drawImage` can throw (e.g. if the canvas size is 0x0).\n // We can't do much about it so just ignore the error.\n try {\n context.drawImage(source, 0, 0);\n }\n catch { }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Options that can be used to bind a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });\n/** Options that can be used to bind an active event listener. */\nconst activeEventListenerOptions = normalizePassiveListenerOptions({ passive: false });\n/**\n * Time in milliseconds for which to ignore mouse events, after\n * receiving a touch event. Used to avoid doing double work for\n * touch devices where the browser fires fake mouse events, in\n * addition to touch events.\n */\nconst MOUSE_EVENT_IGNORE_TIME = 800;\n/** Inline styles to be set as `!important` while dragging. */\nconst dragImportantProperties = new Set([\n // Needs to be important, because some `mat-table` sets `position: sticky !important`. See #22781.\n 'position',\n]);\n/**\n * Reference to a draggable item. Used to manipulate or dispose of the item.\n */\nclass DragRef {\n constructor(element, _config, _document, _ngZone, _viewportRuler, _dragDropRegistry) {\n this._config = _config;\n this._document = _document;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._dragDropRegistry = _dragDropRegistry;\n /**\n * CSS `transform` applied to the element when it isn't being dragged. We need a\n * passive transform in order for the dragged element to retain its new position\n * after the user has stopped dragging and because we need to know the relative\n * position in case they start dragging again. This corresponds to `element.style.transform`.\n */\n this._passiveTransform = { x: 0, y: 0 };\n /** CSS `transform` that is applied to the element while it's being dragged. */\n this._activeTransform = { x: 0, y: 0 };\n /**\n * Whether the dragging sequence has been started. Doesn't\n * necessarily mean that the element has been moved.\n */\n this._hasStartedDragging = false;\n /** Emits when the item is being moved. */\n this._moveEvents = new Subject();\n /** Subscription to pointer movement events. */\n this._pointerMoveSubscription = Subscription.EMPTY;\n /** Subscription to the event that is dispatched when the user lifts their pointer. */\n this._pointerUpSubscription = Subscription.EMPTY;\n /** Subscription to the viewport being scrolled. */\n this._scrollSubscription = Subscription.EMPTY;\n /** Subscription to the viewport being resized. */\n this._resizeSubscription = Subscription.EMPTY;\n /** Cached reference to the boundary element. */\n this._boundaryElement = null;\n /** Whether the native dragging interactions have been enabled on the root element. */\n this._nativeInteractionsEnabled = true;\n /** Elements that can be used to drag the draggable item. */\n this._handles = [];\n /** Registered handles that are currently disabled. */\n this._disabledHandles = new Set();\n /** Layout direction of the item. */\n this._direction = 'ltr';\n /**\n * Amount of milliseconds to wait after the user has put their\n * pointer down before starting to drag the element.\n */\n this.dragStartDelay = 0;\n this._disabled = false;\n /** Emits as the drag sequence is being prepared. */\n this.beforeStarted = new Subject();\n /** Emits when the user starts dragging the item. */\n this.started = new Subject();\n /** Emits when the user has released a drag item, before any animations have started. */\n this.released = new Subject();\n /** Emits when the user stops dragging an item in the container. */\n this.ended = new Subject();\n /** Emits when the user has moved the item into a new container. */\n this.entered = new Subject();\n /** Emits when the user removes the item its container by dragging it into another container. */\n this.exited = new Subject();\n /** Emits when the user drops the item inside a container. */\n this.dropped = new Subject();\n /**\n * Emits as the user is dragging the item. Use with caution,\n * because this event will fire for every pixel that the user has dragged.\n */\n this.moved = this._moveEvents;\n /** Handler for the `mousedown`/`touchstart` events. */\n this._pointerDown = (event) => {\n this.beforeStarted.next();\n // Delegate the event based on whether it started from a handle or the element itself.\n if (this._handles.length) {\n const targetHandle = this._handles.find(handle => {\n return event.target && (event.target === handle || handle.contains(event.target));\n });\n if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) {\n this._initializeDragSequence(targetHandle, event);\n }\n }\n else if (!this.disabled) {\n this._initializeDragSequence(this._rootElement, event);\n }\n };\n /** Handler that is invoked when the user moves their pointer after they've initiated a drag. */\n this._pointerMove = (event) => {\n const pointerPosition = this._getPointerPositionOnPage(event);\n if (!this._hasStartedDragging) {\n const distanceX = Math.abs(pointerPosition.x - this._pickupPositionOnPage.x);\n const distanceY = Math.abs(pointerPosition.y - this._pickupPositionOnPage.y);\n const isOverThreshold = distanceX + distanceY >= this._config.dragStartThreshold;\n // Only start dragging after the user has moved more than the minimum distance in either\n // direction. Note that this is preferrable over doing something like `skip(minimumDistance)`\n // in the `pointerMove` subscription, because we're not guaranteed to have one move event\n // per pixel of movement (e.g. if the user moves their pointer quickly).\n if (isOverThreshold) {\n const isDelayElapsed = Date.now() >= this._dragStartTime + this._getDragStartDelay(event);\n const container = this._dropContainer;\n if (!isDelayElapsed) {\n this._endDragSequence(event);\n return;\n }\n // Prevent other drag sequences from starting while something in the container is still\n // being dragged. This can happen while we're waiting for the drop animation to finish\n // and can cause errors, because some elements might still be moving around.\n if (!container || (!container.isDragging() && !container.isReceiving())) {\n // Prevent the default action as soon as the dragging sequence is considered as\n // \"started\" since waiting for the next event can allow the device to begin scrolling.\n event.preventDefault();\n this._hasStartedDragging = true;\n this._ngZone.run(() => this._startDragSequence(event));\n }\n }\n return;\n }\n // We only need the preview dimensions if we have a boundary element.\n if (this._boundaryElement) {\n // Cache the preview element rect if we haven't cached it already or if\n // we cached it too early before the element dimensions were computed.\n if (!this._previewRect || (!this._previewRect.width && !this._previewRect.height)) {\n this._previewRect = (this._preview || this._rootElement).getBoundingClientRect();\n }\n }\n // We prevent the default action down here so that we know that dragging has started. This is\n // important for touch devices where doing this too early can unnecessarily block scrolling,\n // if there's a dragging delay.\n event.preventDefault();\n const constrainedPointerPosition = this._getConstrainedPointerPosition(pointerPosition);\n this._hasMoved = true;\n this._lastKnownPointerPosition = pointerPosition;\n this._updatePointerDirectionDelta(constrainedPointerPosition);\n if (this._dropContainer) {\n this._updateActiveDropContainer(constrainedPointerPosition, pointerPosition);\n }\n else {\n const activeTransform = this._activeTransform;\n activeTransform.x =\n constrainedPointerPosition.x - this._pickupPositionOnPage.x + this._passiveTransform.x;\n activeTransform.y =\n constrainedPointerPosition.y - this._pickupPositionOnPage.y + this._passiveTransform.y;\n this._applyRootElementTransform(activeTransform.x, activeTransform.y);\n }\n // Since this event gets fired for every pixel while dragging, we only\n // want to fire it if the consumer opted into it. Also we have to\n // re-enter the zone because we run all of the events on the outside.\n if (this._moveEvents.observers.length) {\n this._ngZone.run(() => {\n this._moveEvents.next({\n source: this,\n pointerPosition: constrainedPointerPosition,\n event,\n distance: this._getDragDistance(constrainedPointerPosition),\n delta: this._pointerDirectionDelta,\n });\n });\n }\n };\n /** Handler that is invoked when the user lifts their pointer up, after initiating a drag. */\n this._pointerUp = (event) => {\n this._endDragSequence(event);\n };\n this.withRootElement(element).withParent(_config.parentDragRef || null);\n this._parentPositions = new ParentPositionTracker(_document, _viewportRuler);\n _dragDropRegistry.registerDragItem(this);\n }\n /** Whether starting to drag this element is disabled. */\n get disabled() {\n return this._disabled || !!(this._dropContainer && this._dropContainer.disabled);\n }\n set disabled(value) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this._toggleNativeDragInteractions();\n this._handles.forEach(handle => toggleNativeDragInteractions(handle, newValue));\n }\n }\n /**\n * Returns the element that is being used as a placeholder\n * while the current element is being dragged.\n */\n getPlaceholderElement() {\n return this._placeholder;\n }\n /** Returns the root draggable element. */\n getRootElement() {\n return this._rootElement;\n }\n /**\n * Gets the currently-visible element that represents the drag item.\n * While dragging this is the placeholder, otherwise it's the root element.\n */\n getVisibleElement() {\n return this.isDragging() ? this.getPlaceholderElement() : this.getRootElement();\n }\n /** Registers the handles that can be used to drag the element. */\n withHandles(handles) {\n this._handles = handles.map(handle => coerceElement(handle));\n this._handles.forEach(handle => toggleNativeDragInteractions(handle, this.disabled));\n this._toggleNativeDragInteractions();\n // Delete any lingering disabled handles that may have been destroyed. Note that we re-create\n // the set, rather than iterate over it and filter out the destroyed handles, because while\n // the ES spec allows for sets to be modified while they're being iterated over, some polyfills\n // use an array internally which may throw an error.\n const disabledHandles = new Set();\n this._disabledHandles.forEach(handle => {\n if (this._handles.indexOf(handle) > -1) {\n disabledHandles.add(handle);\n }\n });\n this._disabledHandles = disabledHandles;\n return this;\n }\n /**\n * Registers the template that should be used for the drag preview.\n * @param template Template that from which to stamp out the preview.\n */\n withPreviewTemplate(template) {\n this._previewTemplate = template;\n return this;\n }\n /**\n * Registers the template that should be used for the drag placeholder.\n * @param template Template that from which to stamp out the placeholder.\n */\n withPlaceholderTemplate(template) {\n this._placeholderTemplate = template;\n return this;\n }\n /**\n * Sets an alternate drag root element. The root element is the element that will be moved as\n * the user is dragging. Passing an alternate root element is useful when trying to enable\n * dragging on an element that you might not have access to.\n */\n withRootElement(rootElement) {\n const element = coerceElement(rootElement);\n if (element !== this._rootElement) {\n if (this._rootElement) {\n this._removeRootElementListeners(this._rootElement);\n }\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener('mousedown', this._pointerDown, activeEventListenerOptions);\n element.addEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);\n });\n this._initialTransform = undefined;\n this._rootElement = element;\n }\n if (typeof SVGElement !== 'undefined' && this._rootElement instanceof SVGElement) {\n this._ownerSVGElement = this._rootElement.ownerSVGElement;\n }\n return this;\n }\n /**\n * Element to which the draggable's position will be constrained.\n */\n withBoundaryElement(boundaryElement) {\n this._boundaryElement = boundaryElement ? coerceElement(boundaryElement) : null;\n this._resizeSubscription.unsubscribe();\n if (boundaryElement) {\n this._resizeSubscription = this._viewportRuler\n .change(10)\n .subscribe(() => this._containInsideBoundaryOnResize());\n }\n return this;\n }\n /** Sets the parent ref that the ref is nested in. */\n withParent(parent) {\n this._parentDragRef = parent;\n return this;\n }\n /** Removes the dragging functionality from the DOM element. */\n dispose() {\n this._removeRootElementListeners(this._rootElement);\n // Do this check before removing from the registry since it'll\n // stop being considered as dragged once it is removed.\n if (this.isDragging()) {\n // Since we move out the element to the end of the body while it's being\n // dragged, we have to make sure that it's removed if it gets destroyed.\n this._rootElement?.remove();\n }\n this._anchor?.remove();\n this._destroyPreview();\n this._destroyPlaceholder();\n this._dragDropRegistry.removeDragItem(this);\n this._removeSubscriptions();\n this.beforeStarted.complete();\n this.started.complete();\n this.released.complete();\n this.ended.complete();\n this.entered.complete();\n this.exited.complete();\n this.dropped.complete();\n this._moveEvents.complete();\n this._handles = [];\n this._disabledHandles.clear();\n this._dropContainer = undefined;\n this._resizeSubscription.unsubscribe();\n this._parentPositions.clear();\n this._boundaryElement =\n this._rootElement =\n this._ownerSVGElement =\n this._placeholderTemplate =\n this._previewTemplate =\n this._anchor =\n this._parentDragRef =\n null;\n }\n /** Checks whether the element is currently being dragged. */\n isDragging() {\n return this._hasStartedDragging && this._dragDropRegistry.isDragging(this);\n }\n /** Resets a standalone drag item to its initial position. */\n reset() {\n this._rootElement.style.transform = this._initialTransform || '';\n this._activeTransform = { x: 0, y: 0 };\n this._passiveTransform = { x: 0, y: 0 };\n }\n /**\n * Sets a handle as disabled. While a handle is disabled, it'll capture and interrupt dragging.\n * @param handle Handle element that should be disabled.\n */\n disableHandle(handle) {\n if (!this._disabledHandles.has(handle) && this._handles.indexOf(handle) > -1) {\n this._disabledHandles.add(handle);\n toggleNativeDragInteractions(handle, true);\n }\n }\n /**\n * Enables a handle, if it has been disabled.\n * @param handle Handle element to be enabled.\n */\n enableHandle(handle) {\n if (this._disabledHandles.has(handle)) {\n this._disabledHandles.delete(handle);\n toggleNativeDragInteractions(handle, this.disabled);\n }\n }\n /** Sets the layout direction of the draggable item. */\n withDirection(direction) {\n this._direction = direction;\n return this;\n }\n /** Sets the container that the item is part of. */\n _withDropContainer(container) {\n this._dropContainer = container;\n }\n /**\n * Gets the current position in pixels the draggable outside of a drop container.\n */\n getFreeDragPosition() {\n const position = this.isDragging() ? this._activeTransform : this._passiveTransform;\n return { x: position.x, y: position.y };\n }\n /**\n * Sets the current position in pixels the draggable outside of a drop container.\n * @param value New position to be set.\n */\n setFreeDragPosition(value) {\n this._activeTransform = { x: 0, y: 0 };\n this._passiveTransform.x = value.x;\n this._passiveTransform.y = value.y;\n if (!this._dropContainer) {\n this._applyRootElementTransform(value.x, value.y);\n }\n return this;\n }\n /**\n * Sets the container into which to insert the preview element.\n * @param value Container into which to insert the preview.\n */\n withPreviewContainer(value) {\n this._previewContainer = value;\n return this;\n }\n /** Updates the item's sort order based on the last-known pointer position. */\n _sortFromLastPointerPosition() {\n const position = this._lastKnownPointerPosition;\n if (position && this._dropContainer) {\n this._updateActiveDropContainer(this._getConstrainedPointerPosition(position), position);\n }\n }\n /** Unsubscribes from the global subscriptions. */\n _removeSubscriptions() {\n this._pointerMoveSubscription.unsubscribe();\n this._pointerUpSubscription.unsubscribe();\n this._scrollSubscription.unsubscribe();\n }\n /** Destroys the preview element and its ViewRef. */\n _destroyPreview() {\n this._preview?.remove();\n this._previewRef?.destroy();\n this._preview = this._previewRef = null;\n }\n /** Destroys the placeholder element and its ViewRef. */\n _destroyPlaceholder() {\n this._placeholder?.remove();\n this._placeholderRef?.destroy();\n this._placeholder = this._placeholderRef = null;\n }\n /**\n * Clears subscriptions and stops the dragging sequence.\n * @param event Browser event object that ended the sequence.\n */\n _endDragSequence(event) {\n // Note that here we use `isDragging` from the service, rather than from `this`.\n // The difference is that the one from the service reflects whether a dragging sequence\n // has been initiated, whereas the one on `this` includes whether the user has passed\n // the minimum dragging threshold.\n if (!this._dragDropRegistry.isDragging(this)) {\n return;\n }\n this._removeSubscriptions();\n this._dragDropRegistry.stopDragging(this);\n this._toggleNativeDragInteractions();\n if (this._handles) {\n this._rootElement.style.webkitTapHighlightColor = this._rootElementTapHighlight;\n }\n if (!this._hasStartedDragging) {\n return;\n }\n this.released.next({ source: this });\n if (this._dropContainer) {\n // Stop scrolling immediately, instead of waiting for the animation to finish.\n this._dropContainer._stopScrolling();\n this._animatePreviewToPlaceholder().then(() => {\n this._cleanupDragArtifacts(event);\n this._cleanupCachedDimensions();\n this._dragDropRegistry.stopDragging(this);\n });\n }\n else {\n // Convert the active transform into a passive one. This means that next time\n // the user starts dragging the item, its position will be calculated relatively\n // to the new passive transform.\n this._passiveTransform.x = this._activeTransform.x;\n const pointerPosition = this._getPointerPositionOnPage(event);\n this._passiveTransform.y = this._activeTransform.y;\n this._ngZone.run(() => {\n this.ended.next({\n source: this,\n distance: this._getDragDistance(pointerPosition),\n dropPoint: pointerPosition,\n });\n });\n this._cleanupCachedDimensions();\n this._dragDropRegistry.stopDragging(this);\n }\n }\n /** Starts the dragging sequence. */\n _startDragSequence(event) {\n if (isTouchEvent(event)) {\n this._lastTouchEventTime = Date.now();\n }\n this._toggleNativeDragInteractions();\n const dropContainer = this._dropContainer;\n if (dropContainer) {\n const element = this._rootElement;\n const parent = element.parentNode;\n const placeholder = (this._placeholder = this._createPlaceholderElement());\n const anchor = (this._anchor = this._anchor || this._document.createComment(''));\n // Needs to happen before the root element is moved.\n const shadowRoot = this._getShadowRoot();\n // Insert an anchor node so that we can restore the element's position in the DOM.\n parent.insertBefore(anchor, element);\n // There's no risk of transforms stacking when inside a drop container so\n // we can keep the initial transform up to date any time dragging starts.\n this._initialTransform = element.style.transform || '';\n // Create the preview after the initial transform has\n // been cached, because it can be affected by the transform.\n this._preview = this._createPreviewElement();\n // We move the element out at the end of the body and we make it hidden, because keeping it in\n // place will throw off the consumer's `:last-child` selectors. We can't remove the element\n // from the DOM completely, because iOS will stop firing all subsequent events in the chain.\n toggleVisibility(element, false, dragImportantProperties);\n this._document.body.appendChild(parent.replaceChild(placeholder, element));\n this._getPreviewInsertionPoint(parent, shadowRoot).appendChild(this._preview);\n this.started.next({ source: this }); // Emit before notifying the container.\n dropContainer.start();\n this._initialContainer = dropContainer;\n this._initialIndex = dropContainer.getItemIndex(this);\n }\n else {\n this.started.next({ source: this });\n this._initialContainer = this._initialIndex = undefined;\n }\n // Important to run after we've called `start` on the parent container\n // so that it has had time to resolve its scrollable parents.\n this._parentPositions.cache(dropContainer ? dropContainer.getScrollableParents() : []);\n }\n /**\n * Sets up the different variables and subscriptions\n * that will be necessary for the dragging sequence.\n * @param referenceElement Element that started the drag sequence.\n * @param event Browser event object that started the sequence.\n */\n _initializeDragSequence(referenceElement, event) {\n // Stop propagation if the item is inside another\n // draggable so we don't start multiple drag sequences.\n if (this._parentDragRef) {\n event.stopPropagation();\n }\n const isDragging = this.isDragging();\n const isTouchSequence = isTouchEvent(event);\n const isAuxiliaryMouseButton = !isTouchSequence && event.button !== 0;\n const rootElement = this._rootElement;\n const target = _getEventTarget(event);\n const isSyntheticEvent = !isTouchSequence &&\n this._lastTouchEventTime &&\n this._lastTouchEventTime + MOUSE_EVENT_IGNORE_TIME > Date.now();\n const isFakeEvent = isTouchSequence\n ? isFakeTouchstartFromScreenReader(event)\n : isFakeMousedownFromScreenReader(event);\n // If the event started from an element with the native HTML drag&drop, it'll interfere\n // with our own dragging (e.g. `img` tags do it by default). Prevent the default action\n // to stop it from happening. Note that preventing on `dragstart` also seems to work, but\n // it's flaky and it fails if the user drags it away quickly. Also note that we only want\n // to do this for `mousedown` since doing the same for `touchstart` will stop any `click`\n // events from firing on touch devices.\n if (target && target.draggable && event.type === 'mousedown') {\n event.preventDefault();\n }\n // Abort if the user is already dragging or is using a mouse button other than the primary one.\n if (isDragging || isAuxiliaryMouseButton || isSyntheticEvent || isFakeEvent) {\n return;\n }\n // If we've got handles, we need to disable the tap highlight on the entire root element,\n // otherwise iOS will still add it, even though all the drag interactions on the handle\n // are disabled.\n if (this._handles.length) {\n const rootStyles = rootElement.style;\n this._rootElementTapHighlight = rootStyles.webkitTapHighlightColor || '';\n rootStyles.webkitTapHighlightColor = 'transparent';\n }\n this._hasStartedDragging = this._hasMoved = false;\n // Avoid multiple subscriptions and memory leaks when multi touch\n // (isDragging check above isn't enough because of possible temporal and/or dimensional delays)\n this._removeSubscriptions();\n this._pointerMoveSubscription = this._dragDropRegistry.pointerMove.subscribe(this._pointerMove);\n this._pointerUpSubscription = this._dragDropRegistry.pointerUp.subscribe(this._pointerUp);\n this._scrollSubscription = this._dragDropRegistry\n .scrolled(this._getShadowRoot())\n .subscribe(scrollEvent => this._updateOnScroll(scrollEvent));\n if (this._boundaryElement) {\n this._boundaryRect = getMutableClientRect(this._boundaryElement);\n }\n // If we have a custom preview we can't know ahead of time how large it'll be so we position\n // it next to the cursor. The exception is when the consumer has opted into making the preview\n // the same size as the root element, in which case we do know the size.\n const previewTemplate = this._previewTemplate;\n this._pickupPositionInElement =\n previewTemplate && previewTemplate.template && !previewTemplate.matchSize\n ? { x: 0, y: 0 }\n : this._getPointerPositionInElement(referenceElement, event);\n const pointerPosition = (this._pickupPositionOnPage =\n this._lastKnownPointerPosition =\n this._getPointerPositionOnPage(event));\n this._pointerDirectionDelta = { x: 0, y: 0 };\n this._pointerPositionAtLastDirectionChange = { x: pointerPosition.x, y: pointerPosition.y };\n this._dragStartTime = Date.now();\n this._dragDropRegistry.startDragging(this, event);\n }\n /** Cleans up the DOM artifacts that were added to facilitate the element being dragged. */\n _cleanupDragArtifacts(event) {\n // Restore the element's visibility and insert it at its old position in the DOM.\n // It's important that we maintain the position, because moving the element around in the DOM\n // can throw off `NgFor` which does smart diffing and re-creates elements only when necessary,\n // while moving the existing elements in all other cases.\n toggleVisibility(this._rootElement, true, dragImportantProperties);\n this._anchor.parentNode.replaceChild(this._rootElement, this._anchor);\n this._destroyPreview();\n this._destroyPlaceholder();\n this._boundaryRect = this._previewRect = this._initialTransform = undefined;\n // Re-enter the NgZone since we bound `document` events on the outside.\n this._ngZone.run(() => {\n const container = this._dropContainer;\n const currentIndex = container.getItemIndex(this);\n const pointerPosition = this._getPointerPositionOnPage(event);\n const distance = this._getDragDistance(pointerPosition);\n const isPointerOverContainer = container._isOverContainer(pointerPosition.x, pointerPosition.y);\n this.ended.next({ source: this, distance, dropPoint: pointerPosition });\n this.dropped.next({\n item: this,\n currentIndex,\n previousIndex: this._initialIndex,\n container: container,\n previousContainer: this._initialContainer,\n isPointerOverContainer,\n distance,\n dropPoint: pointerPosition,\n });\n container.drop(this, currentIndex, this._initialIndex, this._initialContainer, isPointerOverContainer, distance, pointerPosition);\n this._dropContainer = this._initialContainer;\n });\n }\n /**\n * Updates the item's position in its drop container, or moves it\n * into a new one, depending on its current drag position.\n */\n _updateActiveDropContainer({ x, y }, { x: rawX, y: rawY }) {\n // Drop container that draggable has been moved into.\n let newContainer = this._initialContainer._getSiblingContainerFromPosition(this, x, y);\n // If we couldn't find a new container to move the item into, and the item has left its\n // initial container, check whether the it's over the initial container. This handles the\n // case where two containers are connected one way and the user tries to undo dragging an\n // item into a new container.\n if (!newContainer &&\n this._dropContainer !== this._initialContainer &&\n this._initialContainer._isOverContainer(x, y)) {\n newContainer = this._initialContainer;\n }\n if (newContainer && newContainer !== this._dropContainer) {\n this._ngZone.run(() => {\n // Notify the old container that the item has left.\n this.exited.next({ item: this, container: this._dropContainer });\n this._dropContainer.exit(this);\n // Notify the new container that the item has entered.\n this._dropContainer = newContainer;\n this._dropContainer.enter(this, x, y, newContainer === this._initialContainer &&\n // If we're re-entering the initial container and sorting is disabled,\n // put item the into its starting index to begin with.\n newContainer.sortingDisabled\n ? this._initialIndex\n : undefined);\n this.entered.next({\n item: this,\n container: newContainer,\n currentIndex: newContainer.getItemIndex(this),\n });\n });\n }\n // Dragging may have been interrupted as a result of the events above.\n if (this.isDragging()) {\n this._dropContainer._startScrollingIfNecessary(rawX, rawY);\n this._dropContainer._sortItem(this, x, y, this._pointerDirectionDelta);\n this._applyPreviewTransform(x - this._pickupPositionInElement.x, y - this._pickupPositionInElement.y);\n }\n }\n /**\n * Creates the element that will be rendered next to the user's pointer\n * and will be used as a preview of the element that is being dragged.\n */\n _createPreviewElement() {\n const previewConfig = this._previewTemplate;\n const previewClass = this.previewClass;\n const previewTemplate = previewConfig ? previewConfig.template : null;\n let preview;\n if (previewTemplate && previewConfig) {\n // Measure the element before we've inserted the preview\n // since the insertion could throw off the measurement.\n const rootRect = previewConfig.matchSize ? this._rootElement.getBoundingClientRect() : null;\n const viewRef = previewConfig.viewContainer.createEmbeddedView(previewTemplate, previewConfig.context);\n viewRef.detectChanges();\n preview = getRootNode(viewRef, this._document);\n this._previewRef = viewRef;\n if (previewConfig.matchSize) {\n matchElementSize(preview, rootRect);\n }\n else {\n preview.style.transform = getTransform(this._pickupPositionOnPage.x, this._pickupPositionOnPage.y);\n }\n }\n else {\n const element = this._rootElement;\n preview = deepCloneNode(element);\n matchElementSize(preview, element.getBoundingClientRect());\n if (this._initialTransform) {\n preview.style.transform = this._initialTransform;\n }\n }\n extendStyles(preview.style, {\n // It's important that we disable the pointer events on the preview, because\n // it can throw off the `document.elementFromPoint` calls in the `CdkDropList`.\n 'pointer-events': 'none',\n // We have to reset the margin, because it can throw off positioning relative to the viewport.\n 'margin': '0',\n 'position': 'fixed',\n 'top': '0',\n 'left': '0',\n 'z-index': `${this._config.zIndex || 1000}`,\n }, dragImportantProperties);\n toggleNativeDragInteractions(preview, false);\n preview.classList.add('cdk-drag-preview');\n preview.setAttribute('dir', this._direction);\n if (previewClass) {\n if (Array.isArray(previewClass)) {\n previewClass.forEach(className => preview.classList.add(className));\n }\n else {\n preview.classList.add(previewClass);\n }\n }\n return preview;\n }\n /**\n * Animates the preview element from its current position to the location of the drop placeholder.\n * @returns Promise that resolves when the animation completes.\n */\n _animatePreviewToPlaceholder() {\n // If the user hasn't moved yet, the transitionend event won't fire.\n if (!this._hasMoved) {\n return Promise.resolve();\n }\n const placeholderRect = this._placeholder.getBoundingClientRect();\n // Apply the class that adds a transition to the preview.\n this._preview.classList.add('cdk-drag-animating');\n // Move the preview to the placeholder position.\n this._applyPreviewTransform(placeholderRect.left, placeholderRect.top);\n // If the element doesn't have a `transition`, the `transitionend` event won't fire. Since\n // we need to trigger a style recalculation in order for the `cdk-drag-animating` class to\n // apply its style, we take advantage of the available info to figure out whether we need to\n // bind the event in the first place.\n const duration = getTransformTransitionDurationInMs(this._preview);\n if (duration === 0) {\n return Promise.resolve();\n }\n return this._ngZone.runOutsideAngular(() => {\n return new Promise(resolve => {\n const handler = ((event) => {\n if (!event ||\n (_getEventTarget(event) === this._preview && event.propertyName === 'transform')) {\n this._preview?.removeEventListener('transitionend', handler);\n resolve();\n clearTimeout(timeout);\n }\n });\n // If a transition is short enough, the browser might not fire the `transitionend` event.\n // Since we know how long it's supposed to take, add a timeout with a 50% buffer that'll\n // fire if the transition hasn't completed when it was supposed to.\n const timeout = setTimeout(handler, duration * 1.5);\n this._preview.addEventListener('transitionend', handler);\n });\n });\n }\n /** Creates an element that will be shown instead of the current element while dragging. */\n _createPlaceholderElement() {\n const placeholderConfig = this._placeholderTemplate;\n const placeholderTemplate = placeholderConfig ? placeholderConfig.template : null;\n let placeholder;\n if (placeholderTemplate) {\n this._placeholderRef = placeholderConfig.viewContainer.createEmbeddedView(placeholderTemplate, placeholderConfig.context);\n this._placeholderRef.detectChanges();\n placeholder = getRootNode(this._placeholderRef, this._document);\n }\n else {\n placeholder = deepCloneNode(this._rootElement);\n }\n placeholder.classList.add('cdk-drag-placeholder');\n return placeholder;\n }\n /**\n * Figures out the coordinates at which an element was picked up.\n * @param referenceElement Element that initiated the dragging.\n * @param event Event that initiated the dragging.\n */\n _getPointerPositionInElement(referenceElement, event) {\n const elementRect = this._rootElement.getBoundingClientRect();\n const handleElement = referenceElement === this._rootElement ? null : referenceElement;\n const referenceRect = handleElement ? handleElement.getBoundingClientRect() : elementRect;\n const point = isTouchEvent(event) ? event.targetTouches[0] : event;\n const scrollPosition = this._getViewportScrollPosition();\n const x = point.pageX - referenceRect.left - scrollPosition.left;\n const y = point.pageY - referenceRect.top - scrollPosition.top;\n return {\n x: referenceRect.left - elementRect.left + x,\n y: referenceRect.top - elementRect.top + y,\n };\n }\n /** Determines the point of the page that was touched by the user. */\n _getPointerPositionOnPage(event) {\n const scrollPosition = this._getViewportScrollPosition();\n const point = isTouchEvent(event)\n ? // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.\n // Also note that on real devices we're guaranteed for either `touches` or `changedTouches`\n // to have a value, but Firefox in device emulation mode has a bug where both can be empty\n // for `touchstart` and `touchend` so we fall back to a dummy object in order to avoid\n // throwing an error. The value returned here will be incorrect, but since this only\n // breaks inside a developer tool and the value is only used for secondary information,\n // we can get away with it. See https://bugzilla.mozilla.org/show_bug.cgi?id=1615824.\n event.touches[0] || event.changedTouches[0] || { pageX: 0, pageY: 0 }\n : event;\n const x = point.pageX - scrollPosition.left;\n const y = point.pageY - scrollPosition.top;\n // if dragging SVG element, try to convert from the screen coordinate system to the SVG\n // coordinate system\n if (this._ownerSVGElement) {\n const svgMatrix = this._ownerSVGElement.getScreenCTM();\n if (svgMatrix) {\n const svgPoint = this._ownerSVGElement.createSVGPoint();\n svgPoint.x = x;\n svgPoint.y = y;\n return svgPoint.matrixTransform(svgMatrix.inverse());\n }\n }\n return { x, y };\n }\n /** Gets the pointer position on the page, accounting for any position constraints. */\n _getConstrainedPointerPosition(point) {\n const dropContainerLock = this._dropContainer ? this._dropContainer.lockAxis : null;\n let { x, y } = this.constrainPosition ? this.constrainPosition(point, this) : point;\n if (this.lockAxis === 'x' || dropContainerLock === 'x') {\n y = this._pickupPositionOnPage.y;\n }\n else if (this.lockAxis === 'y' || dropContainerLock === 'y') {\n x = this._pickupPositionOnPage.x;\n }\n if (this._boundaryRect) {\n const { x: pickupX, y: pickupY } = this._pickupPositionInElement;\n const boundaryRect = this._boundaryRect;\n const previewRect = this._previewRect;\n const minY = boundaryRect.top + pickupY;\n const maxY = boundaryRect.bottom - (previewRect.height - pickupY);\n const minX = boundaryRect.left + pickupX;\n const maxX = boundaryRect.right - (previewRect.width - pickupX);\n x = clamp$1(x, minX, maxX);\n y = clamp$1(y, minY, maxY);\n }\n return { x, y };\n }\n /** Updates the current drag delta, based on the user's current pointer position on the page. */\n _updatePointerDirectionDelta(pointerPositionOnPage) {\n const { x, y } = pointerPositionOnPage;\n const delta = this._pointerDirectionDelta;\n const positionSinceLastChange = this._pointerPositionAtLastDirectionChange;\n // Amount of pixels the user has dragged since the last time the direction changed.\n const changeX = Math.abs(x - positionSinceLastChange.x);\n const changeY = Math.abs(y - positionSinceLastChange.y);\n // Because we handle pointer events on a per-pixel basis, we don't want the delta\n // to change for every pixel, otherwise anything that depends on it can look erratic.\n // To make the delta more consistent, we track how much the user has moved since the last\n // delta change and we only update it after it has reached a certain threshold.\n if (changeX > this._config.pointerDirectionChangeThreshold) {\n delta.x = x > positionSinceLastChange.x ? 1 : -1;\n positionSinceLastChange.x = x;\n }\n if (changeY > this._config.pointerDirectionChangeThreshold) {\n delta.y = y > positionSinceLastChange.y ? 1 : -1;\n positionSinceLastChange.y = y;\n }\n return delta;\n }\n /** Toggles the native drag interactions, based on how many handles are registered. */\n _toggleNativeDragInteractions() {\n if (!this._rootElement || !this._handles) {\n return;\n }\n const shouldEnable = this._handles.length > 0 || !this.isDragging();\n if (shouldEnable !== this._nativeInteractionsEnabled) {\n this._nativeInteractionsEnabled = shouldEnable;\n toggleNativeDragInteractions(this._rootElement, shouldEnable);\n }\n }\n /** Removes the manually-added event listeners from the root element. */\n _removeRootElementListeners(element) {\n element.removeEventListener('mousedown', this._pointerDown, activeEventListenerOptions);\n element.removeEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);\n }\n /**\n * Applies a `transform` to the root element, taking into account any existing transforms on it.\n * @param x New transform value along the X axis.\n * @param y New transform value along the Y axis.\n */\n _applyRootElementTransform(x, y) {\n const transform = getTransform(x, y);\n const styles = this._rootElement.style;\n // Cache the previous transform amount only after the first drag sequence, because\n // we don't want our own transforms to stack on top of each other.\n // Should be excluded none because none + translate3d(x, y, x) is invalid css\n if (this._initialTransform == null) {\n this._initialTransform =\n styles.transform && styles.transform != 'none' ? styles.transform : '';\n }\n // Preserve the previous `transform` value, if there was one. Note that we apply our own\n // transform before the user's, because things like rotation can affect which direction\n // the element will be translated towards.\n styles.transform = combineTransforms(transform, this._initialTransform);\n }\n /**\n * Applies a `transform` to the preview, taking into account any existing transforms on it.\n * @param x New transform value along the X axis.\n * @param y New transform value along the Y axis.\n */\n _applyPreviewTransform(x, y) {\n // Only apply the initial transform if the preview is a clone of the original element, otherwise\n // it could be completely different and the transform might not make sense anymore.\n const initialTransform = this._previewTemplate?.template ? undefined : this._initialTransform;\n const transform = getTransform(x, y);\n this._preview.style.transform = combineTransforms(transform, initialTransform);\n }\n /**\n * Gets the distance that the user has dragged during the current drag sequence.\n * @param currentPosition Current position of the user's pointer.\n */\n _getDragDistance(currentPosition) {\n const pickupPosition = this._pickupPositionOnPage;\n if (pickupPosition) {\n return { x: currentPosition.x - pickupPosition.x, y: currentPosition.y - pickupPosition.y };\n }\n return { x: 0, y: 0 };\n }\n /** Cleans up any cached element dimensions that we don't need after dragging has stopped. */\n _cleanupCachedDimensions() {\n this._boundaryRect = this._previewRect = undefined;\n this._parentPositions.clear();\n }\n /**\n * Checks whether the element is still inside its boundary after the viewport has been resized.\n * If not, the position is adjusted so that the element fits again.\n */\n _containInsideBoundaryOnResize() {\n let { x, y } = this._passiveTransform;\n if ((x === 0 && y === 0) || this.isDragging() || !this._boundaryElement) {\n return;\n }\n const boundaryRect = this._boundaryElement.getBoundingClientRect();\n const elementRect = this._rootElement.getBoundingClientRect();\n // It's possible that the element got hidden away after dragging (e.g. by switching to a\n // different tab). Don't do anything in this case so we don't clear the user's position.\n if ((boundaryRect.width === 0 && boundaryRect.height === 0) ||\n (elementRect.width === 0 && elementRect.height === 0)) {\n return;\n }\n const leftOverflow = boundaryRect.left - elementRect.left;\n const rightOverflow = elementRect.right - boundaryRect.right;\n const topOverflow = boundaryRect.top - elementRect.top;\n const bottomOverflow = elementRect.bottom - boundaryRect.bottom;\n // If the element has become wider than the boundary, we can't\n // do much to make it fit so we just anchor it to the left.\n if (boundaryRect.width > elementRect.width) {\n if (leftOverflow > 0) {\n x += leftOverflow;\n }\n if (rightOverflow > 0) {\n x -= rightOverflow;\n }\n }\n else {\n x = 0;\n }\n // If the element has become taller than the boundary, we can't\n // do much to make it fit so we just anchor it to the top.\n if (boundaryRect.height > elementRect.height) {\n if (topOverflow > 0) {\n y += topOverflow;\n }\n if (bottomOverflow > 0) {\n y -= bottomOverflow;\n }\n }\n else {\n y = 0;\n }\n if (x !== this._passiveTransform.x || y !== this._passiveTransform.y) {\n this.setFreeDragPosition({ y, x });\n }\n }\n /** Gets the drag start delay, based on the event type. */\n _getDragStartDelay(event) {\n const value = this.dragStartDelay;\n if (typeof value === 'number') {\n return value;\n }\n else if (isTouchEvent(event)) {\n return value.touch;\n }\n return value ? value.mouse : 0;\n }\n /** Updates the internal state of the draggable element when scrolling has occurred. */\n _updateOnScroll(event) {\n const scrollDifference = this._parentPositions.handleScroll(event);\n if (scrollDifference) {\n const target = _getEventTarget(event);\n // ClientRect dimensions are based on the scroll position of the page and its parent\n // node so we have to update the cached boundary ClientRect if the user has scrolled.\n if (this._boundaryRect &&\n target !== this._boundaryElement &&\n target.contains(this._boundaryElement)) {\n adjustClientRect(this._boundaryRect, scrollDifference.top, scrollDifference.left);\n }\n this._pickupPositionOnPage.x += scrollDifference.left;\n this._pickupPositionOnPage.y += scrollDifference.top;\n // If we're in free drag mode, we have to update the active transform, because\n // it isn't relative to the viewport like the preview inside a drop list.\n if (!this._dropContainer) {\n this._activeTransform.x -= scrollDifference.left;\n this._activeTransform.y -= scrollDifference.top;\n this._applyRootElementTransform(this._activeTransform.x, this._activeTransform.y);\n }\n }\n }\n /** Gets the scroll position of the viewport. */\n _getViewportScrollPosition() {\n const cachedPosition = this._parentPositions.positions.get(this._document);\n return cachedPosition\n ? cachedPosition.scrollPosition\n : this._viewportRuler.getViewportScrollPosition();\n }\n /**\n * Lazily resolves and returns the shadow root of the element. We do this in a function, rather\n * than saving it in property directly on init, because we want to resolve it as late as possible\n * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the\n * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.\n */\n _getShadowRoot() {\n if (this._cachedShadowRoot === undefined) {\n this._cachedShadowRoot = _getShadowRoot(this._rootElement);\n }\n return this._cachedShadowRoot;\n }\n /** Gets the element into which the drag preview should be inserted. */\n _getPreviewInsertionPoint(initialParent, shadowRoot) {\n const previewContainer = this._previewContainer || 'global';\n if (previewContainer === 'parent') {\n return initialParent;\n }\n if (previewContainer === 'global') {\n const documentRef = this._document;\n // We can't use the body if the user is in fullscreen mode,\n // because the preview will render under the fullscreen element.\n // TODO(crisbeto): dedupe this with the `FullscreenOverlayContainer` eventually.\n return (shadowRoot ||\n documentRef.fullscreenElement ||\n documentRef.webkitFullscreenElement ||\n documentRef.mozFullScreenElement ||\n documentRef.msFullscreenElement ||\n documentRef.body);\n }\n return coerceElement(previewContainer);\n }\n}\n/**\n * Gets a 3d `transform` that can be applied to an element.\n * @param x Desired position of the element along the X axis.\n * @param y Desired position of the element along the Y axis.\n */\nfunction getTransform(x, y) {\n // Round the transforms since some browsers will\n // blur the elements for sub-pixel transforms.\n return `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`;\n}\n/** Clamps a value between a minimum and a maximum. */\nfunction clamp$1(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/** Determines whether an event is a touch event. */\nfunction isTouchEvent(event) {\n // This function is called for every pixel that the user has dragged so we need it to be\n // as fast as possible. Since we only bind mouse events and touch events, we can assume\n // that if the event's name starts with `t`, it's a touch event.\n return event.type[0] === 't';\n}\n/**\n * Gets the root HTML element of an embedded view.\n * If the root is not an HTML element it gets wrapped in one.\n */\nfunction getRootNode(viewRef, _document) {\n const rootNodes = viewRef.rootNodes;\n if (rootNodes.length === 1 && rootNodes[0].nodeType === _document.ELEMENT_NODE) {\n return rootNodes[0];\n }\n const wrapper = _document.createElement('div');\n rootNodes.forEach(node => wrapper.appendChild(node));\n return wrapper;\n}\n/**\n * Matches the target element's size to the source's size.\n * @param target Element that needs to be resized.\n * @param sourceRect Dimensions of the source element.\n */\nfunction matchElementSize(target, sourceRect) {\n target.style.width = `${sourceRect.width}px`;\n target.style.height = `${sourceRect.height}px`;\n target.style.transform = getTransform(sourceRect.left, sourceRect.top);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Moves an item one index in an array to another.\n * @param array Array in which to move the item.\n * @param fromIndex Starting index of the item.\n * @param toIndex Index to which the item should be moved.\n */\nfunction moveItemInArray(array, fromIndex, toIndex) {\n const from = clamp(fromIndex, array.length - 1);\n const to = clamp(toIndex, array.length - 1);\n if (from === to) {\n return;\n }\n const target = array[from];\n const delta = to < from ? -1 : 1;\n for (let i = from; i !== to; i += delta) {\n array[i] = array[i + delta];\n }\n array[to] = target;\n}\n/**\n * Moves an item from one array to another.\n * @param currentArray Array from which to transfer the item.\n * @param targetArray Array into which to put the item.\n * @param currentIndex Index of the item in its current array.\n * @param targetIndex Index at which to insert the item.\n */\nfunction transferArrayItem(currentArray, targetArray, currentIndex, targetIndex) {\n const from = clamp(currentIndex, currentArray.length - 1);\n const to = clamp(targetIndex, targetArray.length);\n if (currentArray.length) {\n targetArray.splice(to, 0, currentArray.splice(from, 1)[0]);\n }\n}\n/**\n * Copies an item from one array to another, leaving it in its\n * original position in current array.\n * @param currentArray Array from which to copy the item.\n * @param targetArray Array into which is copy the item.\n * @param currentIndex Index of the item in its current array.\n * @param targetIndex Index at which to insert the item.\n *\n */\nfunction copyArrayItem(currentArray, targetArray, currentIndex, targetIndex) {\n const to = clamp(targetIndex, targetArray.length);\n if (currentArray.length) {\n targetArray.splice(to, 0, currentArray[currentIndex]);\n }\n}\n/** Clamps a number between zero and a maximum. */\nfunction clamp(value, max) {\n return Math.max(0, Math.min(max, value));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Proximity, as a ratio to width/height, at which a\n * dragged item will affect the drop container.\n */\nconst DROP_PROXIMITY_THRESHOLD = 0.05;\n/**\n * Proximity, as a ratio to width/height at which to start auto-scrolling the drop list or the\n * viewport. The value comes from trying it out manually until it feels right.\n */\nconst SCROLL_PROXIMITY_THRESHOLD = 0.05;\n/**\n * Reference to a drop list. Used to manipulate or dispose of the container.\n */\nclass DropListRef {\n constructor(element, _dragDropRegistry, _document, _ngZone, _viewportRuler) {\n this._dragDropRegistry = _dragDropRegistry;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n /** Whether starting a dragging sequence from this container is disabled. */\n this.disabled = false;\n /** Whether sorting items within the list is disabled. */\n this.sortingDisabled = false;\n /**\n * Whether auto-scrolling the view when the user\n * moves their pointer close to the edges is disabled.\n */\n this.autoScrollDisabled = false;\n /** Number of pixels to scroll for each frame when auto-scrolling an element. */\n this.autoScrollStep = 2;\n /**\n * Function that is used to determine whether an item\n * is allowed to be moved into a drop container.\n */\n this.enterPredicate = () => true;\n /** Functions that is used to determine whether an item can be sorted into a particular index. */\n this.sortPredicate = () => true;\n /** Emits right before dragging has started. */\n this.beforeStarted = new Subject();\n /**\n * Emits when the user has moved a new drag item into this container.\n */\n this.entered = new Subject();\n /**\n * Emits when the user removes an item from the container\n * by dragging it into another container.\n */\n this.exited = new Subject();\n /** Emits when the user drops an item inside the container. */\n this.dropped = new Subject();\n /** Emits as the user is swapping items while actively dragging. */\n this.sorted = new Subject();\n /** Whether an item in the list is being dragged. */\n this._isDragging = false;\n /** Cache of the dimensions of all the items inside the container. */\n this._itemPositions = [];\n /**\n * Keeps track of the item that was last swapped with the dragged item, as well as what direction\n * the pointer was moving in when the swap occured and whether the user's pointer continued to\n * overlap with the swapped item after the swapping occurred.\n */\n this._previousSwap = { drag: null, delta: 0, overlaps: false };\n /** Draggable items in the container. */\n this._draggables = [];\n /** Drop lists that are connected to the current one. */\n this._siblings = [];\n /** Direction in which the list is oriented. */\n this._orientation = 'vertical';\n /** Connected siblings that currently have a dragged item. */\n this._activeSiblings = new Set();\n /** Layout direction of the drop list. */\n this._direction = 'ltr';\n /** Subscription to the window being scrolled. */\n this._viewportScrollSubscription = Subscription.EMPTY;\n /** Vertical direction in which the list is currently scrolling. */\n this._verticalScrollDirection = 0 /* NONE */;\n /** Horizontal direction in which the list is currently scrolling. */\n this._horizontalScrollDirection = 0 /* NONE */;\n /** Used to signal to the current auto-scroll sequence when to stop. */\n this._stopScrollTimers = new Subject();\n /** Shadow root of the current element. Necessary for `elementFromPoint` to resolve correctly. */\n this._cachedShadowRoot = null;\n /** Starts the interval that'll auto-scroll the element. */\n this._startScrollInterval = () => {\n this._stopScrolling();\n interval(0, animationFrameScheduler)\n .pipe(takeUntil(this._stopScrollTimers))\n .subscribe(() => {\n const node = this._scrollNode;\n const scrollStep = this.autoScrollStep;\n if (this._verticalScrollDirection === 1 /* UP */) {\n node.scrollBy(0, -scrollStep);\n }\n else if (this._verticalScrollDirection === 2 /* DOWN */) {\n node.scrollBy(0, scrollStep);\n }\n if (this._horizontalScrollDirection === 1 /* LEFT */) {\n node.scrollBy(-scrollStep, 0);\n }\n else if (this._horizontalScrollDirection === 2 /* RIGHT */) {\n node.scrollBy(scrollStep, 0);\n }\n });\n };\n this.element = coerceElement(element);\n this._document = _document;\n this.withScrollableParents([this.element]);\n _dragDropRegistry.registerDropContainer(this);\n this._parentPositions = new ParentPositionTracker(_document, _viewportRuler);\n }\n /** Removes the drop list functionality from the DOM element. */\n dispose() {\n this._stopScrolling();\n this._stopScrollTimers.complete();\n this._viewportScrollSubscription.unsubscribe();\n this.beforeStarted.complete();\n this.entered.complete();\n this.exited.complete();\n this.dropped.complete();\n this.sorted.complete();\n this._activeSiblings.clear();\n this._scrollNode = null;\n this._parentPositions.clear();\n this._dragDropRegistry.removeDropContainer(this);\n }\n /** Whether an item from this list is currently being dragged. */\n isDragging() {\n return this._isDragging;\n }\n /** Starts dragging an item. */\n start() {\n this._draggingStarted();\n this._notifyReceivingSiblings();\n }\n /**\n * Emits an event to indicate that the user moved an item into the container.\n * @param item Item that was moved into the container.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param index Index at which the item entered. If omitted, the container will try to figure it\n * out automatically.\n */\n enter(item, pointerX, pointerY, index) {\n this._draggingStarted();\n // If sorting is disabled, we want the item to return to its starting\n // position if the user is returning it to its initial container.\n let newIndex;\n if (index == null) {\n newIndex = this.sortingDisabled ? this._draggables.indexOf(item) : -1;\n if (newIndex === -1) {\n // We use the coordinates of where the item entered the drop\n // zone to figure out at which index it should be inserted.\n newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY);\n }\n }\n else {\n newIndex = index;\n }\n const activeDraggables = this._activeDraggables;\n const currentIndex = activeDraggables.indexOf(item);\n const placeholder = item.getPlaceholderElement();\n let newPositionReference = activeDraggables[newIndex];\n // If the item at the new position is the same as the item that is being dragged,\n // it means that we're trying to restore the item to its initial position. In this\n // case we should use the next item from the list as the reference.\n if (newPositionReference === item) {\n newPositionReference = activeDraggables[newIndex + 1];\n }\n // Since the item may be in the `activeDraggables` already (e.g. if the user dragged it\n // into another container and back again), we have to ensure that it isn't duplicated.\n if (currentIndex > -1) {\n activeDraggables.splice(currentIndex, 1);\n }\n // Don't use items that are being dragged as a reference, because\n // their element has been moved down to the bottom of the body.\n if (newPositionReference && !this._dragDropRegistry.isDragging(newPositionReference)) {\n const element = newPositionReference.getRootElement();\n element.parentElement.insertBefore(placeholder, element);\n activeDraggables.splice(newIndex, 0, item);\n }\n else if (this._shouldEnterAsFirstChild(pointerX, pointerY)) {\n const reference = activeDraggables[0].getRootElement();\n reference.parentNode.insertBefore(placeholder, reference);\n activeDraggables.unshift(item);\n }\n else {\n coerceElement(this.element).appendChild(placeholder);\n activeDraggables.push(item);\n }\n // The transform needs to be cleared so it doesn't throw off the measurements.\n placeholder.style.transform = '';\n // Note that the positions were already cached when we called `start` above,\n // but we need to refresh them since the amount of items has changed and also parent rects.\n this._cacheItemPositions();\n this._cacheParentPositions();\n // Notify siblings at the end so that the item has been inserted into the `activeDraggables`.\n this._notifyReceivingSiblings();\n this.entered.next({ item, container: this, currentIndex: this.getItemIndex(item) });\n }\n /**\n * Removes an item from the container after it was dragged into another container by the user.\n * @param item Item that was dragged out.\n */\n exit(item) {\n this._reset();\n this.exited.next({ item, container: this });\n }\n /**\n * Drops an item into this container.\n * @param item Item being dropped into the container.\n * @param currentIndex Index at which the item should be inserted.\n * @param previousIndex Index of the item when dragging started.\n * @param previousContainer Container from which the item got dragged in.\n * @param isPointerOverContainer Whether the user's pointer was over the\n * container when the item was dropped.\n * @param distance Distance the user has dragged since the start of the dragging sequence.\n */\n drop(item, currentIndex, previousIndex, previousContainer, isPointerOverContainer, distance, dropPoint) {\n this._reset();\n this.dropped.next({\n item,\n currentIndex,\n previousIndex,\n container: this,\n previousContainer,\n isPointerOverContainer,\n distance,\n dropPoint,\n });\n }\n /**\n * Sets the draggable items that are a part of this list.\n * @param items Items that are a part of this list.\n */\n withItems(items) {\n const previousItems = this._draggables;\n this._draggables = items;\n items.forEach(item => item._withDropContainer(this));\n if (this.isDragging()) {\n const draggedItems = previousItems.filter(item => item.isDragging());\n // If all of the items being dragged were removed\n // from the list, abort the current drag sequence.\n if (draggedItems.every(item => items.indexOf(item) === -1)) {\n this._reset();\n }\n else {\n this._cacheItems();\n }\n }\n return this;\n }\n /** Sets the layout direction of the drop list. */\n withDirection(direction) {\n this._direction = direction;\n return this;\n }\n /**\n * Sets the containers that are connected to this one. When two or more containers are\n * connected, the user will be allowed to transfer items between them.\n * @param connectedTo Other containers that the current containers should be connected to.\n */\n connectedTo(connectedTo) {\n this._siblings = connectedTo.slice();\n return this;\n }\n /**\n * Sets the orientation of the container.\n * @param orientation New orientation for the container.\n */\n withOrientation(orientation) {\n this._orientation = orientation;\n return this;\n }\n /**\n * Sets which parent elements are can be scrolled while the user is dragging.\n * @param elements Elements that can be scrolled.\n */\n withScrollableParents(elements) {\n const element = coerceElement(this.element);\n // We always allow the current element to be scrollable\n // so we need to ensure that it's in the array.\n this._scrollableElements =\n elements.indexOf(element) === -1 ? [element, ...elements] : elements.slice();\n return this;\n }\n /** Gets the scrollable parents that are registered with this drop container. */\n getScrollableParents() {\n return this._scrollableElements;\n }\n /**\n * Figures out the index of an item in the container.\n * @param item Item whose index should be determined.\n */\n getItemIndex(item) {\n if (!this._isDragging) {\n return this._draggables.indexOf(item);\n }\n // Items are sorted always by top/left in the cache, however they flow differently in RTL.\n // The rest of the logic still stands no matter what orientation we're in, however\n // we need to invert the array when determining the index.\n const items = this._orientation === 'horizontal' && this._direction === 'rtl'\n ? this._itemPositions.slice().reverse()\n : this._itemPositions;\n return items.findIndex(currentItem => currentItem.drag === item);\n }\n /**\n * Whether the list is able to receive the item that\n * is currently being dragged inside a connected drop list.\n */\n isReceiving() {\n return this._activeSiblings.size > 0;\n }\n /**\n * Sorts an item inside the container based on its position.\n * @param item Item to be sorted.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param pointerDelta Direction in which the pointer is moving along each axis.\n */\n _sortItem(item, pointerX, pointerY, pointerDelta) {\n // Don't sort the item if sorting is disabled or it's out of range.\n if (this.sortingDisabled ||\n !this._clientRect ||\n !isPointerNearClientRect(this._clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {\n return;\n }\n const siblings = this._itemPositions;\n const newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY, pointerDelta);\n if (newIndex === -1 && siblings.length > 0) {\n return;\n }\n const isHorizontal = this._orientation === 'horizontal';\n const currentIndex = siblings.findIndex(currentItem => currentItem.drag === item);\n const siblingAtNewPosition = siblings[newIndex];\n const currentPosition = siblings[currentIndex].clientRect;\n const newPosition = siblingAtNewPosition.clientRect;\n const delta = currentIndex > newIndex ? 1 : -1;\n // How many pixels the item's placeholder should be offset.\n const itemOffset = this._getItemOffsetPx(currentPosition, newPosition, delta);\n // How many pixels all the other items should be offset.\n const siblingOffset = this._getSiblingOffsetPx(currentIndex, siblings, delta);\n // Save the previous order of the items before moving the item to its new index.\n // We use this to check whether an item has been moved as a result of the sorting.\n const oldOrder = siblings.slice();\n // Shuffle the array in place.\n moveItemInArray(siblings, currentIndex, newIndex);\n this.sorted.next({\n previousIndex: currentIndex,\n currentIndex: newIndex,\n container: this,\n item,\n });\n siblings.forEach((sibling, index) => {\n // Don't do anything if the position hasn't changed.\n if (oldOrder[index] === sibling) {\n return;\n }\n const isDraggedItem = sibling.drag === item;\n const offset = isDraggedItem ? itemOffset : siblingOffset;\n const elementToOffset = isDraggedItem\n ? item.getPlaceholderElement()\n : sibling.drag.getRootElement();\n // Update the offset to reflect the new position.\n sibling.offset += offset;\n // Since we're moving the items with a `transform`, we need to adjust their cached\n // client rects to reflect their new position, as well as swap their positions in the cache.\n // Note that we shouldn't use `getBoundingClientRect` here to update the cache, because the\n // elements may be mid-animation which will give us a wrong result.\n if (isHorizontal) {\n // Round the transforms since some browsers will\n // blur the elements, for sub-pixel transforms.\n elementToOffset.style.transform = combineTransforms(`translate3d(${Math.round(sibling.offset)}px, 0, 0)`, sibling.initialTransform);\n adjustClientRect(sibling.clientRect, 0, offset);\n }\n else {\n elementToOffset.style.transform = combineTransforms(`translate3d(0, ${Math.round(sibling.offset)}px, 0)`, sibling.initialTransform);\n adjustClientRect(sibling.clientRect, offset, 0);\n }\n });\n // Note that it's important that we do this after the client rects have been adjusted.\n this._previousSwap.overlaps = isInsideClientRect(newPosition, pointerX, pointerY);\n this._previousSwap.drag = siblingAtNewPosition.drag;\n this._previousSwap.delta = isHorizontal ? pointerDelta.x : pointerDelta.y;\n }\n /**\n * Checks whether the user's pointer is close to the edges of either the\n * viewport or the drop list and starts the auto-scroll sequence.\n * @param pointerX User's pointer position along the x axis.\n * @param pointerY User's pointer position along the y axis.\n */\n _startScrollingIfNecessary(pointerX, pointerY) {\n if (this.autoScrollDisabled) {\n return;\n }\n let scrollNode;\n let verticalScrollDirection = 0 /* NONE */;\n let horizontalScrollDirection = 0 /* NONE */;\n // Check whether we should start scrolling any of the parent containers.\n this._parentPositions.positions.forEach((position, element) => {\n // We have special handling for the `document` below. Also this would be\n // nicer with a for...of loop, but it requires changing a compiler flag.\n if (element === this._document || !position.clientRect || scrollNode) {\n return;\n }\n if (isPointerNearClientRect(position.clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {\n [verticalScrollDirection, horizontalScrollDirection] = getElementScrollDirections(element, position.clientRect, pointerX, pointerY);\n if (verticalScrollDirection || horizontalScrollDirection) {\n scrollNode = element;\n }\n }\n });\n // Otherwise check if we can start scrolling the viewport.\n if (!verticalScrollDirection && !horizontalScrollDirection) {\n const { width, height } = this._viewportRuler.getViewportSize();\n const clientRect = {\n width,\n height,\n top: 0,\n right: width,\n bottom: height,\n left: 0,\n };\n verticalScrollDirection = getVerticalScrollDirection(clientRect, pointerY);\n horizontalScrollDirection = getHorizontalScrollDirection(clientRect, pointerX);\n scrollNode = window;\n }\n if (scrollNode &&\n (verticalScrollDirection !== this._verticalScrollDirection ||\n horizontalScrollDirection !== this._horizontalScrollDirection ||\n scrollNode !== this._scrollNode)) {\n this._verticalScrollDirection = verticalScrollDirection;\n this._horizontalScrollDirection = horizontalScrollDirection;\n this._scrollNode = scrollNode;\n if ((verticalScrollDirection || horizontalScrollDirection) && scrollNode) {\n this._ngZone.runOutsideAngular(this._startScrollInterval);\n }\n else {\n this._stopScrolling();\n }\n }\n }\n /** Stops any currently-running auto-scroll sequences. */\n _stopScrolling() {\n this._stopScrollTimers.next();\n }\n /** Starts the dragging sequence within the list. */\n _draggingStarted() {\n const styles = coerceElement(this.element).style;\n this.beforeStarted.next();\n this._isDragging = true;\n // We need to disable scroll snapping while the user is dragging, because it breaks automatic\n // scrolling. The browser seems to round the value based on the snapping points which means\n // that we can't increment/decrement the scroll position.\n this._initialScrollSnap = styles.msScrollSnapType || styles.scrollSnapType || '';\n styles.scrollSnapType = styles.msScrollSnapType = 'none';\n this._cacheItems();\n this._viewportScrollSubscription.unsubscribe();\n this._listenToScrollEvents();\n }\n /** Caches the positions of the configured scrollable parents. */\n _cacheParentPositions() {\n const element = coerceElement(this.element);\n this._parentPositions.cache(this._scrollableElements);\n // The list element is always in the `scrollableElements`\n // so we can take advantage of the cached `ClientRect`.\n this._clientRect = this._parentPositions.positions.get(element).clientRect;\n }\n /** Refreshes the position cache of the items and sibling containers. */\n _cacheItemPositions() {\n const isHorizontal = this._orientation === 'horizontal';\n this._itemPositions = this._activeDraggables\n .map(drag => {\n const elementToMeasure = drag.getVisibleElement();\n return {\n drag,\n offset: 0,\n initialTransform: elementToMeasure.style.transform || '',\n clientRect: getMutableClientRect(elementToMeasure),\n };\n })\n .sort((a, b) => {\n return isHorizontal\n ? a.clientRect.left - b.clientRect.left\n : a.clientRect.top - b.clientRect.top;\n });\n }\n /** Resets the container to its initial state. */\n _reset() {\n this._isDragging = false;\n const styles = coerceElement(this.element).style;\n styles.scrollSnapType = styles.msScrollSnapType = this._initialScrollSnap;\n // TODO(crisbeto): may have to wait for the animations to finish.\n this._activeDraggables.forEach(item => {\n const rootElement = item.getRootElement();\n if (rootElement) {\n const initialTransform = this._itemPositions.find(current => current.drag === item)?.initialTransform;\n rootElement.style.transform = initialTransform || '';\n }\n });\n this._siblings.forEach(sibling => sibling._stopReceiving(this));\n this._activeDraggables = [];\n this._itemPositions = [];\n this._previousSwap.drag = null;\n this._previousSwap.delta = 0;\n this._previousSwap.overlaps = false;\n this._stopScrolling();\n this._viewportScrollSubscription.unsubscribe();\n this._parentPositions.clear();\n }\n /**\n * Gets the offset in pixels by which the items that aren't being dragged should be moved.\n * @param currentIndex Index of the item currently being dragged.\n * @param siblings All of the items in the list.\n * @param delta Direction in which the user is moving.\n */\n _getSiblingOffsetPx(currentIndex, siblings, delta) {\n const isHorizontal = this._orientation === 'horizontal';\n const currentPosition = siblings[currentIndex].clientRect;\n const immediateSibling = siblings[currentIndex + delta * -1];\n let siblingOffset = currentPosition[isHorizontal ? 'width' : 'height'] * delta;\n if (immediateSibling) {\n const start = isHorizontal ? 'left' : 'top';\n const end = isHorizontal ? 'right' : 'bottom';\n // Get the spacing between the start of the current item and the end of the one immediately\n // after it in the direction in which the user is dragging, or vice versa. We add it to the\n // offset in order to push the element to where it will be when it's inline and is influenced\n // by the `margin` of its siblings.\n if (delta === -1) {\n siblingOffset -= immediateSibling.clientRect[start] - currentPosition[end];\n }\n else {\n siblingOffset += currentPosition[start] - immediateSibling.clientRect[end];\n }\n }\n return siblingOffset;\n }\n /**\n * Gets the offset in pixels by which the item that is being dragged should be moved.\n * @param currentPosition Current position of the item.\n * @param newPosition Position of the item where the current item should be moved.\n * @param delta Direction in which the user is moving.\n */\n _getItemOffsetPx(currentPosition, newPosition, delta) {\n const isHorizontal = this._orientation === 'horizontal';\n let itemOffset = isHorizontal\n ? newPosition.left - currentPosition.left\n : newPosition.top - currentPosition.top;\n // Account for differences in the item width/height.\n if (delta === -1) {\n itemOffset += isHorizontal\n ? newPosition.width - currentPosition.width\n : newPosition.height - currentPosition.height;\n }\n return itemOffset;\n }\n /**\n * Checks if pointer is entering in the first position\n * @param pointerX Position of the user's pointer along the X axis.\n * @param pointerY Position of the user's pointer along the Y axis.\n */\n _shouldEnterAsFirstChild(pointerX, pointerY) {\n if (!this._activeDraggables.length) {\n return false;\n }\n const itemPositions = this._itemPositions;\n const isHorizontal = this._orientation === 'horizontal';\n // `itemPositions` are sorted by position while `activeDraggables` are sorted by child index\n // check if container is using some sort of \"reverse\" ordering (eg: flex-direction: row-reverse)\n const reversed = itemPositions[0].drag !== this._activeDraggables[0];\n if (reversed) {\n const lastItemRect = itemPositions[itemPositions.length - 1].clientRect;\n return isHorizontal ? pointerX >= lastItemRect.right : pointerY >= lastItemRect.bottom;\n }\n else {\n const firstItemRect = itemPositions[0].clientRect;\n return isHorizontal ? pointerX <= firstItemRect.left : pointerY <= firstItemRect.top;\n }\n }\n /**\n * Gets the index of an item in the drop container, based on the position of the user's pointer.\n * @param item Item that is being sorted.\n * @param pointerX Position of the user's pointer along the X axis.\n * @param pointerY Position of the user's pointer along the Y axis.\n * @param delta Direction in which the user is moving their pointer.\n */\n _getItemIndexFromPointerPosition(item, pointerX, pointerY, delta) {\n const isHorizontal = this._orientation === 'horizontal';\n const index = this._itemPositions.findIndex(({ drag, clientRect }) => {\n // Skip the item itself.\n if (drag === item) {\n return false;\n }\n if (delta) {\n const direction = isHorizontal ? delta.x : delta.y;\n // If the user is still hovering over the same item as last time, their cursor hasn't left\n // the item after we made the swap, and they didn't change the direction in which they're\n // dragging, we don't consider it a direction swap.\n if (drag === this._previousSwap.drag &&\n this._previousSwap.overlaps &&\n direction === this._previousSwap.delta) {\n return false;\n }\n }\n return isHorizontal\n ? // Round these down since most browsers report client rects with\n // sub-pixel precision, whereas the pointer coordinates are rounded to pixels.\n pointerX >= Math.floor(clientRect.left) && pointerX < Math.floor(clientRect.right)\n : pointerY >= Math.floor(clientRect.top) && pointerY < Math.floor(clientRect.bottom);\n });\n return index === -1 || !this.sortPredicate(index, item, this) ? -1 : index;\n }\n /** Caches the current items in the list and their positions. */\n _cacheItems() {\n this._activeDraggables = this._draggables.slice();\n this._cacheItemPositions();\n this._cacheParentPositions();\n }\n /**\n * Checks whether the user's pointer is positioned over the container.\n * @param x Pointer position along the X axis.\n * @param y Pointer position along the Y axis.\n */\n _isOverContainer(x, y) {\n return this._clientRect != null && isInsideClientRect(this._clientRect, x, y);\n }\n /**\n * Figures out whether an item should be moved into a sibling\n * drop container, based on its current position.\n * @param item Drag item that is being moved.\n * @param x Position of the item along the X axis.\n * @param y Position of the item along the Y axis.\n */\n _getSiblingContainerFromPosition(item, x, y) {\n return this._siblings.find(sibling => sibling._canReceive(item, x, y));\n }\n /**\n * Checks whether the drop list can receive the passed-in item.\n * @param item Item that is being dragged into the list.\n * @param x Position of the item along the X axis.\n * @param y Position of the item along the Y axis.\n */\n _canReceive(item, x, y) {\n if (!this._clientRect ||\n !isInsideClientRect(this._clientRect, x, y) ||\n !this.enterPredicate(item, this)) {\n return false;\n }\n const elementFromPoint = this._getShadowRoot().elementFromPoint(x, y);\n // If there's no element at the pointer position, then\n // the client rect is probably scrolled out of the view.\n if (!elementFromPoint) {\n return false;\n }\n const nativeElement = coerceElement(this.element);\n // The `ClientRect`, that we're using to find the container over which the user is\n // hovering, doesn't give us any information on whether the element has been scrolled\n // out of the view or whether it's overlapping with other containers. This means that\n // we could end up transferring the item into a container that's invisible or is positioned\n // below another one. We use the result from `elementFromPoint` to get the top-most element\n // at the pointer position and to find whether it's one of the intersecting drop containers.\n return elementFromPoint === nativeElement || nativeElement.contains(elementFromPoint);\n }\n /**\n * Called by one of the connected drop lists when a dragging sequence has started.\n * @param sibling Sibling in which dragging has started.\n */\n _startReceiving(sibling, items) {\n const activeSiblings = this._activeSiblings;\n if (!activeSiblings.has(sibling) &&\n items.every(item => {\n // Note that we have to add an exception to the `enterPredicate` for items that started off\n // in this drop list. The drag ref has logic that allows an item to return to its initial\n // container, if it has left the initial container and none of the connected containers\n // allow it to enter. See `DragRef._updateActiveDropContainer` for more context.\n return this.enterPredicate(item, this) || this._draggables.indexOf(item) > -1;\n })) {\n activeSiblings.add(sibling);\n this._cacheParentPositions();\n this._listenToScrollEvents();\n }\n }\n /**\n * Called by a connected drop list when dragging has stopped.\n * @param sibling Sibling whose dragging has stopped.\n */\n _stopReceiving(sibling) {\n this._activeSiblings.delete(sibling);\n this._viewportScrollSubscription.unsubscribe();\n }\n /**\n * Starts listening to scroll events on the viewport.\n * Used for updating the internal state of the list.\n */\n _listenToScrollEvents() {\n this._viewportScrollSubscription = this._dragDropRegistry\n .scrolled(this._getShadowRoot())\n .subscribe(event => {\n if (this.isDragging()) {\n const scrollDifference = this._parentPositions.handleScroll(event);\n if (scrollDifference) {\n // Since we know the amount that the user has scrolled we can shift all of the\n // client rectangles ourselves. This is cheaper than re-measuring everything and\n // we can avoid inconsistent behavior where we might be measuring the element before\n // its position has changed.\n this._itemPositions.forEach(({ clientRect }) => {\n adjustClientRect(clientRect, scrollDifference.top, scrollDifference.left);\n });\n // We need two loops for this, because we want all of the cached\n // positions to be up-to-date before we re-sort the item.\n this._itemPositions.forEach(({ drag }) => {\n if (this._dragDropRegistry.isDragging(drag)) {\n // We need to re-sort the item manually, because the pointer move\n // events won't be dispatched while the user is scrolling.\n drag._sortFromLastPointerPosition();\n }\n });\n }\n }\n else if (this.isReceiving()) {\n this._cacheParentPositions();\n }\n });\n }\n /**\n * Lazily resolves and returns the shadow root of the element. We do this in a function, rather\n * than saving it in property directly on init, because we want to resolve it as late as possible\n * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the\n * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.\n */\n _getShadowRoot() {\n if (!this._cachedShadowRoot) {\n const shadowRoot = _getShadowRoot(coerceElement(this.element));\n this._cachedShadowRoot = (shadowRoot || this._document);\n }\n return this._cachedShadowRoot;\n }\n /** Notifies any siblings that may potentially receive the item. */\n _notifyReceivingSiblings() {\n const draggedItems = this._activeDraggables.filter(item => item.isDragging());\n this._siblings.forEach(sibling => sibling._startReceiving(this, draggedItems));\n }\n}\n/**\n * Gets whether the vertical auto-scroll direction of a node.\n * @param clientRect Dimensions of the node.\n * @param pointerY Position of the user's pointer along the y axis.\n */\nfunction getVerticalScrollDirection(clientRect, pointerY) {\n const { top, bottom, height } = clientRect;\n const yThreshold = height * SCROLL_PROXIMITY_THRESHOLD;\n if (pointerY >= top - yThreshold && pointerY <= top + yThreshold) {\n return 1 /* UP */;\n }\n else if (pointerY >= bottom - yThreshold && pointerY <= bottom + yThreshold) {\n return 2 /* DOWN */;\n }\n return 0 /* NONE */;\n}\n/**\n * Gets whether the horizontal auto-scroll direction of a node.\n * @param clientRect Dimensions of the node.\n * @param pointerX Position of the user's pointer along the x axis.\n */\nfunction getHorizontalScrollDirection(clientRect, pointerX) {\n const { left, right, width } = clientRect;\n const xThreshold = width * SCROLL_PROXIMITY_THRESHOLD;\n if (pointerX >= left - xThreshold && pointerX <= left + xThreshold) {\n return 1 /* LEFT */;\n }\n else if (pointerX >= right - xThreshold && pointerX <= right + xThreshold) {\n return 2 /* RIGHT */;\n }\n return 0 /* NONE */;\n}\n/**\n * Gets the directions in which an element node should be scrolled,\n * assuming that the user's pointer is already within it scrollable region.\n * @param element Element for which we should calculate the scroll direction.\n * @param clientRect Bounding client rectangle of the element.\n * @param pointerX Position of the user's pointer along the x axis.\n * @param pointerY Position of the user's pointer along the y axis.\n */\nfunction getElementScrollDirections(element, clientRect, pointerX, pointerY) {\n const computedVertical = getVerticalScrollDirection(clientRect, pointerY);\n const computedHorizontal = getHorizontalScrollDirection(clientRect, pointerX);\n let verticalScrollDirection = 0 /* NONE */;\n let horizontalScrollDirection = 0 /* NONE */;\n // Note that we here we do some extra checks for whether the element is actually scrollable in\n // a certain direction and we only assign the scroll direction if it is. We do this so that we\n // can allow other elements to be scrolled, if the current element can't be scrolled anymore.\n // This allows us to handle cases where the scroll regions of two scrollable elements overlap.\n if (computedVertical) {\n const scrollTop = element.scrollTop;\n if (computedVertical === 1 /* UP */) {\n if (scrollTop > 0) {\n verticalScrollDirection = 1 /* UP */;\n }\n }\n else if (element.scrollHeight - scrollTop > element.clientHeight) {\n verticalScrollDirection = 2 /* DOWN */;\n }\n }\n if (computedHorizontal) {\n const scrollLeft = element.scrollLeft;\n if (computedHorizontal === 1 /* LEFT */) {\n if (scrollLeft > 0) {\n horizontalScrollDirection = 1 /* LEFT */;\n }\n }\n else if (element.scrollWidth - scrollLeft > element.clientWidth) {\n horizontalScrollDirection = 2 /* RIGHT */;\n }\n }\n return [verticalScrollDirection, horizontalScrollDirection];\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Event options that can be used to bind an active, capturing event. */\nconst activeCapturingEventOptions = normalizePassiveListenerOptions({\n passive: false,\n capture: true,\n});\n/**\n * Service that keeps track of all the drag item and drop container\n * instances, and manages global event listeners on the `document`.\n * @docs-private\n */\n// Note: this class is generic, rather than referencing CdkDrag and CdkDropList directly, in order\n// to avoid circular imports. If we were to reference them here, importing the registry into the\n// classes that are registering themselves will introduce a circular import.\nclass DragDropRegistry {\n constructor(_ngZone, _document) {\n this._ngZone = _ngZone;\n /** Registered drop container instances. */\n this._dropInstances = new Set();\n /** Registered drag item instances. */\n this._dragInstances = new Set();\n /** Drag item instances that are currently being dragged. */\n this._activeDragInstances = [];\n /** Keeps track of the event listeners that we've bound to the `document`. */\n this._globalListeners = new Map();\n /**\n * Predicate function to check if an item is being dragged. Moved out into a property,\n * because it'll be called a lot and we don't want to create a new function every time.\n */\n this._draggingPredicate = (item) => item.isDragging();\n /**\n * Emits the `touchmove` or `mousemove` events that are dispatched\n * while the user is dragging a drag item instance.\n */\n this.pointerMove = new Subject();\n /**\n * Emits the `touchend` or `mouseup` events that are dispatched\n * while the user is dragging a drag item instance.\n */\n this.pointerUp = new Subject();\n /**\n * Emits when the viewport has been scrolled while the user is dragging an item.\n * @deprecated To be turned into a private member. Use the `scrolled` method instead.\n * @breaking-change 13.0.0\n */\n this.scroll = new Subject();\n /**\n * Event listener that will prevent the default browser action while the user is dragging.\n * @param event Event whose default action should be prevented.\n */\n this._preventDefaultWhileDragging = (event) => {\n if (this._activeDragInstances.length > 0) {\n event.preventDefault();\n }\n };\n /** Event listener for `touchmove` that is bound even if no dragging is happening. */\n this._persistentTouchmoveListener = (event) => {\n if (this._activeDragInstances.length > 0) {\n // Note that we only want to prevent the default action after dragging has actually started.\n // Usually this is the same time at which the item is added to the `_activeDragInstances`,\n // but it could be pushed back if the user has set up a drag delay or threshold.\n if (this._activeDragInstances.some(this._draggingPredicate)) {\n event.preventDefault();\n }\n this.pointerMove.next(event);\n }\n };\n this._document = _document;\n }\n /** Adds a drop container to the registry. */\n registerDropContainer(drop) {\n if (!this._dropInstances.has(drop)) {\n this._dropInstances.add(drop);\n }\n }\n /** Adds a drag item instance to the registry. */\n registerDragItem(drag) {\n this._dragInstances.add(drag);\n // The `touchmove` event gets bound once, ahead of time, because WebKit\n // won't preventDefault on a dynamically-added `touchmove` listener.\n // See https://bugs.webkit.org/show_bug.cgi?id=184250.\n if (this._dragInstances.size === 1) {\n this._ngZone.runOutsideAngular(() => {\n // The event handler has to be explicitly active,\n // because newer browsers make it passive by default.\n this._document.addEventListener('touchmove', this._persistentTouchmoveListener, activeCapturingEventOptions);\n });\n }\n }\n /** Removes a drop container from the registry. */\n removeDropContainer(drop) {\n this._dropInstances.delete(drop);\n }\n /** Removes a drag item instance from the registry. */\n removeDragItem(drag) {\n this._dragInstances.delete(drag);\n this.stopDragging(drag);\n if (this._dragInstances.size === 0) {\n this._document.removeEventListener('touchmove', this._persistentTouchmoveListener, activeCapturingEventOptions);\n }\n }\n /**\n * Starts the dragging sequence for a drag instance.\n * @param drag Drag instance which is being dragged.\n * @param event Event that initiated the dragging.\n */\n startDragging(drag, event) {\n // Do not process the same drag twice to avoid memory leaks and redundant listeners\n if (this._activeDragInstances.indexOf(drag) > -1) {\n return;\n }\n this._activeDragInstances.push(drag);\n if (this._activeDragInstances.length === 1) {\n const isTouchEvent = event.type.startsWith('touch');\n // We explicitly bind __active__ listeners here, because newer browsers will default to\n // passive ones for `mousemove` and `touchmove`. The events need to be active, because we\n // use `preventDefault` to prevent the page from scrolling while the user is dragging.\n this._globalListeners\n .set(isTouchEvent ? 'touchend' : 'mouseup', {\n handler: (e) => this.pointerUp.next(e),\n options: true,\n })\n .set('scroll', {\n handler: (e) => this.scroll.next(e),\n // Use capturing so that we pick up scroll changes in any scrollable nodes that aren't\n // the document. See https://github.com/angular/components/issues/17144.\n options: true,\n })\n // Preventing the default action on `mousemove` isn't enough to disable text selection\n // on Safari so we need to prevent the selection event as well. Alternatively this can\n // be done by setting `user-select: none` on the `body`, however it has causes a style\n // recalculation which can be expensive on pages with a lot of elements.\n .set('selectstart', {\n handler: this._preventDefaultWhileDragging,\n options: activeCapturingEventOptions,\n });\n // We don't have to bind a move event for touch drag sequences, because\n // we already have a persistent global one bound from `registerDragItem`.\n if (!isTouchEvent) {\n this._globalListeners.set('mousemove', {\n handler: (e) => this.pointerMove.next(e),\n options: activeCapturingEventOptions,\n });\n }\n this._ngZone.runOutsideAngular(() => {\n this._globalListeners.forEach((config, name) => {\n this._document.addEventListener(name, config.handler, config.options);\n });\n });\n }\n }\n /** Stops dragging a drag item instance. */\n stopDragging(drag) {\n const index = this._activeDragInstances.indexOf(drag);\n if (index > -1) {\n this._activeDragInstances.splice(index, 1);\n if (this._activeDragInstances.length === 0) {\n this._clearGlobalListeners();\n }\n }\n }\n /** Gets whether a drag item instance is currently being dragged. */\n isDragging(drag) {\n return this._activeDragInstances.indexOf(drag) > -1;\n }\n /**\n * Gets a stream that will emit when any element on the page is scrolled while an item is being\n * dragged.\n * @param shadowRoot Optional shadow root that the current dragging sequence started from.\n * Top-level listeners won't pick up events coming from the shadow DOM so this parameter can\n * be used to include an additional top-level listener at the shadow root level.\n */\n scrolled(shadowRoot) {\n const streams = [this.scroll];\n if (shadowRoot && shadowRoot !== this._document) {\n // Note that this is basically the same as `fromEvent` from rjxs, but we do it ourselves,\n // because we want to guarantee that the event is bound outside of the `NgZone`. With\n // `fromEvent` it'll only happen if the subscription is outside the `NgZone`.\n streams.push(new Observable((observer) => {\n return this._ngZone.runOutsideAngular(() => {\n const eventOptions = true;\n const callback = (event) => {\n if (this._activeDragInstances.length) {\n observer.next(event);\n }\n };\n shadowRoot.addEventListener('scroll', callback, eventOptions);\n return () => {\n shadowRoot.removeEventListener('scroll', callback, eventOptions);\n };\n });\n }));\n }\n return merge(...streams);\n }\n ngOnDestroy() {\n this._dragInstances.forEach(instance => this.removeDragItem(instance));\n this._dropInstances.forEach(instance => this.removeDropContainer(instance));\n this._clearGlobalListeners();\n this.pointerMove.complete();\n this.pointerUp.complete();\n }\n /** Clears out the global event listeners from the `document`. */\n _clearGlobalListeners() {\n this._globalListeners.forEach((config, name) => {\n this._document.removeEventListener(name, config.handler, config.options);\n });\n this._globalListeners.clear();\n }\n}\nDragDropRegistry.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DragDropRegistry, deps: [{ token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nDragDropRegistry.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DragDropRegistry, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DragDropRegistry, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Default configuration to be used when creating a `DragRef`. */\nconst DEFAULT_CONFIG = {\n dragStartThreshold: 5,\n pointerDirectionChangeThreshold: 5,\n};\n/**\n * Service that allows for drag-and-drop functionality to be attached to DOM elements.\n */\nclass DragDrop {\n constructor(_document, _ngZone, _viewportRuler, _dragDropRegistry) {\n this._document = _document;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._dragDropRegistry = _dragDropRegistry;\n }\n /**\n * Turns an element into a draggable item.\n * @param element Element to which to attach the dragging functionality.\n * @param config Object used to configure the dragging behavior.\n */\n createDrag(element, config = DEFAULT_CONFIG) {\n return new DragRef(element, config, this._document, this._ngZone, this._viewportRuler, this._dragDropRegistry);\n }\n /**\n * Turns an element into a drop list.\n * @param element Element to which to attach the drop list functionality.\n */\n createDropList(element) {\n return new DropListRef(element, this._dragDropRegistry, this._document, this._ngZone, this._viewportRuler);\n }\n}\nDragDrop.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DragDrop, deps: [{ token: DOCUMENT }, { token: i0.NgZone }, { token: i1.ViewportRuler }, { token: DragDropRegistry }], target: i0.ɵɵFactoryTarget.Injectable });\nDragDrop.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DragDrop, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DragDrop, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.NgZone }, { type: i1.ViewportRuler }, { type: DragDropRegistry }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used for a `CdkDrag` to provide itself as a parent to the\n * drag-specific child directive (`CdkDragHandle`, `CdkDragPreview` etc.). Used primarily\n * to avoid circular imports.\n * @docs-private\n */\nconst CDK_DRAG_PARENT = new InjectionToken('CDK_DRAG_PARENT');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `CdkDropListGroup`. It serves as\n * alternative token to the actual `CdkDropListGroup` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DROP_LIST_GROUP = new InjectionToken('CdkDropListGroup');\n/**\n * Declaratively connects sibling `cdkDropList` instances together. All of the `cdkDropList`\n * elements that are placed inside a `cdkDropListGroup` will be connected to each other\n * automatically. Can be used as an alternative to the `cdkDropListConnectedTo` input\n * from `cdkDropList`.\n */\nclass CdkDropListGroup {\n constructor() {\n /** Drop lists registered inside the group. */\n this._items = new Set();\n this._disabled = false;\n }\n /** Whether starting a dragging sequence from inside this group is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n }\n ngOnDestroy() {\n this._items.clear();\n }\n}\nCdkDropListGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkDropListGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCdkDropListGroup.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkDropListGroup, selector: \"[cdkDropListGroup]\", inputs: { disabled: [\"cdkDropListGroupDisabled\", \"disabled\"] }, providers: [{ provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup }], exportAs: [\"cdkDropListGroup\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkDropListGroup, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDropListGroup]',\n exportAs: 'cdkDropListGroup',\n providers: [{ provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup }],\n }]\n }], propDecorators: { disabled: [{\n type: Input,\n args: ['cdkDropListGroupDisabled']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to configure the\n * behavior of the drag&drop-related components.\n */\nconst CDK_DRAG_CONFIG = new InjectionToken('CDK_DRAG_CONFIG');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Asserts that a particular node is an element.\n * @param node Node to be checked.\n * @param name Name to attach to the error message.\n */\nfunction assertElementNode(node, name) {\n if (node.nodeType !== 1) {\n throw Error(`${name} must be attached to an element node. ` + `Currently attached to \"${node.nodeName}\".`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Counter used to generate unique ids for drop zones. */\nlet _uniqueIdCounter = 0;\n/**\n * Injection token that can be used to reference instances of `CdkDropList`. It serves as\n * alternative token to the actual `CdkDropList` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DROP_LIST = new InjectionToken('CdkDropList');\n/** Container that wraps a set of draggable items. */\nclass CdkDropList {\n constructor(\n /** Element that the drop list is attached to. */\n element, dragDrop, _changeDetectorRef, _scrollDispatcher, _dir, _group, config) {\n this.element = element;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollDispatcher = _scrollDispatcher;\n this._dir = _dir;\n this._group = _group;\n /** Emits when the list has been destroyed. */\n this._destroyed = new Subject();\n /**\n * Other draggable containers that this container is connected to and into which the\n * container's items can be transferred. Can either be references to other drop containers,\n * or their unique IDs.\n */\n this.connectedTo = [];\n /**\n * Unique ID for the drop zone. Can be used as a reference\n * in the `connectedTo` of another `CdkDropList`.\n */\n this.id = `cdk-drop-list-${_uniqueIdCounter++}`;\n /**\n * Function that is used to determine whether an item\n * is allowed to be moved into a drop container.\n */\n this.enterPredicate = () => true;\n /** Functions that is used to determine whether an item can be sorted into a particular index. */\n this.sortPredicate = () => true;\n /** Emits when the user drops an item inside the container. */\n this.dropped = new EventEmitter();\n /**\n * Emits when the user has moved a new drag item into this container.\n */\n this.entered = new EventEmitter();\n /**\n * Emits when the user removes an item from the container\n * by dragging it into another container.\n */\n this.exited = new EventEmitter();\n /** Emits as the user is swapping items while actively dragging. */\n this.sorted = new EventEmitter();\n /**\n * Keeps track of the items that are registered with this container. Historically we used to\n * do this with a `ContentChildren` query, however queries don't handle transplanted views very\n * well which means that we can't handle cases like dragging the headers of a `mat-table`\n * correctly. What we do instead is to have the items register themselves with the container\n * and then we sort them based on their position in the DOM.\n */\n this._unsortedItems = new Set();\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n assertElementNode(element.nativeElement, 'cdkDropList');\n }\n this._dropListRef = dragDrop.createDropList(element);\n this._dropListRef.data = this;\n if (config) {\n this._assignDefaults(config);\n }\n this._dropListRef.enterPredicate = (drag, drop) => {\n return this.enterPredicate(drag.data, drop.data);\n };\n this._dropListRef.sortPredicate = (index, drag, drop) => {\n return this.sortPredicate(index, drag.data, drop.data);\n };\n this._setupInputSyncSubscription(this._dropListRef);\n this._handleEvents(this._dropListRef);\n CdkDropList._dropLists.push(this);\n if (_group) {\n _group._items.add(this);\n }\n }\n /** Whether starting a dragging sequence from this container is disabled. */\n get disabled() {\n return this._disabled || (!!this._group && this._group.disabled);\n }\n set disabled(value) {\n // Usually we sync the directive and ref state right before dragging starts, in order to have\n // a single point of failure and to avoid having to use setters for everything. `disabled` is\n // a special case, because it can prevent the `beforeStarted` event from firing, which can lock\n // the user in a disabled state, so we also need to sync it as it's being set.\n this._dropListRef.disabled = this._disabled = coerceBooleanProperty(value);\n }\n /** Registers an items with the drop list. */\n addItem(item) {\n this._unsortedItems.add(item);\n if (this._dropListRef.isDragging()) {\n this._syncItemsWithRef();\n }\n }\n /** Removes an item from the drop list. */\n removeItem(item) {\n this._unsortedItems.delete(item);\n if (this._dropListRef.isDragging()) {\n this._syncItemsWithRef();\n }\n }\n /** Gets the registered items in the list, sorted by their position in the DOM. */\n getSortedItems() {\n return Array.from(this._unsortedItems).sort((a, b) => {\n const documentPosition = a._dragRef\n .getVisibleElement()\n .compareDocumentPosition(b._dragRef.getVisibleElement());\n // `compareDocumentPosition` returns a bitmask so we have to use a bitwise operator.\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // tslint:disable-next-line:no-bitwise\n return documentPosition & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n });\n }\n ngOnDestroy() {\n const index = CdkDropList._dropLists.indexOf(this);\n if (index > -1) {\n CdkDropList._dropLists.splice(index, 1);\n }\n if (this._group) {\n this._group._items.delete(this);\n }\n this._unsortedItems.clear();\n this._dropListRef.dispose();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Syncs the inputs of the CdkDropList with the options of the underlying DropListRef. */\n _setupInputSyncSubscription(ref) {\n if (this._dir) {\n this._dir.change\n .pipe(startWith(this._dir.value), takeUntil(this._destroyed))\n .subscribe(value => ref.withDirection(value));\n }\n ref.beforeStarted.subscribe(() => {\n const siblings = coerceArray(this.connectedTo).map(drop => {\n if (typeof drop === 'string') {\n const correspondingDropList = CdkDropList._dropLists.find(list => list.id === drop);\n if (!correspondingDropList && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n console.warn(`CdkDropList could not find connected drop list with id \"${drop}\"`);\n }\n return correspondingDropList;\n }\n return drop;\n });\n if (this._group) {\n this._group._items.forEach(drop => {\n if (siblings.indexOf(drop) === -1) {\n siblings.push(drop);\n }\n });\n }\n // Note that we resolve the scrollable parents here so that we delay the resolution\n // as long as possible, ensuring that the element is in its final place in the DOM.\n if (!this._scrollableParentsResolved) {\n const scrollableParents = this._scrollDispatcher\n .getAncestorScrollContainers(this.element)\n .map(scrollable => scrollable.getElementRef().nativeElement);\n this._dropListRef.withScrollableParents(scrollableParents);\n // Only do this once since it involves traversing the DOM and the parents\n // shouldn't be able to change without the drop list being destroyed.\n this._scrollableParentsResolved = true;\n }\n ref.disabled = this.disabled;\n ref.lockAxis = this.lockAxis;\n ref.sortingDisabled = coerceBooleanProperty(this.sortingDisabled);\n ref.autoScrollDisabled = coerceBooleanProperty(this.autoScrollDisabled);\n ref.autoScrollStep = coerceNumberProperty(this.autoScrollStep, 2);\n ref\n .connectedTo(siblings.filter(drop => drop && drop !== this).map(list => list._dropListRef))\n .withOrientation(this.orientation);\n });\n }\n /** Handles events from the underlying DropListRef. */\n _handleEvents(ref) {\n ref.beforeStarted.subscribe(() => {\n this._syncItemsWithRef();\n this._changeDetectorRef.markForCheck();\n });\n ref.entered.subscribe(event => {\n this.entered.emit({\n container: this,\n item: event.item.data,\n currentIndex: event.currentIndex,\n });\n });\n ref.exited.subscribe(event => {\n this.exited.emit({\n container: this,\n item: event.item.data,\n });\n this._changeDetectorRef.markForCheck();\n });\n ref.sorted.subscribe(event => {\n this.sorted.emit({\n previousIndex: event.previousIndex,\n currentIndex: event.currentIndex,\n container: this,\n item: event.item.data,\n });\n });\n ref.dropped.subscribe(event => {\n this.dropped.emit({\n previousIndex: event.previousIndex,\n currentIndex: event.currentIndex,\n previousContainer: event.previousContainer.data,\n container: event.container.data,\n item: event.item.data,\n isPointerOverContainer: event.isPointerOverContainer,\n distance: event.distance,\n dropPoint: event.dropPoint,\n });\n // Mark for check since all of these events run outside of change\n // detection and we're not guaranteed for something else to have triggered it.\n this._changeDetectorRef.markForCheck();\n });\n }\n /** Assigns the default input values based on a provided config object. */\n _assignDefaults(config) {\n const { lockAxis, draggingDisabled, sortingDisabled, listAutoScrollDisabled, listOrientation } = config;\n this.disabled = draggingDisabled == null ? false : draggingDisabled;\n this.sortingDisabled = sortingDisabled == null ? false : sortingDisabled;\n this.autoScrollDisabled = listAutoScrollDisabled == null ? false : listAutoScrollDisabled;\n this.orientation = listOrientation || 'vertical';\n if (lockAxis) {\n this.lockAxis = lockAxis;\n }\n }\n /** Syncs up the registered drag items with underlying drop list ref. */\n _syncItemsWithRef() {\n this._dropListRef.withItems(this.getSortedItems().map(item => item._dragRef));\n }\n}\n/** Keeps track of the drop lists that are currently on the page. */\nCdkDropList._dropLists = [];\nCdkDropList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkDropList, deps: [{ token: i0.ElementRef }, { token: DragDrop }, { token: i0.ChangeDetectorRef }, { token: i1.ScrollDispatcher }, { token: i3.Directionality, optional: true }, { token: CDK_DROP_LIST_GROUP, optional: true, skipSelf: true }, { token: CDK_DRAG_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkDropList.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkDropList, selector: \"[cdkDropList], cdk-drop-list\", inputs: { connectedTo: [\"cdkDropListConnectedTo\", \"connectedTo\"], data: [\"cdkDropListData\", \"data\"], orientation: [\"cdkDropListOrientation\", \"orientation\"], id: \"id\", lockAxis: [\"cdkDropListLockAxis\", \"lockAxis\"], disabled: [\"cdkDropListDisabled\", \"disabled\"], sortingDisabled: [\"cdkDropListSortingDisabled\", \"sortingDisabled\"], enterPredicate: [\"cdkDropListEnterPredicate\", \"enterPredicate\"], sortPredicate: [\"cdkDropListSortPredicate\", \"sortPredicate\"], autoScrollDisabled: [\"cdkDropListAutoScrollDisabled\", \"autoScrollDisabled\"], autoScrollStep: [\"cdkDropListAutoScrollStep\", \"autoScrollStep\"] }, outputs: { dropped: \"cdkDropListDropped\", entered: \"cdkDropListEntered\", exited: \"cdkDropListExited\", sorted: \"cdkDropListSorted\" }, host: { properties: { \"attr.id\": \"id\", \"class.cdk-drop-list-disabled\": \"disabled\", \"class.cdk-drop-list-dragging\": \"_dropListRef.isDragging()\", \"class.cdk-drop-list-receiving\": \"_dropListRef.isReceiving()\" }, classAttribute: \"cdk-drop-list\" }, providers: [\n // Prevent child drop lists from picking up the same group as their parent.\n { provide: CDK_DROP_LIST_GROUP, useValue: undefined },\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\n ], exportAs: [\"cdkDropList\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkDropList, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDropList], cdk-drop-list',\n exportAs: 'cdkDropList',\n providers: [\n // Prevent child drop lists from picking up the same group as their parent.\n { provide: CDK_DROP_LIST_GROUP, useValue: undefined },\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\n ],\n host: {\n 'class': 'cdk-drop-list',\n '[attr.id]': 'id',\n '[class.cdk-drop-list-disabled]': 'disabled',\n '[class.cdk-drop-list-dragging]': '_dropListRef.isDragging()',\n '[class.cdk-drop-list-receiving]': '_dropListRef.isReceiving()',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: DragDrop }, { type: i0.ChangeDetectorRef }, { type: i1.ScrollDispatcher }, { type: i3.Directionality, decorators: [{\n type: Optional\n }] }, { type: CdkDropListGroup, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_DROP_LIST_GROUP]\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_DRAG_CONFIG]\n }] }]; }, propDecorators: { connectedTo: [{\n type: Input,\n args: ['cdkDropListConnectedTo']\n }], data: [{\n type: Input,\n args: ['cdkDropListData']\n }], orientation: [{\n type: Input,\n args: ['cdkDropListOrientation']\n }], id: [{\n type: Input\n }], lockAxis: [{\n type: Input,\n args: ['cdkDropListLockAxis']\n }], disabled: [{\n type: Input,\n args: ['cdkDropListDisabled']\n }], sortingDisabled: [{\n type: Input,\n args: ['cdkDropListSortingDisabled']\n }], enterPredicate: [{\n type: Input,\n args: ['cdkDropListEnterPredicate']\n }], sortPredicate: [{\n type: Input,\n args: ['cdkDropListSortPredicate']\n }], autoScrollDisabled: [{\n type: Input,\n args: ['cdkDropListAutoScrollDisabled']\n }], autoScrollStep: [{\n type: Input,\n args: ['cdkDropListAutoScrollStep']\n }], dropped: [{\n type: Output,\n args: ['cdkDropListDropped']\n }], entered: [{\n type: Output,\n args: ['cdkDropListEntered']\n }], exited: [{\n type: Output,\n args: ['cdkDropListExited']\n }], sorted: [{\n type: Output,\n args: ['cdkDropListSorted']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `CdkDragHandle`. It serves as\n * alternative token to the actual `CdkDragHandle` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_HANDLE = new InjectionToken('CdkDragHandle');\n/** Handle that can be used to drag a CdkDrag instance. */\nclass CdkDragHandle {\n constructor(element, parentDrag) {\n this.element = element;\n /** Emits when the state of the handle has changed. */\n this._stateChanges = new Subject();\n this._disabled = false;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n assertElementNode(element.nativeElement, 'cdkDragHandle');\n }\n this._parentDrag = parentDrag;\n }\n /** Whether starting to drag through this handle is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._stateChanges.next(this);\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n}\nCdkDragHandle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkDragHandle, deps: [{ token: i0.ElementRef }, { token: CDK_DRAG_PARENT, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkDragHandle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkDragHandle, selector: \"[cdkDragHandle]\", inputs: { disabled: [\"cdkDragHandleDisabled\", \"disabled\"] }, host: { classAttribute: \"cdk-drag-handle\" }, providers: [{ provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkDragHandle, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDragHandle]',\n host: {\n 'class': 'cdk-drag-handle',\n },\n providers: [{ provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle }],\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_DRAG_PARENT]\n }, {\n type: Optional\n }, {\n type: SkipSelf\n }] }]; }, propDecorators: { disabled: [{\n type: Input,\n args: ['cdkDragHandleDisabled']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `CdkDragPlaceholder`. It serves as\n * alternative token to the actual `CdkDragPlaceholder` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_PLACEHOLDER = new InjectionToken('CdkDragPlaceholder');\n/**\n * Element that will be used as a template for the placeholder of a CdkDrag when\n * it is being dragged. The placeholder is displayed in place of the element being dragged.\n */\nclass CdkDragPlaceholder {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nCdkDragPlaceholder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkDragPlaceholder, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkDragPlaceholder.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkDragPlaceholder, selector: \"ng-template[cdkDragPlaceholder]\", inputs: { data: \"data\" }, providers: [{ provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkDragPlaceholder, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkDragPlaceholder]',\n providers: [{ provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder }],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { data: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Injection token that can be used to reference instances of `CdkDragPreview`. It serves as\n * alternative token to the actual `CdkDragPreview` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_PREVIEW = new InjectionToken('CdkDragPreview');\n/**\n * Element that will be used as a template for the preview\n * of a CdkDrag when it is being dragged.\n */\nclass CdkDragPreview {\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._matchSize = false;\n }\n /** Whether the preview should preserve the same size as the item that is being dragged. */\n get matchSize() {\n return this._matchSize;\n }\n set matchSize(value) {\n this._matchSize = coerceBooleanProperty(value);\n }\n}\nCdkDragPreview.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkDragPreview, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkDragPreview.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkDragPreview, selector: \"ng-template[cdkDragPreview]\", inputs: { data: \"data\", matchSize: \"matchSize\" }, providers: [{ provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkDragPreview, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkDragPreview]',\n providers: [{ provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview }],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; }, propDecorators: { data: [{\n type: Input\n }], matchSize: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst DRAG_HOST_CLASS = 'cdk-drag';\n/** Element that can be moved inside a CdkDropList container. */\nclass CdkDrag {\n constructor(\n /** Element that the draggable is attached to. */\n element, \n /** Droppable container that the draggable is a part of. */\n dropContainer, \n /**\n * @deprecated `_document` parameter no longer being used and will be removed.\n * @breaking-change 12.0.0\n */\n _document, _ngZone, _viewContainerRef, config, _dir, dragDrop, _changeDetectorRef, _selfHandle, _parentDrag) {\n this.element = element;\n this.dropContainer = dropContainer;\n this._ngZone = _ngZone;\n this._viewContainerRef = _viewContainerRef;\n this._dir = _dir;\n this._changeDetectorRef = _changeDetectorRef;\n this._selfHandle = _selfHandle;\n this._parentDrag = _parentDrag;\n this._destroyed = new Subject();\n /** Emits when the user starts dragging the item. */\n this.started = new EventEmitter();\n /** Emits when the user has released a drag item, before any animations have started. */\n this.released = new EventEmitter();\n /** Emits when the user stops dragging an item in the container. */\n this.ended = new EventEmitter();\n /** Emits when the user has moved the item into a new container. */\n this.entered = new EventEmitter();\n /** Emits when the user removes the item its container by dragging it into another container. */\n this.exited = new EventEmitter();\n /** Emits when the user drops the item inside a container. */\n this.dropped = new EventEmitter();\n /**\n * Emits as the user is dragging the item. Use with caution,\n * because this event will fire for every pixel that the user has dragged.\n */\n this.moved = new Observable((observer) => {\n const subscription = this._dragRef.moved\n .pipe(map(movedEvent => ({\n source: this,\n pointerPosition: movedEvent.pointerPosition,\n event: movedEvent.event,\n delta: movedEvent.delta,\n distance: movedEvent.distance,\n })))\n .subscribe(observer);\n return () => {\n subscription.unsubscribe();\n };\n });\n this._dragRef = dragDrop.createDrag(element, {\n dragStartThreshold: config && config.dragStartThreshold != null ? config.dragStartThreshold : 5,\n pointerDirectionChangeThreshold: config && config.pointerDirectionChangeThreshold != null\n ? config.pointerDirectionChangeThreshold\n : 5,\n zIndex: config?.zIndex,\n });\n this._dragRef.data = this;\n // We have to keep track of the drag instances in order to be able to match an element to\n // a drag instance. We can't go through the global registry of `DragRef`, because the root\n // element could be different.\n CdkDrag._dragInstances.push(this);\n if (config) {\n this._assignDefaults(config);\n }\n // Note that usually the container is assigned when the drop list is picks up the item, but in\n // some cases (mainly transplanted views with OnPush, see #18341) we may end up in a situation\n // where there are no items on the first change detection pass, but the items get picked up as\n // soon as the user triggers another pass by dragging. This is a problem, because the item would\n // have to switch from standalone mode to drag mode in the middle of the dragging sequence which\n // is too late since the two modes save different kinds of information. We work around it by\n // assigning the drop container both from here and the list.\n if (dropContainer) {\n this._dragRef._withDropContainer(dropContainer._dropListRef);\n dropContainer.addItem(this);\n }\n this._syncInputs(this._dragRef);\n this._handleEvents(this._dragRef);\n }\n /** Whether starting to drag this element is disabled. */\n get disabled() {\n return this._disabled || (this.dropContainer && this.dropContainer.disabled);\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._dragRef.disabled = this._disabled;\n }\n /**\n * Returns the element that is being used as a placeholder\n * while the current element is being dragged.\n */\n getPlaceholderElement() {\n return this._dragRef.getPlaceholderElement();\n }\n /** Returns the root draggable element. */\n getRootElement() {\n return this._dragRef.getRootElement();\n }\n /** Resets a standalone drag item to its initial position. */\n reset() {\n this._dragRef.reset();\n }\n /**\n * Gets the pixel coordinates of the draggable outside of a drop container.\n */\n getFreeDragPosition() {\n return this._dragRef.getFreeDragPosition();\n }\n ngAfterViewInit() {\n // Normally this isn't in the zone, but it can cause major performance regressions for apps\n // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.\n this._ngZone.runOutsideAngular(() => {\n // We need to wait for the zone to stabilize, in order for the reference\n // element to be in the proper place in the DOM. This is mostly relevant\n // for draggable elements inside portals since they get stamped out in\n // their original DOM position and then they get transferred to the portal.\n this._ngZone.onStable.pipe(take(1), takeUntil(this._destroyed)).subscribe(() => {\n this._updateRootElement();\n this._setupHandlesListener();\n if (this.freeDragPosition) {\n this._dragRef.setFreeDragPosition(this.freeDragPosition);\n }\n });\n });\n }\n ngOnChanges(changes) {\n const rootSelectorChange = changes['rootElementSelector'];\n const positionChange = changes['freeDragPosition'];\n // We don't have to react to the first change since it's being\n // handled in `ngAfterViewInit` where it needs to be deferred.\n if (rootSelectorChange && !rootSelectorChange.firstChange) {\n this._updateRootElement();\n }\n // Skip the first change since it's being handled in `ngAfterViewInit`.\n if (positionChange && !positionChange.firstChange && this.freeDragPosition) {\n this._dragRef.setFreeDragPosition(this.freeDragPosition);\n }\n }\n ngOnDestroy() {\n if (this.dropContainer) {\n this.dropContainer.removeItem(this);\n }\n const index = CdkDrag._dragInstances.indexOf(this);\n if (index > -1) {\n CdkDrag._dragInstances.splice(index, 1);\n }\n // Unnecessary in most cases, but used to avoid extra change detections with `zone-paths-rxjs`.\n this._ngZone.runOutsideAngular(() => {\n this._destroyed.next();\n this._destroyed.complete();\n this._dragRef.dispose();\n });\n }\n /** Syncs the root element with the `DragRef`. */\n _updateRootElement() {\n const element = this.element.nativeElement;\n let rootElement = element;\n if (this.rootElementSelector) {\n rootElement =\n element.closest !== undefined\n ? element.closest(this.rootElementSelector)\n : // Comment tag doesn't have closest method, so use parent's one.\n element.parentElement?.closest(this.rootElementSelector);\n }\n if (rootElement && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n assertElementNode(rootElement, 'cdkDrag');\n }\n this._dragRef.withRootElement(rootElement || element);\n }\n /** Gets the boundary element, based on the `boundaryElement` value. */\n _getBoundaryElement() {\n const boundary = this.boundaryElement;\n if (!boundary) {\n return null;\n }\n if (typeof boundary === 'string') {\n return this.element.nativeElement.closest(boundary);\n }\n return coerceElement(boundary);\n }\n /** Syncs the inputs of the CdkDrag with the options of the underlying DragRef. */\n _syncInputs(ref) {\n ref.beforeStarted.subscribe(() => {\n if (!ref.isDragging()) {\n const dir = this._dir;\n const dragStartDelay = this.dragStartDelay;\n const placeholder = this._placeholderTemplate\n ? {\n template: this._placeholderTemplate.templateRef,\n context: this._placeholderTemplate.data,\n viewContainer: this._viewContainerRef,\n }\n : null;\n const preview = this._previewTemplate\n ? {\n template: this._previewTemplate.templateRef,\n context: this._previewTemplate.data,\n matchSize: this._previewTemplate.matchSize,\n viewContainer: this._viewContainerRef,\n }\n : null;\n ref.disabled = this.disabled;\n ref.lockAxis = this.lockAxis;\n ref.dragStartDelay =\n typeof dragStartDelay === 'object' && dragStartDelay\n ? dragStartDelay\n : coerceNumberProperty(dragStartDelay);\n ref.constrainPosition = this.constrainPosition;\n ref.previewClass = this.previewClass;\n ref\n .withBoundaryElement(this._getBoundaryElement())\n .withPlaceholderTemplate(placeholder)\n .withPreviewTemplate(preview)\n .withPreviewContainer(this.previewContainer || 'global');\n if (dir) {\n ref.withDirection(dir.value);\n }\n }\n });\n // This only needs to be resolved once.\n ref.beforeStarted.pipe(take(1)).subscribe(() => {\n // If we managed to resolve a parent through DI, use it.\n if (this._parentDrag) {\n ref.withParent(this._parentDrag._dragRef);\n return;\n }\n // Otherwise fall back to resolving the parent by looking up the DOM. This can happen if\n // the item was projected into another item by something like `ngTemplateOutlet`.\n let parent = this.element.nativeElement.parentElement;\n while (parent) {\n if (parent.classList.contains(DRAG_HOST_CLASS)) {\n ref.withParent(CdkDrag._dragInstances.find(drag => {\n return drag.element.nativeElement === parent;\n })?._dragRef || null);\n break;\n }\n parent = parent.parentElement;\n }\n });\n }\n /** Handles the events from the underlying `DragRef`. */\n _handleEvents(ref) {\n ref.started.subscribe(() => {\n this.started.emit({ source: this });\n // Since all of these events run outside of change detection,\n // we need to ensure that everything is marked correctly.\n this._changeDetectorRef.markForCheck();\n });\n ref.released.subscribe(() => {\n this.released.emit({ source: this });\n });\n ref.ended.subscribe(event => {\n this.ended.emit({\n source: this,\n distance: event.distance,\n dropPoint: event.dropPoint,\n });\n // Since all of these events run outside of change detection,\n // we need to ensure that everything is marked correctly.\n this._changeDetectorRef.markForCheck();\n });\n ref.entered.subscribe(event => {\n this.entered.emit({\n container: event.container.data,\n item: this,\n currentIndex: event.currentIndex,\n });\n });\n ref.exited.subscribe(event => {\n this.exited.emit({\n container: event.container.data,\n item: this,\n });\n });\n ref.dropped.subscribe(event => {\n this.dropped.emit({\n previousIndex: event.previousIndex,\n currentIndex: event.currentIndex,\n previousContainer: event.previousContainer.data,\n container: event.container.data,\n isPointerOverContainer: event.isPointerOverContainer,\n item: this,\n distance: event.distance,\n dropPoint: event.dropPoint,\n });\n });\n }\n /** Assigns the default input values based on a provided config object. */\n _assignDefaults(config) {\n const { lockAxis, dragStartDelay, constrainPosition, previewClass, boundaryElement, draggingDisabled, rootElementSelector, previewContainer, } = config;\n this.disabled = draggingDisabled == null ? false : draggingDisabled;\n this.dragStartDelay = dragStartDelay || 0;\n if (lockAxis) {\n this.lockAxis = lockAxis;\n }\n if (constrainPosition) {\n this.constrainPosition = constrainPosition;\n }\n if (previewClass) {\n this.previewClass = previewClass;\n }\n if (boundaryElement) {\n this.boundaryElement = boundaryElement;\n }\n if (rootElementSelector) {\n this.rootElementSelector = rootElementSelector;\n }\n if (previewContainer) {\n this.previewContainer = previewContainer;\n }\n }\n /** Sets up the listener that syncs the handles with the drag ref. */\n _setupHandlesListener() {\n // Listen for any newly-added handles.\n this._handles.changes\n .pipe(startWith(this._handles), \n // Sync the new handles with the DragRef.\n tap((handles) => {\n const childHandleElements = handles\n .filter(handle => handle._parentDrag === this)\n .map(handle => handle.element);\n // Usually handles are only allowed to be a descendant of the drag element, but if\n // the consumer defined a different drag root, we should allow the drag element\n // itself to be a handle too.\n if (this._selfHandle && this.rootElementSelector) {\n childHandleElements.push(this.element);\n }\n this._dragRef.withHandles(childHandleElements);\n }), \n // Listen if the state of any of the handles changes.\n switchMap((handles) => {\n return merge(...handles.map(item => {\n return item._stateChanges.pipe(startWith(item));\n }));\n }), takeUntil(this._destroyed))\n .subscribe(handleInstance => {\n // Enabled/disable the handle that changed in the DragRef.\n const dragRef = this._dragRef;\n const handle = handleInstance.element.nativeElement;\n handleInstance.disabled ? dragRef.disableHandle(handle) : dragRef.enableHandle(handle);\n });\n }\n}\nCdkDrag._dragInstances = [];\nCdkDrag.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkDrag, deps: [{ token: i0.ElementRef }, { token: CDK_DROP_LIST, optional: true, skipSelf: true }, { token: DOCUMENT }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: CDK_DRAG_CONFIG, optional: true }, { token: i3.Directionality, optional: true }, { token: DragDrop }, { token: i0.ChangeDetectorRef }, { token: CDK_DRAG_HANDLE, optional: true, self: true }, { token: CDK_DRAG_PARENT, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkDrag.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkDrag, selector: \"[cdkDrag]\", inputs: { data: [\"cdkDragData\", \"data\"], lockAxis: [\"cdkDragLockAxis\", \"lockAxis\"], rootElementSelector: [\"cdkDragRootElement\", \"rootElementSelector\"], boundaryElement: [\"cdkDragBoundary\", \"boundaryElement\"], dragStartDelay: [\"cdkDragStartDelay\", \"dragStartDelay\"], freeDragPosition: [\"cdkDragFreeDragPosition\", \"freeDragPosition\"], disabled: [\"cdkDragDisabled\", \"disabled\"], constrainPosition: [\"cdkDragConstrainPosition\", \"constrainPosition\"], previewClass: [\"cdkDragPreviewClass\", \"previewClass\"], previewContainer: [\"cdkDragPreviewContainer\", \"previewContainer\"] }, outputs: { started: \"cdkDragStarted\", released: \"cdkDragReleased\", ended: \"cdkDragEnded\", entered: \"cdkDragEntered\", exited: \"cdkDragExited\", dropped: \"cdkDragDropped\", moved: \"cdkDragMoved\" }, host: { properties: { \"class.cdk-drag-disabled\": \"disabled\", \"class.cdk-drag-dragging\": \"_dragRef.isDragging()\" }, classAttribute: \"cdk-drag\" }, providers: [{ provide: CDK_DRAG_PARENT, useExisting: CdkDrag }], queries: [{ propertyName: \"_previewTemplate\", first: true, predicate: CDK_DRAG_PREVIEW, descendants: true }, { propertyName: \"_placeholderTemplate\", first: true, predicate: CDK_DRAG_PLACEHOLDER, descendants: true }, { propertyName: \"_handles\", predicate: CDK_DRAG_HANDLE, descendants: true }], exportAs: [\"cdkDrag\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkDrag, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDrag]',\n exportAs: 'cdkDrag',\n host: {\n 'class': DRAG_HOST_CLASS,\n '[class.cdk-drag-disabled]': 'disabled',\n '[class.cdk-drag-dragging]': '_dragRef.isDragging()',\n },\n providers: [{ provide: CDK_DRAG_PARENT, useExisting: CdkDrag }],\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_DROP_LIST]\n }, {\n type: Optional\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.NgZone }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_DRAG_CONFIG]\n }] }, { type: i3.Directionality, decorators: [{\n type: Optional\n }] }, { type: DragDrop }, { type: i0.ChangeDetectorRef }, { type: CdkDragHandle, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [CDK_DRAG_HANDLE]\n }] }, { type: CdkDrag, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [CDK_DRAG_PARENT]\n }] }]; }, propDecorators: { _handles: [{\n type: ContentChildren,\n args: [CDK_DRAG_HANDLE, { descendants: true }]\n }], _previewTemplate: [{\n type: ContentChild,\n args: [CDK_DRAG_PREVIEW]\n }], _placeholderTemplate: [{\n type: ContentChild,\n args: [CDK_DRAG_PLACEHOLDER]\n }], data: [{\n type: Input,\n args: ['cdkDragData']\n }], lockAxis: [{\n type: Input,\n args: ['cdkDragLockAxis']\n }], rootElementSelector: [{\n type: Input,\n args: ['cdkDragRootElement']\n }], boundaryElement: [{\n type: Input,\n args: ['cdkDragBoundary']\n }], dragStartDelay: [{\n type: Input,\n args: ['cdkDragStartDelay']\n }], freeDragPosition: [{\n type: Input,\n args: ['cdkDragFreeDragPosition']\n }], disabled: [{\n type: Input,\n args: ['cdkDragDisabled']\n }], constrainPosition: [{\n type: Input,\n args: ['cdkDragConstrainPosition']\n }], previewClass: [{\n type: Input,\n args: ['cdkDragPreviewClass']\n }], previewContainer: [{\n type: Input,\n args: ['cdkDragPreviewContainer']\n }], started: [{\n type: Output,\n args: ['cdkDragStarted']\n }], released: [{\n type: Output,\n args: ['cdkDragReleased']\n }], ended: [{\n type: Output,\n args: ['cdkDragEnded']\n }], entered: [{\n type: Output,\n args: ['cdkDragEntered']\n }], exited: [{\n type: Output,\n args: ['cdkDragExited']\n }], dropped: [{\n type: Output,\n args: ['cdkDragDropped']\n }], moved: [{\n type: Output,\n args: ['cdkDragMoved']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass DragDropModule {\n}\nDragDropModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DragDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nDragDropModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DragDropModule, declarations: [CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder], exports: [CdkScrollableModule,\n CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder] });\nDragDropModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DragDropModule, providers: [DragDrop], imports: [CdkScrollableModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DragDropModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [\n CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder,\n ],\n exports: [\n CdkScrollableModule,\n CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder,\n ],\n providers: [DragDrop],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CDK_DRAG_CONFIG, CDK_DRAG_HANDLE, CDK_DRAG_PARENT, CDK_DRAG_PLACEHOLDER, CDK_DRAG_PREVIEW, CDK_DROP_LIST, CDK_DROP_LIST_GROUP, CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDragPreview, CdkDropList, CdkDropListGroup, DragDrop, DragDropModule, DragDropRegistry, DragRef, DropListRef, copyArrayItem, moveItemInArray, transferArrayItem };\n","import { asyncScheduler } from '../scheduler/async';\nimport { timer } from './timer';\nexport function interval(period = 0, scheduler = asyncScheduler) {\n if (period < 0) {\n period = 0;\n }\n return timer(period, period, scheduler);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst MAC_ENTER = 3;\nconst BACKSPACE = 8;\nconst TAB = 9;\nconst NUM_CENTER = 12;\nconst ENTER = 13;\nconst SHIFT = 16;\nconst CONTROL = 17;\nconst ALT = 18;\nconst PAUSE = 19;\nconst CAPS_LOCK = 20;\nconst ESCAPE = 27;\nconst SPACE = 32;\nconst PAGE_UP = 33;\nconst PAGE_DOWN = 34;\nconst END = 35;\nconst HOME = 36;\nconst LEFT_ARROW = 37;\nconst UP_ARROW = 38;\nconst RIGHT_ARROW = 39;\nconst DOWN_ARROW = 40;\nconst PLUS_SIGN = 43;\nconst PRINT_SCREEN = 44;\nconst INSERT = 45;\nconst DELETE = 46;\nconst ZERO = 48;\nconst ONE = 49;\nconst TWO = 50;\nconst THREE = 51;\nconst FOUR = 52;\nconst FIVE = 53;\nconst SIX = 54;\nconst SEVEN = 55;\nconst EIGHT = 56;\nconst NINE = 57;\nconst FF_SEMICOLON = 59; // Firefox (Gecko) fires this for semicolon instead of 186\nconst FF_EQUALS = 61; // Firefox (Gecko) fires this for equals instead of 187\nconst QUESTION_MARK = 63;\nconst AT_SIGN = 64;\nconst A = 65;\nconst B = 66;\nconst C = 67;\nconst D = 68;\nconst E = 69;\nconst F = 70;\nconst G = 71;\nconst H = 72;\nconst I = 73;\nconst J = 74;\nconst K = 75;\nconst L = 76;\nconst M = 77;\nconst N = 78;\nconst O = 79;\nconst P = 80;\nconst Q = 81;\nconst R = 82;\nconst S = 83;\nconst T = 84;\nconst U = 85;\nconst V = 86;\nconst W = 87;\nconst X = 88;\nconst Y = 89;\nconst Z = 90;\nconst META = 91; // WIN_KEY_LEFT\nconst MAC_WK_CMD_LEFT = 91;\nconst MAC_WK_CMD_RIGHT = 93;\nconst CONTEXT_MENU = 93;\nconst NUMPAD_ZERO = 96;\nconst NUMPAD_ONE = 97;\nconst NUMPAD_TWO = 98;\nconst NUMPAD_THREE = 99;\nconst NUMPAD_FOUR = 100;\nconst NUMPAD_FIVE = 101;\nconst NUMPAD_SIX = 102;\nconst NUMPAD_SEVEN = 103;\nconst NUMPAD_EIGHT = 104;\nconst NUMPAD_NINE = 105;\nconst NUMPAD_MULTIPLY = 106;\nconst NUMPAD_PLUS = 107;\nconst NUMPAD_MINUS = 109;\nconst NUMPAD_PERIOD = 110;\nconst NUMPAD_DIVIDE = 111;\nconst F1 = 112;\nconst F2 = 113;\nconst F3 = 114;\nconst F4 = 115;\nconst F5 = 116;\nconst F6 = 117;\nconst F7 = 118;\nconst F8 = 119;\nconst F9 = 120;\nconst F10 = 121;\nconst F11 = 122;\nconst F12 = 123;\nconst NUM_LOCK = 144;\nconst SCROLL_LOCK = 145;\nconst FIRST_MEDIA = 166;\nconst FF_MINUS = 173;\nconst MUTE = 173; // Firefox (Gecko) fires 181 for MUTE\nconst VOLUME_DOWN = 174; // Firefox (Gecko) fires 182 for VOLUME_DOWN\nconst VOLUME_UP = 175; // Firefox (Gecko) fires 183 for VOLUME_UP\nconst FF_MUTE = 181;\nconst FF_VOLUME_DOWN = 182;\nconst LAST_MEDIA = 183;\nconst FF_VOLUME_UP = 183;\nconst SEMICOLON = 186; // Firefox (Gecko) fires 59 for SEMICOLON\nconst EQUALS = 187; // Firefox (Gecko) fires 61 for EQUALS\nconst COMMA = 188;\nconst DASH = 189; // Firefox (Gecko) fires 173 for DASH/MINUS\nconst PERIOD = 190;\nconst SLASH = 191;\nconst APOSTROPHE = 192;\nconst TILDE = 192;\nconst OPEN_SQUARE_BRACKET = 219;\nconst BACKSLASH = 220;\nconst CLOSE_SQUARE_BRACKET = 221;\nconst SINGLE_QUOTE = 222;\nconst MAC_META = 224;\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Checks whether a modifier key is pressed.\n * @param event Event to be checked.\n */\nfunction hasModifierKey(event, ...modifiers) {\n if (modifiers.length) {\n return modifiers.some(modifier => event[modifier]);\n }\n return event.altKey || event.shiftKey || event.ctrlKey || event.metaKey;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A, ALT, APOSTROPHE, AT_SIGN, B, BACKSLASH, BACKSPACE, C, CAPS_LOCK, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, D, DASH, DELETE, DOWN_ARROW, E, EIGHT, END, ENTER, EQUALS, ESCAPE, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FOUR, G, H, HOME, I, INSERT, J, K, L, LAST_MEDIA, LEFT_ARROW, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, META, MUTE, N, NINE, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PAUSE, PERIOD, PLUS_SIGN, PRINT_SCREEN, Q, QUESTION_MARK, R, RIGHT_ARROW, S, SCROLL_LOCK, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SPACE, T, TAB, THREE, TILDE, TWO, U, UP_ARROW, V, VOLUME_DOWN, VOLUME_UP, W, X, Y, Z, ZERO, hasModifierKey };\n","import * as i0 from '@angular/core';\nimport { NgModule, Injectable } from '@angular/core';\nimport { coerceArray } from '@angular/cdk/coercion';\nimport { Subject, combineLatest, concat, Observable } from 'rxjs';\nimport { take, skip, debounceTime, map, startWith, takeUntil } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass LayoutModule {\n}\nLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: LayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: LayoutModule });\nLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: LayoutModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: LayoutModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Global registry for all dynamically-created, injected media queries. */\nconst mediaQueriesForWebkitCompatibility = new Set();\n/** Style tag that holds all of the dynamically-created media queries. */\nlet mediaQueryStyleNode;\n/** A utility for calling matchMedia queries. */\nclass MediaMatcher {\n constructor(_platform) {\n this._platform = _platform;\n this._matchMedia =\n this._platform.isBrowser && window.matchMedia\n ? // matchMedia is bound to the window scope intentionally as it is an illegal invocation to\n // call it from a different scope.\n window.matchMedia.bind(window)\n : noopMatchMedia;\n }\n /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n */\n matchMedia(query) {\n if (this._platform.WEBKIT || this._platform.BLINK) {\n createEmptyStyleRule(query);\n }\n return this._matchMedia(query);\n }\n}\nMediaMatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: MediaMatcher, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nMediaMatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: MediaMatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: MediaMatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }]; } });\n/**\n * Creates an empty stylesheet that is used to work around browser inconsistencies related to\n * `matchMedia`. At the time of writing, it handles the following cases:\n * 1. On WebKit browsers, a media query has to have at least one rule in order for `matchMedia`\n * to fire. We work around it by declaring a dummy stylesheet with a `@media` declaration.\n * 2. In some cases Blink browsers will stop firing the `matchMedia` listener if none of the rules\n * inside the `@media` match existing elements on the page. We work around it by having one rule\n * targeting the `body`. See https://github.com/angular/components/issues/23546.\n */\nfunction createEmptyStyleRule(query) {\n if (mediaQueriesForWebkitCompatibility.has(query)) {\n return;\n }\n try {\n if (!mediaQueryStyleNode) {\n mediaQueryStyleNode = document.createElement('style');\n mediaQueryStyleNode.setAttribute('type', 'text/css');\n document.head.appendChild(mediaQueryStyleNode);\n }\n if (mediaQueryStyleNode.sheet) {\n mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0);\n mediaQueriesForWebkitCompatibility.add(query);\n }\n }\n catch (e) {\n console.error(e);\n }\n}\n/** No-op matchMedia replacement for non-browser platforms. */\nfunction noopMatchMedia(query) {\n // Use `as any` here to avoid adding additional necessary properties for\n // the noop matcher.\n return {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => { },\n removeListener: () => { },\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Utility for checking the matching state of @media queries. */\nclass BreakpointObserver {\n constructor(_mediaMatcher, _zone) {\n this._mediaMatcher = _mediaMatcher;\n this._zone = _zone;\n /** A map of all media queries currently being listened for. */\n this._queries = new Map();\n /** A subject for all other observables to takeUntil based on. */\n this._destroySubject = new Subject();\n }\n /** Completes the active subject, signalling to all other observables to complete. */\n ngOnDestroy() {\n this._destroySubject.next();\n this._destroySubject.complete();\n }\n /**\n * Whether one or more media queries match the current viewport size.\n * @param value One or more media queries to check.\n * @returns Whether any of the media queries match.\n */\n isMatched(value) {\n const queries = splitQueries(coerceArray(value));\n return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);\n }\n /**\n * Gets an observable of results for the given queries that will emit new results for any changes\n * in matching of the given queries.\n * @param value One or more media queries to check.\n * @returns A stream of matches for the given queries.\n */\n observe(value) {\n const queries = splitQueries(coerceArray(value));\n const observables = queries.map(query => this._registerQuery(query).observable);\n let stateObservable = combineLatest(observables);\n // Emit the first state immediately, and then debounce the subsequent emissions.\n stateObservable = concat(stateObservable.pipe(take(1)), stateObservable.pipe(skip(1), debounceTime(0)));\n return stateObservable.pipe(map(breakpointStates => {\n const response = {\n matches: false,\n breakpoints: {},\n };\n breakpointStates.forEach(({ matches, query }) => {\n response.matches = response.matches || matches;\n response.breakpoints[query] = matches;\n });\n return response;\n }));\n }\n /** Registers a specific query to be listened for. */\n _registerQuery(query) {\n // Only set up a new MediaQueryList if it is not already being listened for.\n if (this._queries.has(query)) {\n return this._queries.get(query);\n }\n const mql = this._mediaMatcher.matchMedia(query);\n // Create callback for match changes and add it is as a listener.\n const queryObservable = new Observable((observer) => {\n // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed\n // back into the zone because matchMedia is only included in Zone.js by loading the\n // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not\n // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js\n // patches it.\n const handler = (e) => this._zone.run(() => observer.next(e));\n mql.addListener(handler);\n return () => {\n mql.removeListener(handler);\n };\n }).pipe(startWith(mql), map(({ matches }) => ({ query, matches })), takeUntil(this._destroySubject));\n // Add the MediaQueryList to the set of queries.\n const output = { observable: queryObservable, mql };\n this._queries.set(query, output);\n return output;\n }\n}\nBreakpointObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BreakpointObserver, deps: [{ token: MediaMatcher }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nBreakpointObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BreakpointObserver, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BreakpointObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: MediaMatcher }, { type: i0.NgZone }]; } });\n/**\n * Split each query string into separate query strings if two queries are provided as comma\n * separated.\n */\nfunction splitQueries(queries) {\n return queries\n .map(query => query.split(','))\n .reduce((a1, a2) => a1.concat(a2))\n .map(query => query.trim());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// PascalCase is being used as Breakpoints is used like an enum.\n// tslint:disable-next-line:variable-name\nconst Breakpoints = {\n XSmall: '(max-width: 599.98px)',\n Small: '(min-width: 600px) and (max-width: 959.98px)',\n Medium: '(min-width: 960px) and (max-width: 1279.98px)',\n Large: '(min-width: 1280px) and (max-width: 1919.98px)',\n XLarge: '(min-width: 1920px)',\n Handset: '(max-width: 599.98px) and (orientation: portrait), ' +\n '(max-width: 959.98px) and (orientation: landscape)',\n Tablet: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), ' +\n '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n Web: '(min-width: 840px) and (orientation: portrait), ' +\n '(min-width: 1280px) and (orientation: landscape)',\n HandsetPortrait: '(max-width: 599.98px) and (orientation: portrait)',\n TabletPortrait: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)',\n WebPortrait: '(min-width: 840px) and (orientation: portrait)',\n HandsetLandscape: '(max-width: 959.98px) and (orientation: landscape)',\n TabletLandscape: '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n WebLandscape: '(min-width: 1280px) and (orientation: landscape)',\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BreakpointObserver, Breakpoints, LayoutModule, MediaMatcher };\n","import { coerceElement, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Input, NgModule } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Factory that creates a new MutationObserver and allows us to stub it out in unit tests.\n * @docs-private\n */\nclass MutationObserverFactory {\n create(callback) {\n return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);\n }\n}\nMutationObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: MutationObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMutationObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: MutationObserverFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: MutationObserverFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n/** An injectable service that allows watching elements for changes to their content. */\nclass ContentObserver {\n constructor(_mutationObserverFactory) {\n this._mutationObserverFactory = _mutationObserverFactory;\n /** Keeps track of the existing MutationObservers so they can be reused. */\n this._observedElements = new Map();\n }\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n observe(elementOrRef) {\n const element = coerceElement(elementOrRef);\n return new Observable((observer) => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n /**\n * Observes the given element by using the existing MutationObserver if available, or creating a\n * new one if not.\n */\n _observeElement(element) {\n if (!this._observedElements.has(element)) {\n const stream = new Subject();\n const observer = this._mutationObserverFactory.create(mutations => stream.next(mutations));\n if (observer) {\n observer.observe(element, {\n characterData: true,\n childList: true,\n subtree: true,\n });\n }\n this._observedElements.set(element, { observer, stream, count: 1 });\n }\n else {\n this._observedElements.get(element).count++;\n }\n return this._observedElements.get(element).stream;\n }\n /**\n * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is\n * observing this element.\n */\n _unobserveElement(element) {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element).count--;\n if (!this._observedElements.get(element).count) {\n this._cleanupObserver(element);\n }\n }\n }\n /** Clean up the underlying MutationObserver for the specified element. */\n _cleanupObserver(element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element);\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n}\nContentObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ContentObserver, deps: [{ token: MutationObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });\nContentObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ContentObserver, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ContentObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: MutationObserverFactory }]; } });\n/**\n * Directive that triggers a callback whenever the content of\n * its associated element has changed.\n */\nclass CdkObserveContent {\n constructor(_contentObserver, _elementRef, _ngZone) {\n this._contentObserver = _contentObserver;\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n /** Event emitted for each change in the element's content. */\n this.event = new EventEmitter();\n this._disabled = false;\n this._currentSubscription = null;\n }\n /**\n * Whether observing content is disabled. This option can be used\n * to disconnect the underlying MutationObserver until it is needed.\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this._unsubscribe() : this._subscribe();\n }\n /** Debounce interval for emitting the changes. */\n get debounce() {\n return this._debounce;\n }\n set debounce(value) {\n this._debounce = coerceNumberProperty(value);\n this._subscribe();\n }\n ngAfterContentInit() {\n if (!this._currentSubscription && !this.disabled) {\n this._subscribe();\n }\n }\n ngOnDestroy() {\n this._unsubscribe();\n }\n _subscribe() {\n this._unsubscribe();\n const stream = this._contentObserver.observe(this._elementRef);\n // TODO(mmalerba): We shouldn't be emitting on this @Output() outside the zone.\n // Consider brining it back inside the zone next time we're making breaking changes.\n // Bringing it back inside can cause things like infinite change detection loops and changed\n // after checked errors if people's code isn't handling it properly.\n this._ngZone.runOutsideAngular(() => {\n this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(this.event);\n });\n }\n _unsubscribe() {\n this._currentSubscription?.unsubscribe();\n }\n}\nCdkObserveContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkObserveContent, deps: [{ token: ContentObserver }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkObserveContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkObserveContent, selector: \"[cdkObserveContent]\", inputs: { disabled: [\"cdkObserveContentDisabled\", \"disabled\"], debounce: \"debounce\" }, outputs: { event: \"cdkObserveContent\" }, exportAs: [\"cdkObserveContent\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkObserveContent, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkObserveContent]',\n exportAs: 'cdkObserveContent',\n }]\n }], ctorParameters: function () { return [{ type: ContentObserver }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { event: [{\n type: Output,\n args: ['cdkObserveContent']\n }], disabled: [{\n type: Input,\n args: ['cdkObserveContentDisabled']\n }], debounce: [{\n type: Input\n }] } });\nclass ObserversModule {\n}\nObserversModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ObserversModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nObserversModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ObserversModule, declarations: [CdkObserveContent], exports: [CdkObserveContent] });\nObserversModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ObserversModule, providers: [MutationObserverFactory] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ObserversModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkObserveContent],\n declarations: [CdkObserveContent],\n providers: [MutationObserverFactory],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkObserveContent, ContentObserver, MutationObserverFactory, ObserversModule };\n","import * as i1 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nexport { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';\nimport * as i6 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, ElementRef, ApplicationRef, InjectionToken, Directive, EventEmitter, Optional, Input, Output, NgModule } from '@angular/core';\nimport { coerceCssPixelValue, coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/platform';\nimport { supportsScrollBehavior, _getEventTarget, _isTestEnvironment } from '@angular/cdk/platform';\nimport * as i5 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { DomPortalOutlet, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { take, takeUntil, takeWhile } from 'rxjs/operators';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst scrollBehaviorSupported = supportsScrollBehavior();\n/**\n * Strategy that will prevent the user from scrolling while the overlay is visible.\n */\nclass BlockScrollStrategy {\n constructor(_viewportRuler, document) {\n this._viewportRuler = _viewportRuler;\n this._previousHTMLStyles = { top: '', left: '' };\n this._isEnabled = false;\n this._document = document;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach() { }\n /** Blocks page-level scroll while the attached overlay is open. */\n enable() {\n if (this._canBeEnabled()) {\n const root = this._document.documentElement;\n this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();\n // Cache the previous inline styles in case the user had set them.\n this._previousHTMLStyles.left = root.style.left || '';\n this._previousHTMLStyles.top = root.style.top || '';\n // Note: we're using the `html` node, instead of the `body`, because the `body` may\n // have the user agent margin, whereas the `html` is guaranteed not to have one.\n root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n root.classList.add('cdk-global-scrollblock');\n this._isEnabled = true;\n }\n }\n /** Unblocks page-level scroll while the attached overlay is open. */\n disable() {\n if (this._isEnabled) {\n const html = this._document.documentElement;\n const body = this._document.body;\n const htmlStyle = html.style;\n const bodyStyle = body.style;\n const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n this._isEnabled = false;\n htmlStyle.left = this._previousHTMLStyles.left;\n htmlStyle.top = this._previousHTMLStyles.top;\n html.classList.remove('cdk-global-scrollblock');\n // Disable user-defined smooth scrolling temporarily while we restore the scroll position.\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior\n // Note that we don't mutate the property if the browser doesn't support `scroll-behavior`,\n // because it can throw off feature detections in `supportsScrollBehavior` which\n // checks for `'scrollBehavior' in documentElement.style`.\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n }\n window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n }\n }\n }\n _canBeEnabled() {\n // Since the scroll strategies can't be singletons, we have to use a global CSS class\n // (`cdk-global-scrollblock`) to make sure that we don't try to disable global\n // scrolling multiple times.\n const html = this._document.documentElement;\n if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {\n return false;\n }\n const body = this._document.body;\n const viewport = this._viewportRuler.getViewportSize();\n return body.scrollHeight > viewport.height || body.scrollWidth > viewport.width;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Returns an error to be thrown when attempting to attach an already-attached scroll strategy.\n */\nfunction getMatScrollStrategyAlreadyAttachedError() {\n return Error(`Scroll strategy has already been attached.`);\n}\n\n/**\n * Strategy that will close the overlay as soon as the user starts scrolling.\n */\nclass CloseScrollStrategy {\n constructor(_scrollDispatcher, _ngZone, _viewportRuler, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._config = _config;\n this._scrollSubscription = null;\n /** Detaches the overlay ref and disables the scroll strategy. */\n this._detach = () => {\n this.disable();\n if (this._overlayRef.hasAttached()) {\n this._ngZone.run(() => this._overlayRef.detach());\n }\n };\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables the closing of the attached overlay on scroll. */\n enable() {\n if (this._scrollSubscription) {\n return;\n }\n const stream = this._scrollDispatcher.scrolled(0);\n if (this._config && this._config.threshold && this._config.threshold > 1) {\n this._initialScrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n this._scrollSubscription = stream.subscribe(() => {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n if (Math.abs(scrollPosition - this._initialScrollPosition) > this._config.threshold) {\n this._detach();\n }\n else {\n this._overlayRef.updatePosition();\n }\n });\n }\n else {\n this._scrollSubscription = stream.subscribe(this._detach);\n }\n }\n /** Disables the closing the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Scroll strategy that doesn't do anything. */\nclass NoopScrollStrategy {\n /** Does nothing, as this scroll strategy is a no-op. */\n enable() { }\n /** Does nothing, as this scroll strategy is a no-op. */\n disable() { }\n /** Does nothing, as this scroll strategy is a no-op. */\n attach() { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Gets whether an element is scrolled outside of view by any of its parent scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is scrolled out of view\n * @docs-private\n */\nfunction isElementScrolledOutsideView(element, scrollContainers) {\n return scrollContainers.some(containerBounds => {\n const outsideAbove = element.bottom < containerBounds.top;\n const outsideBelow = element.top > containerBounds.bottom;\n const outsideLeft = element.right < containerBounds.left;\n const outsideRight = element.left > containerBounds.right;\n return outsideAbove || outsideBelow || outsideLeft || outsideRight;\n });\n}\n/**\n * Gets whether an element is clipped by any of its scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is clipped\n * @docs-private\n */\nfunction isElementClippedByScrolling(element, scrollContainers) {\n return scrollContainers.some(scrollContainerRect => {\n const clippedAbove = element.top < scrollContainerRect.top;\n const clippedBelow = element.bottom > scrollContainerRect.bottom;\n const clippedLeft = element.left < scrollContainerRect.left;\n const clippedRight = element.right > scrollContainerRect.right;\n return clippedAbove || clippedBelow || clippedLeft || clippedRight;\n });\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Strategy that will update the element position as the user is scrolling.\n */\nclass RepositionScrollStrategy {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n this._config = _config;\n this._scrollSubscription = null;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables repositioning of the attached overlay on scroll. */\n enable() {\n if (!this._scrollSubscription) {\n const throttle = this._config ? this._config.scrollThrottle : 0;\n this._scrollSubscription = this._scrollDispatcher.scrolled(throttle).subscribe(() => {\n this._overlayRef.updatePosition();\n // TODO(crisbeto): make `close` on by default once all components can handle it.\n if (this._config && this._config.autoClose) {\n const overlayRect = this._overlayRef.overlayElement.getBoundingClientRect();\n const { width, height } = this._viewportRuler.getViewportSize();\n // TODO(crisbeto): include all ancestor scroll containers here once\n // we have a way of exposing the trigger element to the scroll strategy.\n const parentRects = [{ width, height, bottom: height, right: width, top: 0, left: 0 }];\n if (isElementScrolledOutsideView(overlayRect, parentRects)) {\n this.disable();\n this._ngZone.run(() => this._overlayRef.detach());\n }\n }\n });\n }\n }\n /** Disables repositioning of the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Options for how an overlay will handle scrolling.\n *\n * Users can provide a custom value for `ScrollStrategyOptions` to replace the default\n * behaviors. This class primarily acts as a factory for ScrollStrategy instances.\n */\nclass ScrollStrategyOptions {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, document) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n /** Do nothing on scroll. */\n this.noop = () => new NoopScrollStrategy();\n /**\n * Close the overlay as soon as the user scrolls.\n * @param config Configuration to be used inside the scroll strategy.\n */\n this.close = (config) => new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);\n /** Block scrolling. */\n this.block = () => new BlockScrollStrategy(this._viewportRuler, this._document);\n /**\n * Update the overlay's position on scroll.\n * @param config Configuration to be used inside the scroll strategy.\n * Allows debouncing the reposition calls.\n */\n this.reposition = (config) => new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config);\n this._document = document;\n }\n}\nScrollStrategyOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollStrategyOptions, deps: [{ token: i1.ScrollDispatcher }, { token: i1.ViewportRuler }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollStrategyOptions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollStrategyOptions, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollStrategyOptions, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.ScrollDispatcher }, { type: i1.ViewportRuler }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Initial configuration used when creating an overlay. */\nclass OverlayConfig {\n constructor(config) {\n /** Strategy to be used when handling scroll events while the overlay is open. */\n this.scrollStrategy = new NoopScrollStrategy();\n /** Custom class to add to the overlay pane. */\n this.panelClass = '';\n /** Whether the overlay has a backdrop. */\n this.hasBackdrop = false;\n /** Custom class to add to the backdrop */\n this.backdropClass = 'cdk-overlay-dark-backdrop';\n /**\n * Whether the overlay should be disposed of when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n this.disposeOnNavigation = false;\n if (config) {\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n const configKeys = Object.keys(config);\n for (const key of configKeys) {\n if (config[key] !== undefined) {\n // TypeScript, as of version 3.5, sees the left-hand-side of this expression\n // as \"I don't know *which* key this is, so the only valid value is the intersection\n // of all the posible values.\" In this case, that happens to be `undefined`. TypeScript\n // is not smart enough to see that the right-hand-side is actually an access of the same\n // exact type with the same exact key, meaning that the value type must be identical.\n // So we use `any` to work around this.\n this[key] = config[key];\n }\n }\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The points of the origin element and the overlay element to connect. */\nclass ConnectionPositionPair {\n constructor(origin, overlay, \n /** Offset along the X axis. */\n offsetX, \n /** Offset along the Y axis. */\n offsetY, \n /** Class(es) to be applied to the panel while this position is active. */\n panelClass) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n this.panelClass = panelClass;\n this.originX = origin.originX;\n this.originY = origin.originY;\n this.overlayX = overlay.overlayX;\n this.overlayY = overlay.overlayY;\n }\n}\n/**\n * Set of properties regarding the position of the origin and overlay relative to the viewport\n * with respect to the containing Scrollable elements.\n *\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\n *\n * The overlay and origin are outside view if there is no overlap between their bounding client\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\n *\n * ----------- -----------\n * | outside | | clipped |\n * | view | --------------------------\n * | | | | | |\n * ---------- | ----------- |\n * -------------------------- | |\n * | | | Scrollable |\n * | | | |\n * | | --------------------------\n * | Scrollable |\n * | |\n * --------------------------\n *\n * @docs-private\n */\nclass ScrollingVisibility {\n}\n/** The change event emitted by the strategy when a fallback position is used. */\nclass ConnectedOverlayPositionChange {\n constructor(\n /** The position used as a result of this change. */\n connectionPair, \n /** @docs-private */\n scrollableViewProperties) {\n this.connectionPair = connectionPair;\n this.scrollableViewProperties = scrollableViewProperties;\n }\n}\n/**\n * Validates whether a vertical position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateVerticalPosition(property, value) {\n if (value !== 'top' && value !== 'bottom' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n `Expected \"top\", \"bottom\" or \"center\".`);\n }\n}\n/**\n * Validates whether a horizontal position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateHorizontalPosition(property, value) {\n if (value !== 'start' && value !== 'end' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n `Expected \"start\", \"end\" or \"center\".`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Service for dispatching events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass BaseOverlayDispatcher {\n constructor(document) {\n /** Currently attached overlays in the order they were attached. */\n this._attachedOverlays = [];\n this._document = document;\n }\n ngOnDestroy() {\n this.detach();\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n // Ensure that we don't get the same overlay multiple times.\n this.remove(overlayRef);\n this._attachedOverlays.push(overlayRef);\n }\n /** Remove an overlay from the list of attached overlay refs. */\n remove(overlayRef) {\n const index = this._attachedOverlays.indexOf(overlayRef);\n if (index > -1) {\n this._attachedOverlays.splice(index, 1);\n }\n // Remove the global listener once there are no more overlays.\n if (this._attachedOverlays.length === 0) {\n this.detach();\n }\n }\n}\nBaseOverlayDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BaseOverlayDispatcher, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBaseOverlayDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BaseOverlayDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: BaseOverlayDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Service for dispatching keyboard events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayKeyboardDispatcher extends BaseOverlayDispatcher {\n constructor(document) {\n super(document);\n /** Keyboard event listener that will be attached to the body. */\n this._keydownListener = (event) => {\n const overlays = this._attachedOverlays;\n for (let i = overlays.length - 1; i > -1; i--) {\n // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.\n // We want to target the most recent overlay, rather than trying to match where the event came\n // from, because some components might open an overlay, but keep focus on a trigger element\n // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,\n // because we don't want overlays that don't handle keyboard events to block the ones below\n // them that do.\n if (overlays[i]._keydownEvents.observers.length > 0) {\n overlays[i]._keydownEvents.next(event);\n break;\n }\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Lazily start dispatcher once first overlay is added\n if (!this._isAttached) {\n this._document.body.addEventListener('keydown', this._keydownListener);\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n this._document.body.removeEventListener('keydown', this._keydownListener);\n this._isAttached = false;\n }\n }\n}\nOverlayKeyboardDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayKeyboardDispatcher, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayKeyboardDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayKeyboardDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayKeyboardDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Service for dispatching mouse click events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {\n constructor(document, _platform) {\n super(document);\n this._platform = _platform;\n this._cursorStyleIsSet = false;\n /** Store pointerdown event target to track origin of click. */\n this._pointerDownListener = (event) => {\n this._pointerDownEventTarget = _getEventTarget(event);\n };\n /** Click event listener that will be attached to the body propagate phase. */\n this._clickListener = (event) => {\n const target = _getEventTarget(event);\n // In case of a click event, we want to check the origin of the click\n // (e.g. in case where a user starts a click inside the overlay and\n // releases the click outside of it).\n // This is done by using the event target of the preceding pointerdown event.\n // Every click event caused by a pointer device has a preceding pointerdown\n // event, unless the click was programmatically triggered (e.g. in a unit test).\n const origin = event.type === 'click' && this._pointerDownEventTarget\n ? this._pointerDownEventTarget : target;\n // Reset the stored pointerdown event target, to avoid having it interfere\n // in subsequent events.\n this._pointerDownEventTarget = null;\n // We copy the array because the original may be modified asynchronously if the\n // outsidePointerEvents listener decides to detach overlays resulting in index errors inside\n // the for loop.\n const overlays = this._attachedOverlays.slice();\n // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.\n // We want to target all overlays for which the click could be considered as outside click.\n // As soon as we reach an overlay for which the click is not outside click we break off\n // the loop.\n for (let i = overlays.length - 1; i > -1; i--) {\n const overlayRef = overlays[i];\n if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {\n continue;\n }\n // If it's a click inside the overlay, just break - we should do nothing\n // If it's an outside click (both origin and target of the click) dispatch the mouse event,\n // and proceed with the next overlay\n if (overlayRef.overlayElement.contains(target) ||\n overlayRef.overlayElement.contains(origin)) {\n break;\n }\n overlayRef._outsidePointerEvents.next(event);\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Safari on iOS does not generate click events for non-interactive\n // elements. However, we want to receive a click for any element outside\n // the overlay. We can force a \"clickable\" state by setting\n // `cursor: pointer` on the document body. See:\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile\n // https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n if (!this._isAttached) {\n const body = this._document.body;\n body.addEventListener('pointerdown', this._pointerDownListener, true);\n body.addEventListener('click', this._clickListener, true);\n body.addEventListener('auxclick', this._clickListener, true);\n body.addEventListener('contextmenu', this._clickListener, true);\n // click event is not fired on iOS. To make element \"clickable\" we are\n // setting the cursor to pointer\n if (this._platform.IOS && !this._cursorStyleIsSet) {\n this._cursorOriginalValue = body.style.cursor;\n body.style.cursor = 'pointer';\n this._cursorStyleIsSet = true;\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n const body = this._document.body;\n body.removeEventListener('pointerdown', this._pointerDownListener, true);\n body.removeEventListener('click', this._clickListener, true);\n body.removeEventListener('auxclick', this._clickListener, true);\n body.removeEventListener('contextmenu', this._clickListener, true);\n if (this._platform.IOS && this._cursorStyleIsSet) {\n body.style.cursor = this._cursorOriginalValue;\n this._cursorStyleIsSet = false;\n }\n this._isAttached = false;\n }\n }\n}\nOverlayOutsideClickDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayOutsideClickDispatcher, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayOutsideClickDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayOutsideClickDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayOutsideClickDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Container inside which all overlays will render. */\nclass OverlayContainer {\n constructor(document, _platform) {\n this._platform = _platform;\n this._document = document;\n }\n ngOnDestroy() {\n this._containerElement?.remove();\n }\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n getContainerElement() {\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n }\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body.\n */\n _createContainer() {\n const containerClass = 'cdk-overlay-container';\n // TODO(crisbeto): remove the testing check once we have an overlay testing\n // module or Angular starts tearing down the testing `NgModule`. See:\n // https://github.com/angular/angular/issues/18831\n if (this._platform.isBrowser || _isTestEnvironment()) {\n const oppositePlatformContainers = this._document.querySelectorAll(`.${containerClass}[platform=\"server\"], ` + `.${containerClass}[platform=\"test\"]`);\n // Remove any old containers from the opposite platform.\n // This can happen when transitioning from the server to the client.\n for (let i = 0; i < oppositePlatformContainers.length; i++) {\n oppositePlatformContainers[i].remove();\n }\n }\n const container = this._document.createElement('div');\n container.classList.add(containerClass);\n // A long time ago we kept adding new overlay containers whenever a new app was instantiated,\n // but at some point we added logic which clears the duplicate ones in order to avoid leaks.\n // The new logic was a little too aggressive since it was breaking some legitimate use cases.\n // To mitigate the problem we made it so that only containers from a different platform are\n // cleared, but the side-effect was that people started depending on the overly-aggressive\n // logic to clean up their tests for them. Until we can introduce an overlay-specific testing\n // module which does the cleanup, we try to detect that we're in a test environment and we\n // always clear the container. See #17006.\n // TODO(crisbeto): remove the test environment check once we have an overlay testing module.\n if (_isTestEnvironment()) {\n container.setAttribute('platform', 'test');\n }\n else if (!this._platform.isBrowser) {\n container.setAttribute('platform', 'server');\n }\n this._document.body.appendChild(container);\n this._containerElement = container;\n }\n}\nOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayContainer, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayContainer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayContainer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nclass OverlayRef {\n constructor(_portalOutlet, _host, _pane, _config, _ngZone, _keyboardDispatcher, _document, _location, _outsideClickDispatcher) {\n this._portalOutlet = _portalOutlet;\n this._host = _host;\n this._pane = _pane;\n this._config = _config;\n this._ngZone = _ngZone;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._document = _document;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n this._backdropElement = null;\n this._backdropClick = new Subject();\n this._attachments = new Subject();\n this._detachments = new Subject();\n this._locationChanges = Subscription.EMPTY;\n this._backdropClickHandler = (event) => this._backdropClick.next(event);\n /** Stream of keydown events dispatched to this overlay. */\n this._keydownEvents = new Subject();\n /** Stream of mouse outside events dispatched to this overlay. */\n this._outsidePointerEvents = new Subject();\n if (_config.scrollStrategy) {\n this._scrollStrategy = _config.scrollStrategy;\n this._scrollStrategy.attach(this);\n }\n this._positionStrategy = _config.positionStrategy;\n }\n /** The overlay's HTML element */\n get overlayElement() {\n return this._pane;\n }\n /** The overlay's backdrop HTML element. */\n get backdropElement() {\n return this._backdropElement;\n }\n /**\n * Wrapper around the panel element. Can be used for advanced\n * positioning where a wrapper with specific styling is\n * required around the overlay pane.\n */\n get hostElement() {\n return this._host;\n }\n /**\n * Attaches content, given via a Portal, to the overlay.\n * If the overlay is configured to have a backdrop, it will be created.\n *\n * @param portal Portal instance to which to attach the overlay.\n * @returns The portal attachment result.\n */\n attach(portal) {\n let attachResult = this._portalOutlet.attach(portal);\n // Update the pane element with the given configuration.\n if (!this._host.parentElement && this._previousHostParent) {\n this._previousHostParent.appendChild(this._host);\n }\n if (this._positionStrategy) {\n this._positionStrategy.attach(this);\n }\n this._updateStackingOrder();\n this._updateElementSize();\n this._updateElementDirection();\n if (this._scrollStrategy) {\n this._scrollStrategy.enable();\n }\n // Update the position once the zone is stable so that the overlay will be fully rendered\n // before attempting to position it, as the position may depend on the size of the rendered\n // content.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n // The overlay could've been detached before the zone has stabilized.\n if (this.hasAttached()) {\n this.updatePosition();\n }\n });\n // Enable pointer events for the overlay pane element.\n this._togglePointerEvents(true);\n if (this._config.hasBackdrop) {\n this._attachBackdrop();\n }\n if (this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, true);\n }\n // Only emit the `attachments` event once all other setup is done.\n this._attachments.next();\n // Track this overlay by the keyboard dispatcher\n this._keyboardDispatcher.add(this);\n if (this._config.disposeOnNavigation) {\n this._locationChanges = this._location.subscribe(() => this.dispose());\n }\n this._outsideClickDispatcher.add(this);\n return attachResult;\n }\n /**\n * Detaches an overlay from a portal.\n * @returns The portal detachment result.\n */\n detach() {\n if (!this.hasAttached()) {\n return;\n }\n this.detachBackdrop();\n // When the overlay is detached, the pane element should disable pointer events.\n // This is necessary because otherwise the pane element will cover the page and disable\n // pointer events therefore. Depends on the position strategy and the applied pane boundaries.\n this._togglePointerEvents(false);\n if (this._positionStrategy && this._positionStrategy.detach) {\n this._positionStrategy.detach();\n }\n if (this._scrollStrategy) {\n this._scrollStrategy.disable();\n }\n const detachmentResult = this._portalOutlet.detach();\n // Only emit after everything is detached.\n this._detachments.next();\n // Remove this overlay from keyboard dispatcher tracking.\n this._keyboardDispatcher.remove(this);\n // Keeping the host element in the DOM can cause scroll jank, because it still gets\n // rendered, even though it's transparent and unclickable which is why we remove it.\n this._detachContentWhenStable();\n this._locationChanges.unsubscribe();\n this._outsideClickDispatcher.remove(this);\n return detachmentResult;\n }\n /** Cleans up the overlay from the DOM. */\n dispose() {\n const isAttached = this.hasAttached();\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._disposeScrollStrategy();\n this._disposeBackdrop(this._backdropElement);\n this._locationChanges.unsubscribe();\n this._keyboardDispatcher.remove(this);\n this._portalOutlet.dispose();\n this._attachments.complete();\n this._backdropClick.complete();\n this._keydownEvents.complete();\n this._outsidePointerEvents.complete();\n this._outsideClickDispatcher.remove(this);\n this._host?.remove();\n this._previousHostParent = this._pane = this._host = null;\n if (isAttached) {\n this._detachments.next();\n }\n this._detachments.complete();\n }\n /** Whether the overlay has attached content. */\n hasAttached() {\n return this._portalOutlet.hasAttached();\n }\n /** Gets an observable that emits when the backdrop has been clicked. */\n backdropClick() {\n return this._backdropClick;\n }\n /** Gets an observable that emits when the overlay has been attached. */\n attachments() {\n return this._attachments;\n }\n /** Gets an observable that emits when the overlay has been detached. */\n detachments() {\n return this._detachments;\n }\n /** Gets an observable of keydown events targeted to this overlay. */\n keydownEvents() {\n return this._keydownEvents;\n }\n /** Gets an observable of pointer events targeted outside this overlay. */\n outsidePointerEvents() {\n return this._outsidePointerEvents;\n }\n /** Gets the current overlay configuration, which is immutable. */\n getConfig() {\n return this._config;\n }\n /** Updates the position of the overlay based on the position strategy. */\n updatePosition() {\n if (this._positionStrategy) {\n this._positionStrategy.apply();\n }\n }\n /** Switches to a new position strategy and updates the overlay position. */\n updatePositionStrategy(strategy) {\n if (strategy === this._positionStrategy) {\n return;\n }\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._positionStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n this.updatePosition();\n }\n }\n /** Update the size properties of the overlay. */\n updateSize(sizeConfig) {\n this._config = { ...this._config, ...sizeConfig };\n this._updateElementSize();\n }\n /** Sets the LTR/RTL direction for the overlay. */\n setDirection(dir) {\n this._config = { ...this._config, direction: dir };\n this._updateElementDirection();\n }\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, true);\n }\n }\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, false);\n }\n }\n /**\n * Returns the layout direction of the overlay panel.\n */\n getDirection() {\n const direction = this._config.direction;\n if (!direction) {\n return 'ltr';\n }\n return typeof direction === 'string' ? direction : direction.value;\n }\n /** Switches to a new scroll strategy. */\n updateScrollStrategy(strategy) {\n if (strategy === this._scrollStrategy) {\n return;\n }\n this._disposeScrollStrategy();\n this._scrollStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n strategy.enable();\n }\n }\n /** Updates the text direction of the overlay panel. */\n _updateElementDirection() {\n this._host.setAttribute('dir', this.getDirection());\n }\n /** Updates the size of the overlay element based on the overlay config. */\n _updateElementSize() {\n if (!this._pane) {\n return;\n }\n const style = this._pane.style;\n style.width = coerceCssPixelValue(this._config.width);\n style.height = coerceCssPixelValue(this._config.height);\n style.minWidth = coerceCssPixelValue(this._config.minWidth);\n style.minHeight = coerceCssPixelValue(this._config.minHeight);\n style.maxWidth = coerceCssPixelValue(this._config.maxWidth);\n style.maxHeight = coerceCssPixelValue(this._config.maxHeight);\n }\n /** Toggles the pointer events for the overlay pane element. */\n _togglePointerEvents(enablePointer) {\n this._pane.style.pointerEvents = enablePointer ? '' : 'none';\n }\n /** Attaches a backdrop for this overlay. */\n _attachBackdrop() {\n const showingClass = 'cdk-overlay-backdrop-showing';\n this._backdropElement = this._document.createElement('div');\n this._backdropElement.classList.add('cdk-overlay-backdrop');\n if (this._config.backdropClass) {\n this._toggleClasses(this._backdropElement, this._config.backdropClass, true);\n }\n // Insert the backdrop before the pane in the DOM order,\n // in order to handle stacked overlays properly.\n this._host.parentElement.insertBefore(this._backdropElement, this._host);\n // Forward backdrop clicks such that the consumer of the overlay can perform whatever\n // action desired when such a click occurs (usually closing the overlay).\n this._backdropElement.addEventListener('click', this._backdropClickHandler);\n // Add class to fade-in the backdrop after one frame.\n if (typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n if (this._backdropElement) {\n this._backdropElement.classList.add(showingClass);\n }\n });\n });\n }\n else {\n this._backdropElement.classList.add(showingClass);\n }\n }\n /**\n * Updates the stacking order of the element, moving it to the top if necessary.\n * This is required in cases where one overlay was detached, while another one,\n * that should be behind it, was destroyed. The next time both of them are opened,\n * the stacking will be wrong, because the detached element's pane will still be\n * in its original DOM position.\n */\n _updateStackingOrder() {\n if (this._host.nextSibling) {\n this._host.parentNode.appendChild(this._host);\n }\n }\n /** Detaches the backdrop (if any) associated with the overlay. */\n detachBackdrop() {\n const backdropToDetach = this._backdropElement;\n if (!backdropToDetach) {\n return;\n }\n let timeoutId;\n const finishDetach = () => {\n // It may not be attached to anything in certain cases (e.g. unit tests).\n if (backdropToDetach) {\n backdropToDetach.removeEventListener('click', this._backdropClickHandler);\n backdropToDetach.removeEventListener('transitionend', finishDetach);\n this._disposeBackdrop(backdropToDetach);\n }\n if (this._config.backdropClass) {\n this._toggleClasses(backdropToDetach, this._config.backdropClass, false);\n }\n clearTimeout(timeoutId);\n };\n backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');\n this._ngZone.runOutsideAngular(() => {\n backdropToDetach.addEventListener('transitionend', finishDetach);\n });\n // If the backdrop doesn't have a transition, the `transitionend` event won't fire.\n // In this case we make it unclickable and we try to remove it after a delay.\n backdropToDetach.style.pointerEvents = 'none';\n // Run this outside the Angular zone because there's nothing that Angular cares about.\n // If it were to run inside the Angular zone, every test that used Overlay would have to be\n // either async or fakeAsync.\n timeoutId = this._ngZone.runOutsideAngular(() => setTimeout(finishDetach, 500));\n }\n /** Toggles a single CSS class or an array of classes on an element. */\n _toggleClasses(element, cssClasses, isAdd) {\n const classes = coerceArray(cssClasses || []).filter(c => !!c);\n if (classes.length) {\n isAdd ? element.classList.add(...classes) : element.classList.remove(...classes);\n }\n }\n /** Detaches the overlay content next time the zone stabilizes. */\n _detachContentWhenStable() {\n // Normally we wouldn't have to explicitly run this outside the `NgZone`, however\n // if the consumer is using `zone-patch-rxjs`, the `Subscription.unsubscribe` call will\n // be patched to run inside the zone, which will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => {\n // We can't remove the host here immediately, because the overlay pane's content\n // might still be animating. This stream helps us avoid interrupting the animation\n // by waiting for the pane to become empty.\n const subscription = this._ngZone.onStable\n .pipe(takeUntil(merge(this._attachments, this._detachments)))\n .subscribe(() => {\n // Needs a couple of checks for the pane and host, because\n // they may have been removed by the time the zone stabilizes.\n if (!this._pane || !this._host || this._pane.children.length === 0) {\n if (this._pane && this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, false);\n }\n if (this._host && this._host.parentElement) {\n this._previousHostParent = this._host.parentElement;\n this._host.remove();\n }\n subscription.unsubscribe();\n }\n });\n });\n }\n /** Disposes of a scroll strategy. */\n _disposeScrollStrategy() {\n const scrollStrategy = this._scrollStrategy;\n if (scrollStrategy) {\n scrollStrategy.disable();\n if (scrollStrategy.detach) {\n scrollStrategy.detach();\n }\n }\n }\n /** Removes a backdrop element from the DOM. */\n _disposeBackdrop(backdrop) {\n if (backdrop) {\n backdrop.remove();\n // It is possible that a new portal has been attached to this overlay since we started\n // removing the backdrop. If that is the case, only clear the backdrop reference if it\n // is still the same instance that we started to remove.\n if (this._backdropElement === backdrop) {\n this._backdropElement = null;\n }\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO: refactor clipping detection into a separate thing (part of scrolling module)\n// TODO: doesn't handle both flexible width and height when it has to scroll along both axis.\n/** Class to be added to the overlay bounding box. */\nconst boundingBoxClass = 'cdk-overlay-connected-position-bounding-box';\n/** Regex used to split a string on its CSS units. */\nconst cssUnitPattern = /([A-Za-z%]+)$/;\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * implicit position relative some origin element. The relative position is defined in terms of\n * a point on the origin element that is connected to a point on the overlay element. For example,\n * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner\n * of the overlay.\n */\nclass FlexibleConnectedPositionStrategy {\n constructor(connectedTo, _viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */\n this._lastBoundingBoxSize = { width: 0, height: 0 };\n /** Whether the overlay was pushed in a previous positioning. */\n this._isPushed = false;\n /** Whether the overlay can be pushed on-screen on the initial open. */\n this._canPush = true;\n /** Whether the overlay can grow via flexible width/height after the initial open. */\n this._growAfterOpen = false;\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n this._hasFlexibleDimensions = true;\n /** Whether the overlay position is locked. */\n this._positionLocked = false;\n /** Amount of space that must be maintained between the overlay and the edge of the viewport. */\n this._viewportMargin = 0;\n /** The Scrollable containers used to check scrollable view properties on position change. */\n this._scrollables = [];\n /** Ordered list of preferred positions, from most to least desirable. */\n this._preferredPositions = [];\n /** Subject that emits whenever the position changes. */\n this._positionChanges = new Subject();\n /** Subscription to viewport size changes. */\n this._resizeSubscription = Subscription.EMPTY;\n /** Default offset for the overlay along the x axis. */\n this._offsetX = 0;\n /** Default offset for the overlay along the y axis. */\n this._offsetY = 0;\n /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */\n this._appliedPanelClasses = [];\n /** Observable sequence of position changes. */\n this.positionChanges = this._positionChanges;\n this.setOrigin(connectedTo);\n }\n /** Ordered list of preferred positions, from most to least desirable. */\n get positions() {\n return this._preferredPositions;\n }\n /** Attaches this position strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef &&\n overlayRef !== this._overlayRef &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('This position strategy is already attached to an overlay');\n }\n this._validatePositions();\n overlayRef.hostElement.classList.add(boundingBoxClass);\n this._overlayRef = overlayRef;\n this._boundingBox = overlayRef.hostElement;\n this._pane = overlayRef.overlayElement;\n this._isDisposed = false;\n this._isInitialRender = true;\n this._lastPosition = null;\n this._resizeSubscription.unsubscribe();\n this._resizeSubscription = this._viewportRuler.change().subscribe(() => {\n // When the window is resized, we want to trigger the next reposition as if it\n // was an initial render, in order for the strategy to pick a new optimal position,\n // otherwise position locking will cause it to stay at the old one.\n this._isInitialRender = true;\n this.apply();\n });\n }\n /**\n * Updates the position of the overlay element, using whichever preferred position relative\n * to the origin best fits on-screen.\n *\n * The selection of a position goes as follows:\n * - If any positions fit completely within the viewport as-is,\n * choose the first position that does so.\n * - If flexible dimensions are enabled and at least one satifies the given minimum width/height,\n * choose the position with the greatest available size modified by the positions' weight.\n * - If pushing is enabled, take the position that went off-screen the least and push it\n * on-screen.\n * - If none of the previous criteria were met, use the position that goes off-screen the least.\n * @docs-private\n */\n apply() {\n // We shouldn't do anything if the strategy was disposed or we're on the server.\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n // If the position has been applied already (e.g. when the overlay was opened) and the\n // consumer opted into locking in the position, re-use the old position, in order to\n // prevent the overlay from jumping around.\n if (!this._isInitialRender && this._positionLocked && this._lastPosition) {\n this.reapplyLastPosition();\n return;\n }\n this._clearPanelClasses();\n this._resetOverlayElementStyles();\n this._resetBoundingBoxStyles();\n // We need the bounding rects for the origin and the overlay to determine how to position\n // the overlay relative to the origin.\n // We use the viewport rect to determine whether a position would go off-screen.\n this._viewportRect = this._getNarrowedViewportRect();\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n const originRect = this._originRect;\n const overlayRect = this._overlayRect;\n const viewportRect = this._viewportRect;\n // Positions where the overlay will fit with flexible dimensions.\n const flexibleFits = [];\n // Fallback if none of the preferred positions fit within the viewport.\n let fallback;\n // Go through each of the preferred positions looking for a good fit.\n // If a good fit is found, it will be applied immediately.\n for (let pos of this._preferredPositions) {\n // Get the exact (x, y) coordinate for the point-of-origin on the origin element.\n let originPoint = this._getOriginPoint(originRect, pos);\n // From that point-of-origin, get the exact (x, y) coordinate for the top-left corner of the\n // overlay in this position. We use the top-left corner for calculations and later translate\n // this into an appropriate (top, left, bottom, right) style.\n let overlayPoint = this._getOverlayPoint(originPoint, overlayRect, pos);\n // Calculate how well the overlay would fit into the viewport with this point.\n let overlayFit = this._getOverlayFit(overlayPoint, overlayRect, viewportRect, pos);\n // If the overlay, without any further work, fits into the viewport, use this position.\n if (overlayFit.isCompletelyWithinViewport) {\n this._isPushed = false;\n this._applyPosition(pos, originPoint);\n return;\n }\n // If the overlay has flexible dimensions, we can use this position\n // so long as there's enough space for the minimum dimensions.\n if (this._canFitWithFlexibleDimensions(overlayFit, overlayPoint, viewportRect)) {\n // Save positions where the overlay will fit with flexible dimensions. We will use these\n // if none of the positions fit *without* flexible dimensions.\n flexibleFits.push({\n position: pos,\n origin: originPoint,\n overlayRect,\n boundingBoxRect: this._calculateBoundingBoxRect(originPoint, pos),\n });\n continue;\n }\n // If the current preferred position does not fit on the screen, remember the position\n // if it has more visible area on-screen than we've seen and move onto the next preferred\n // position.\n if (!fallback || fallback.overlayFit.visibleArea < overlayFit.visibleArea) {\n fallback = { overlayFit, overlayPoint, originPoint, position: pos, overlayRect };\n }\n }\n // If there are any positions where the overlay would fit with flexible dimensions, choose the\n // one that has the greatest area available modified by the position's weight\n if (flexibleFits.length) {\n let bestFit = null;\n let bestScore = -1;\n for (const fit of flexibleFits) {\n const score = fit.boundingBoxRect.width * fit.boundingBoxRect.height * (fit.position.weight || 1);\n if (score > bestScore) {\n bestScore = score;\n bestFit = fit;\n }\n }\n this._isPushed = false;\n this._applyPosition(bestFit.position, bestFit.origin);\n return;\n }\n // When none of the preferred positions fit within the viewport, take the position\n // that went off-screen the least and attempt to push it on-screen.\n if (this._canPush) {\n // TODO(jelbourn): after pushing, the opening \"direction\" of the overlay might not make sense.\n this._isPushed = true;\n this._applyPosition(fallback.position, fallback.originPoint);\n return;\n }\n // All options for getting the overlay within the viewport have been exhausted, so go with the\n // position that went off-screen the least.\n this._applyPosition(fallback.position, fallback.originPoint);\n }\n detach() {\n this._clearPanelClasses();\n this._lastPosition = null;\n this._previousPushAmount = null;\n this._resizeSubscription.unsubscribe();\n }\n /** Cleanup after the element gets destroyed. */\n dispose() {\n if (this._isDisposed) {\n return;\n }\n // We can't use `_resetBoundingBoxStyles` here, because it resets\n // some properties to zero, rather than removing them.\n if (this._boundingBox) {\n extendStyles(this._boundingBox.style, {\n top: '',\n left: '',\n right: '',\n bottom: '',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: '',\n });\n }\n if (this._pane) {\n this._resetOverlayElementStyles();\n }\n if (this._overlayRef) {\n this._overlayRef.hostElement.classList.remove(boundingBoxClass);\n }\n this.detach();\n this._positionChanges.complete();\n this._overlayRef = this._boundingBox = null;\n this._isDisposed = true;\n }\n /**\n * This re-aligns the overlay element with the trigger in its last calculated position,\n * even if a position higher in the \"preferred positions\" list would now fit. This\n * allows one to re-align the panel without changing the orientation of the panel.\n */\n reapplyLastPosition() {\n if (!this._isDisposed && (!this._platform || this._platform.isBrowser)) {\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._viewportRect = this._getNarrowedViewportRect();\n const lastPosition = this._lastPosition || this._preferredPositions[0];\n const originPoint = this._getOriginPoint(this._originRect, lastPosition);\n this._applyPosition(lastPosition, originPoint);\n }\n }\n /**\n * Sets the list of Scrollable containers that host the origin element so that\n * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\n * Scrollable must be an ancestor element of the strategy's origin element.\n */\n withScrollableContainers(scrollables) {\n this._scrollables = scrollables;\n return this;\n }\n /**\n * Adds new preferred positions.\n * @param positions List of positions options for this overlay.\n */\n withPositions(positions) {\n this._preferredPositions = positions;\n // If the last calculated position object isn't part of the positions anymore, clear\n // it in order to avoid it being picked up if the consumer tries to re-apply.\n if (positions.indexOf(this._lastPosition) === -1) {\n this._lastPosition = null;\n }\n this._validatePositions();\n return this;\n }\n /**\n * Sets a minimum distance the overlay may be positioned to the edge of the viewport.\n * @param margin Required margin between the overlay and the viewport edge in pixels.\n */\n withViewportMargin(margin) {\n this._viewportMargin = margin;\n return this;\n }\n /** Sets whether the overlay's width and height can be constrained to fit within the viewport. */\n withFlexibleDimensions(flexibleDimensions = true) {\n this._hasFlexibleDimensions = flexibleDimensions;\n return this;\n }\n /** Sets whether the overlay can grow after the initial open via flexible width/height. */\n withGrowAfterOpen(growAfterOpen = true) {\n this._growAfterOpen = growAfterOpen;\n return this;\n }\n /** Sets whether the overlay can be pushed on-screen if none of the provided positions fit. */\n withPush(canPush = true) {\n this._canPush = canPush;\n return this;\n }\n /**\n * Sets whether the overlay's position should be locked in after it is positioned\n * initially. When an overlay is locked in, it won't attempt to reposition itself\n * when the position is re-applied (e.g. when the user scrolls away).\n * @param isLocked Whether the overlay should locked in.\n */\n withLockedPosition(isLocked = true) {\n this._positionLocked = isLocked;\n return this;\n }\n /**\n * Sets the origin, relative to which to position the overlay.\n * Using an element origin is useful for building components that need to be positioned\n * relatively to a trigger (e.g. dropdown menus or tooltips), whereas using a point can be\n * used for cases like contextual menus which open relative to the user's pointer.\n * @param origin Reference to the new origin.\n */\n setOrigin(origin) {\n this._origin = origin;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the x-axis.\n * @param offset New offset in the X axis.\n */\n withDefaultOffsetX(offset) {\n this._offsetX = offset;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the y-axis.\n * @param offset New offset in the Y axis.\n */\n withDefaultOffsetY(offset) {\n this._offsetY = offset;\n return this;\n }\n /**\n * Configures that the position strategy should set a `transform-origin` on some elements\n * inside the overlay, depending on the current position that is being applied. This is\n * useful for the cases where the origin of an animation can change depending on the\n * alignment of the overlay.\n * @param selector CSS selector that will be used to find the target\n * elements onto which to set the transform origin.\n */\n withTransformOriginOn(selector) {\n this._transformOriginSelector = selector;\n return this;\n }\n /**\n * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\n */\n _getOriginPoint(originRect, pos) {\n let x;\n if (pos.originX == 'center') {\n // Note: when centering we should always use the `left`\n // offset, otherwise the position will be wrong in RTL.\n x = originRect.left + originRect.width / 2;\n }\n else {\n const startX = this._isRtl() ? originRect.right : originRect.left;\n const endX = this._isRtl() ? originRect.left : originRect.right;\n x = pos.originX == 'start' ? startX : endX;\n }\n let y;\n if (pos.originY == 'center') {\n y = originRect.top + originRect.height / 2;\n }\n else {\n y = pos.originY == 'top' ? originRect.top : originRect.bottom;\n }\n return { x, y };\n }\n /**\n * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\n * origin point to which the overlay should be connected.\n */\n _getOverlayPoint(originPoint, overlayRect, pos) {\n // Calculate the (overlayStartX, overlayStartY), the start of the\n // potential overlay position relative to the origin point.\n let overlayStartX;\n if (pos.overlayX == 'center') {\n overlayStartX = -overlayRect.width / 2;\n }\n else if (pos.overlayX === 'start') {\n overlayStartX = this._isRtl() ? -overlayRect.width : 0;\n }\n else {\n overlayStartX = this._isRtl() ? 0 : -overlayRect.width;\n }\n let overlayStartY;\n if (pos.overlayY == 'center') {\n overlayStartY = -overlayRect.height / 2;\n }\n else {\n overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;\n }\n // The (x, y) coordinates of the overlay.\n return {\n x: originPoint.x + overlayStartX,\n y: originPoint.y + overlayStartY,\n };\n }\n /** Gets how well an overlay at the given point will fit within the viewport. */\n _getOverlayFit(point, rawOverlayRect, viewport, position) {\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n let { x, y } = point;\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n // Account for the offsets since they could push the overlay out of the viewport.\n if (offsetX) {\n x += offsetX;\n }\n if (offsetY) {\n y += offsetY;\n }\n // How much the overlay would overflow at this position, on each side.\n let leftOverflow = 0 - x;\n let rightOverflow = x + overlay.width - viewport.width;\n let topOverflow = 0 - y;\n let bottomOverflow = y + overlay.height - viewport.height;\n // Visible parts of the element on each axis.\n let visibleWidth = this._subtractOverflows(overlay.width, leftOverflow, rightOverflow);\n let visibleHeight = this._subtractOverflows(overlay.height, topOverflow, bottomOverflow);\n let visibleArea = visibleWidth * visibleHeight;\n return {\n visibleArea,\n isCompletelyWithinViewport: overlay.width * overlay.height === visibleArea,\n fitsInViewportVertically: visibleHeight === overlay.height,\n fitsInViewportHorizontally: visibleWidth == overlay.width,\n };\n }\n /**\n * Whether the overlay can fit within the viewport when it may resize either its width or height.\n * @param fit How well the overlay fits in the viewport at some position.\n * @param point The (x, y) coordinates of the overlat at some position.\n * @param viewport The geometry of the viewport.\n */\n _canFitWithFlexibleDimensions(fit, point, viewport) {\n if (this._hasFlexibleDimensions) {\n const availableHeight = viewport.bottom - point.y;\n const availableWidth = viewport.right - point.x;\n const minHeight = getPixelValue(this._overlayRef.getConfig().minHeight);\n const minWidth = getPixelValue(this._overlayRef.getConfig().minWidth);\n const verticalFit = fit.fitsInViewportVertically || (minHeight != null && minHeight <= availableHeight);\n const horizontalFit = fit.fitsInViewportHorizontally || (minWidth != null && minWidth <= availableWidth);\n return verticalFit && horizontalFit;\n }\n return false;\n }\n /**\n * Gets the point at which the overlay can be \"pushed\" on-screen. If the overlay is larger than\n * the viewport, the top-left corner will be pushed on-screen (with overflow occuring on the\n * right and bottom).\n *\n * @param start Starting point from which the overlay is pushed.\n * @param overlay Dimensions of the overlay.\n * @param scrollPosition Current viewport scroll position.\n * @returns The point at which to position the overlay after pushing. This is effectively a new\n * originPoint.\n */\n _pushOverlayOnScreen(start, rawOverlayRect, scrollPosition) {\n // If the position is locked and we've pushed the overlay already, reuse the previous push\n // amount, rather than pushing it again. If we were to continue pushing, the element would\n // remain in the viewport, which goes against the expectations when position locking is enabled.\n if (this._previousPushAmount && this._positionLocked) {\n return {\n x: start.x + this._previousPushAmount.x,\n y: start.y + this._previousPushAmount.y,\n };\n }\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n const viewport = this._viewportRect;\n // Determine how much the overlay goes outside the viewport on each\n // side, which we'll use to decide which direction to push it.\n const overflowRight = Math.max(start.x + overlay.width - viewport.width, 0);\n const overflowBottom = Math.max(start.y + overlay.height - viewport.height, 0);\n const overflowTop = Math.max(viewport.top - scrollPosition.top - start.y, 0);\n const overflowLeft = Math.max(viewport.left - scrollPosition.left - start.x, 0);\n // Amount by which to push the overlay in each axis such that it remains on-screen.\n let pushX = 0;\n let pushY = 0;\n // If the overlay fits completely within the bounds of the viewport, push it from whichever\n // direction is goes off-screen. Otherwise, push the top-left corner such that its in the\n // viewport and allow for the trailing end of the overlay to go out of bounds.\n if (overlay.width <= viewport.width) {\n pushX = overflowLeft || -overflowRight;\n }\n else {\n pushX = start.x < this._viewportMargin ? viewport.left - scrollPosition.left - start.x : 0;\n }\n if (overlay.height <= viewport.height) {\n pushY = overflowTop || -overflowBottom;\n }\n else {\n pushY = start.y < this._viewportMargin ? viewport.top - scrollPosition.top - start.y : 0;\n }\n this._previousPushAmount = { x: pushX, y: pushY };\n return {\n x: start.x + pushX,\n y: start.y + pushY,\n };\n }\n /**\n * Applies a computed position to the overlay and emits a position change.\n * @param position The position preference\n * @param originPoint The point on the origin element where the overlay is connected.\n */\n _applyPosition(position, originPoint) {\n this._setTransformOrigin(position);\n this._setOverlayElementStyles(originPoint, position);\n this._setBoundingBoxStyles(originPoint, position);\n if (position.panelClass) {\n this._addPanelClasses(position.panelClass);\n }\n // Save the last connected position in case the position needs to be re-calculated.\n this._lastPosition = position;\n // Notify that the position has been changed along with its change properties.\n // We only emit if we've got any subscriptions, because the scroll visibility\n // calculcations can be somewhat expensive.\n if (this._positionChanges.observers.length) {\n const scrollableViewProperties = this._getScrollVisibility();\n const changeEvent = new ConnectedOverlayPositionChange(position, scrollableViewProperties);\n this._positionChanges.next(changeEvent);\n }\n this._isInitialRender = false;\n }\n /** Sets the transform origin based on the configured selector and the passed-in position. */\n _setTransformOrigin(position) {\n if (!this._transformOriginSelector) {\n return;\n }\n const elements = this._boundingBox.querySelectorAll(this._transformOriginSelector);\n let xOrigin;\n let yOrigin = position.overlayY;\n if (position.overlayX === 'center') {\n xOrigin = 'center';\n }\n else if (this._isRtl()) {\n xOrigin = position.overlayX === 'start' ? 'right' : 'left';\n }\n else {\n xOrigin = position.overlayX === 'start' ? 'left' : 'right';\n }\n for (let i = 0; i < elements.length; i++) {\n elements[i].style.transformOrigin = `${xOrigin} ${yOrigin}`;\n }\n }\n /**\n * Gets the position and size of the overlay's sizing container.\n *\n * This method does no measuring and applies no styles so that we can cheaply compute the\n * bounds for all positions and choose the best fit based on these results.\n */\n _calculateBoundingBoxRect(origin, position) {\n const viewport = this._viewportRect;\n const isRtl = this._isRtl();\n let height, top, bottom;\n if (position.overlayY === 'top') {\n // Overlay is opening \"downward\" and thus is bound by the bottom viewport edge.\n top = origin.y;\n height = viewport.height - top + this._viewportMargin;\n }\n else if (position.overlayY === 'bottom') {\n // Overlay is opening \"upward\" and thus is bound by the top viewport edge. We need to add\n // the viewport margin back in, because the viewport rect is narrowed down to remove the\n // margin, whereas the `origin` position is calculated based on its `ClientRect`.\n bottom = viewport.height - origin.y + this._viewportMargin * 2;\n height = viewport.height - bottom + this._viewportMargin;\n }\n else {\n // If neither top nor bottom, it means that the overlay is vertically centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.bottom - origin.y` and\n // `origin.y - viewport.top`.\n const smallestDistanceToViewportEdge = Math.min(viewport.bottom - origin.y + viewport.top, origin.y);\n const previousHeight = this._lastBoundingBoxSize.height;\n height = smallestDistanceToViewportEdge * 2;\n top = origin.y - smallestDistanceToViewportEdge;\n if (height > previousHeight && !this._isInitialRender && !this._growAfterOpen) {\n top = origin.y - previousHeight / 2;\n }\n }\n // The overlay is opening 'right-ward' (the content flows to the right).\n const isBoundedByRightViewportEdge = (position.overlayX === 'start' && !isRtl) || (position.overlayX === 'end' && isRtl);\n // The overlay is opening 'left-ward' (the content flows to the left).\n const isBoundedByLeftViewportEdge = (position.overlayX === 'end' && !isRtl) || (position.overlayX === 'start' && isRtl);\n let width, left, right;\n if (isBoundedByLeftViewportEdge) {\n right = viewport.width - origin.x + this._viewportMargin;\n width = origin.x - this._viewportMargin;\n }\n else if (isBoundedByRightViewportEdge) {\n left = origin.x;\n width = viewport.right - origin.x;\n }\n else {\n // If neither start nor end, it means that the overlay is horizontally centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.right - origin.x` and\n // `origin.x - viewport.left`.\n const smallestDistanceToViewportEdge = Math.min(viewport.right - origin.x + viewport.left, origin.x);\n const previousWidth = this._lastBoundingBoxSize.width;\n width = smallestDistanceToViewportEdge * 2;\n left = origin.x - smallestDistanceToViewportEdge;\n if (width > previousWidth && !this._isInitialRender && !this._growAfterOpen) {\n left = origin.x - previousWidth / 2;\n }\n }\n return { top: top, left: left, bottom: bottom, right: right, width, height };\n }\n /**\n * Sets the position and size of the overlay's sizing wrapper. The wrapper is positioned on the\n * origin's connection point and stetches to the bounds of the viewport.\n *\n * @param origin The point on the origin element where the overlay is connected.\n * @param position The position preference\n */\n _setBoundingBoxStyles(origin, position) {\n const boundingBoxRect = this._calculateBoundingBoxRect(origin, position);\n // It's weird if the overlay *grows* while scrolling, so we take the last size into account\n // when applying a new size.\n if (!this._isInitialRender && !this._growAfterOpen) {\n boundingBoxRect.height = Math.min(boundingBoxRect.height, this._lastBoundingBoxSize.height);\n boundingBoxRect.width = Math.min(boundingBoxRect.width, this._lastBoundingBoxSize.width);\n }\n const styles = {};\n if (this._hasExactPosition()) {\n styles.top = styles.left = '0';\n styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';\n styles.width = styles.height = '100%';\n }\n else {\n const maxHeight = this._overlayRef.getConfig().maxHeight;\n const maxWidth = this._overlayRef.getConfig().maxWidth;\n styles.height = coerceCssPixelValue(boundingBoxRect.height);\n styles.top = coerceCssPixelValue(boundingBoxRect.top);\n styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom);\n styles.width = coerceCssPixelValue(boundingBoxRect.width);\n styles.left = coerceCssPixelValue(boundingBoxRect.left);\n styles.right = coerceCssPixelValue(boundingBoxRect.right);\n // Push the pane content towards the proper direction.\n if (position.overlayX === 'center') {\n styles.alignItems = 'center';\n }\n else {\n styles.alignItems = position.overlayX === 'end' ? 'flex-end' : 'flex-start';\n }\n if (position.overlayY === 'center') {\n styles.justifyContent = 'center';\n }\n else {\n styles.justifyContent = position.overlayY === 'bottom' ? 'flex-end' : 'flex-start';\n }\n if (maxHeight) {\n styles.maxHeight = coerceCssPixelValue(maxHeight);\n }\n if (maxWidth) {\n styles.maxWidth = coerceCssPixelValue(maxWidth);\n }\n }\n this._lastBoundingBoxSize = boundingBoxRect;\n extendStyles(this._boundingBox.style, styles);\n }\n /** Resets the styles for the bounding box so that a new positioning can be computed. */\n _resetBoundingBoxStyles() {\n extendStyles(this._boundingBox.style, {\n top: '0',\n left: '0',\n right: '0',\n bottom: '0',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: '',\n });\n }\n /** Resets the styles for the overlay pane so that a new positioning can be computed. */\n _resetOverlayElementStyles() {\n extendStyles(this._pane.style, {\n top: '',\n left: '',\n bottom: '',\n right: '',\n position: '',\n transform: '',\n });\n }\n /** Sets positioning styles to the overlay element. */\n _setOverlayElementStyles(originPoint, position) {\n const styles = {};\n const hasExactPosition = this._hasExactPosition();\n const hasFlexibleDimensions = this._hasFlexibleDimensions;\n const config = this._overlayRef.getConfig();\n if (hasExactPosition) {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n extendStyles(styles, this._getExactOverlayY(position, originPoint, scrollPosition));\n extendStyles(styles, this._getExactOverlayX(position, originPoint, scrollPosition));\n }\n else {\n styles.position = 'static';\n }\n // Use a transform to apply the offsets. We do this because the `center` positions rely on\n // being in the normal flex flow and setting a `top` / `left` at all will completely throw\n // off the position. We also can't use margins, because they won't have an effect in some\n // cases where the element doesn't have anything to \"push off of\". Finally, this works\n // better both with flexible and non-flexible positioning.\n let transformString = '';\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n if (offsetX) {\n transformString += `translateX(${offsetX}px) `;\n }\n if (offsetY) {\n transformString += `translateY(${offsetY}px)`;\n }\n styles.transform = transformString.trim();\n // If a maxWidth or maxHeight is specified on the overlay, we remove them. We do this because\n // we need these values to both be set to \"100%\" for the automatic flexible sizing to work.\n // The maxHeight and maxWidth are set on the boundingBox in order to enforce the constraint.\n // Note that this doesn't apply when we have an exact position, in which case we do want to\n // apply them because they'll be cleared from the bounding box.\n if (config.maxHeight) {\n if (hasExactPosition) {\n styles.maxHeight = coerceCssPixelValue(config.maxHeight);\n }\n else if (hasFlexibleDimensions) {\n styles.maxHeight = '';\n }\n }\n if (config.maxWidth) {\n if (hasExactPosition) {\n styles.maxWidth = coerceCssPixelValue(config.maxWidth);\n }\n else if (hasFlexibleDimensions) {\n styles.maxWidth = '';\n }\n }\n extendStyles(this._pane.style, styles);\n }\n /** Gets the exact top/bottom for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayY(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the\n // preferred position has changed since the last `apply`.\n let styles = { top: '', bottom: '' };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n let virtualKeyboardOffset = this._overlayContainer\n .getContainerElement()\n .getBoundingClientRect().top;\n // Normally this would be zero, however when the overlay is attached to an input (e.g. in an\n // autocomplete), mobile browsers will shift everything in order to put the input in the middle\n // of the screen and to make space for the virtual keyboard. We need to account for this offset,\n // otherwise our positioning will be thrown off.\n overlayPoint.y -= virtualKeyboardOffset;\n // We want to set either `top` or `bottom` based on whether the overlay wants to appear\n // above or below the origin and the direction in which the element will expand.\n if (position.overlayY === 'bottom') {\n // When using `bottom`, we adjust the y position such that it is the distance\n // from the bottom of the viewport rather than the top.\n const documentHeight = this._document.documentElement.clientHeight;\n styles.bottom = `${documentHeight - (overlayPoint.y + this._overlayRect.height)}px`;\n }\n else {\n styles.top = coerceCssPixelValue(overlayPoint.y);\n }\n return styles;\n }\n /** Gets the exact left/right for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayX(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the preferred position has\n // changed since the last `apply`.\n let styles = { left: '', right: '' };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"\n // or \"after\" the origin, which determines the direction in which the element will expand.\n // For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the\n // page is in RTL or LTR.\n let horizontalStyleProperty;\n if (this._isRtl()) {\n horizontalStyleProperty = position.overlayX === 'end' ? 'left' : 'right';\n }\n else {\n horizontalStyleProperty = position.overlayX === 'end' ? 'right' : 'left';\n }\n // When we're setting `right`, we adjust the x position such that it is the distance\n // from the right edge of the viewport rather than the left edge.\n if (horizontalStyleProperty === 'right') {\n const documentWidth = this._document.documentElement.clientWidth;\n styles.right = `${documentWidth - (overlayPoint.x + this._overlayRect.width)}px`;\n }\n else {\n styles.left = coerceCssPixelValue(overlayPoint.x);\n }\n return styles;\n }\n /**\n * Gets the view properties of the trigger and overlay, including whether they are clipped\n * or completely outside the view of any of the strategy's scrollables.\n */\n _getScrollVisibility() {\n // Note: needs fresh rects since the position could've changed.\n const originBounds = this._getOriginRect();\n const overlayBounds = this._pane.getBoundingClientRect();\n // TODO(jelbourn): instead of needing all of the client rects for these scrolling containers\n // every time, we should be able to use the scrollTop of the containers if the size of those\n // containers hasn't changed.\n const scrollContainerBounds = this._scrollables.map(scrollable => {\n return scrollable.getElementRef().nativeElement.getBoundingClientRect();\n });\n return {\n isOriginClipped: isElementClippedByScrolling(originBounds, scrollContainerBounds),\n isOriginOutsideView: isElementScrolledOutsideView(originBounds, scrollContainerBounds),\n isOverlayClipped: isElementClippedByScrolling(overlayBounds, scrollContainerBounds),\n isOverlayOutsideView: isElementScrolledOutsideView(overlayBounds, scrollContainerBounds),\n };\n }\n /** Subtracts the amount that an element is overflowing on an axis from its length. */\n _subtractOverflows(length, ...overflows) {\n return overflows.reduce((currentValue, currentOverflow) => {\n return currentValue - Math.max(currentOverflow, 0);\n }, length);\n }\n /** Narrows the given viewport rect by the current _viewportMargin. */\n _getNarrowedViewportRect() {\n // We recalculate the viewport rect here ourselves, rather than using the ViewportRuler,\n // because we want to use the `clientWidth` and `clientHeight` as the base. The difference\n // being that the client properties don't include the scrollbar, as opposed to `innerWidth`\n // and `innerHeight` that do. This is necessary, because the overlay container uses\n // 100% `width` and `height` which don't include the scrollbar either.\n const width = this._document.documentElement.clientWidth;\n const height = this._document.documentElement.clientHeight;\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n return {\n top: scrollPosition.top + this._viewportMargin,\n left: scrollPosition.left + this._viewportMargin,\n right: scrollPosition.left + width - this._viewportMargin,\n bottom: scrollPosition.top + height - this._viewportMargin,\n width: width - 2 * this._viewportMargin,\n height: height - 2 * this._viewportMargin,\n };\n }\n /** Whether the we're dealing with an RTL context */\n _isRtl() {\n return this._overlayRef.getDirection() === 'rtl';\n }\n /** Determines whether the overlay uses exact or flexible positioning. */\n _hasExactPosition() {\n return !this._hasFlexibleDimensions || this._isPushed;\n }\n /** Retrieves the offset of a position along the x or y axis. */\n _getOffset(position, axis) {\n if (axis === 'x') {\n // We don't do something like `position['offset' + axis]` in\n // order to avoid breking minifiers that rename properties.\n return position.offsetX == null ? this._offsetX : position.offsetX;\n }\n return position.offsetY == null ? this._offsetY : position.offsetY;\n }\n /** Validates that the current position match the expected values. */\n _validatePositions() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._preferredPositions.length) {\n throw Error('FlexibleConnectedPositionStrategy: At least one position is required.');\n }\n // TODO(crisbeto): remove these once Angular's template type\n // checking is advanced enough to catch these cases.\n this._preferredPositions.forEach(pair => {\n validateHorizontalPosition('originX', pair.originX);\n validateVerticalPosition('originY', pair.originY);\n validateHorizontalPosition('overlayX', pair.overlayX);\n validateVerticalPosition('overlayY', pair.overlayY);\n });\n }\n }\n /** Adds a single CSS class or an array of classes on the overlay panel. */\n _addPanelClasses(cssClasses) {\n if (this._pane) {\n coerceArray(cssClasses).forEach(cssClass => {\n if (cssClass !== '' && this._appliedPanelClasses.indexOf(cssClass) === -1) {\n this._appliedPanelClasses.push(cssClass);\n this._pane.classList.add(cssClass);\n }\n });\n }\n }\n /** Clears the classes that the position strategy has applied from the overlay panel. */\n _clearPanelClasses() {\n if (this._pane) {\n this._appliedPanelClasses.forEach(cssClass => {\n this._pane.classList.remove(cssClass);\n });\n this._appliedPanelClasses = [];\n }\n }\n /** Returns the ClientRect of the current origin. */\n _getOriginRect() {\n const origin = this._origin;\n if (origin instanceof ElementRef) {\n return origin.nativeElement.getBoundingClientRect();\n }\n // Check for Element so SVG elements are also supported.\n if (origin instanceof Element) {\n return origin.getBoundingClientRect();\n }\n const width = origin.width || 0;\n const height = origin.height || 0;\n // If the origin is a point, return a client rect as if it was a 0x0 element at the point.\n return {\n top: origin.y,\n bottom: origin.y + height,\n left: origin.x,\n right: origin.x + width,\n height,\n width,\n };\n }\n}\n/** Shallow-extends a stylesheet object with another stylesheet object. */\nfunction extendStyles(destination, source) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n destination[key] = source[key];\n }\n }\n return destination;\n}\n/**\n * Extracts the pixel value as a number from a value, if it's a number\n * or a CSS pixel string (e.g. `1337px`). Otherwise returns null.\n */\nfunction getPixelValue(input) {\n if (typeof input !== 'number' && input != null) {\n const [value, units] = input.split(cssUnitPattern);\n return !units || units === 'px' ? parseFloat(value) : null;\n }\n return input || null;\n}\n/**\n * Gets a version of an element's bounding `ClientRect` where all the values are rounded down to\n * the nearest pixel. This allows us to account for the cases where there may be sub-pixel\n * deviations in the `ClientRect` returned by the browser (e.g. when zoomed in with a percentage\n * size, see #21350).\n */\nfunction getRoundedBoundingClientRect(clientRect) {\n return {\n top: Math.floor(clientRect.top),\n right: Math.floor(clientRect.right),\n bottom: Math.floor(clientRect.bottom),\n left: Math.floor(clientRect.left),\n width: Math.floor(clientRect.width),\n height: Math.floor(clientRect.height),\n };\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Class to be added to the overlay pane wrapper. */\nconst wrapperClass = 'cdk-global-overlay-wrapper';\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * explicit position relative to the browser's viewport. We use flexbox, instead of\n * transforms, in order to avoid issues with subpixel rendering which can cause the\n * element to become blurry.\n */\nclass GlobalPositionStrategy {\n constructor() {\n this._cssPosition = 'static';\n this._topOffset = '';\n this._bottomOffset = '';\n this._leftOffset = '';\n this._rightOffset = '';\n this._alignItems = '';\n this._justifyContent = '';\n this._width = '';\n this._height = '';\n }\n attach(overlayRef) {\n const config = overlayRef.getConfig();\n this._overlayRef = overlayRef;\n if (this._width && !config.width) {\n overlayRef.updateSize({ width: this._width });\n }\n if (this._height && !config.height) {\n overlayRef.updateSize({ height: this._height });\n }\n overlayRef.hostElement.classList.add(wrapperClass);\n this._isDisposed = false;\n }\n /**\n * Sets the top position of the overlay. Clears any previously set vertical position.\n * @param value New top offset.\n */\n top(value = '') {\n this._bottomOffset = '';\n this._topOffset = value;\n this._alignItems = 'flex-start';\n return this;\n }\n /**\n * Sets the left position of the overlay. Clears any previously set horizontal position.\n * @param value New left offset.\n */\n left(value = '') {\n this._rightOffset = '';\n this._leftOffset = value;\n this._justifyContent = 'flex-start';\n return this;\n }\n /**\n * Sets the bottom position of the overlay. Clears any previously set vertical position.\n * @param value New bottom offset.\n */\n bottom(value = '') {\n this._topOffset = '';\n this._bottomOffset = value;\n this._alignItems = 'flex-end';\n return this;\n }\n /**\n * Sets the right position of the overlay. Clears any previously set horizontal position.\n * @param value New right offset.\n */\n right(value = '') {\n this._leftOffset = '';\n this._rightOffset = value;\n this._justifyContent = 'flex-end';\n return this;\n }\n /**\n * Sets the overlay width and clears any previously set width.\n * @param value New width for the overlay\n * @deprecated Pass the `width` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n width(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({ width: value });\n }\n else {\n this._width = value;\n }\n return this;\n }\n /**\n * Sets the overlay height and clears any previously set height.\n * @param value New height for the overlay\n * @deprecated Pass the `height` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n height(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({ height: value });\n }\n else {\n this._height = value;\n }\n return this;\n }\n /**\n * Centers the overlay horizontally with an optional offset.\n * Clears any previously set horizontal position.\n *\n * @param offset Overlay offset from the horizontal center.\n */\n centerHorizontally(offset = '') {\n this.left(offset);\n this._justifyContent = 'center';\n return this;\n }\n /**\n * Centers the overlay vertically with an optional offset.\n * Clears any previously set vertical position.\n *\n * @param offset Overlay offset from the vertical center.\n */\n centerVertically(offset = '') {\n this.top(offset);\n this._alignItems = 'center';\n return this;\n }\n /**\n * Apply the position to the element.\n * @docs-private\n */\n apply() {\n // Since the overlay ref applies the strategy asynchronously, it could\n // have been disposed before it ends up being applied. If that is the\n // case, we shouldn't do anything.\n if (!this._overlayRef || !this._overlayRef.hasAttached()) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parentStyles = this._overlayRef.hostElement.style;\n const config = this._overlayRef.getConfig();\n const { width, height, maxWidth, maxHeight } = config;\n const shouldBeFlushHorizontally = (width === '100%' || width === '100vw') &&\n (!maxWidth || maxWidth === '100%' || maxWidth === '100vw');\n const shouldBeFlushVertically = (height === '100%' || height === '100vh') &&\n (!maxHeight || maxHeight === '100%' || maxHeight === '100vh');\n styles.position = this._cssPosition;\n styles.marginLeft = shouldBeFlushHorizontally ? '0' : this._leftOffset;\n styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset;\n styles.marginBottom = this._bottomOffset;\n styles.marginRight = this._rightOffset;\n if (shouldBeFlushHorizontally) {\n parentStyles.justifyContent = 'flex-start';\n }\n else if (this._justifyContent === 'center') {\n parentStyles.justifyContent = 'center';\n }\n else if (this._overlayRef.getConfig().direction === 'rtl') {\n // In RTL the browser will invert `flex-start` and `flex-end` automatically, but we\n // don't want that because our positioning is explicitly `left` and `right`, hence\n // why we do another inversion to ensure that the overlay stays in the same position.\n // TODO: reconsider this if we add `start` and `end` methods.\n if (this._justifyContent === 'flex-start') {\n parentStyles.justifyContent = 'flex-end';\n }\n else if (this._justifyContent === 'flex-end') {\n parentStyles.justifyContent = 'flex-start';\n }\n }\n else {\n parentStyles.justifyContent = this._justifyContent;\n }\n parentStyles.alignItems = shouldBeFlushVertically ? 'flex-start' : this._alignItems;\n }\n /**\n * Cleans up the DOM changes from the position strategy.\n * @docs-private\n */\n dispose() {\n if (this._isDisposed || !this._overlayRef) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parent = this._overlayRef.hostElement;\n const parentStyles = parent.style;\n parent.classList.remove(wrapperClass);\n parentStyles.justifyContent =\n parentStyles.alignItems =\n styles.marginTop =\n styles.marginBottom =\n styles.marginLeft =\n styles.marginRight =\n styles.position =\n '';\n this._overlayRef = null;\n this._isDisposed = true;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Builder for overlay position strategy. */\nclass OverlayPositionBuilder {\n constructor(_viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n }\n /**\n * Creates a global position strategy.\n */\n global() {\n return new GlobalPositionStrategy();\n }\n /**\n * Creates a flexible position strategy.\n * @param origin Origin relative to which to position the overlay.\n */\n flexibleConnectedTo(origin) {\n return new FlexibleConnectedPositionStrategy(origin, this._viewportRuler, this._document, this._platform, this._overlayContainer);\n }\n}\nOverlayPositionBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayPositionBuilder, deps: [{ token: i1.ViewportRuler }, { token: DOCUMENT }, { token: i1$1.Platform }, { token: OverlayContainer }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayPositionBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayPositionBuilder, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayPositionBuilder, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.ViewportRuler }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }, { type: OverlayContainer }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Next overlay unique ID. */\nlet nextUniqueId = 0;\n// Note that Overlay is *not* scoped to the app root because of the ComponentFactoryResolver\n// which needs to be different depending on where OverlayModule is imported.\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalOutlet, so any kind of Portal can be loaded into one.\n */\nclass Overlay {\n constructor(\n /** Scrolling strategies that can be used when creating an overlay. */\n scrollStrategies, _overlayContainer, _componentFactoryResolver, _positionBuilder, _keyboardDispatcher, _injector, _ngZone, _document, _directionality, _location, _outsideClickDispatcher) {\n this.scrollStrategies = scrollStrategies;\n this._overlayContainer = _overlayContainer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._positionBuilder = _positionBuilder;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._injector = _injector;\n this._ngZone = _ngZone;\n this._document = _document;\n this._directionality = _directionality;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n }\n /**\n * Creates an overlay.\n * @param config Configuration applied to the overlay.\n * @returns Reference to the created overlay.\n */\n create(config) {\n const host = this._createHostElement();\n const pane = this._createPaneElement(host);\n const portalOutlet = this._createPortalOutlet(pane);\n const overlayConfig = new OverlayConfig(config);\n overlayConfig.direction = overlayConfig.direction || this._directionality.value;\n return new OverlayRef(portalOutlet, host, pane, overlayConfig, this._ngZone, this._keyboardDispatcher, this._document, this._location, this._outsideClickDispatcher);\n }\n /**\n * Gets a position builder that can be used, via fluent API,\n * to construct and configure a position strategy.\n * @returns An overlay position builder.\n */\n position() {\n return this._positionBuilder;\n }\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @returns Newly-created pane element\n */\n _createPaneElement(host) {\n const pane = this._document.createElement('div');\n pane.id = `cdk-overlay-${nextUniqueId++}`;\n pane.classList.add('cdk-overlay-pane');\n host.appendChild(pane);\n return pane;\n }\n /**\n * Creates the host element that wraps around an overlay\n * and can be used for advanced positioning.\n * @returns Newly-create host element.\n */\n _createHostElement() {\n const host = this._document.createElement('div');\n this._overlayContainer.getContainerElement().appendChild(host);\n return host;\n }\n /**\n * Create a DomPortalOutlet into which the overlay content can be loaded.\n * @param pane The DOM element to turn into a portal outlet.\n * @returns A portal outlet for the given DOM element.\n */\n _createPortalOutlet(pane) {\n // We have to resolve the ApplicationRef later in order to allow people\n // to use overlay-based providers during app initialization.\n if (!this._appRef) {\n this._appRef = this._injector.get(ApplicationRef);\n }\n return new DomPortalOutlet(pane, this._componentFactoryResolver, this._appRef, this._injector, this._document);\n }\n}\nOverlay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Overlay, deps: [{ token: ScrollStrategyOptions }, { token: OverlayContainer }, { token: i0.ComponentFactoryResolver }, { token: OverlayPositionBuilder }, { token: OverlayKeyboardDispatcher }, { token: i0.Injector }, { token: i0.NgZone }, { token: DOCUMENT }, { token: i5.Directionality }, { token: i6.Location }, { token: OverlayOutsideClickDispatcher }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlay.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Overlay });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Overlay, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: ScrollStrategyOptions }, { type: OverlayContainer }, { type: i0.ComponentFactoryResolver }, { type: OverlayPositionBuilder }, { type: OverlayKeyboardDispatcher }, { type: i0.Injector }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i5.Directionality }, { type: i6.Location }, { type: OverlayOutsideClickDispatcher }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Default set of positions for the overlay. Follows the behavior of a dropdown. */\nconst defaultPositionList = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n];\n/** Injection token that determines the scroll handling while the connected overlay is open. */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken('cdk-connected-overlay-scroll-strategy');\n/**\n * Directive applied to an element to make it usable as an origin for an Overlay using a\n * ConnectedPositionStrategy.\n */\nclass CdkOverlayOrigin {\n constructor(\n /** Reference to the element on which the directive is applied. */\n elementRef) {\n this.elementRef = elementRef;\n }\n}\nCdkOverlayOrigin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkOverlayOrigin, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkOverlayOrigin.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkOverlayOrigin, selector: \"[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]\", exportAs: [\"cdkOverlayOrigin\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkOverlayOrigin, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',\n exportAs: 'cdkOverlayOrigin',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n/**\n * Directive to facilitate declarative creation of an\n * Overlay using a FlexibleConnectedPositionStrategy.\n */\nclass CdkConnectedOverlay {\n // TODO(jelbourn): inputs for size, scroll behavior, animation, etc.\n constructor(_overlay, templateRef, viewContainerRef, scrollStrategyFactory, _dir) {\n this._overlay = _overlay;\n this._dir = _dir;\n this._hasBackdrop = false;\n this._lockPosition = false;\n this._growAfterOpen = false;\n this._flexibleDimensions = false;\n this._push = false;\n this._backdropSubscription = Subscription.EMPTY;\n this._attachSubscription = Subscription.EMPTY;\n this._detachSubscription = Subscription.EMPTY;\n this._positionSubscription = Subscription.EMPTY;\n /** Margin between the overlay and the viewport edges. */\n this.viewportMargin = 0;\n /** Whether the overlay is open. */\n this.open = false;\n /** Whether the overlay can be closed by user interaction. */\n this.disableClose = false;\n /** Event emitted when the backdrop is clicked. */\n this.backdropClick = new EventEmitter();\n /** Event emitted when the position has changed. */\n this.positionChange = new EventEmitter();\n /** Event emitted when the overlay has been attached. */\n this.attach = new EventEmitter();\n /** Event emitted when the overlay has been detached. */\n this.detach = new EventEmitter();\n /** Emits when there are keyboard events that are targeted at the overlay. */\n this.overlayKeydown = new EventEmitter();\n /** Emits when there are mouse outside click events that are targeted at the overlay. */\n this.overlayOutsideClick = new EventEmitter();\n this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);\n this._scrollStrategyFactory = scrollStrategyFactory;\n this.scrollStrategy = this._scrollStrategyFactory();\n }\n /** The offset in pixels for the overlay connection point on the x-axis */\n get offsetX() {\n return this._offsetX;\n }\n set offsetX(offsetX) {\n this._offsetX = offsetX;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** The offset in pixels for the overlay connection point on the y-axis */\n get offsetY() {\n return this._offsetY;\n }\n set offsetY(offsetY) {\n this._offsetY = offsetY;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** Whether or not the overlay should attach a backdrop. */\n get hasBackdrop() {\n return this._hasBackdrop;\n }\n set hasBackdrop(value) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n /** Whether or not the overlay should be locked when scrolling. */\n get lockPosition() {\n return this._lockPosition;\n }\n set lockPosition(value) {\n this._lockPosition = coerceBooleanProperty(value);\n }\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n get flexibleDimensions() {\n return this._flexibleDimensions;\n }\n set flexibleDimensions(value) {\n this._flexibleDimensions = coerceBooleanProperty(value);\n }\n /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */\n get growAfterOpen() {\n return this._growAfterOpen;\n }\n set growAfterOpen(value) {\n this._growAfterOpen = coerceBooleanProperty(value);\n }\n /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */\n get push() {\n return this._push;\n }\n set push(value) {\n this._push = coerceBooleanProperty(value);\n }\n /** The associated overlay reference. */\n get overlayRef() {\n return this._overlayRef;\n }\n /** The element's layout direction. */\n get dir() {\n return this._dir ? this._dir.value : 'ltr';\n }\n ngOnDestroy() {\n this._attachSubscription.unsubscribe();\n this._detachSubscription.unsubscribe();\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n if (this._overlayRef) {\n this._overlayRef.dispose();\n }\n }\n ngOnChanges(changes) {\n if (this._position) {\n this._updatePositionStrategy(this._position);\n this._overlayRef.updateSize({\n width: this.width,\n minWidth: this.minWidth,\n height: this.height,\n minHeight: this.minHeight,\n });\n if (changes['origin'] && this.open) {\n this._position.apply();\n }\n }\n if (changes['open']) {\n this.open ? this._attachOverlay() : this._detachOverlay();\n }\n }\n /** Creates an overlay */\n _createOverlay() {\n if (!this.positions || !this.positions.length) {\n this.positions = defaultPositionList;\n }\n const overlayRef = (this._overlayRef = this._overlay.create(this._buildConfig()));\n this._attachSubscription = overlayRef.attachments().subscribe(() => this.attach.emit());\n this._detachSubscription = overlayRef.detachments().subscribe(() => this.detach.emit());\n overlayRef.keydownEvents().subscribe((event) => {\n this.overlayKeydown.next(event);\n if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n event.preventDefault();\n this._detachOverlay();\n }\n });\n this._overlayRef.outsidePointerEvents().subscribe((event) => {\n this.overlayOutsideClick.next(event);\n });\n }\n /** Builds the overlay config based on the directive's inputs */\n _buildConfig() {\n const positionStrategy = (this._position =\n this.positionStrategy || this._createPositionStrategy());\n const overlayConfig = new OverlayConfig({\n direction: this._dir,\n positionStrategy,\n scrollStrategy: this.scrollStrategy,\n hasBackdrop: this.hasBackdrop,\n });\n if (this.width || this.width === 0) {\n overlayConfig.width = this.width;\n }\n if (this.height || this.height === 0) {\n overlayConfig.height = this.height;\n }\n if (this.minWidth || this.minWidth === 0) {\n overlayConfig.minWidth = this.minWidth;\n }\n if (this.minHeight || this.minHeight === 0) {\n overlayConfig.minHeight = this.minHeight;\n }\n if (this.backdropClass) {\n overlayConfig.backdropClass = this.backdropClass;\n }\n if (this.panelClass) {\n overlayConfig.panelClass = this.panelClass;\n }\n return overlayConfig;\n }\n /** Updates the state of a position strategy, based on the values of the directive inputs. */\n _updatePositionStrategy(positionStrategy) {\n const positions = this.positions.map(currentPosition => ({\n originX: currentPosition.originX,\n originY: currentPosition.originY,\n overlayX: currentPosition.overlayX,\n overlayY: currentPosition.overlayY,\n offsetX: currentPosition.offsetX || this.offsetX,\n offsetY: currentPosition.offsetY || this.offsetY,\n panelClass: currentPosition.panelClass || undefined,\n }));\n return positionStrategy\n .setOrigin(this._getFlexibleConnectedPositionStrategyOrigin())\n .withPositions(positions)\n .withFlexibleDimensions(this.flexibleDimensions)\n .withPush(this.push)\n .withGrowAfterOpen(this.growAfterOpen)\n .withViewportMargin(this.viewportMargin)\n .withLockedPosition(this.lockPosition)\n .withTransformOriginOn(this.transformOriginSelector);\n }\n /** Returns the position strategy of the overlay to be set on the overlay config */\n _createPositionStrategy() {\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());\n this._updatePositionStrategy(strategy);\n return strategy;\n }\n _getFlexibleConnectedPositionStrategyOrigin() {\n if (this.origin instanceof CdkOverlayOrigin) {\n return this.origin.elementRef;\n }\n else {\n return this.origin;\n }\n }\n /** Attaches the overlay and subscribes to backdrop clicks if backdrop exists */\n _attachOverlay() {\n if (!this._overlayRef) {\n this._createOverlay();\n }\n else {\n // Update the overlay size, in case the directive's inputs have changed\n this._overlayRef.getConfig().hasBackdrop = this.hasBackdrop;\n }\n if (!this._overlayRef.hasAttached()) {\n this._overlayRef.attach(this._templatePortal);\n }\n if (this.hasBackdrop) {\n this._backdropSubscription = this._overlayRef.backdropClick().subscribe(event => {\n this.backdropClick.emit(event);\n });\n }\n else {\n this._backdropSubscription.unsubscribe();\n }\n this._positionSubscription.unsubscribe();\n // Only subscribe to `positionChanges` if requested, because putting\n // together all the information for it can be expensive.\n if (this.positionChange.observers.length > 0) {\n this._positionSubscription = this._position.positionChanges\n .pipe(takeWhile(() => this.positionChange.observers.length > 0))\n .subscribe(position => {\n this.positionChange.emit(position);\n if (this.positionChange.observers.length === 0) {\n this._positionSubscription.unsubscribe();\n }\n });\n }\n }\n /** Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists */\n _detachOverlay() {\n if (this._overlayRef) {\n this._overlayRef.detach();\n }\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n }\n}\nCdkConnectedOverlay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkConnectedOverlay, deps: [{ token: Overlay }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY }, { token: i5.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkConnectedOverlay.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkConnectedOverlay, selector: \"[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]\", inputs: { origin: [\"cdkConnectedOverlayOrigin\", \"origin\"], positions: [\"cdkConnectedOverlayPositions\", \"positions\"], positionStrategy: [\"cdkConnectedOverlayPositionStrategy\", \"positionStrategy\"], offsetX: [\"cdkConnectedOverlayOffsetX\", \"offsetX\"], offsetY: [\"cdkConnectedOverlayOffsetY\", \"offsetY\"], width: [\"cdkConnectedOverlayWidth\", \"width\"], height: [\"cdkConnectedOverlayHeight\", \"height\"], minWidth: [\"cdkConnectedOverlayMinWidth\", \"minWidth\"], minHeight: [\"cdkConnectedOverlayMinHeight\", \"minHeight\"], backdropClass: [\"cdkConnectedOverlayBackdropClass\", \"backdropClass\"], panelClass: [\"cdkConnectedOverlayPanelClass\", \"panelClass\"], viewportMargin: [\"cdkConnectedOverlayViewportMargin\", \"viewportMargin\"], scrollStrategy: [\"cdkConnectedOverlayScrollStrategy\", \"scrollStrategy\"], open: [\"cdkConnectedOverlayOpen\", \"open\"], disableClose: [\"cdkConnectedOverlayDisableClose\", \"disableClose\"], transformOriginSelector: [\"cdkConnectedOverlayTransformOriginOn\", \"transformOriginSelector\"], hasBackdrop: [\"cdkConnectedOverlayHasBackdrop\", \"hasBackdrop\"], lockPosition: [\"cdkConnectedOverlayLockPosition\", \"lockPosition\"], flexibleDimensions: [\"cdkConnectedOverlayFlexibleDimensions\", \"flexibleDimensions\"], growAfterOpen: [\"cdkConnectedOverlayGrowAfterOpen\", \"growAfterOpen\"], push: [\"cdkConnectedOverlayPush\", \"push\"] }, outputs: { backdropClick: \"backdropClick\", positionChange: \"positionChange\", attach: \"attach\", detach: \"detach\", overlayKeydown: \"overlayKeydown\", overlayOutsideClick: \"overlayOutsideClick\" }, exportAs: [\"cdkConnectedOverlay\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkConnectedOverlay, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',\n exportAs: 'cdkConnectedOverlay',\n }]\n }], ctorParameters: function () { return [{ type: Overlay }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY]\n }] }, { type: i5.Directionality, decorators: [{\n type: Optional\n }] }]; }, propDecorators: { origin: [{\n type: Input,\n args: ['cdkConnectedOverlayOrigin']\n }], positions: [{\n type: Input,\n args: ['cdkConnectedOverlayPositions']\n }], positionStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayPositionStrategy']\n }], offsetX: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetX']\n }], offsetY: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetY']\n }], width: [{\n type: Input,\n args: ['cdkConnectedOverlayWidth']\n }], height: [{\n type: Input,\n args: ['cdkConnectedOverlayHeight']\n }], minWidth: [{\n type: Input,\n args: ['cdkConnectedOverlayMinWidth']\n }], minHeight: [{\n type: Input,\n args: ['cdkConnectedOverlayMinHeight']\n }], backdropClass: [{\n type: Input,\n args: ['cdkConnectedOverlayBackdropClass']\n }], panelClass: [{\n type: Input,\n args: ['cdkConnectedOverlayPanelClass']\n }], viewportMargin: [{\n type: Input,\n args: ['cdkConnectedOverlayViewportMargin']\n }], scrollStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayScrollStrategy']\n }], open: [{\n type: Input,\n args: ['cdkConnectedOverlayOpen']\n }], disableClose: [{\n type: Input,\n args: ['cdkConnectedOverlayDisableClose']\n }], transformOriginSelector: [{\n type: Input,\n args: ['cdkConnectedOverlayTransformOriginOn']\n }], hasBackdrop: [{\n type: Input,\n args: ['cdkConnectedOverlayHasBackdrop']\n }], lockPosition: [{\n type: Input,\n args: ['cdkConnectedOverlayLockPosition']\n }], flexibleDimensions: [{\n type: Input,\n args: ['cdkConnectedOverlayFlexibleDimensions']\n }], growAfterOpen: [{\n type: Input,\n args: ['cdkConnectedOverlayGrowAfterOpen']\n }], push: [{\n type: Input,\n args: ['cdkConnectedOverlayPush']\n }], backdropClick: [{\n type: Output\n }], positionChange: [{\n type: Output\n }], attach: [{\n type: Output\n }], detach: [{\n type: Output\n }], overlayKeydown: [{\n type: Output\n }], overlayOutsideClick: [{\n type: Output\n }] } });\n/** @docs-private */\nfunction CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {\n provide: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass OverlayModule {\n}\nOverlayModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nOverlayModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayModule, declarations: [CdkConnectedOverlay, CdkOverlayOrigin], imports: [BidiModule, PortalModule, ScrollingModule], exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule] });\nOverlayModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayModule, providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER], imports: [[BidiModule, PortalModule, ScrollingModule], ScrollingModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: OverlayModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule, PortalModule, ScrollingModule],\n exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule],\n declarations: [CdkConnectedOverlay, CdkOverlayOrigin],\n providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Alternative to OverlayContainer that supports correct displaying of overlay elements in\n * Fullscreen mode\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen\n *\n * Should be provided in the root component.\n */\nclass FullscreenOverlayContainer extends OverlayContainer {\n constructor(_document, platform) {\n super(_document, platform);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this._fullScreenEventName && this._fullScreenListener) {\n this._document.removeEventListener(this._fullScreenEventName, this._fullScreenListener);\n }\n }\n _createContainer() {\n super._createContainer();\n this._adjustParentForFullscreenChange();\n this._addFullscreenChangeListener(() => this._adjustParentForFullscreenChange());\n }\n _adjustParentForFullscreenChange() {\n if (!this._containerElement) {\n return;\n }\n const fullscreenElement = this.getFullscreenElement();\n const parent = fullscreenElement || this._document.body;\n parent.appendChild(this._containerElement);\n }\n _addFullscreenChangeListener(fn) {\n const eventName = this._getEventName();\n if (eventName) {\n if (this._fullScreenListener) {\n this._document.removeEventListener(eventName, this._fullScreenListener);\n }\n this._document.addEventListener(eventName, fn);\n this._fullScreenListener = fn;\n }\n }\n _getEventName() {\n if (!this._fullScreenEventName) {\n const _document = this._document;\n if (_document.fullscreenEnabled) {\n this._fullScreenEventName = 'fullscreenchange';\n }\n else if (_document.webkitFullscreenEnabled) {\n this._fullScreenEventName = 'webkitfullscreenchange';\n }\n else if (_document.mozFullScreenEnabled) {\n this._fullScreenEventName = 'mozfullscreenchange';\n }\n else if (_document.msFullscreenEnabled) {\n this._fullScreenEventName = 'MSFullscreenChange';\n }\n }\n return this._fullScreenEventName;\n }\n /**\n * When the page is put into fullscreen mode, a specific element is specified.\n * Only that element and its children are visible when in fullscreen mode.\n */\n getFullscreenElement() {\n const _document = this._document;\n return (_document.fullscreenElement ||\n _document.webkitFullscreenElement ||\n _document.mozFullScreenElement ||\n _document.msFullscreenElement ||\n null);\n }\n}\nFullscreenOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FullscreenOverlayContainer, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nFullscreenOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FullscreenOverlayContainer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: FullscreenOverlayContainer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BlockScrollStrategy, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, FullscreenOverlayContainer, GlobalPositionStrategy, NoopScrollStrategy, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, ScrollStrategyOptions, ScrollingVisibility, validateHorizontalPosition, validateVerticalPosition };\n","import { operate } from '../util/lift';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function takeWhile(predicate, inclusive = false) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(new OperatorSubscriber(subscriber, (value) => {\n const result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n }));\n });\n}\n","import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator;\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = typeof Intl !== 'undefined' && Intl.v8BreakIterator;\n}\ncatch {\n hasV8BreakIterator = false;\n}\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\nclass Platform {\n constructor(_platformId) {\n this._platformId = _platformId;\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n this.isBrowser = this._platformId\n ? isPlatformBrowser(this._platformId)\n : typeof document === 'object' && !!document;\n /** Whether the current browser is Microsoft Edge. */\n this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n /** Whether the current rendering engine is Microsoft Trident. */\n this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n this.BLINK = this.isBrowser &&\n !!(window.chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' &&\n !this.EDGE &&\n !this.TRIDENT;\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n this.WEBKIT = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) &&\n !this.BLINK &&\n !this.EDGE &&\n !this.TRIDENT;\n /** Whether the current platform is Apple iOS. */\n this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n }\n}\nPlatform.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Platform, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nPlatform.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Platform, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: Platform, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass PlatformModule {\n}\nPlatformModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PlatformModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPlatformModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PlatformModule });\nPlatformModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PlatformModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PlatformModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes;\n/** Types of `` that *might* be supported. */\nconst candidateInputTypes = [\n // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n // first changing it to something else:\n // The specified value \"\" does not conform to the required format.\n // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n 'color',\n 'button',\n 'checkbox',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n];\n/** @returns The input types supported by this browser. */\nfunction getSupportedInputTypes() {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }));\n return supportedInputTypes;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents;\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nfunction supportsPassiveEventListeners() {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n get: () => (supportsPassiveEvents = true),\n }));\n }\n finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n return supportsPassiveEvents;\n}\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nfunction normalizePassiveListenerOptions(options) {\n return supportsPassiveEventListeners() ? options : !!options.capture;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType;\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\nlet scrollBehaviorSupported;\n/** Check whether the browser supports scroll behaviors. */\nfunction supportsScrollBehavior() {\n if (scrollBehaviorSupported == null) {\n // If we're not in the browser, it can't be supported. Also check for `Element`, because\n // some projects stub out the global `document` during SSR which can throw us off.\n if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n scrollBehaviorSupported = false;\n return scrollBehaviorSupported;\n }\n // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n if ('scrollBehavior' in document.documentElement.style) {\n scrollBehaviorSupported = true;\n }\n else {\n // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n const scrollToFunction = Element.prototype.scrollTo;\n if (scrollToFunction) {\n // We can detect if the function has been polyfilled by calling `toString` on it. Native\n // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n // polyfilled functions as supporting scroll behavior.\n scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n }\n else {\n scrollBehaviorSupported = false;\n }\n }\n }\n return scrollBehaviorSupported;\n}\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nfunction getRtlScrollAxisType() {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return 0 /* NORMAL */;\n }\n if (rtlScrollAxisType == null) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n rtlScrollAxisType = 0 /* NORMAL */;\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? 1 /* NEGATED */ : 2 /* INVERTED */;\n }\n scrollContainer.remove();\n }\n return rtlScrollAxisType;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet shadowDomIsSupported;\n/** Checks whether the user's browser support Shadow DOM. */\nfunction _supportsShadowDom() {\n if (shadowDomIsSupported == null) {\n const head = typeof document !== 'undefined' ? document.head : null;\n shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow));\n }\n return shadowDomIsSupported;\n}\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nfunction _getShadowRoot(element) {\n if (_supportsShadowDom()) {\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n // Note that this should be caught by `_supportsShadowDom`, but some\n // teams have been able to hit this code path on unsupported browsers.\n if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n return rootNode;\n }\n }\n return null;\n}\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\nfunction _getFocusedElementPierceShadowDom() {\n let activeElement = typeof document !== 'undefined' && document\n ? document.activeElement\n : null;\n while (activeElement && activeElement.shadowRoot) {\n const newActiveElement = activeElement.shadowRoot.activeElement;\n if (newActiveElement === activeElement) {\n break;\n }\n else {\n activeElement = newActiveElement;\n }\n }\n return activeElement;\n}\n/** Gets the target of an event while accounting for Shadow DOM. */\nfunction _getEventTarget(event) {\n // If an event is bound outside the Shadow DOM, the `event.target` will\n // point to the shadow root so we have to use `composedPath` instead.\n return (event.composedPath ? event.composedPath()[0] : event.target);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Gets whether the code is currently running in a test environment. */\nfunction _isTestEnvironment() {\n // We can't use `declare const` because it causes conflicts inside Google with the real typings\n // for these symbols and we can't read them off the global object, because they don't appear to\n // be attached there for some runners like Jest.\n // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n return (\n // @ts-ignore\n (typeof __karma__ !== 'undefined' && !!__karma__) ||\n // @ts-ignore\n (typeof jasmine !== 'undefined' && !!jasmine) ||\n // @ts-ignore\n (typeof jest !== 'undefined' && !!jest) ||\n // @ts-ignore\n (typeof Mocha !== 'undefined' && !!Mocha));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Platform, PlatformModule, _getEventTarget, _getFocusedElementPierceShadowDom, _getShadowRoot, _isTestEnvironment, _supportsShadowDom, getRtlScrollAxisType, getSupportedInputTypes, normalizePassiveListenerOptions, supportsPassiveEventListeners, supportsScrollBehavior };\n","import * as i0 from '@angular/core';\nimport { ElementRef, Directive, EventEmitter, Inject, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\nfunction throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\nfunction throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\nfunction throwPortalOutletAlreadyDisposedError() {\n throw Error('This PortalOutlet has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\nfunction throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' +\n 'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\nfunction throwNullPortalOutletError() {\n throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\nfunction throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a host');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\nclass Portal {\n /** Attach this portal to a host. */\n attach(host) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (host == null) {\n throwNullPortalOutletError();\n }\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n }\n this._attachedHost = host;\n return host.attach(this);\n }\n /** Detach this portal from its host */\n detach() {\n let host = this._attachedHost;\n if (host != null) {\n this._attachedHost = null;\n host.detach();\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwNoPortalAttachedError();\n }\n }\n /** Whether this portal is attached to a host. */\n get isAttached() {\n return this._attachedHost != null;\n }\n /**\n * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n * the PortalOutlet when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host) {\n this._attachedHost = host;\n }\n}\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal extends Portal {\n constructor(component, viewContainerRef, injector, componentFactoryResolver) {\n super();\n this.component = component;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n this.componentFactoryResolver = componentFactoryResolver;\n }\n}\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nclass TemplatePortal extends Portal {\n constructor(template, viewContainerRef, context) {\n super();\n this.templateRef = template;\n this.viewContainerRef = viewContainerRef;\n this.context = context;\n }\n get origin() {\n return this.templateRef.elementRef;\n }\n /**\n * Attach the portal to the provided `PortalOutlet`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n */\n attach(host, context = this.context) {\n this.context = context;\n return super.attach(host);\n }\n detach() {\n this.context = undefined;\n return super.detach();\n }\n}\n/**\n * A `DomPortal` is a portal whose DOM element will be taken from its current position\n * in the DOM and moved into a portal outlet, when it is attached. On detach, the content\n * will be restored to its original position.\n */\nclass DomPortal extends Portal {\n constructor(element) {\n super();\n this.element = element instanceof ElementRef ? element.nativeElement : element;\n }\n}\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\nclass BasePortalOutlet {\n constructor() {\n /** Whether this host has already been permanently disposed. */\n this._isDisposed = false;\n // @breaking-change 10.0.0 `attachDomPortal` to become a required abstract method.\n this.attachDomPortal = null;\n }\n /** Whether this host has an attached portal. */\n hasAttached() {\n return !!this._attachedPortal;\n }\n /** Attaches a portal. */\n attach(portal) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!portal) {\n throwNullPortalError();\n }\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n if (this._isDisposed) {\n throwPortalOutletAlreadyDisposedError();\n }\n }\n if (portal instanceof ComponentPortal) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal);\n }\n else if (portal instanceof TemplatePortal) {\n this._attachedPortal = portal;\n return this.attachTemplatePortal(portal);\n // @breaking-change 10.0.0 remove null check for `this.attachDomPortal`.\n }\n else if (this.attachDomPortal && portal instanceof DomPortal) {\n this._attachedPortal = portal;\n return this.attachDomPortal(portal);\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwUnknownPortalTypeError();\n }\n }\n /** Detaches a previously attached portal. */\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n this._invokeDisposeFn();\n }\n /** Permanently dispose of this portal host. */\n dispose() {\n if (this.hasAttached()) {\n this.detach();\n }\n this._invokeDisposeFn();\n this._isDisposed = true;\n }\n /** @docs-private */\n setDisposeFn(fn) {\n this._disposeFn = fn;\n }\n _invokeDisposeFn() {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\n }\n }\n}\n/**\n * @deprecated Use `BasePortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass BasePortalHost extends BasePortalOutlet {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\nclass DomPortalOutlet extends BasePortalOutlet {\n constructor(\n /** Element into which the content is projected. */\n outletElement, _componentFactoryResolver, _appRef, _defaultInjector, \n /**\n * @deprecated `_document` Parameter to be made required.\n * @breaking-change 10.0.0\n */\n _document) {\n super();\n this.outletElement = outletElement;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._defaultInjector = _defaultInjector;\n /**\n * Attaches a DOM portal by transferring its content into the outlet.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n // @breaking-change 10.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n element.parentNode.insertBefore(anchorNode, element);\n this.outletElement.appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n // We can't use `replaceWith` here because IE doesn't support it.\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n let componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the view to the application.\n if (portal.viewContainerRef) {\n componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector);\n this.setDisposeFn(() => componentRef.destroy());\n }\n else {\n componentRef = componentFactory.create(portal.injector || this._defaultInjector);\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n this._appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n });\n }\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n this._attachedPortal = portal;\n return componentRef;\n }\n /**\n * Attaches a template portal to the DOM as an embedded view.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n let viewContainer = portal.viewContainerRef;\n let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context);\n // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n // But for the DomPortalOutlet the view can be added everywhere in the DOM\n // (e.g Overlay Container) To move the view to the specified host element. We just\n // re-append the existing root nodes.\n viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));\n // Note that we want to detect changes after the nodes have been moved so that\n // any directives inside the portal that are looking at the DOM inside a lifecycle\n // hook won't be invoked too early.\n viewRef.detectChanges();\n this.setDisposeFn(() => {\n let index = viewContainer.indexOf(viewRef);\n if (index !== -1) {\n viewContainer.remove(index);\n }\n });\n this._attachedPortal = portal;\n // TODO(jelbourn): Return locals from view.\n return viewRef;\n }\n /**\n * Clears out a portal from the DOM.\n */\n dispose() {\n super.dispose();\n this.outletElement.remove();\n }\n /** Gets the root HTMLElement for an instantiated component. */\n _getComponentRootNode(componentRef) {\n return componentRef.hostView.rootNodes[0];\n }\n}\n/**\n * @deprecated Use `DomPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass DomPortalHost extends DomPortalOutlet {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\nclass CdkPortal extends TemplatePortal {\n constructor(templateRef, viewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\nCdkPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkPortal, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkPortal.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkPortal, selector: \"[cdkPortal]\", exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkPortal, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortal]',\n exportAs: 'cdkPortal',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });\n/**\n * @deprecated Use `CdkPortal` instead.\n * @breaking-change 9.0.0\n */\nclass TemplatePortalDirective extends CdkPortal {\n}\nTemplatePortalDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TemplatePortalDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nTemplatePortalDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: TemplatePortalDirective, selector: \"[cdk-portal], [portal]\", providers: [\n {\n provide: CdkPortal,\n useExisting: TemplatePortalDirective,\n },\n ], exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: TemplatePortalDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-portal], [portal]',\n exportAs: 'cdkPortal',\n providers: [\n {\n provide: CdkPortal,\n useExisting: TemplatePortalDirective,\n },\n ],\n }]\n }] });\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * ``\n */\nclass CdkPortalOutlet extends BasePortalOutlet {\n constructor(_componentFactoryResolver, _viewContainerRef, \n /**\n * @deprecated `_document` parameter to be made required.\n * @breaking-change 9.0.0\n */\n _document) {\n super();\n this._componentFactoryResolver = _componentFactoryResolver;\n this._viewContainerRef = _viewContainerRef;\n /** Whether the portal component is initialized. */\n this._isInitialized = false;\n /** Emits when a portal is attached to the outlet. */\n this.attached = new EventEmitter();\n /**\n * Attaches the given DomPortal to this PortalHost by moving all of the portal content into it.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n // @breaking-change 9.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n portal.setAttachedHost(this);\n element.parentNode.insertBefore(anchorNode, element);\n this._getRootNode().appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /** Portal associated with the Portal outlet. */\n get portal() {\n return this._attachedPortal;\n }\n set portal(portal) {\n // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n // run. This handles the cases where the user might do something like `
    `\n // and attach a portal programmatically in the parent component. When Angular does the first CD\n // round, it will fire the setter with empty string, causing the user's content to be cleared.\n if (this.hasAttached() && !portal && !this._isInitialized) {\n return;\n }\n if (this.hasAttached()) {\n super.detach();\n }\n if (portal) {\n super.attach(portal);\n }\n this._attachedPortal = portal;\n }\n /** Component or view reference that is attached to the portal. */\n get attachedRef() {\n return this._attachedRef;\n }\n ngOnInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n super.dispose();\n this._attachedPortal = null;\n this._attachedRef = null;\n }\n /**\n * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n *\n * @param portal Portal to be attached to the portal outlet.\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n portal.setAttachedHost(this);\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalOutlet.\n const viewContainerRef = portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef;\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n const ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector);\n // If we're using a view container that's different from the injected one (e.g. when the portal\n // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered\n // inside of the alternate view container.\n if (viewContainerRef !== this._viewContainerRef) {\n this._getRootNode().appendChild(ref.hostView.rootNodes[0]);\n }\n super.setDisposeFn(() => ref.destroy());\n this._attachedPortal = portal;\n this._attachedRef = ref;\n this.attached.emit(ref);\n return ref;\n }\n /**\n * Attach the given TemplatePortal to this PortalHost as an embedded View.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n portal.setAttachedHost(this);\n const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);\n super.setDisposeFn(() => this._viewContainerRef.clear());\n this._attachedPortal = portal;\n this._attachedRef = viewRef;\n this.attached.emit(viewRef);\n return viewRef;\n }\n /** Gets the root node of the portal outlet. */\n _getRootNode() {\n const nativeElement = this._viewContainerRef.element.nativeElement;\n // The directive could be set on a template which will result in a comment\n // node being the root. Use the comment's parent node if that is the case.\n return (nativeElement.nodeType === nativeElement.ELEMENT_NODE\n ? nativeElement\n : nativeElement.parentNode);\n }\n}\nCdkPortalOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkPortalOutlet, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nCdkPortalOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: { portal: [\"cdkPortalOutlet\", \"portal\"] }, outputs: { attached: \"attached\" }, exportAs: [\"cdkPortalOutlet\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkPortalOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortalOutlet]',\n exportAs: 'cdkPortalOutlet',\n inputs: ['portal: cdkPortalOutlet'],\n }]\n }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, propDecorators: { attached: [{\n type: Output\n }] } });\n/**\n * @deprecated Use `CdkPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass PortalHostDirective extends CdkPortalOutlet {\n}\nPortalHostDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalHostDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nPortalHostDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: PortalHostDirective, selector: \"[cdkPortalHost], [portalHost]\", inputs: { portal: [\"cdkPortalHost\", \"portal\"] }, providers: [\n {\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective,\n },\n ], exportAs: [\"cdkPortalHost\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalHostDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortalHost], [portalHost]',\n exportAs: 'cdkPortalHost',\n inputs: ['portal: cdkPortalHost'],\n providers: [\n {\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective,\n },\n ],\n }]\n }] });\nclass PortalModule {\n}\nPortalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPortalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalModule, declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective] });\nPortalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: PortalModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n * @deprecated Use `Injector.create` instead.\n * @breaking-change 11.0.0\n */\nclass PortalInjector {\n constructor(_parentInjector, _customTokens) {\n this._parentInjector = _parentInjector;\n this._customTokens = _customTokens;\n }\n get(token, notFoundValue) {\n const value = this._customTokens.get(token);\n if (typeof value !== 'undefined') {\n return value;\n }\n return this._parentInjector.get(token, notFoundValue);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BasePortalHost, BasePortalOutlet, CdkPortal, CdkPortalOutlet, ComponentPortal, DomPortal, DomPortalHost, DomPortalOutlet, Portal, PortalHostDirective, PortalInjector, PortalModule, TemplatePortal, TemplatePortalDirective };\n","import { async } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nexport function auditTime(duration, scheduler = async) {\n return audit(() => timer(duration, scheduler));\n}\n","import { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { OperatorSubscriber } from './OperatorSubscriber';\nexport function audit(durationSelector) {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue = null;\n let durationSubscriber = null;\n let isComplete = false;\n const endDuration = () => {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n const value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n isComplete && subscriber.complete();\n };\n const cleanupDuration = () => {\n durationSubscriber = null;\n isComplete && subscriber.complete();\n };\n source.subscribe(new OperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom(durationSelector(value)).subscribe((durationSubscriber = new OperatorSubscriber(subscriber, endDuration, cleanupDuration)));\n }\n }, () => {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }));\n });\n}\n","import { coerceNumberProperty, coerceElement, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, Directive, Input, Injectable, Optional, Inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Output, ViewChild, SkipSelf, NgModule } from '@angular/core';\nimport { Subject, of, Observable, fromEvent, animationFrameScheduler, asapScheduler, Subscription, isObservable } from 'rxjs';\nimport { distinctUntilChanged, auditTime, filter, takeUntil, startWith, pairwise, switchMap, shareReplay } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\nimport { getRtlScrollAxisType, supportsScrollBehavior, PlatformModule } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport * as i2 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport * as i2$1 from '@angular/cdk/collections';\nimport { isDataSource, ArrayDataSource, _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy } from '@angular/cdk/collections';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** The injection token used to specify the virtual scrolling strategy. */\nconst VIRTUAL_SCROLL_STRATEGY = new InjectionToken('VIRTUAL_SCROLL_STRATEGY');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Virtual scrolling strategy for lists with items of known fixed size. */\nclass FixedSizeVirtualScrollStrategy {\n /**\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n constructor(itemSize, minBufferPx, maxBufferPx) {\n this._scrolledIndexChange = new Subject();\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n this.scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\n /** The attached viewport. */\n this._viewport = null;\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n }\n /**\n * Attaches this scroll strategy to a viewport.\n * @param viewport The viewport to attach this strategy to.\n */\n attach(viewport) {\n this._viewport = viewport;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** Detaches this scroll strategy from the currently attached viewport. */\n detach() {\n this._scrolledIndexChange.complete();\n this._viewport = null;\n }\n /**\n * Update the item size and buffer size.\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n updateItemAndBufferSize(itemSize, minBufferPx, maxBufferPx) {\n if (maxBufferPx < minBufferPx && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');\n }\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentScrolled() {\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onDataLengthChanged() {\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentRendered() {\n /* no-op */\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onRenderedOffsetChanged() {\n /* no-op */\n }\n /**\n * Scroll to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling.\n */\n scrollToIndex(index, behavior) {\n if (this._viewport) {\n this._viewport.scrollToOffset(index * this._itemSize, behavior);\n }\n }\n /** Update the viewport's total content size. */\n _updateTotalContentSize() {\n if (!this._viewport) {\n return;\n }\n this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);\n }\n /** Update the viewport's rendered range. */\n _updateRenderedRange() {\n if (!this._viewport) {\n return;\n }\n const renderedRange = this._viewport.getRenderedRange();\n const newRange = { start: renderedRange.start, end: renderedRange.end };\n const viewportSize = this._viewport.getViewportSize();\n const dataLength = this._viewport.getDataLength();\n let scrollOffset = this._viewport.measureScrollOffset();\n // Prevent NaN as result when dividing by zero.\n let firstVisibleIndex = this._itemSize > 0 ? scrollOffset / this._itemSize : 0;\n // If user scrolls to the bottom of the list and data changes to a smaller list\n if (newRange.end > dataLength) {\n // We have to recalculate the first visible index based on new data length and viewport size.\n const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);\n const newVisibleIndex = Math.max(0, Math.min(firstVisibleIndex, dataLength - maxVisibleItems));\n // If first visible index changed we must update scroll offset to handle start/end buffers\n // Current range must also be adjusted to cover the new position (bottom of new list).\n if (firstVisibleIndex != newVisibleIndex) {\n firstVisibleIndex = newVisibleIndex;\n scrollOffset = newVisibleIndex * this._itemSize;\n newRange.start = Math.floor(firstVisibleIndex);\n }\n newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));\n }\n const startBuffer = scrollOffset - newRange.start * this._itemSize;\n if (startBuffer < this._minBufferPx && newRange.start != 0) {\n const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize);\n newRange.start = Math.max(0, newRange.start - expandStart);\n newRange.end = Math.min(dataLength, Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize));\n }\n else {\n const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize);\n if (endBuffer < this._minBufferPx && newRange.end != dataLength) {\n const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize);\n if (expandEnd > 0) {\n newRange.end = Math.min(dataLength, newRange.end + expandEnd);\n newRange.start = Math.max(0, Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize));\n }\n }\n }\n this._viewport.setRenderedRange(newRange);\n this._viewport.setRenderedContentOffset(this._itemSize * newRange.start);\n this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n }\n}\n/**\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\n * `FixedSizeVirtualScrollStrategy` from the given directive.\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\n * `FixedSizeVirtualScrollStrategy` from.\n */\nfunction _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir) {\n return fixedSizeDir._scrollStrategy;\n}\n/** A virtual scroll strategy that supports fixed-size items. */\nclass CdkFixedSizeVirtualScroll {\n constructor() {\n this._itemSize = 20;\n this._minBufferPx = 100;\n this._maxBufferPx = 200;\n /** The scroll strategy used by this directive. */\n this._scrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n /** The size of the items in the list (in pixels). */\n get itemSize() {\n return this._itemSize;\n }\n set itemSize(value) {\n this._itemSize = coerceNumberProperty(value);\n }\n /**\n * The minimum amount of buffer rendered beyond the viewport (in pixels).\n * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n */\n get minBufferPx() {\n return this._minBufferPx;\n }\n set minBufferPx(value) {\n this._minBufferPx = coerceNumberProperty(value);\n }\n /**\n * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.\n */\n get maxBufferPx() {\n return this._maxBufferPx;\n }\n set maxBufferPx(value) {\n this._maxBufferPx = coerceNumberProperty(value);\n }\n ngOnChanges() {\n this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n}\nCdkFixedSizeVirtualScroll.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkFixedSizeVirtualScroll, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCdkFixedSizeVirtualScroll.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkFixedSizeVirtualScroll, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: { itemSize: \"itemSize\", minBufferPx: \"minBufferPx\", maxBufferPx: \"maxBufferPx\" }, providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n },\n ], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkFixedSizeVirtualScroll, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-virtual-scroll-viewport[itemSize]',\n providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n },\n ],\n }]\n }], propDecorators: { itemSize: [{\n type: Input\n }], minBufferPx: [{\n type: Input\n }], maxBufferPx: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Time in ms to throttle the scrolling events by default. */\nconst DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\nclass ScrollDispatcher {\n constructor(_ngZone, _platform, document) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n this._scrolled = new Subject();\n /** Keeps track of the global `scroll` and `resize` subscriptions. */\n this._globalSubscription = null;\n /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n this._scrolledCount = 0;\n /**\n * Map of all the scrollable references that are registered with the service and their\n * scroll event subscriptions.\n */\n this.scrollContainers = new Map();\n this._document = document;\n }\n /**\n * Registers a scrollable instance with the service and listens for its scrolled events. When the\n * scrollable is scrolled, the service emits the event to its scrolled observable.\n * @param scrollable Scrollable instance to be registered.\n */\n register(scrollable) {\n if (!this.scrollContainers.has(scrollable)) {\n this.scrollContainers.set(scrollable, scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable)));\n }\n }\n /**\n * Deregisters a Scrollable reference and unsubscribes from its scroll event observable.\n * @param scrollable Scrollable instance to be deregistered.\n */\n deregister(scrollable) {\n const scrollableReference = this.scrollContainers.get(scrollable);\n if (scrollableReference) {\n scrollableReference.unsubscribe();\n this.scrollContainers.delete(scrollable);\n }\n }\n /**\n * Returns an observable that emits an event whenever any of the registered Scrollable\n * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n * to override the default \"throttle\" time.\n *\n * **Note:** in order to avoid hitting change detection for every scroll event,\n * all of the events emitted from this stream will be run outside the Angular zone.\n * If you need to update any data bindings as a result of a scroll event, you have\n * to run the callback using `NgZone.run`.\n */\n scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME) {\n if (!this._platform.isBrowser) {\n return of();\n }\n return new Observable((observer) => {\n if (!this._globalSubscription) {\n this._addGlobalListener();\n }\n // In the case of a 0ms delay, use an observable without auditTime\n // since it does add a perceptible delay in processing overhead.\n const subscription = auditTimeInMs > 0\n ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer)\n : this._scrolled.subscribe(observer);\n this._scrolledCount++;\n return () => {\n subscription.unsubscribe();\n this._scrolledCount--;\n if (!this._scrolledCount) {\n this._removeGlobalListener();\n }\n };\n });\n }\n ngOnDestroy() {\n this._removeGlobalListener();\n this.scrollContainers.forEach((_, container) => this.deregister(container));\n this._scrolled.complete();\n }\n /**\n * Returns an observable that emits whenever any of the\n * scrollable ancestors of an element are scrolled.\n * @param elementOrElementRef Element whose ancestors to listen for.\n * @param auditTimeInMs Time to throttle the scroll events.\n */\n ancestorScrolled(elementOrElementRef, auditTimeInMs) {\n const ancestors = this.getAncestorScrollContainers(elementOrElementRef);\n return this.scrolled(auditTimeInMs).pipe(filter(target => {\n return !target || ancestors.indexOf(target) > -1;\n }));\n }\n /** Returns all registered Scrollables that contain the provided element. */\n getAncestorScrollContainers(elementOrElementRef) {\n const scrollingContainers = [];\n this.scrollContainers.forEach((_subscription, scrollable) => {\n if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {\n scrollingContainers.push(scrollable);\n }\n });\n return scrollingContainers;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Returns true if the element is contained within the provided Scrollable. */\n _scrollableContainsElement(scrollable, elementOrElementRef) {\n let element = coerceElement(elementOrElementRef);\n let scrollableElement = scrollable.getElementRef().nativeElement;\n // Traverse through the element parents until we reach null, checking if any of the elements\n // are the scrollable's element.\n do {\n if (element == scrollableElement) {\n return true;\n }\n } while ((element = element.parentElement));\n return false;\n }\n /** Sets up the global scroll listeners. */\n _addGlobalListener() {\n this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());\n });\n }\n /** Cleans up the global scroll listener. */\n _removeGlobalListener() {\n if (this._globalSubscription) {\n this._globalSubscription.unsubscribe();\n this._globalSubscription = null;\n }\n }\n}\nScrollDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollDispatcher, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\nclass CdkScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n this.elementRef = elementRef;\n this.scrollDispatcher = scrollDispatcher;\n this.ngZone = ngZone;\n this.dir = dir;\n this._destroyed = new Subject();\n this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll')\n .pipe(takeUntil(this._destroyed))\n .subscribe(observer)));\n }\n ngOnInit() {\n this.scrollDispatcher.register(this);\n }\n ngOnDestroy() {\n this.scrollDispatcher.deregister(this);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Returns observable that emits when a scroll event is fired on the host element. */\n elementScrolled() {\n return this._elementScrolled;\n }\n /** Gets the ElementRef for the viewport. */\n getElementRef() {\n return this.elementRef;\n }\n /**\n * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\n * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param options specified the offsets to scroll to.\n */\n scrollTo(options) {\n const el = this.elementRef.nativeElement;\n const isRtl = this.dir && this.dir.value == 'rtl';\n // Rewrite start & end offsets as right or left offsets.\n if (options.left == null) {\n options.left = isRtl ? options.end : options.start;\n }\n if (options.right == null) {\n options.right = isRtl ? options.start : options.end;\n }\n // Rewrite the bottom offset as a top offset.\n if (options.bottom != null) {\n options.top =\n el.scrollHeight - el.clientHeight - options.bottom;\n }\n // Rewrite the right offset as a left offset.\n if (isRtl && getRtlScrollAxisType() != 0 /* NORMAL */) {\n if (options.left != null) {\n options.right =\n el.scrollWidth - el.clientWidth - options.left;\n }\n if (getRtlScrollAxisType() == 2 /* INVERTED */) {\n options.left = options.right;\n }\n else if (getRtlScrollAxisType() == 1 /* NEGATED */) {\n options.left = options.right ? -options.right : options.right;\n }\n }\n else {\n if (options.right != null) {\n options.left =\n el.scrollWidth - el.clientWidth - options.right;\n }\n }\n this._applyScrollToOptions(options);\n }\n _applyScrollToOptions(options) {\n const el = this.elementRef.nativeElement;\n if (supportsScrollBehavior()) {\n el.scrollTo(options);\n }\n else {\n if (options.top != null) {\n el.scrollTop = options.top;\n }\n if (options.left != null) {\n el.scrollLeft = options.left;\n }\n }\n }\n /**\n * Measures the scroll offset relative to the specified edge of the viewport. This method can be\n * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent\n * about what scrollLeft means in RTL. The values returned by this method are normalized such that\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param from The edge to measure from.\n */\n measureScrollOffset(from) {\n const LEFT = 'left';\n const RIGHT = 'right';\n const el = this.elementRef.nativeElement;\n if (from == 'top') {\n return el.scrollTop;\n }\n if (from == 'bottom') {\n return el.scrollHeight - el.clientHeight - el.scrollTop;\n }\n // Rewrite start & end as left or right offsets.\n const isRtl = this.dir && this.dir.value == 'rtl';\n if (from == 'start') {\n from = isRtl ? RIGHT : LEFT;\n }\n else if (from == 'end') {\n from = isRtl ? LEFT : RIGHT;\n }\n if (isRtl && getRtlScrollAxisType() == 2 /* INVERTED */) {\n // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n else {\n return el.scrollLeft;\n }\n }\n else if (isRtl && getRtlScrollAxisType() == 1 /* NEGATED */) {\n // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft + el.scrollWidth - el.clientWidth;\n }\n else {\n return -el.scrollLeft;\n }\n }\n else {\n // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and\n // (scrollWidth - clientWidth) when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft;\n }\n else {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n }\n }\n}\nCdkScrollable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollable, deps: [{ token: i0.ElementRef }, { token: ScrollDispatcher }, { token: i0.NgZone }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkScrollable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkScrollable, selector: \"[cdk-scrollable], [cdkScrollable]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollable, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-scrollable], [cdkScrollable]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: ScrollDispatcher }, { type: i0.NgZone }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Time in ms to throttle the resize events by default. */\nconst DEFAULT_RESIZE_TIME = 20;\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\nclass ViewportRuler {\n constructor(_platform, ngZone, document) {\n this._platform = _platform;\n /** Stream of viewport change events. */\n this._change = new Subject();\n /** Event listener that will be used to handle the viewport change events. */\n this._changeListener = (event) => {\n this._change.next(event);\n };\n this._document = document;\n ngZone.runOutsideAngular(() => {\n if (_platform.isBrowser) {\n const window = this._getWindow();\n // Note that bind the events ourselves, rather than going through something like RxJS's\n // `fromEvent` so that we can ensure that they're bound outside of the NgZone.\n window.addEventListener('resize', this._changeListener);\n window.addEventListener('orientationchange', this._changeListener);\n }\n // Clear the cached position so that the viewport is re-measured next time it is required.\n // We don't need to keep track of the subscription, because it is completed on destroy.\n this.change().subscribe(() => (this._viewportSize = null));\n });\n }\n ngOnDestroy() {\n if (this._platform.isBrowser) {\n const window = this._getWindow();\n window.removeEventListener('resize', this._changeListener);\n window.removeEventListener('orientationchange', this._changeListener);\n }\n this._change.complete();\n }\n /** Returns the viewport's width and height. */\n getViewportSize() {\n if (!this._viewportSize) {\n this._updateViewportSize();\n }\n const output = { width: this._viewportSize.width, height: this._viewportSize.height };\n // If we're not on a browser, don't cache the size since it'll be mocked out anyway.\n if (!this._platform.isBrowser) {\n this._viewportSize = null;\n }\n return output;\n }\n /** Gets a ClientRect for the viewport's bounds. */\n getViewportRect() {\n // Use the document element's bounding rect rather than the window scroll properties\n // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n // can disagree when the page is pinch-zoomed (on devices that support touch).\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n // We use the documentElement instead of the body because, by default (without a css reset)\n // browsers typically give the document body an 8px margin, which is not included in\n // getBoundingClientRect().\n const scrollPosition = this.getViewportScrollPosition();\n const { width, height } = this.getViewportSize();\n return {\n top: scrollPosition.top,\n left: scrollPosition.left,\n bottom: scrollPosition.top + height,\n right: scrollPosition.left + width,\n height,\n width,\n };\n }\n /** Gets the (top, left) scroll position of the viewport. */\n getViewportScrollPosition() {\n // While we can get a reference to the fake document\n // during SSR, it doesn't have getBoundingClientRect.\n if (!this._platform.isBrowser) {\n return { top: 0, left: 0 };\n }\n // The top-left-corner of the viewport is determined by the scroll position of the document\n // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n // `document.documentElement` works consistently, where the `top` and `left` values will\n // equal negative the scroll position.\n const document = this._document;\n const window = this._getWindow();\n const documentElement = document.documentElement;\n const documentRect = documentElement.getBoundingClientRect();\n const top = -documentRect.top ||\n document.body.scrollTop ||\n window.scrollY ||\n documentElement.scrollTop ||\n 0;\n const left = -documentRect.left ||\n document.body.scrollLeft ||\n window.scrollX ||\n documentElement.scrollLeft ||\n 0;\n return { top, left };\n }\n /**\n * Returns a stream that emits whenever the size of the viewport changes.\n * This stream emits outside of the Angular zone.\n * @param throttleTime Time in milliseconds to throttle the stream.\n */\n change(throttleTime = DEFAULT_RESIZE_TIME) {\n return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Updates the cached viewport size. */\n _updateViewportSize() {\n const window = this._getWindow();\n this._viewportSize = this._platform.isBrowser\n ? { width: window.innerWidth, height: window.innerHeight }\n : { width: 0, height: 0 };\n }\n}\nViewportRuler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ViewportRuler, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nViewportRuler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ViewportRuler, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ViewportRuler, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Checks if the given ranges are equal. */\nfunction rangesEqual(r1, r2) {\n return r1.start == r2.start && r1.end == r2.end;\n}\n/**\n * Scheduler to be used for scroll events. Needs to fall back to\n * something that doesn't rely on requestAnimationFrame on environments\n * that don't support it (e.g. server-side rendering).\n */\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n/** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */\nclass CdkVirtualScrollViewport extends CdkScrollable {\n constructor(elementRef, _changeDetectorRef, ngZone, _scrollStrategy, dir, scrollDispatcher, viewportRuler) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n this.elementRef = elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollStrategy = _scrollStrategy;\n /** Emits when the viewport is detached from a CdkVirtualForOf. */\n this._detachedSubject = new Subject();\n /** Emits when the rendered range changes. */\n this._renderedRangeSubject = new Subject();\n this._orientation = 'vertical';\n this._appendOnly = false;\n // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\n // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\n // depending on how the strategy calculates the scrolled index, it may come at a cost to\n // performance.\n /** Emits when the index of the first element visible in the viewport changes. */\n this.scrolledIndexChange = new Observable((observer) => this._scrollStrategy.scrolledIndexChange.subscribe(index => Promise.resolve().then(() => this.ngZone.run(() => observer.next(index)))));\n /** A stream that emits whenever the rendered range changes. */\n this.renderedRangeStream = this._renderedRangeSubject;\n /**\n * The total size of all content (in pixels), including content that is not currently rendered.\n */\n this._totalContentSize = 0;\n /** A string representing the `style.width` property value to be used for the spacer element. */\n this._totalContentWidth = '';\n /** A string representing the `style.height` property value to be used for the spacer element. */\n this._totalContentHeight = '';\n /** The currently rendered range of indices. */\n this._renderedRange = { start: 0, end: 0 };\n /** The length of the data bound to this viewport (in number of items). */\n this._dataLength = 0;\n /** The size of the viewport (in pixels). */\n this._viewportSize = 0;\n /** The last rendered content offset that was set. */\n this._renderedContentOffset = 0;\n /**\n * Whether the last rendered content offset was to the end of the content (and therefore needs to\n * be rewritten as an offset to the start of the content).\n */\n this._renderedContentOffsetNeedsRewrite = false;\n /** Whether there is a pending change detection cycle. */\n this._isChangeDetectionPending = false;\n /** A list of functions to run after the next change detection cycle. */\n this._runAfterChangeDetection = [];\n /** Subscription to changes in the viewport size. */\n this._viewportChanges = Subscription.EMPTY;\n if (!_scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\n }\n this._viewportChanges = viewportRuler.change().subscribe(() => {\n this.checkViewportSize();\n });\n }\n /** The direction the viewport scrolls. */\n get orientation() {\n return this._orientation;\n }\n set orientation(orientation) {\n if (this._orientation !== orientation) {\n this._orientation = orientation;\n this._calculateSpacerSize();\n }\n }\n /**\n * Whether rendered items should persist in the DOM after scrolling out of view. By default, items\n * will be removed.\n */\n get appendOnly() {\n return this._appendOnly;\n }\n set appendOnly(value) {\n this._appendOnly = coerceBooleanProperty(value);\n }\n ngOnInit() {\n super.ngOnInit();\n // It's still too early to measure the viewport at this point. Deferring with a promise allows\n // the Viewport to be rendered with the correct size before we measure. We run this outside the\n // zone to avoid causing more change detection cycles. We handle the change detection loop\n // ourselves instead.\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._measureViewportSize();\n this._scrollStrategy.attach(this);\n this.elementScrolled()\n .pipe(\n // Start off with a fake scroll event so we properly detect our initial position.\n startWith(null), \n // Collect multiple events into one until the next animation frame. This way if\n // there are multiple scroll events in the same frame we only need to recheck\n // our layout once.\n auditTime(0, SCROLL_SCHEDULER))\n .subscribe(() => this._scrollStrategy.onContentScrolled());\n this._markChangeDetectionNeeded();\n }));\n }\n ngOnDestroy() {\n this.detach();\n this._scrollStrategy.detach();\n // Complete all subjects\n this._renderedRangeSubject.complete();\n this._detachedSubject.complete();\n this._viewportChanges.unsubscribe();\n super.ngOnDestroy();\n }\n /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n attach(forOf) {\n if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkVirtualScrollViewport is already attached.');\n }\n // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\n // changes. Run outside the zone to avoid triggering change detection, since we're managing the\n // change detection loop ourselves.\n this.ngZone.runOutsideAngular(() => {\n this._forOf = forOf;\n this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe(data => {\n const newLength = data.length;\n if (newLength !== this._dataLength) {\n this._dataLength = newLength;\n this._scrollStrategy.onDataLengthChanged();\n }\n this._doChangeDetection();\n });\n });\n }\n /** Detaches the current `CdkVirtualForOf`. */\n detach() {\n this._forOf = null;\n this._detachedSubject.next();\n }\n /** Gets the length of the data bound to this viewport (in number of items). */\n getDataLength() {\n return this._dataLength;\n }\n /** Gets the size of the viewport (in pixels). */\n getViewportSize() {\n return this._viewportSize;\n }\n // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\n // cycle happens. I'm being careful to only call it after the render cycle is complete and before\n // setting it to something else, but its error prone and should probably be split into\n // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\n /** Get the current rendered range of items. */\n getRenderedRange() {\n return this._renderedRange;\n }\n /**\n * Sets the total size of all content (in pixels), including content that is not currently\n * rendered.\n */\n setTotalContentSize(size) {\n if (this._totalContentSize !== size) {\n this._totalContentSize = size;\n this._calculateSpacerSize();\n this._markChangeDetectionNeeded();\n }\n }\n /** Sets the currently rendered range of indices. */\n setRenderedRange(range) {\n if (!rangesEqual(this._renderedRange, range)) {\n if (this.appendOnly) {\n range = { start: 0, end: Math.max(this._renderedRange.end, range.end) };\n }\n this._renderedRangeSubject.next((this._renderedRange = range));\n this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\n }\n }\n /**\n * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\n */\n getOffsetToRenderedContentStart() {\n return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\n }\n /**\n * Sets the offset from the start of the viewport to either the start or end of the rendered data\n * (in pixels).\n */\n setRenderedContentOffset(offset, to = 'to-start') {\n // For a horizontal viewport in a right-to-left language we need to translate along the x-axis\n // in the negative direction.\n const isRtl = this.dir && this.dir.value == 'rtl';\n const isHorizontal = this.orientation == 'horizontal';\n const axis = isHorizontal ? 'X' : 'Y';\n const axisDirection = isHorizontal && isRtl ? -1 : 1;\n let transform = `translate${axis}(${Number(axisDirection * offset)}px)`;\n this._renderedContentOffset = offset;\n if (to === 'to-end') {\n transform += ` translate${axis}(-100%)`;\n // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise\n // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would\n // expand upward).\n this._renderedContentOffsetNeedsRewrite = true;\n }\n if (this._renderedContentTransform != transform) {\n // We know this value is safe because we parse `offset` with `Number()` before passing it\n // into the string.\n this._renderedContentTransform = transform;\n this._markChangeDetectionNeeded(() => {\n if (this._renderedContentOffsetNeedsRewrite) {\n this._renderedContentOffset -= this.measureRenderedContentSize();\n this._renderedContentOffsetNeedsRewrite = false;\n this.setRenderedContentOffset(this._renderedContentOffset);\n }\n else {\n this._scrollStrategy.onRenderedOffsetChanged();\n }\n });\n }\n }\n /**\n * Scrolls to the given offset from the start of the viewport. Please note that this is not always\n * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\n * direction, this would be the equivalent of setting a fictional `scrollRight` property.\n * @param offset The offset to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToOffset(offset, behavior = 'auto') {\n const options = { behavior };\n if (this.orientation === 'horizontal') {\n options.start = offset;\n }\n else {\n options.top = offset;\n }\n this.scrollTo(options);\n }\n /**\n * Scrolls to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToIndex(index, behavior = 'auto') {\n this._scrollStrategy.scrollToIndex(index, behavior);\n }\n /**\n * Gets the current scroll offset from the start of the viewport (in pixels).\n * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\n * in horizontal mode.\n */\n measureScrollOffset(from) {\n return from\n ? super.measureScrollOffset(from)\n : super.measureScrollOffset(this.orientation === 'horizontal' ? 'start' : 'top');\n }\n /** Measure the combined size of all of the rendered items. */\n measureRenderedContentSize() {\n const contentEl = this._contentWrapper.nativeElement;\n return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;\n }\n /**\n * Measure the total combined size of the given range. Throws if the range includes items that are\n * not rendered.\n */\n measureRangeSize(range) {\n if (!this._forOf) {\n return 0;\n }\n return this._forOf.measureRangeSize(range, this.orientation);\n }\n /** Update the viewport dimensions and re-render. */\n checkViewportSize() {\n // TODO: Cleanup later when add logic for handling content resize\n this._measureViewportSize();\n this._scrollStrategy.onDataLengthChanged();\n }\n /** Measure the viewport size. */\n _measureViewportSize() {\n const viewportEl = this.elementRef.nativeElement;\n this._viewportSize =\n this.orientation === 'horizontal' ? viewportEl.clientWidth : viewportEl.clientHeight;\n }\n /** Queue up change detection to run. */\n _markChangeDetectionNeeded(runAfter) {\n if (runAfter) {\n this._runAfterChangeDetection.push(runAfter);\n }\n // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n // properties sequentially we only have to run `_doChangeDetection` once at the end.\n if (!this._isChangeDetectionPending) {\n this._isChangeDetectionPending = true;\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._doChangeDetection();\n }));\n }\n }\n /** Run change detection. */\n _doChangeDetection() {\n this._isChangeDetectionPending = false;\n // Apply the content transform. The transform can't be set via an Angular binding because\n // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\n // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\n // the `Number` function first to coerce it to a numeric value.\n this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform;\n // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\n // from the root, since the repeated items are content projected in. Calling `detectChanges`\n // instead does not properly check the projected content.\n this.ngZone.run(() => this._changeDetectorRef.markForCheck());\n const runAfterChangeDetection = this._runAfterChangeDetection;\n this._runAfterChangeDetection = [];\n for (const fn of runAfterChangeDetection) {\n fn();\n }\n }\n /** Calculates the `style.width` and `style.height` for the spacer element. */\n _calculateSpacerSize() {\n this._totalContentHeight =\n this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;\n this._totalContentWidth =\n this.orientation === 'horizontal' ? `${this._totalContentSize}px` : '';\n }\n}\nCdkVirtualScrollViewport.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkVirtualScrollViewport, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: VIRTUAL_SCROLL_STRATEGY, optional: true }, { token: i2.Directionality, optional: true }, { token: ScrollDispatcher }, { token: ViewportRuler }], target: i0.ɵɵFactoryTarget.Component });\nCdkVirtualScrollViewport.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkVirtualScrollViewport, selector: \"cdk-virtual-scroll-viewport\", inputs: { orientation: \"orientation\", appendOnly: \"appendOnly\" }, outputs: { scrolledIndexChange: \"scrolledIndexChange\" }, host: { properties: { \"class.cdk-virtual-scroll-orientation-horizontal\": \"orientation === \\\"horizontal\\\"\", \"class.cdk-virtual-scroll-orientation-vertical\": \"orientation !== \\\"horizontal\\\"\" }, classAttribute: \"cdk-virtual-scroll-viewport\" }, providers: [\n {\n provide: CdkScrollable,\n useExisting: CdkVirtualScrollViewport,\n },\n ], viewQueries: [{ propertyName: \"_contentWrapper\", first: true, predicate: [\"contentWrapper\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"\\n
    \\n \\n
    \\n\\n
    \\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkVirtualScrollViewport, decorators: [{\n type: Component,\n args: [{ selector: 'cdk-virtual-scroll-viewport', host: {\n 'class': 'cdk-virtual-scroll-viewport',\n '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',\n '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: CdkScrollable,\n useExisting: CdkVirtualScrollViewport,\n },\n ], template: \"\\n
    \\n \\n
    \\n\\n
    \\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [VIRTUAL_SCROLL_STRATEGY]\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }, { type: ScrollDispatcher }, { type: ViewportRuler }]; }, propDecorators: { orientation: [{\n type: Input\n }], appendOnly: [{\n type: Input\n }], scrolledIndexChange: [{\n type: Output\n }], _contentWrapper: [{\n type: ViewChild,\n args: ['contentWrapper', { static: true }]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Helper to extract the offset of a DOM Node in a certain direction. */\nfunction getOffset(orientation, direction, node) {\n const el = node;\n if (!el.getBoundingClientRect) {\n return 0;\n }\n const rect = el.getBoundingClientRect();\n if (orientation === 'horizontal') {\n return direction === 'start' ? rect.left : rect.right;\n }\n return direction === 'start' ? rect.top : rect.bottom;\n}\n/**\n * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling\n * container.\n */\nclass CdkVirtualForOf {\n constructor(\n /** The view container to add items to. */\n _viewContainerRef, \n /** The template to use when stamping out new items. */\n _template, \n /** The set of available differs. */\n _differs, \n /** The strategy used to render items in the virtual scroll viewport. */\n _viewRepeater, \n /** The virtual scrolling viewport that these items are being rendered in. */\n _viewport, ngZone) {\n this._viewContainerRef = _viewContainerRef;\n this._template = _template;\n this._differs = _differs;\n this._viewRepeater = _viewRepeater;\n this._viewport = _viewport;\n /** Emits when the rendered view of the data changes. */\n this.viewChange = new Subject();\n /** Subject that emits when a new DataSource instance is given. */\n this._dataSourceChanges = new Subject();\n /** Emits whenever the data in the current DataSource changes. */\n this.dataStream = this._dataSourceChanges.pipe(\n // Start off with null `DataSource`.\n startWith(null), \n // Bundle up the previous and current data sources so we can work with both.\n pairwise(), \n // Use `_changeDataSource` to disconnect from the previous data source and connect to the\n // new one, passing back a stream of data changes which we run through `switchMap` to give\n // us a data stream that emits the latest data from whatever the current `DataSource` is.\n switchMap(([prev, cur]) => this._changeDataSource(prev, cur)), \n // Replay the last emitted data when someone subscribes.\n shareReplay(1));\n /** The differ used to calculate changes to the data. */\n this._differ = null;\n /** Whether the rendered data should be updated during the next ngDoCheck cycle. */\n this._needsUpdate = false;\n this._destroyed = new Subject();\n this.dataStream.subscribe(data => {\n this._data = data;\n this._onRenderedDataChange();\n });\n this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {\n this._renderedRange = range;\n ngZone.run(() => this.viewChange.next(this._renderedRange));\n this._onRenderedDataChange();\n });\n this._viewport.attach(this);\n }\n /** The DataSource to display. */\n get cdkVirtualForOf() {\n return this._cdkVirtualForOf;\n }\n set cdkVirtualForOf(value) {\n this._cdkVirtualForOf = value;\n if (isDataSource(value)) {\n this._dataSourceChanges.next(value);\n }\n else {\n // If value is an an NgIterable, convert it to an array.\n this._dataSourceChanges.next(new ArrayDataSource(isObservable(value) ? value : Array.from(value || [])));\n }\n }\n /**\n * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and\n * the item and produces a value to be used as the item's identity when tracking changes.\n */\n get cdkVirtualForTrackBy() {\n return this._cdkVirtualForTrackBy;\n }\n set cdkVirtualForTrackBy(fn) {\n this._needsUpdate = true;\n this._cdkVirtualForTrackBy = fn\n ? (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item)\n : undefined;\n }\n /** The template used to stamp out new elements. */\n set cdkVirtualForTemplate(value) {\n if (value) {\n this._needsUpdate = true;\n this._template = value;\n }\n }\n /**\n * The size of the cache used to store templates that are not being used for re-use later.\n * Setting the cache size to `0` will disable caching. Defaults to 20 templates.\n */\n get cdkVirtualForTemplateCacheSize() {\n return this._viewRepeater.viewCacheSize;\n }\n set cdkVirtualForTemplateCacheSize(size) {\n this._viewRepeater.viewCacheSize = coerceNumberProperty(size);\n }\n /**\n * Measures the combined size (width for horizontal orientation, height for vertical) of all items\n * in the specified range. Throws an error if the range includes items that are not currently\n * rendered.\n */\n measureRangeSize(range, orientation) {\n if (range.start >= range.end) {\n return 0;\n }\n if ((range.start < this._renderedRange.start || range.end > this._renderedRange.end) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Error: attempted to measure an item that isn't rendered.`);\n }\n // The index into the list of rendered views for the first item in the range.\n const renderedStartIndex = range.start - this._renderedRange.start;\n // The length of the range we're measuring.\n const rangeLen = range.end - range.start;\n // Loop over all the views, find the first and land node and compute the size by subtracting\n // the top of the first node from the bottom of the last one.\n let firstNode;\n let lastNode;\n // Find the first node by starting from the beginning and going forwards.\n for (let i = 0; i < rangeLen; i++) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n firstNode = lastNode = view.rootNodes[0];\n break;\n }\n }\n // Find the last node by starting from the end and going backwards.\n for (let i = rangeLen - 1; i > -1; i--) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n lastNode = view.rootNodes[view.rootNodes.length - 1];\n break;\n }\n }\n return firstNode && lastNode\n ? getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode)\n : 0;\n }\n ngDoCheck() {\n if (this._differ && this._needsUpdate) {\n // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of\n // this list being rendered (can use simpler algorithm) vs needs update due to data actually\n // changing (need to do this diff).\n const changes = this._differ.diff(this._renderedItems);\n if (!changes) {\n this._updateContext();\n }\n else {\n this._applyChanges(changes);\n }\n this._needsUpdate = false;\n }\n }\n ngOnDestroy() {\n this._viewport.detach();\n this._dataSourceChanges.next(undefined);\n this._dataSourceChanges.complete();\n this.viewChange.complete();\n this._destroyed.next();\n this._destroyed.complete();\n this._viewRepeater.detach();\n }\n /** React to scroll state changes in the viewport. */\n _onRenderedDataChange() {\n if (!this._renderedRange) {\n return;\n }\n this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);\n if (!this._differ) {\n // Use a wrapper function for the `trackBy` so any new values are\n // picked up automatically without having to recreate the differ.\n this._differ = this._differs.find(this._renderedItems).create((index, item) => {\n return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;\n });\n }\n this._needsUpdate = true;\n }\n /** Swap out one `DataSource` for another. */\n _changeDataSource(oldDs, newDs) {\n if (oldDs) {\n oldDs.disconnect(this);\n }\n this._needsUpdate = true;\n return newDs ? newDs.connect(this) : of();\n }\n /** Update the `CdkVirtualForOfContext` for all views. */\n _updateContext() {\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n view.detectChanges();\n }\n }\n /** Apply changes to the DOM. */\n _applyChanges(changes) {\n this._viewRepeater.applyChanges(changes, this._viewContainerRef, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record, currentIndex), record => record.item);\n // Update $implicit for any items that had an identity change.\n changes.forEachIdentityChange((record) => {\n const view = this._viewContainerRef.get(record.currentIndex);\n view.context.$implicit = record.item;\n });\n // Update the context variables on all items.\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n }\n }\n /** Update the computed properties on the `CdkVirtualForOfContext`. */\n _updateComputedContextProperties(context) {\n context.first = context.index === 0;\n context.last = context.index === context.count - 1;\n context.even = context.index % 2 === 0;\n context.odd = !context.even;\n }\n _getEmbeddedViewArgs(record, index) {\n // Note that it's important that we insert the item directly at the proper index,\n // rather than inserting it and the moving it in place, because if there's a directive\n // on the same node that injects the `ViewContainerRef`, Angular will insert another\n // comment node which can throw off the move when it's being repeated for all items.\n return {\n templateRef: this._template,\n context: {\n $implicit: record.item,\n // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only\n // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.\n cdkVirtualForOf: this._cdkVirtualForOf,\n index: -1,\n count: -1,\n first: false,\n last: false,\n odd: false,\n even: false,\n },\n index,\n };\n }\n}\nCdkVirtualForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkVirtualForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: _VIEW_REPEATER_STRATEGY }, { token: CdkVirtualScrollViewport, skipSelf: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkVirtualForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: CdkVirtualForOf, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: { cdkVirtualForOf: \"cdkVirtualForOf\", cdkVirtualForTrackBy: \"cdkVirtualForTrackBy\", cdkVirtualForTemplate: \"cdkVirtualForTemplate\", cdkVirtualForTemplateCacheSize: \"cdkVirtualForTemplateCacheSize\" }, providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkVirtualForOf, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkVirtualFor][cdkVirtualForOf]',\n providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: i2$1._RecycleViewRepeaterStrategy, decorators: [{\n type: Inject,\n args: [_VIEW_REPEATER_STRATEGY]\n }] }, { type: CdkVirtualScrollViewport, decorators: [{\n type: SkipSelf\n }] }, { type: i0.NgZone }]; }, propDecorators: { cdkVirtualForOf: [{\n type: Input\n }], cdkVirtualForTrackBy: [{\n type: Input\n }], cdkVirtualForTemplate: [{\n type: Input\n }], cdkVirtualForTemplateCacheSize: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass CdkScrollableModule {\n}\nCdkScrollableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCdkScrollableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollableModule, declarations: [CdkScrollable], exports: [CdkScrollable] });\nCdkScrollableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollableModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: CdkScrollableModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkScrollable],\n declarations: [CdkScrollable],\n }]\n }] });\n/**\n * @docs-primary-export\n */\nclass ScrollingModule {\n}\nScrollingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nScrollingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollingModule, declarations: [CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport], imports: [BidiModule, PlatformModule, CdkScrollableModule], exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport] });\nScrollingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollingModule, imports: [[BidiModule, PlatformModule, CdkScrollableModule], BidiModule, CdkScrollableModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: ScrollingModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule, PlatformModule, CdkScrollableModule],\n exports: [\n BidiModule,\n CdkScrollableModule,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n ],\n declarations: [CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkFixedSizeVirtualScroll, CdkScrollable, CdkScrollableModule, CdkVirtualForOf, CdkVirtualScrollViewport, DEFAULT_RESIZE_TIME, DEFAULT_SCROLL_TIME, FixedSizeVirtualScrollStrategy, ScrollDispatcher, ScrollingModule, VIRTUAL_SCROLL_STRATEGY, ViewportRuler, _fixedSizeVirtualScrollStrategyFactory };\n","/**\n * @license Angular v13.0.2\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, ɵɵinject, Inject, Optional, EventEmitter, ɵfindLocaleData, ɵLocaleDataIndex, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, LOCALE_ID, ɵregisterLocaleData, ɵisListLikeIterable, ɵstringify, Directive, Input, NgModuleRef, ComponentFactoryResolver, Host, ɵRuntimeError, Attribute, ɵisPromise, ɵisSubscribable, Pipe, DEFAULT_CURRENCY_CODE, NgModule, Version, ɵɵdefineInjectable } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet _DOM = null;\nfunction getDOM() {\n return _DOM;\n}\nfunction setDOM(adapter) {\n _DOM = adapter;\n}\nfunction setRootDomAdapter(adapter) {\n if (!_DOM) {\n _DOM = adapter;\n }\n}\n/* tslint:disable:requireParameterType */\n/**\n * Provides DOM operations in an environment-agnostic way.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nclass DomAdapter {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A DI Token representing the main rendering context. In a browser this is the DOM Document.\n *\n * Note: Document might not be available in the Application Context when Application and Rendering\n * Contexts are not the same (e.g. when running the application in a Web Worker).\n *\n * @publicApi\n */\nconst DOCUMENT = new InjectionToken('DocumentToken');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n *\n * `PlatformLocation` encapsulates all calls to DOM APIs, which allows the Router to be\n * platform-agnostic.\n * This means that we can have different implementation of `PlatformLocation` for the different\n * platforms that Angular supports. For example, `@angular/platform-browser` provides an\n * implementation specific to the browser environment, while `@angular/platform-server` provides\n * one suitable for use with server-side rendering.\n *\n * The `PlatformLocation` class is used directly by all implementations of {@link LocationStrategy}\n * when they need to interact with the DOM APIs like pushState, popState, etc.\n *\n * {@link LocationStrategy} in turn is used by the {@link Location} service which is used directly\n * by the {@link Router} in order to navigate between routes. Since all interactions between {@link\n * Router} /\n * {@link Location} / {@link LocationStrategy} and DOM APIs flow through the `PlatformLocation`\n * class, they are all platform-agnostic.\n *\n * @publicApi\n */\nclass PlatformLocation {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PlatformLocation, providedIn: 'platform', useFactory: useBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: useBrowserPlatformLocation\n }]\n }] });\nfunction useBrowserPlatformLocation() {\n return ɵɵinject(BrowserPlatformLocation);\n}\n/**\n * @description\n * Indicates when a location is initialized.\n *\n * @publicApi\n */\nconst LOCATION_INITIALIZED = new InjectionToken('Location Initialized');\n/**\n * `PlatformLocation` encapsulates all of the direct calls to platform APIs.\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n */\nclass BrowserPlatformLocation extends PlatformLocation {\n constructor(_doc) {\n super();\n this._doc = _doc;\n this._init();\n }\n // This is moved to its own method so that `MockPlatformLocationStrategy` can overwrite it\n /** @internal */\n _init() {\n this.location = window.location;\n this._history = window.history;\n }\n getBaseHrefFromDOM() {\n return getDOM().getBaseHref(this._doc);\n }\n onPopState(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('popstate', fn, false);\n return () => window.removeEventListener('popstate', fn);\n }\n onHashChange(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('hashchange', fn, false);\n return () => window.removeEventListener('hashchange', fn);\n }\n get href() {\n return this.location.href;\n }\n get protocol() {\n return this.location.protocol;\n }\n get hostname() {\n return this.location.hostname;\n }\n get port() {\n return this.location.port;\n }\n get pathname() {\n return this.location.pathname;\n }\n get search() {\n return this.location.search;\n }\n get hash() {\n return this.location.hash;\n }\n set pathname(newPath) {\n this.location.pathname = newPath;\n }\n pushState(state, title, url) {\n if (supportsState()) {\n this._history.pushState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n replaceState(state, title, url) {\n if (supportsState()) {\n this._history.replaceState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n forward() {\n this._history.forward();\n }\n back() {\n this._history.back();\n }\n historyGo(relativePosition = 0) {\n this._history.go(relativePosition);\n }\n getState() {\n return this._history.state;\n }\n}\nBrowserPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: BrowserPlatformLocation, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: BrowserPlatformLocation, providedIn: 'platform', useFactory: createBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: BrowserPlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: createBrowserPlatformLocation,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\nfunction supportsState() {\n return !!window.history.pushState;\n}\nfunction createBrowserPlatformLocation() {\n return new BrowserPlatformLocation(ɵɵinject(DOCUMENT));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nfunction joinWithSlash(start, end) {\n if (start.length == 0) {\n return end;\n }\n if (end.length == 0) {\n return start;\n }\n let slashes = 0;\n if (start.endsWith('/')) {\n slashes++;\n }\n if (end.startsWith('/')) {\n slashes++;\n }\n if (slashes == 2) {\n return start + end.substring(1);\n }\n if (slashes == 1) {\n return start + end;\n }\n return start + '/' + end;\n}\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nfunction stripTrailingSlash(url) {\n const match = url.match(/#|\\?|$/);\n const pathEndIdx = match && match.index || url.length;\n const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);\n return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx);\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nfunction normalizeQueryParams(params) {\n return params && params[0] !== '?' ? '?' + params : params;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Enables the `Location` service to read route state from the browser's URL.\n * Angular provides two strategies:\n * `HashLocationStrategy` and `PathLocationStrategy`.\n *\n * Applications should use the `Router` or `Location` services to\n * interact with application route state.\n *\n * For instance, `HashLocationStrategy` produces URLs like\n * http://example.com#/foo,\n * and `PathLocationStrategy` produces\n * http://example.com/foo as an equivalent URL.\n *\n * See these two classes for more.\n *\n * @publicApi\n */\nclass LocationStrategy {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LocationStrategy, providedIn: 'root', useFactory: provideLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LocationStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: provideLocationStrategy }]\n }] });\nfunction provideLocationStrategy(platformLocation) {\n // See #23917\n const location = ɵɵinject(DOCUMENT).location;\n return new PathLocationStrategy(ɵɵinject(PlatformLocation), location && location.origin || '');\n}\n/**\n * A predefined [DI token](guide/glossary#di-token) for the base href\n * to be used with the `PathLocationStrategy`.\n * The base href is the URL prefix that should be preserved when generating\n * and recognizing URLs.\n *\n * @usageNotes\n *\n * The following example shows how to use this token to configure the root app injector\n * with a base href value, so that the DI framework can supply the dependency anywhere in the app.\n *\n * ```typescript\n * import {Component, NgModule} from '@angular/core';\n * import {APP_BASE_HREF} from '@angular/common';\n *\n * @NgModule({\n * providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]\n * })\n * class AppModule {}\n * ```\n *\n * @publicApi\n */\nconst APP_BASE_HREF = new InjectionToken('appBaseHref');\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [path](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax) of the\n * browser's URL.\n *\n * If you're using `PathLocationStrategy`, you must provide a {@link APP_BASE_HREF}\n * or add a `` element to the document.\n *\n * For instance, if you provide an `APP_BASE_HREF` of `'/my/app/'` and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`. To ensure all relative URIs resolve correctly,\n * the `` and/or `APP_BASE_HREF` should end with a `/`.\n *\n * Similarly, if you add `` to the document and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`.\n *\n * Note that when using `PathLocationStrategy`, neither the query nor\n * the fragment in the `` will be preserved, as outlined\n * by the [RFC](https://tools.ietf.org/html/rfc3986#section-5.2.2).\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/path_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass PathLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, href) {\n super();\n this._platformLocation = _platformLocation;\n this._removeListenerFns = [];\n if (href == null) {\n href = this._platformLocation.getBaseHrefFromDOM();\n }\n if (href == null) {\n throw new Error(`No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.`);\n }\n this._baseHref = href;\n }\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n prepareExternalUrl(internal) {\n return joinWithSlash(this._baseHref, internal);\n }\n path(includeHash = false) {\n const pathname = this._platformLocation.pathname + normalizeQueryParams(this._platformLocation.search);\n const hash = this._platformLocation.hash;\n return hash && includeHash ? `${pathname}${hash}` : pathname;\n }\n pushState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.pushState(state, title, externalUrl);\n }\n replaceState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.replaceState(state, title, externalUrl);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n historyGo(relativePosition = 0) {\n this._platformLocation.historyGo?.(relativePosition);\n }\n}\nPathLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PathLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nPathLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PathLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PathLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [hash fragment](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax)\n * of the browser's URL.\n *\n * For instance, if you call `location.go('/foo')`, the browser's URL will become\n * `example.com#/foo`.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/hash_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass HashLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, _baseHref) {\n super();\n this._platformLocation = _platformLocation;\n this._baseHref = '';\n this._removeListenerFns = [];\n if (_baseHref != null) {\n this._baseHref = _baseHref;\n }\n }\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n path(includeHash = false) {\n // the hash value is always prefixed with a `#`\n // and if it is empty then it will stay empty\n let path = this._platformLocation.hash;\n if (path == null)\n path = '#';\n return path.length > 0 ? path.substring(1) : path;\n }\n prepareExternalUrl(internal) {\n const url = joinWithSlash(this._baseHref, internal);\n return url.length > 0 ? ('#' + url) : url;\n }\n pushState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.pushState(state, title, url);\n }\n replaceState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.replaceState(state, title, url);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n historyGo(relativePosition = 0) {\n this._platformLocation.historyGo?.(relativePosition);\n }\n}\nHashLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: HashLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nHashLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: HashLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: HashLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * A service that applications can use to interact with a browser's URL.\n *\n * Depending on the `LocationStrategy` used, `Location` persists\n * to the URL's path or the URL's hash segment.\n *\n * @usageNotes\n *\n * It's better to use the `Router.navigate()` service to trigger route changes. Use\n * `Location` only if you need to interact with or create normalized URLs outside of\n * routing.\n *\n * `Location` is responsible for normalizing the URL against the application's base href.\n * A normalized URL is absolute from the URL host, includes the application's base href, and has no\n * trailing slash:\n * - `/my/app/user/123` is normalized\n * - `my/app/user/123` **is not** normalized\n * - `/my/app/user/123/` **is not** normalized\n *\n * ### Example\n *\n * \n *\n * @publicApi\n */\nclass Location {\n constructor(platformStrategy, platformLocation) {\n /** @internal */\n this._subject = new EventEmitter();\n /** @internal */\n this._urlChangeListeners = [];\n this._platformStrategy = platformStrategy;\n const browserBaseHref = this._platformStrategy.getBaseHref();\n this._platformLocation = platformLocation;\n this._baseHref = stripTrailingSlash(_stripIndexHtml(browserBaseHref));\n this._platformStrategy.onPopState((ev) => {\n this._subject.emit({\n 'url': this.path(true),\n 'pop': true,\n 'state': ev.state,\n 'type': ev.type,\n });\n });\n }\n /**\n * Normalizes the URL path for this location.\n *\n * @param includeHash True to include an anchor fragment in the path.\n *\n * @returns The normalized URL path.\n */\n // TODO: vsavkin. Remove the boolean flag and always include hash once the deprecated router is\n // removed.\n path(includeHash = false) {\n return this.normalize(this._platformStrategy.path(includeHash));\n }\n /**\n * Reports the current state of the location history.\n * @returns The current value of the `history.state` object.\n */\n getState() {\n return this._platformLocation.getState();\n }\n /**\n * Normalizes the given path and compares to the current normalized path.\n *\n * @param path The given URL path.\n * @param query Query parameters.\n *\n * @returns True if the given URL path is equal to the current normalized path, false\n * otherwise.\n */\n isCurrentPathEqualTo(path, query = '') {\n return this.path() == this.normalize(path + normalizeQueryParams(query));\n }\n /**\n * Normalizes a URL path by stripping any trailing slashes.\n *\n * @param url String representing a URL.\n *\n * @returns The normalized URL string.\n */\n normalize(url) {\n return Location.stripTrailingSlash(_stripBaseHref(this._baseHref, _stripIndexHtml(url)));\n }\n /**\n * Normalizes an external URL path.\n * If the given URL doesn't begin with a leading slash (`'/'`), adds one\n * before normalizing. Adds a hash if `HashLocationStrategy` is\n * in use, or the `APP_BASE_HREF` if the `PathLocationStrategy` is in use.\n *\n * @param url String representing a URL.\n *\n * @returns A normalized platform-specific URL.\n */\n prepareExternalUrl(url) {\n if (url && url[0] !== '/') {\n url = '/' + url;\n }\n return this._platformStrategy.prepareExternalUrl(url);\n }\n // TODO: rename this method to pushState\n /**\n * Changes the browser's URL to a normalized version of a given URL, and pushes a\n * new item onto the platform's history.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n *\n */\n go(path, query = '', state = null) {\n this._platformStrategy.pushState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Changes the browser's URL to a normalized version of the given URL, and replaces\n * the top item on the platform's history stack.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n */\n replaceState(path, query = '', state = null) {\n this._platformStrategy.replaceState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Navigates forward in the platform's history.\n */\n forward() {\n this._platformStrategy.forward();\n }\n /**\n * Navigates back in the platform's history.\n */\n back() {\n this._platformStrategy.back();\n }\n /**\n * Navigate to a specific page from session history, identified by its relative position to the\n * current page.\n *\n * @param relativePosition Position of the target page in the history relative to the current\n * page.\n * A negative value moves backwards, a positive value moves forwards, e.g. `location.historyGo(2)`\n * moves forward two pages and `location.historyGo(-2)` moves back two pages. When we try to go\n * beyond what's stored in the history session, we stay in the current page. Same behaviour occurs\n * when `relativePosition` equals 0.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/History_API#Moving_to_a_specific_point_in_history\n */\n historyGo(relativePosition = 0) {\n this._platformStrategy.historyGo?.(relativePosition);\n }\n /**\n * Registers a URL change listener. Use to catch updates performed by the Angular\n * framework that are not detectible through \"popstate\" or \"hashchange\" events.\n *\n * @param fn The change handler function, which take a URL and a location history state.\n */\n onUrlChange(fn) {\n this._urlChangeListeners.push(fn);\n if (!this._urlChangeSubscription) {\n this._urlChangeSubscription = this.subscribe(v => {\n this._notifyUrlChangeListeners(v.url, v.state);\n });\n }\n }\n /** @internal */\n _notifyUrlChangeListeners(url = '', state) {\n this._urlChangeListeners.forEach(fn => fn(url, state));\n }\n /**\n * Subscribes to the platform's `popState` events.\n *\n * Note: `Location.go()` does not trigger the `popState` event in the browser. Use\n * `Location.onUrlChange()` to subscribe to URL changes instead.\n *\n * @param value Event that is triggered when the state history changes.\n * @param exception The exception to throw.\n *\n * @see [onpopstate](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate)\n *\n * @returns Subscribed events.\n */\n subscribe(onNext, onThrow, onReturn) {\n return this._subject.subscribe({ next: onNext, error: onThrow, complete: onReturn });\n }\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nLocation.normalizeQueryParams = normalizeQueryParams;\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nLocation.joinWithSlash = joinWithSlash;\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nLocation.stripTrailingSlash = stripTrailingSlash;\nLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: Location, deps: [{ token: LocationStrategy }, { token: PlatformLocation }], target: i0.ɵɵFactoryTarget.Injectable });\nLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: Location, providedIn: 'root', useFactory: createLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: Location, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n // See #23917\n useFactory: createLocation,\n }]\n }], ctorParameters: function () { return [{ type: LocationStrategy }, { type: PlatformLocation }]; } });\nfunction createLocation() {\n return new Location(ɵɵinject(LocationStrategy), ɵɵinject(PlatformLocation));\n}\nfunction _stripBaseHref(baseHref, url) {\n return baseHref && url.startsWith(baseHref) ? url.substring(baseHref.length) : url;\n}\nfunction _stripIndexHtml(url) {\n return url.replace(/\\/index.html$/, '');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @internal */\nconst CURRENCIES_EN = { \"ADP\": [undefined, undefined, 0], \"AFN\": [undefined, \"؋\", 0], \"ALL\": [undefined, undefined, 0], \"AMD\": [undefined, \"֏\", 2], \"AOA\": [undefined, \"Kz\"], \"ARS\": [undefined, \"$\"], \"AUD\": [\"A$\", \"$\"], \"AZN\": [undefined, \"₼\"], \"BAM\": [undefined, \"KM\"], \"BBD\": [undefined, \"$\"], \"BDT\": [undefined, \"৳\"], \"BHD\": [undefined, undefined, 3], \"BIF\": [undefined, undefined, 0], \"BMD\": [undefined, \"$\"], \"BND\": [undefined, \"$\"], \"BOB\": [undefined, \"Bs\"], \"BRL\": [\"R$\"], \"BSD\": [undefined, \"$\"], \"BWP\": [undefined, \"P\"], \"BYN\": [undefined, \"р.\", 2], \"BYR\": [undefined, undefined, 0], \"BZD\": [undefined, \"$\"], \"CAD\": [\"CA$\", \"$\", 2], \"CHF\": [undefined, undefined, 2], \"CLF\": [undefined, undefined, 4], \"CLP\": [undefined, \"$\", 0], \"CNY\": [\"CN¥\", \"¥\"], \"COP\": [undefined, \"$\", 2], \"CRC\": [undefined, \"₡\", 2], \"CUC\": [undefined, \"$\"], \"CUP\": [undefined, \"$\"], \"CZK\": [undefined, \"Kč\", 2], \"DJF\": [undefined, undefined, 0], \"DKK\": [undefined, \"kr\", 2], \"DOP\": [undefined, \"$\"], \"EGP\": [undefined, \"E£\"], \"ESP\": [undefined, \"₧\", 0], \"EUR\": [\"€\"], \"FJD\": [undefined, \"$\"], \"FKP\": [undefined, \"£\"], \"GBP\": [\"£\"], \"GEL\": [undefined, \"₾\"], \"GHS\": [undefined, \"GH₵\"], \"GIP\": [undefined, \"£\"], \"GNF\": [undefined, \"FG\", 0], \"GTQ\": [undefined, \"Q\"], \"GYD\": [undefined, \"$\", 2], \"HKD\": [\"HK$\", \"$\"], \"HNL\": [undefined, \"L\"], \"HRK\": [undefined, \"kn\"], \"HUF\": [undefined, \"Ft\", 2], \"IDR\": [undefined, \"Rp\", 2], \"ILS\": [\"₪\"], \"INR\": [\"₹\"], \"IQD\": [undefined, undefined, 0], \"IRR\": [undefined, undefined, 0], \"ISK\": [undefined, \"kr\", 0], \"ITL\": [undefined, undefined, 0], \"JMD\": [undefined, \"$\"], \"JOD\": [undefined, undefined, 3], \"JPY\": [\"¥\", undefined, 0], \"KHR\": [undefined, \"៛\"], \"KMF\": [undefined, \"CF\", 0], \"KPW\": [undefined, \"₩\", 0], \"KRW\": [\"₩\", undefined, 0], \"KWD\": [undefined, undefined, 3], \"KYD\": [undefined, \"$\"], \"KZT\": [undefined, \"₸\"], \"LAK\": [undefined, \"₭\", 0], \"LBP\": [undefined, \"L£\", 0], \"LKR\": [undefined, \"Rs\"], \"LRD\": [undefined, \"$\"], \"LTL\": [undefined, \"Lt\"], \"LUF\": [undefined, undefined, 0], \"LVL\": [undefined, \"Ls\"], \"LYD\": [undefined, undefined, 3], \"MGA\": [undefined, \"Ar\", 0], \"MGF\": [undefined, undefined, 0], \"MMK\": [undefined, \"K\", 0], \"MNT\": [undefined, \"₮\", 2], \"MRO\": [undefined, undefined, 0], \"MUR\": [undefined, \"Rs\", 2], \"MXN\": [\"MX$\", \"$\"], \"MYR\": [undefined, \"RM\"], \"NAD\": [undefined, \"$\"], \"NGN\": [undefined, \"₦\"], \"NIO\": [undefined, \"C$\"], \"NOK\": [undefined, \"kr\", 2], \"NPR\": [undefined, \"Rs\"], \"NZD\": [\"NZ$\", \"$\"], \"OMR\": [undefined, undefined, 3], \"PHP\": [\"₱\"], \"PKR\": [undefined, \"Rs\", 2], \"PLN\": [undefined, \"zł\"], \"PYG\": [undefined, \"₲\", 0], \"RON\": [undefined, \"lei\"], \"RSD\": [undefined, undefined, 0], \"RUB\": [undefined, \"₽\"], \"RUR\": [undefined, \"р.\"], \"RWF\": [undefined, \"RF\", 0], \"SBD\": [undefined, \"$\"], \"SEK\": [undefined, \"kr\", 2], \"SGD\": [undefined, \"$\"], \"SHP\": [undefined, \"£\"], \"SLL\": [undefined, undefined, 0], \"SOS\": [undefined, undefined, 0], \"SRD\": [undefined, \"$\"], \"SSP\": [undefined, \"£\"], \"STD\": [undefined, undefined, 0], \"STN\": [undefined, \"Db\"], \"SYP\": [undefined, \"£\", 0], \"THB\": [undefined, \"฿\"], \"TMM\": [undefined, undefined, 0], \"TND\": [undefined, undefined, 3], \"TOP\": [undefined, \"T$\"], \"TRL\": [undefined, undefined, 0], \"TRY\": [undefined, \"₺\"], \"TTD\": [undefined, \"$\"], \"TWD\": [\"NT$\", \"$\", 2], \"TZS\": [undefined, undefined, 2], \"UAH\": [undefined, \"₴\"], \"UGX\": [undefined, undefined, 0], \"USD\": [\"$\"], \"UYI\": [undefined, undefined, 0], \"UYU\": [undefined, \"$\"], \"UYW\": [undefined, undefined, 4], \"UZS\": [undefined, undefined, 2], \"VEF\": [undefined, \"Bs\", 2], \"VND\": [\"₫\", undefined, 0], \"VUV\": [undefined, undefined, 0], \"XAF\": [\"FCFA\", undefined, 0], \"XCD\": [\"EC$\", \"$\"], \"XOF\": [\"F CFA\", undefined, 0], \"XPF\": [\"CFPF\", undefined, 0], \"XXX\": [\"¤\"], \"YER\": [undefined, undefined, 0], \"ZAR\": [undefined, \"R\"], \"ZMK\": [undefined, undefined, 0], \"ZMW\": [undefined, \"ZK\"], \"ZWD\": [undefined, undefined, 0] };\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Format styles that can be used to represent numbers.\n * @see `getLocaleNumberFormat()`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberFormatStyle;\n(function (NumberFormatStyle) {\n NumberFormatStyle[NumberFormatStyle[\"Decimal\"] = 0] = \"Decimal\";\n NumberFormatStyle[NumberFormatStyle[\"Percent\"] = 1] = \"Percent\";\n NumberFormatStyle[NumberFormatStyle[\"Currency\"] = 2] = \"Currency\";\n NumberFormatStyle[NumberFormatStyle[\"Scientific\"] = 3] = \"Scientific\";\n})(NumberFormatStyle || (NumberFormatStyle = {}));\n/**\n * Plurality cases used for translating plurals to different languages.\n *\n * @see `NgPlural`\n * @see `NgPluralCase`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar Plural;\n(function (Plural) {\n Plural[Plural[\"Zero\"] = 0] = \"Zero\";\n Plural[Plural[\"One\"] = 1] = \"One\";\n Plural[Plural[\"Two\"] = 2] = \"Two\";\n Plural[Plural[\"Few\"] = 3] = \"Few\";\n Plural[Plural[\"Many\"] = 4] = \"Many\";\n Plural[Plural[\"Other\"] = 5] = \"Other\";\n})(Plural || (Plural = {}));\n/**\n * Context-dependant translation forms for strings.\n * Typically the standalone version is for the nominative form of the word,\n * and the format version is used for the genitive case.\n * @see [CLDR website](http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar FormStyle;\n(function (FormStyle) {\n FormStyle[FormStyle[\"Format\"] = 0] = \"Format\";\n FormStyle[FormStyle[\"Standalone\"] = 1] = \"Standalone\";\n})(FormStyle || (FormStyle = {}));\n/**\n * String widths available for translations.\n * The specific character widths are locale-specific.\n * Examples are given for the word \"Sunday\" in English.\n *\n * @publicApi\n */\nvar TranslationWidth;\n(function (TranslationWidth) {\n /** 1 character for `en-US`. For example: 'S' */\n TranslationWidth[TranslationWidth[\"Narrow\"] = 0] = \"Narrow\";\n /** 3 characters for `en-US`. For example: 'Sun' */\n TranslationWidth[TranslationWidth[\"Abbreviated\"] = 1] = \"Abbreviated\";\n /** Full length for `en-US`. For example: \"Sunday\" */\n TranslationWidth[TranslationWidth[\"Wide\"] = 2] = \"Wide\";\n /** 2 characters for `en-US`, For example: \"Su\" */\n TranslationWidth[TranslationWidth[\"Short\"] = 3] = \"Short\";\n})(TranslationWidth || (TranslationWidth = {}));\n/**\n * String widths available for date-time formats.\n * The specific character widths are locale-specific.\n * Examples are given for `en-US`.\n *\n * @see `getLocaleDateFormat()`\n * @see `getLocaleTimeFormat()`\n * @see `getLocaleDateTimeFormat()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n */\nvar FormatWidth;\n(function (FormatWidth) {\n /**\n * For `en-US`, 'M/d/yy, h:mm a'`\n * (Example: `6/15/15, 9:03 AM`)\n */\n FormatWidth[FormatWidth[\"Short\"] = 0] = \"Short\";\n /**\n * For `en-US`, `'MMM d, y, h:mm:ss a'`\n * (Example: `Jun 15, 2015, 9:03:01 AM`)\n */\n FormatWidth[FormatWidth[\"Medium\"] = 1] = \"Medium\";\n /**\n * For `en-US`, `'MMMM d, y, h:mm:ss a z'`\n * (Example: `June 15, 2015 at 9:03:01 AM GMT+1`)\n */\n FormatWidth[FormatWidth[\"Long\"] = 2] = \"Long\";\n /**\n * For `en-US`, `'EEEE, MMMM d, y, h:mm:ss a zzzz'`\n * (Example: `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00`)\n */\n FormatWidth[FormatWidth[\"Full\"] = 3] = \"Full\";\n})(FormatWidth || (FormatWidth = {}));\n/**\n * Symbols that can be used to replace placeholders in number patterns.\n * Examples are based on `en-US` values.\n *\n * @see `getLocaleNumberSymbol()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberSymbol;\n(function (NumberSymbol) {\n /**\n * Decimal separator.\n * For `en-US`, the dot character.\n * Example: 2,345`.`67\n */\n NumberSymbol[NumberSymbol[\"Decimal\"] = 0] = \"Decimal\";\n /**\n * Grouping separator, typically for thousands.\n * For `en-US`, the comma character.\n * Example: 2`,`345.67\n */\n NumberSymbol[NumberSymbol[\"Group\"] = 1] = \"Group\";\n /**\n * List-item separator.\n * Example: \"one, two, and three\"\n */\n NumberSymbol[NumberSymbol[\"List\"] = 2] = \"List\";\n /**\n * Sign for percentage (out of 100).\n * Example: 23.4%\n */\n NumberSymbol[NumberSymbol[\"PercentSign\"] = 3] = \"PercentSign\";\n /**\n * Sign for positive numbers.\n * Example: +23\n */\n NumberSymbol[NumberSymbol[\"PlusSign\"] = 4] = \"PlusSign\";\n /**\n * Sign for negative numbers.\n * Example: -23\n */\n NumberSymbol[NumberSymbol[\"MinusSign\"] = 5] = \"MinusSign\";\n /**\n * Computer notation for exponential value (n times a power of 10).\n * Example: 1.2E3\n */\n NumberSymbol[NumberSymbol[\"Exponential\"] = 6] = \"Exponential\";\n /**\n * Human-readable format of exponential.\n * Example: 1.2x103\n */\n NumberSymbol[NumberSymbol[\"SuperscriptingExponent\"] = 7] = \"SuperscriptingExponent\";\n /**\n * Sign for permille (out of 1000).\n * Example: 23.4‰\n */\n NumberSymbol[NumberSymbol[\"PerMille\"] = 8] = \"PerMille\";\n /**\n * Infinity, can be used with plus and minus.\n * Example: ∞, +∞, -∞\n */\n NumberSymbol[NumberSymbol[\"Infinity\"] = 9] = \"Infinity\";\n /**\n * Not a number.\n * Example: NaN\n */\n NumberSymbol[NumberSymbol[\"NaN\"] = 10] = \"NaN\";\n /**\n * Symbol used between time units.\n * Example: 10:52\n */\n NumberSymbol[NumberSymbol[\"TimeSeparator\"] = 11] = \"TimeSeparator\";\n /**\n * Decimal separator for currency values (fallback to `Decimal`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyDecimal\"] = 12] = \"CurrencyDecimal\";\n /**\n * Group separator for currency values (fallback to `Group`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyGroup\"] = 13] = \"CurrencyGroup\";\n})(NumberSymbol || (NumberSymbol = {}));\n/**\n * The value for each day of the week, based on the `en-US` locale\n *\n * @publicApi\n */\nvar WeekDay;\n(function (WeekDay) {\n WeekDay[WeekDay[\"Sunday\"] = 0] = \"Sunday\";\n WeekDay[WeekDay[\"Monday\"] = 1] = \"Monday\";\n WeekDay[WeekDay[\"Tuesday\"] = 2] = \"Tuesday\";\n WeekDay[WeekDay[\"Wednesday\"] = 3] = \"Wednesday\";\n WeekDay[WeekDay[\"Thursday\"] = 4] = \"Thursday\";\n WeekDay[WeekDay[\"Friday\"] = 5] = \"Friday\";\n WeekDay[WeekDay[\"Saturday\"] = 6] = \"Saturday\";\n})(WeekDay || (WeekDay = {}));\n/**\n * Retrieves the locale ID from the currently loaded locale.\n * The loaded locale could be, for example, a global one rather than a regional one.\n * @param locale A locale code, such as `fr-FR`.\n * @returns The locale code. For example, `fr`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleId(locale) {\n return ɵfindLocaleData(locale)[ɵLocaleDataIndex.LocaleId];\n}\n/**\n * Retrieves day period strings for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized period strings. For example, `[AM, PM]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const amPmData = [\n data[ɵLocaleDataIndex.DayPeriodsFormat], data[ɵLocaleDataIndex.DayPeriodsStandalone]\n ];\n const amPm = getLastDefinedValue(amPmData, formStyle);\n return getLastDefinedValue(amPm, width);\n}\n/**\n * Retrieves days of the week for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example,`[Sunday, Monday, ... Saturday]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const daysData = [data[ɵLocaleDataIndex.DaysFormat], data[ɵLocaleDataIndex.DaysStandalone]];\n const days = getLastDefinedValue(daysData, formStyle);\n return getLastDefinedValue(days, width);\n}\n/**\n * Retrieves months of the year for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example, `[January, February, ...]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleMonthNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const monthsData = [data[ɵLocaleDataIndex.MonthsFormat], data[ɵLocaleDataIndex.MonthsStandalone]];\n const months = getLastDefinedValue(monthsData, formStyle);\n return getLastDefinedValue(months, width);\n}\n/**\n * Retrieves Gregorian-calendar eras for the given locale.\n * @param locale A locale code for the locale format rules to use.\n * @param width The required character width.\n\n * @returns An array of localized era strings.\n * For example, `[AD, BC]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleEraNames(locale, width) {\n const data = ɵfindLocaleData(locale);\n const erasData = data[ɵLocaleDataIndex.Eras];\n return getLastDefinedValue(erasData, width);\n}\n/**\n * Retrieves the first day of the week for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns A day index number, using the 0-based week-day index for `en-US`\n * (Sunday = 0, Monday = 1, ...).\n * For example, for `fr-FR`, returns 1 to indicate that the first day is Monday.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleFirstDayOfWeek(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.FirstDayOfWeek];\n}\n/**\n * Range of week days that are considered the week-end for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The range of day values, `[startDay, endDay]`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleWeekEndRange(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.WeekendRange];\n}\n/**\n * Retrieves a localized date-value formating string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formating string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.DateFormat], width);\n}\n/**\n * Retrieves a localized time-value formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n\n * @publicApi\n */\nfunction getLocaleTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.TimeFormat], width);\n}\n/**\n * Retrieves a localized date-time formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n const dateTimeFormatData = data[ɵLocaleDataIndex.DateTimeFormat];\n return getLastDefinedValue(dateTimeFormatData, width);\n}\n/**\n * Retrieves a localized number symbol that can be used to replace placeholders in number formats.\n * @param locale The locale code.\n * @param symbol The symbol to localize.\n * @returns The character for the localized symbol.\n * @see `NumberSymbol`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberSymbol(locale, symbol) {\n const data = ɵfindLocaleData(locale);\n const res = data[ɵLocaleDataIndex.NumberSymbols][symbol];\n if (typeof res === 'undefined') {\n if (symbol === NumberSymbol.CurrencyDecimal) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Decimal];\n }\n else if (symbol === NumberSymbol.CurrencyGroup) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Group];\n }\n }\n return res;\n}\n/**\n * Retrieves a number format for a given locale.\n *\n * Numbers are formatted using patterns, like `#,###.00`. For example, the pattern `#,###.00`\n * when used to format the number 12345.678 could result in \"12'345,678\". That would happen if the\n * grouping separator for your language is an apostrophe, and the decimal separator is a comma.\n *\n * Important: The characters `.` `,` `0` `#` (and others below) are special placeholders\n * that stand for the decimal separator, and so on, and are NOT real characters.\n * You must NOT \"translate\" the placeholders. For example, don't change `.` to `,` even though in\n * your language the decimal point is written with a comma. The symbols should be replaced by the\n * local equivalents, using the appropriate `NumberSymbol` for your language.\n *\n * Here are the special characters used in number patterns:\n *\n * | Symbol | Meaning |\n * |--------|---------|\n * | . | Replaced automatically by the character used for the decimal point. |\n * | , | Replaced by the \"grouping\" (thousands) separator. |\n * | 0 | Replaced by a digit (or zero if there aren't enough digits). |\n * | # | Replaced by a digit (or nothing if there aren't enough). |\n * | ¤ | Replaced by a currency symbol, such as $ or USD. |\n * | % | Marks a percent format. The % symbol may change position, but must be retained. |\n * | E | Marks a scientific format. The E symbol may change position, but must be retained. |\n * | ' | Special characters used as literal characters are quoted with ASCII single quotes. |\n *\n * @param locale A locale code for the locale format rules to use.\n * @param type The type of numeric value to be formatted (such as `Decimal` or `Currency`.)\n * @returns The localized format string.\n * @see `NumberFormatStyle`\n * @see [CLDR website](http://cldr.unicode.org/translation/number-patterns)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberFormat(locale, type) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.NumberFormats][type];\n}\n/**\n * Retrieves the symbol used to represent the currency for the main country\n * corresponding to a given locale. For example, '$' for `en-US`.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The localized symbol character,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencySymbol(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencySymbol] || null;\n}\n/**\n * Retrieves the name of the currency for the main country corresponding\n * to a given locale. For example, 'US Dollar' for `en-US`.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency name,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencyName(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencyName] || null;\n}\n/**\n * Retrieves the default currency code for the given locale.\n *\n * The default is defined as the first currency which is still in use.\n *\n * @param locale The code of the locale whose currency code we want.\n * @returns The code of the default currency for the given locale.\n *\n * @publicApi\n */\nfunction getLocaleCurrencyCode(locale) {\n return ɵgetLocaleCurrencyCode(locale);\n}\n/**\n * Retrieves the currency values for a given locale.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency values.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleCurrencies(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Currencies];\n}\n/**\n * @alias core/ɵgetLocalePluralCase\n * @publicApi\n */\nconst getLocalePluralCase = ɵgetLocalePluralCase;\nfunction checkFullData(data) {\n if (!data[ɵLocaleDataIndex.ExtraData]) {\n throw new Error(`Missing extra locale data for the locale \"${data[ɵLocaleDataIndex\n .LocaleId]}\". Use \"registerLocaleData\" to load new data. See the \"I18n guide\" on angular.io to know more.`);\n }\n}\n/**\n * Retrieves locale-specific rules used to determine which day period to use\n * when more than one period is defined for a locale.\n *\n * There is a rule for each defined day period. The\n * first rule is applied to the first day period and so on.\n * Fall back to AM/PM when no rules are available.\n *\n * A rule can specify a period as time range, or as a single time value.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The rules for the locale, a single time value or array of *from-time, to-time*,\n * or null if no periods are available.\n *\n * @see `getLocaleExtraDayPeriods()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriodRules(locale) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const rules = data[ɵLocaleDataIndex.ExtraData][2 /* ExtraDayPeriodsRules */] || [];\n return rules.map((rule) => {\n if (typeof rule === 'string') {\n return extractTime(rule);\n }\n return [extractTime(rule[0]), extractTime(rule[1])];\n });\n}\n/**\n * Retrieves locale-specific day periods, which indicate roughly how a day is broken up\n * in different languages.\n * For example, for `en-US`, periods are morning, noon, afternoon, evening, and midnight.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns The translated day-period strings.\n * @see `getLocaleExtraDayPeriodRules()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const dayPeriodsData = [\n data[ɵLocaleDataIndex.ExtraData][0 /* ExtraDayPeriodFormats */],\n data[ɵLocaleDataIndex.ExtraData][1 /* ExtraDayPeriodStandalone */]\n ];\n const dayPeriods = getLastDefinedValue(dayPeriodsData, formStyle) || [];\n return getLastDefinedValue(dayPeriods, width) || [];\n}\n/**\n * Retrieves the writing direction of a specified locale\n * @param locale A locale code for the locale format rules to use.\n * @publicApi\n * @returns 'rtl' or 'ltr'\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleDirection(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Directionality];\n}\n/**\n * Retrieves the first value that is defined in an array, going backwards from an index position.\n *\n * To avoid repeating the same data (as when the \"format\" and \"standalone\" forms are the same)\n * add the first value to the locale data arrays, and add other values only if they are different.\n *\n * @param data The data array to retrieve from.\n * @param index A 0-based index into the array to start from.\n * @returns The value immediately before the given index position.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLastDefinedValue(data, index) {\n for (let i = index; i > -1; i--) {\n if (typeof data[i] !== 'undefined') {\n return data[i];\n }\n }\n throw new Error('Locale data API: locale data undefined');\n}\n/**\n * Extracts the hours and minutes from a string like \"15:45\"\n */\nfunction extractTime(time) {\n const [h, m] = time.split(':');\n return { hours: +h, minutes: +m };\n}\n/**\n * Retrieves the currency symbol for a given currency code.\n *\n * For example, for the default `en-US` locale, the code `USD` can\n * be represented by the narrow symbol `$` or the wide symbol `US$`.\n *\n * @param code The currency code.\n * @param format The format, `wide` or `narrow`.\n * @param locale A locale code for the locale format rules to use.\n *\n * @returns The symbol, or the currency code if no symbol is available.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getCurrencySymbol(code, format, locale = 'en') {\n const currency = getLocaleCurrencies(locale)[code] || CURRENCIES_EN[code] || [];\n const symbolNarrow = currency[1 /* SymbolNarrow */];\n if (format === 'narrow' && typeof symbolNarrow === 'string') {\n return symbolNarrow;\n }\n return currency[0 /* Symbol */] || code;\n}\n// Most currencies have cents, that's why the default is 2\nconst DEFAULT_NB_OF_CURRENCY_DIGITS = 2;\n/**\n * Reports the number of decimal digits for a given currency.\n * The value depends upon the presence of cents in that particular currency.\n *\n * @param code The currency code.\n * @returns The number of decimal digits, typically 0 or 2.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getNumberOfCurrencyDigits(code) {\n let digits;\n const currency = CURRENCIES_EN[code];\n if (currency) {\n digits = currency[2 /* NbOfDigits */];\n }\n return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ISO8601_DATE_REGEX = /^(\\d{4})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\n// 1 2 3 4 5 6 7 8 9 10 11\nconst NAMED_FORMATS = {};\nconst DATE_FORMATS_SPLIT = /((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\\s\\S]*)/;\nvar ZoneWidth;\n(function (ZoneWidth) {\n ZoneWidth[ZoneWidth[\"Short\"] = 0] = \"Short\";\n ZoneWidth[ZoneWidth[\"ShortGMT\"] = 1] = \"ShortGMT\";\n ZoneWidth[ZoneWidth[\"Long\"] = 2] = \"Long\";\n ZoneWidth[ZoneWidth[\"Extended\"] = 3] = \"Extended\";\n})(ZoneWidth || (ZoneWidth = {}));\nvar DateType;\n(function (DateType) {\n DateType[DateType[\"FullYear\"] = 0] = \"FullYear\";\n DateType[DateType[\"Month\"] = 1] = \"Month\";\n DateType[DateType[\"Date\"] = 2] = \"Date\";\n DateType[DateType[\"Hours\"] = 3] = \"Hours\";\n DateType[DateType[\"Minutes\"] = 4] = \"Minutes\";\n DateType[DateType[\"Seconds\"] = 5] = \"Seconds\";\n DateType[DateType[\"FractionalSeconds\"] = 6] = \"FractionalSeconds\";\n DateType[DateType[\"Day\"] = 7] = \"Day\";\n})(DateType || (DateType = {}));\nvar TranslationType;\n(function (TranslationType) {\n TranslationType[TranslationType[\"DayPeriods\"] = 0] = \"DayPeriods\";\n TranslationType[TranslationType[\"Days\"] = 1] = \"Days\";\n TranslationType[TranslationType[\"Months\"] = 2] = \"Months\";\n TranslationType[TranslationType[\"Eras\"] = 3] = \"Eras\";\n})(TranslationType || (TranslationType = {}));\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date according to locale rules.\n *\n * @param value The date to format, as a Date, or a number (milliseconds since UTC epoch)\n * or an [ISO date-time string](https://www.w3.org/TR/NOTE-datetime).\n * @param format The date-time components to include. See `DatePipe` for details.\n * @param locale A locale code for the locale format rules to use.\n * @param timezone The time zone. A time zone offset from GMT (such as `'+0430'`),\n * or a standard UTC/GMT or continental US time zone abbreviation.\n * If not specified, uses host system settings.\n *\n * @returns The formatted date string.\n *\n * @see `DatePipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatDate(value, format, locale, timezone) {\n let date = toDate(value);\n const namedFormat = getNamedFormat(locale, format);\n format = namedFormat || format;\n let parts = [];\n let match;\n while (format) {\n match = DATE_FORMATS_SPLIT.exec(format);\n if (match) {\n parts = parts.concat(match.slice(1));\n const part = parts.pop();\n if (!part) {\n break;\n }\n format = part;\n }\n else {\n parts.push(format);\n break;\n }\n }\n let dateTimezoneOffset = date.getTimezoneOffset();\n if (timezone) {\n dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n date = convertTimezoneToLocal(date, timezone, true);\n }\n let text = '';\n parts.forEach(value => {\n const dateFormatter = getDateFormatter(value);\n text += dateFormatter ?\n dateFormatter(date, locale, dateTimezoneOffset) :\n value === '\\'\\'' ? '\\'' : value.replace(/(^'|'$)/g, '').replace(/''/g, '\\'');\n });\n return text;\n}\n/**\n * Create a new Date object with the given date value, and the time set to midnight.\n *\n * We cannot use `new Date(year, month, date)` because it maps years between 0 and 99 to 1900-1999.\n * See: https://github.com/angular/angular/issues/40377\n *\n * Note that this function returns a Date object whose time is midnight in the current locale's\n * timezone. In the future we might want to change this to be midnight in UTC, but this would be a\n * considerable breaking change.\n */\nfunction createDate(year, month, date) {\n // The `newDate` is set to midnight (UTC) on January 1st 1970.\n // - In PST this will be December 31st 1969 at 4pm.\n // - In GMT this will be January 1st 1970 at 1am.\n // Note that they even have different years, dates and months!\n const newDate = new Date(0);\n // `setFullYear()` allows years like 0001 to be set correctly. This function does not\n // change the internal time of the date.\n // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019).\n // - In PST this will now be September 20, 2019 at 4pm\n // - In GMT this will now be September 20, 2019 at 1am\n newDate.setFullYear(year, month, date);\n // We want the final date to be at local midnight, so we reset the time.\n // - In PST this will now be September 20, 2019 at 12am\n // - In GMT this will now be September 20, 2019 at 12am\n newDate.setHours(0, 0, 0);\n return newDate;\n}\nfunction getNamedFormat(locale, format) {\n const localeId = getLocaleId(locale);\n NAMED_FORMATS[localeId] = NAMED_FORMATS[localeId] || {};\n if (NAMED_FORMATS[localeId][format]) {\n return NAMED_FORMATS[localeId][format];\n }\n let formatValue = '';\n switch (format) {\n case 'shortDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Short);\n break;\n case 'mediumDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Medium);\n break;\n case 'longDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Long);\n break;\n case 'fullDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Full);\n break;\n case 'shortTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Short);\n break;\n case 'mediumTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Medium);\n break;\n case 'longTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Long);\n break;\n case 'fullTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Full);\n break;\n case 'short':\n const shortTime = getNamedFormat(locale, 'shortTime');\n const shortDate = getNamedFormat(locale, 'shortDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Short), [shortTime, shortDate]);\n break;\n case 'medium':\n const mediumTime = getNamedFormat(locale, 'mediumTime');\n const mediumDate = getNamedFormat(locale, 'mediumDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Medium), [mediumTime, mediumDate]);\n break;\n case 'long':\n const longTime = getNamedFormat(locale, 'longTime');\n const longDate = getNamedFormat(locale, 'longDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Long), [longTime, longDate]);\n break;\n case 'full':\n const fullTime = getNamedFormat(locale, 'fullTime');\n const fullDate = getNamedFormat(locale, 'fullDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Full), [fullTime, fullDate]);\n break;\n }\n if (formatValue) {\n NAMED_FORMATS[localeId][format] = formatValue;\n }\n return formatValue;\n}\nfunction formatDateTime(str, opt_values) {\n if (opt_values) {\n str = str.replace(/\\{([^}]+)}/g, function (match, key) {\n return (opt_values != null && key in opt_values) ? opt_values[key] : match;\n });\n }\n return str;\n}\nfunction padNumber(num, digits, minusSign = '-', trim, negWrap) {\n let neg = '';\n if (num < 0 || (negWrap && num <= 0)) {\n if (negWrap) {\n num = -num + 1;\n }\n else {\n num = -num;\n neg = minusSign;\n }\n }\n let strNum = String(num);\n while (strNum.length < digits) {\n strNum = '0' + strNum;\n }\n if (trim) {\n strNum = strNum.substr(strNum.length - digits);\n }\n return neg + strNum;\n}\nfunction formatFractionalSeconds(milliseconds, digits) {\n const strMs = padNumber(milliseconds, 3);\n return strMs.substr(0, digits);\n}\n/**\n * Returns a date formatter that transforms a date into its locale digit representation\n */\nfunction dateGetter(name, size, offset = 0, trim = false, negWrap = false) {\n return function (date, locale) {\n let part = getDatePart(name, date);\n if (offset > 0 || part > -offset) {\n part += offset;\n }\n if (name === DateType.Hours) {\n if (part === 0 && offset === -12) {\n part = 12;\n }\n }\n else if (name === DateType.FractionalSeconds) {\n return formatFractionalSeconds(part, size);\n }\n const localeMinus = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n return padNumber(part, size, localeMinus, trim, negWrap);\n };\n}\nfunction getDatePart(part, date) {\n switch (part) {\n case DateType.FullYear:\n return date.getFullYear();\n case DateType.Month:\n return date.getMonth();\n case DateType.Date:\n return date.getDate();\n case DateType.Hours:\n return date.getHours();\n case DateType.Minutes:\n return date.getMinutes();\n case DateType.Seconds:\n return date.getSeconds();\n case DateType.FractionalSeconds:\n return date.getMilliseconds();\n case DateType.Day:\n return date.getDay();\n default:\n throw new Error(`Unknown DateType value \"${part}\".`);\n }\n}\n/**\n * Returns a date formatter that transforms a date into its locale string representation\n */\nfunction dateStrGetter(name, width, form = FormStyle.Format, extended = false) {\n return function (date, locale) {\n return getDateTranslation(date, locale, name, width, form, extended);\n };\n}\n/**\n * Returns the locale translation of a date for a given form, type and width\n */\nfunction getDateTranslation(date, locale, name, width, form, extended) {\n switch (name) {\n case TranslationType.Months:\n return getLocaleMonthNames(locale, form, width)[date.getMonth()];\n case TranslationType.Days:\n return getLocaleDayNames(locale, form, width)[date.getDay()];\n case TranslationType.DayPeriods:\n const currentHours = date.getHours();\n const currentMinutes = date.getMinutes();\n if (extended) {\n const rules = getLocaleExtraDayPeriodRules(locale);\n const dayPeriods = getLocaleExtraDayPeriods(locale, form, width);\n const index = rules.findIndex(rule => {\n if (Array.isArray(rule)) {\n // morning, afternoon, evening, night\n const [from, to] = rule;\n const afterFrom = currentHours >= from.hours && currentMinutes >= from.minutes;\n const beforeTo = (currentHours < to.hours ||\n (currentHours === to.hours && currentMinutes < to.minutes));\n // We must account for normal rules that span a period during the day (e.g. 6am-9am)\n // where `from` is less (earlier) than `to`. But also rules that span midnight (e.g.\n // 10pm - 5am) where `from` is greater (later!) than `to`.\n //\n // In the first case the current time must be BOTH after `from` AND before `to`\n // (e.g. 8am is after 6am AND before 10am).\n //\n // In the second case the current time must be EITHER after `from` OR before `to`\n // (e.g. 4am is before 5am but not after 10pm; and 11pm is not before 5am but it is\n // after 10pm).\n if (from.hours < to.hours) {\n if (afterFrom && beforeTo) {\n return true;\n }\n }\n else if (afterFrom || beforeTo) {\n return true;\n }\n }\n else { // noon or midnight\n if (rule.hours === currentHours && rule.minutes === currentMinutes) {\n return true;\n }\n }\n return false;\n });\n if (index !== -1) {\n return dayPeriods[index];\n }\n }\n // if no rules for the day periods, we use am/pm by default\n return getLocaleDayPeriods(locale, form, width)[currentHours < 12 ? 0 : 1];\n case TranslationType.Eras:\n return getLocaleEraNames(locale, width)[date.getFullYear() <= 0 ? 0 : 1];\n default:\n // This default case is not needed by TypeScript compiler, as the switch is exhaustive.\n // However Closure Compiler does not understand that and reports an error in typed mode.\n // The `throw new Error` below works around the problem, and the unexpected: never variable\n // makes sure tsc still checks this code is unreachable.\n const unexpected = name;\n throw new Error(`unexpected translation type ${unexpected}`);\n }\n}\n/**\n * Returns a date formatter that transforms a date and an offset into a timezone with ISO8601 or\n * GMT format depending on the width (eg: short = +0430, short:GMT = GMT+4, long = GMT+04:30,\n * extended = +04:30)\n */\nfunction timeZoneGetter(width) {\n return function (date, locale, offset) {\n const zone = -1 * offset;\n const minusSign = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n const hours = zone > 0 ? Math.floor(zone / 60) : Math.ceil(zone / 60);\n switch (width) {\n case ZoneWidth.Short:\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.ShortGMT:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 1, minusSign);\n case ZoneWidth.Long:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.Extended:\n if (offset === 0) {\n return 'Z';\n }\n else {\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n }\n default:\n throw new Error(`Unknown zone width \"${width}\"`);\n }\n };\n}\nconst JANUARY = 0;\nconst THURSDAY = 4;\nfunction getFirstThursdayOfYear(year) {\n const firstDayOfYear = createDate(year, JANUARY, 1).getDay();\n return createDate(year, 0, 1 + ((firstDayOfYear <= THURSDAY) ? THURSDAY : THURSDAY + 7) - firstDayOfYear);\n}\nfunction getThursdayThisWeek(datetime) {\n return createDate(datetime.getFullYear(), datetime.getMonth(), datetime.getDate() + (THURSDAY - datetime.getDay()));\n}\nfunction weekGetter(size, monthBased = false) {\n return function (date, locale) {\n let result;\n if (monthBased) {\n const nbDaysBefore1stDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1).getDay() - 1;\n const today = date.getDate();\n result = 1 + Math.floor((today + nbDaysBefore1stDayOfMonth) / 7);\n }\n else {\n const thisThurs = getThursdayThisWeek(date);\n // Some days of a year are part of next year according to ISO 8601.\n // Compute the firstThurs from the year of this week's Thursday\n const firstThurs = getFirstThursdayOfYear(thisThurs.getFullYear());\n const diff = thisThurs.getTime() - firstThurs.getTime();\n result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week\n }\n return padNumber(result, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n };\n}\n/**\n * Returns a date formatter that provides the week-numbering year for the input date.\n */\nfunction weekNumberingYearGetter(size, trim = false) {\n return function (date, locale) {\n const thisThurs = getThursdayThisWeek(date);\n const weekNumberingYear = thisThurs.getFullYear();\n return padNumber(weekNumberingYear, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign), trim);\n };\n}\nconst DATE_FORMATS = {};\n// Based on CLDR formats:\n// See complete list: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n// See also explanations: http://cldr.unicode.org/translation/date-time\n// TODO(ocombe): support all missing cldr formats: U, Q, D, F, e, j, J, C, A, v, V, X, x\nfunction getDateFormatter(format) {\n if (DATE_FORMATS[format]) {\n return DATE_FORMATS[format];\n }\n let formatter;\n switch (format) {\n // Era name (AD/BC)\n case 'G':\n case 'GG':\n case 'GGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Abbreviated);\n break;\n case 'GGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Wide);\n break;\n case 'GGGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Narrow);\n break;\n // 1 digit representation of the year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'y':\n formatter = dateGetter(DateType.FullYear, 1, 0, false, true);\n break;\n // 2 digit representation of the year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yy':\n formatter = dateGetter(DateType.FullYear, 2, 0, true, true);\n break;\n // 3 digit representation of the year, padded (000-999). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yyy':\n formatter = dateGetter(DateType.FullYear, 3, 0, false, true);\n break;\n // 4 digit representation of the year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'yyyy':\n formatter = dateGetter(DateType.FullYear, 4, 0, false, true);\n break;\n // 1 digit representation of the week-numbering year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'Y':\n formatter = weekNumberingYearGetter(1);\n break;\n // 2 digit representation of the week-numbering year, padded (00-99). (e.g. AD 2001 => 01, AD\n // 2010 => 10)\n case 'YY':\n formatter = weekNumberingYearGetter(2, true);\n break;\n // 3 digit representation of the week-numbering year, padded (000-999). (e.g. AD 1 => 001, AD\n // 2010 => 2010)\n case 'YYY':\n formatter = weekNumberingYearGetter(3);\n break;\n // 4 digit representation of the week-numbering year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'YYYY':\n formatter = weekNumberingYearGetter(4);\n break;\n // Month of the year (1-12), numeric\n case 'M':\n case 'L':\n formatter = dateGetter(DateType.Month, 1, 1);\n break;\n case 'MM':\n case 'LL':\n formatter = dateGetter(DateType.Month, 2, 1);\n break;\n // Month of the year (January, ...), string, format\n case 'MMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated);\n break;\n case 'MMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Wide);\n break;\n case 'MMMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Narrow);\n break;\n // Month of the year (January, ...), string, standalone\n case 'LLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'LLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'LLLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n // Week of the year (1, ... 52)\n case 'w':\n formatter = weekGetter(1);\n break;\n case 'ww':\n formatter = weekGetter(2);\n break;\n // Week of the month (1, ...)\n case 'W':\n formatter = weekGetter(1, true);\n break;\n // Day of the month (1-31)\n case 'd':\n formatter = dateGetter(DateType.Date, 1);\n break;\n case 'dd':\n formatter = dateGetter(DateType.Date, 2);\n break;\n // Day of the Week StandAlone (1, 1, Mon, Monday, M, Mo)\n case 'c':\n case 'cc':\n formatter = dateGetter(DateType.Day, 1);\n break;\n case 'ccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'cccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'ccccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n case 'cccccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short, FormStyle.Standalone);\n break;\n // Day of the Week\n case 'E':\n case 'EE':\n case 'EEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated);\n break;\n case 'EEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide);\n break;\n case 'EEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Narrow);\n break;\n case 'EEEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short);\n break;\n // Generic period of the day (am-pm)\n case 'a':\n case 'aa':\n case 'aaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated);\n break;\n case 'aaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide);\n break;\n case 'aaaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow);\n break;\n // Extended period of the day (midnight, at night, ...), standalone\n case 'b':\n case 'bb':\n case 'bbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Standalone, true);\n break;\n case 'bbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Standalone, true);\n break;\n case 'bbbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Standalone, true);\n break;\n // Extended period of the day (midnight, night, ...), standalone\n case 'B':\n case 'BB':\n case 'BBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Format, true);\n break;\n case 'BBBB':\n formatter =\n dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Format, true);\n break;\n case 'BBBBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Format, true);\n break;\n // Hour in AM/PM, (1-12)\n case 'h':\n formatter = dateGetter(DateType.Hours, 1, -12);\n break;\n case 'hh':\n formatter = dateGetter(DateType.Hours, 2, -12);\n break;\n // Hour of the day (0-23)\n case 'H':\n formatter = dateGetter(DateType.Hours, 1);\n break;\n // Hour in day, padded (00-23)\n case 'HH':\n formatter = dateGetter(DateType.Hours, 2);\n break;\n // Minute of the hour (0-59)\n case 'm':\n formatter = dateGetter(DateType.Minutes, 1);\n break;\n case 'mm':\n formatter = dateGetter(DateType.Minutes, 2);\n break;\n // Second of the minute (0-59)\n case 's':\n formatter = dateGetter(DateType.Seconds, 1);\n break;\n case 'ss':\n formatter = dateGetter(DateType.Seconds, 2);\n break;\n // Fractional second\n case 'S':\n formatter = dateGetter(DateType.FractionalSeconds, 1);\n break;\n case 'SS':\n formatter = dateGetter(DateType.FractionalSeconds, 2);\n break;\n case 'SSS':\n formatter = dateGetter(DateType.FractionalSeconds, 3);\n break;\n // Timezone ISO8601 short format (-0430)\n case 'Z':\n case 'ZZ':\n case 'ZZZ':\n formatter = timeZoneGetter(ZoneWidth.Short);\n break;\n // Timezone ISO8601 extended format (-04:30)\n case 'ZZZZZ':\n formatter = timeZoneGetter(ZoneWidth.Extended);\n break;\n // Timezone GMT short format (GMT+4)\n case 'O':\n case 'OO':\n case 'OOO':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'z':\n case 'zz':\n case 'zzz':\n formatter = timeZoneGetter(ZoneWidth.ShortGMT);\n break;\n // Timezone GMT long format (GMT+0430)\n case 'OOOO':\n case 'ZZZZ':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'zzzz':\n formatter = timeZoneGetter(ZoneWidth.Long);\n break;\n default:\n return null;\n }\n DATE_FORMATS[format] = formatter;\n return formatter;\n}\nfunction timezoneToOffset(timezone, fallback) {\n // Support: IE 11 only, Edge 13-15+\n // IE/Edge do not \"understand\" colon (`:`) in timezone\n timezone = timezone.replace(/:/g, '');\n const requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\n return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\n}\nfunction addDateMinutes(date, minutes) {\n date = new Date(date.getTime());\n date.setMinutes(date.getMinutes() + minutes);\n return date;\n}\nfunction convertTimezoneToLocal(date, timezone, reverse) {\n const reverseValue = reverse ? -1 : 1;\n const dateTimezoneOffset = date.getTimezoneOffset();\n const timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n return addDateMinutes(date, reverseValue * (timezoneOffset - dateTimezoneOffset));\n}\n/**\n * Converts a value to date.\n *\n * Supported input formats:\n * - `Date`\n * - number: timestamp\n * - string: numeric (e.g. \"1234\"), ISO and date strings in a format supported by\n * [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).\n * Note: ISO strings without time return a date without timeoffset.\n *\n * Throws if unable to convert to a date.\n */\nfunction toDate(value) {\n if (isDate(value)) {\n return value;\n }\n if (typeof value === 'number' && !isNaN(value)) {\n return new Date(value);\n }\n if (typeof value === 'string') {\n value = value.trim();\n if (/^(\\d{4}(-\\d{1,2}(-\\d{1,2})?)?)$/.test(value)) {\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\n before Date creation to avoid time offset and errors in the new Date.\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\n is applied.\n Note: ISO months are 0 for January, 1 for February, ... */\n const [y, m = 1, d = 1] = value.split('-').map((val) => +val);\n return createDate(y, m - 1, d);\n }\n const parsedNb = parseFloat(value);\n // any string that only contains numbers, like \"1234\" but not like \"1234hello\"\n if (!isNaN(value - parsedNb)) {\n return new Date(parsedNb);\n }\n let match;\n if (match = value.match(ISO8601_DATE_REGEX)) {\n return isoStringToDate(match);\n }\n }\n const date = new Date(value);\n if (!isDate(date)) {\n throw new Error(`Unable to convert \"${value}\" into a date`);\n }\n return date;\n}\n/**\n * Converts a date in ISO8601 to a Date.\n * Used instead of `Date.parse` because of browser discrepancies.\n */\nfunction isoStringToDate(match) {\n const date = new Date(0);\n let tzHour = 0;\n let tzMin = 0;\n // match[8] means that the string contains \"Z\" (UTC) or a timezone like \"+01:00\" or \"+0100\"\n const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;\n const timeSetter = match[8] ? date.setUTCHours : date.setHours;\n // if there is a timezone defined like \"+01:00\" or \"+0100\"\n if (match[9]) {\n tzHour = Number(match[9] + match[10]);\n tzMin = Number(match[9] + match[11]);\n }\n dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));\n const h = Number(match[4] || 0) - tzHour;\n const m = Number(match[5] || 0) - tzMin;\n const s = Number(match[6] || 0);\n // The ECMAScript specification (https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.11)\n // defines that `DateTime` milliseconds should always be rounded down, so that `999.9ms`\n // becomes `999ms`.\n const ms = Math.floor(parseFloat('0.' + (match[7] || 0)) * 1000);\n timeSetter.call(date, h, m, s, ms);\n return date;\n}\nfunction isDate(value) {\n return value instanceof Date && !isNaN(value.valueOf());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/;\nconst MAX_DIGITS = 22;\nconst DECIMAL_SEP = '.';\nconst ZERO_CHAR = '0';\nconst PATTERN_SEP = ';';\nconst GROUP_SEP = ',';\nconst DIGIT_CHAR = '#';\nconst CURRENCY_CHAR = '¤';\nconst PERCENT_CHAR = '%';\n/**\n * Transforms a number to a locale string based on a style and a format.\n */\nfunction formatNumberToLocaleString(value, pattern, locale, groupSymbol, decimalSymbol, digitsInfo, isPercent = false) {\n let formattedText = '';\n let isZero = false;\n if (!isFinite(value)) {\n formattedText = getLocaleNumberSymbol(locale, NumberSymbol.Infinity);\n }\n else {\n let parsedNumber = parseNumber(value);\n if (isPercent) {\n parsedNumber = toPercent(parsedNumber);\n }\n let minInt = pattern.minInt;\n let minFraction = pattern.minFrac;\n let maxFraction = pattern.maxFrac;\n if (digitsInfo) {\n const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);\n if (parts === null) {\n throw new Error(`${digitsInfo} is not a valid digit info`);\n }\n const minIntPart = parts[1];\n const minFractionPart = parts[3];\n const maxFractionPart = parts[5];\n if (minIntPart != null) {\n minInt = parseIntAutoRadix(minIntPart);\n }\n if (minFractionPart != null) {\n minFraction = parseIntAutoRadix(minFractionPart);\n }\n if (maxFractionPart != null) {\n maxFraction = parseIntAutoRadix(maxFractionPart);\n }\n else if (minFractionPart != null && minFraction > maxFraction) {\n maxFraction = minFraction;\n }\n }\n roundNumber(parsedNumber, minFraction, maxFraction);\n let digits = parsedNumber.digits;\n let integerLen = parsedNumber.integerLen;\n const exponent = parsedNumber.exponent;\n let decimals = [];\n isZero = digits.every(d => !d);\n // pad zeros for small numbers\n for (; integerLen < minInt; integerLen++) {\n digits.unshift(0);\n }\n // pad zeros for small numbers\n for (; integerLen < 0; integerLen++) {\n digits.unshift(0);\n }\n // extract decimals digits\n if (integerLen > 0) {\n decimals = digits.splice(integerLen, digits.length);\n }\n else {\n decimals = digits;\n digits = [0];\n }\n // format the integer digits with grouping separators\n const groups = [];\n if (digits.length >= pattern.lgSize) {\n groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));\n }\n while (digits.length > pattern.gSize) {\n groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));\n }\n if (digits.length) {\n groups.unshift(digits.join(''));\n }\n formattedText = groups.join(getLocaleNumberSymbol(locale, groupSymbol));\n // append the decimal digits\n if (decimals.length) {\n formattedText += getLocaleNumberSymbol(locale, decimalSymbol) + decimals.join('');\n }\n if (exponent) {\n formattedText += getLocaleNumberSymbol(locale, NumberSymbol.Exponential) + '+' + exponent;\n }\n }\n if (value < 0 && !isZero) {\n formattedText = pattern.negPre + formattedText + pattern.negSuf;\n }\n else {\n formattedText = pattern.posPre + formattedText + pattern.posSuf;\n }\n return formattedText;\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as currency using locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param currency A string containing the currency symbol or its name,\n * such as \"$\" or \"Canadian Dollar\". Used in output string, but does not affect the operation\n * of the function.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n * currency code, such as `USD` for the US dollar and `EUR` for the euro.\n * Used to determine the number of digits in the decimal part.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted currency value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatCurrency(value, locale, currency, currencyCode, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Currency);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n pattern.minFrac = getNumberOfCurrencyDigits(currencyCode);\n pattern.maxFrac = pattern.minFrac;\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.CurrencyGroup, NumberSymbol.CurrencyDecimal, digitsInfo);\n return res\n .replace(CURRENCY_CHAR, currency)\n // if we have 2 time the currency character, the second one is ignored\n .replace(CURRENCY_CHAR, '')\n // If there is a spacing between currency character and the value and\n // the currency character is supressed by passing an empty string, the\n // spacing character would remain as part of the string. Then we\n // should remove it.\n .trim();\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as a percentage according to locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted percentage value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n *\n */\nfunction formatPercent(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Percent);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo, true);\n return res.replace(new RegExp(PERCENT_CHAR, 'g'), getLocaleNumberSymbol(locale, NumberSymbol.PercentSign));\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as text, with group sizing, separator, and other\n * parameters based on the locale.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted text string.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatNumber(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n return formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo);\n}\nfunction parseNumberFormat(format, minusSign = '-') {\n const p = {\n minInt: 1,\n minFrac: 0,\n maxFrac: 0,\n posPre: '',\n posSuf: '',\n negPre: '',\n negSuf: '',\n gSize: 0,\n lgSize: 0\n };\n const patternParts = format.split(PATTERN_SEP);\n const positive = patternParts[0];\n const negative = patternParts[1];\n const positiveParts = positive.indexOf(DECIMAL_SEP) !== -1 ?\n positive.split(DECIMAL_SEP) :\n [\n positive.substring(0, positive.lastIndexOf(ZERO_CHAR) + 1),\n positive.substring(positive.lastIndexOf(ZERO_CHAR) + 1)\n ], integer = positiveParts[0], fraction = positiveParts[1] || '';\n p.posPre = integer.substr(0, integer.indexOf(DIGIT_CHAR));\n for (let i = 0; i < fraction.length; i++) {\n const ch = fraction.charAt(i);\n if (ch === ZERO_CHAR) {\n p.minFrac = p.maxFrac = i + 1;\n }\n else if (ch === DIGIT_CHAR) {\n p.maxFrac = i + 1;\n }\n else {\n p.posSuf += ch;\n }\n }\n const groups = integer.split(GROUP_SEP);\n p.gSize = groups[1] ? groups[1].length : 0;\n p.lgSize = (groups[2] || groups[1]) ? (groups[2] || groups[1]).length : 0;\n if (negative) {\n const trunkLen = positive.length - p.posPre.length - p.posSuf.length, pos = negative.indexOf(DIGIT_CHAR);\n p.negPre = negative.substr(0, pos).replace(/'/g, '');\n p.negSuf = negative.substr(pos + trunkLen).replace(/'/g, '');\n }\n else {\n p.negPre = minusSign + p.posPre;\n p.negSuf = p.posSuf;\n }\n return p;\n}\n// Transforms a parsed number into a percentage by multiplying it by 100\nfunction toPercent(parsedNumber) {\n // if the number is 0, don't do anything\n if (parsedNumber.digits[0] === 0) {\n return parsedNumber;\n }\n // Getting the current number of decimals\n const fractionLen = parsedNumber.digits.length - parsedNumber.integerLen;\n if (parsedNumber.exponent) {\n parsedNumber.exponent += 2;\n }\n else {\n if (fractionLen === 0) {\n parsedNumber.digits.push(0, 0);\n }\n else if (fractionLen === 1) {\n parsedNumber.digits.push(0);\n }\n parsedNumber.integerLen += 2;\n }\n return parsedNumber;\n}\n/**\n * Parses a number.\n * Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/\n */\nfunction parseNumber(num) {\n let numStr = Math.abs(num) + '';\n let exponent = 0, digits, integerLen;\n let i, j, zeros;\n // Decimal point?\n if ((integerLen = numStr.indexOf(DECIMAL_SEP)) > -1) {\n numStr = numStr.replace(DECIMAL_SEP, '');\n }\n // Exponential form?\n if ((i = numStr.search(/e/i)) > 0) {\n // Work out the exponent.\n if (integerLen < 0)\n integerLen = i;\n integerLen += +numStr.slice(i + 1);\n numStr = numStr.substring(0, i);\n }\n else if (integerLen < 0) {\n // There was no decimal point or exponent so it is an integer.\n integerLen = numStr.length;\n }\n // Count the number of leading zeros.\n for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) { /* empty */\n }\n if (i === (zeros = numStr.length)) {\n // The digits are all zero.\n digits = [0];\n integerLen = 1;\n }\n else {\n // Count the number of trailing zeros\n zeros--;\n while (numStr.charAt(zeros) === ZERO_CHAR)\n zeros--;\n // Trailing zeros are insignificant so ignore them\n integerLen -= i;\n digits = [];\n // Convert string to array of digits without leading/trailing zeros.\n for (j = 0; i <= zeros; i++, j++) {\n digits[j] = Number(numStr.charAt(i));\n }\n }\n // If the number overflows the maximum allowed digits then use an exponent.\n if (integerLen > MAX_DIGITS) {\n digits = digits.splice(0, MAX_DIGITS - 1);\n exponent = integerLen - 1;\n integerLen = 1;\n }\n return { digits, exponent, integerLen };\n}\n/**\n * Round the parsed number to the specified number of decimal places\n * This function changes the parsedNumber in-place\n */\nfunction roundNumber(parsedNumber, minFrac, maxFrac) {\n if (minFrac > maxFrac) {\n throw new Error(`The minimum number of digits after fraction (${minFrac}) is higher than the maximum (${maxFrac}).`);\n }\n let digits = parsedNumber.digits;\n let fractionLen = digits.length - parsedNumber.integerLen;\n const fractionSize = Math.min(Math.max(minFrac, fractionLen), maxFrac);\n // The index of the digit to where rounding is to occur\n let roundAt = fractionSize + parsedNumber.integerLen;\n let digit = digits[roundAt];\n if (roundAt > 0) {\n // Drop fractional digits beyond `roundAt`\n digits.splice(Math.max(parsedNumber.integerLen, roundAt));\n // Set non-fractional digits beyond `roundAt` to 0\n for (let j = roundAt; j < digits.length; j++) {\n digits[j] = 0;\n }\n }\n else {\n // We rounded to zero so reset the parsedNumber\n fractionLen = Math.max(0, fractionLen);\n parsedNumber.integerLen = 1;\n digits.length = Math.max(1, roundAt = fractionSize + 1);\n digits[0] = 0;\n for (let i = 1; i < roundAt; i++)\n digits[i] = 0;\n }\n if (digit >= 5) {\n if (roundAt - 1 < 0) {\n for (let k = 0; k > roundAt; k--) {\n digits.unshift(0);\n parsedNumber.integerLen++;\n }\n digits.unshift(1);\n parsedNumber.integerLen++;\n }\n else {\n digits[roundAt - 1]++;\n }\n }\n // Pad out with zeros to get the required fraction length\n for (; fractionLen < Math.max(0, fractionSize); fractionLen++)\n digits.push(0);\n let dropTrailingZeros = fractionSize !== 0;\n // Minimal length = nb of decimals required + current nb of integers\n // Any number besides that is optional and can be removed if it's a trailing 0\n const minLen = minFrac + parsedNumber.integerLen;\n // Do any carrying, e.g. a digit was rounded up to 10\n const carry = digits.reduceRight(function (carry, d, i, digits) {\n d = d + carry;\n digits[i] = d < 10 ? d : d - 10; // d % 10\n if (dropTrailingZeros) {\n // Do not keep meaningless fractional trailing zeros (e.g. 15.52000 --> 15.52)\n if (digits[i] === 0 && i >= minLen) {\n digits.pop();\n }\n else {\n dropTrailingZeros = false;\n }\n }\n return d >= 10 ? 1 : 0; // Math.floor(d / 10);\n }, 0);\n if (carry) {\n digits.unshift(carry);\n parsedNumber.integerLen++;\n }\n}\nfunction parseIntAutoRadix(text) {\n const result = parseInt(text);\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgLocalization {\n}\n/**\n * Returns the plural category for a given value.\n * - \"=value\" when the case exists,\n * - the plural category otherwise\n */\nfunction getPluralCategory(value, cases, ngLocalization, locale) {\n let key = `=${value}`;\n if (cases.indexOf(key) > -1) {\n return key;\n }\n key = ngLocalization.getPluralCategory(value, locale);\n if (cases.indexOf(key) > -1) {\n return key;\n }\n if (cases.indexOf('other') > -1) {\n return 'other';\n }\n throw new Error(`No plural message found for value \"${value}\"`);\n}\n/**\n * Returns the plural case based on the locale\n *\n * @publicApi\n */\nclass NgLocaleLocalization extends NgLocalization {\n constructor(locale) {\n super();\n this.locale = locale;\n }\n getPluralCategory(value, locale) {\n const plural = getLocalePluralCase(locale || this.locale)(value);\n switch (plural) {\n case Plural.Zero:\n return 'zero';\n case Plural.One:\n return 'one';\n case Plural.Two:\n return 'two';\n case Plural.Few:\n return 'few';\n case Plural.Many:\n return 'many';\n default:\n return 'other';\n }\n }\n}\nNgLocaleLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgLocaleLocalization, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nNgLocaleLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgLocaleLocalization });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgLocaleLocalization, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Register global data to be used internally by Angular. See the\n * [\"I18n guide\"](guide/i18n-common-format-data-locale) to know how to import additional locale\n * data.\n *\n * The signature registerLocaleData(data: any, extraData?: any) is deprecated since v5.1\n *\n * @publicApi\n */\nfunction registerLocaleData(data, localeId, extraData) {\n return ɵregisterLocaleData(data, localeId, extraData);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction parseCookieValue(cookieStr, name) {\n name = encodeURIComponent(name);\n for (const cookie of cookieStr.split(';')) {\n const eqIndex = cookie.indexOf('=');\n const [cookieName, cookieValue] = eqIndex == -1 ? [cookie, ''] : [cookie.slice(0, eqIndex), cookie.slice(eqIndex + 1)];\n if (cookieName.trim() === name) {\n return decodeURIComponent(cookieValue);\n }\n }\n return null;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n * ```\n *\n * @description\n *\n * Adds and removes CSS classes on an HTML element.\n *\n * The CSS classes are updated as follows, depending on the type of the expression evaluation:\n * - `string` - the CSS classes listed in the string (space delimited) are added,\n * - `Array` - the CSS classes declared as Array elements are added,\n * - `Object` - keys are CSS classes that get added when the expression given in the value\n * evaluates to a truthy value, otherwise they are removed.\n *\n * @publicApi\n */\nclass NgClass {\n constructor(_iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {\n this._iterableDiffers = _iterableDiffers;\n this._keyValueDiffers = _keyValueDiffers;\n this._ngEl = _ngEl;\n this._renderer = _renderer;\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._initialClasses = [];\n this._rawClass = null;\n }\n set klass(value) {\n this._removeClasses(this._initialClasses);\n this._initialClasses = typeof value === 'string' ? value.split(/\\s+/) : [];\n this._applyClasses(this._initialClasses);\n this._applyClasses(this._rawClass);\n }\n set ngClass(value) {\n this._removeClasses(this._rawClass);\n this._applyClasses(this._initialClasses);\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._rawClass = typeof value === 'string' ? value.split(/\\s+/) : value;\n if (this._rawClass) {\n if (ɵisListLikeIterable(this._rawClass)) {\n this._iterableDiffer = this._iterableDiffers.find(this._rawClass).create();\n }\n else {\n this._keyValueDiffer = this._keyValueDiffers.find(this._rawClass).create();\n }\n }\n }\n ngDoCheck() {\n if (this._iterableDiffer) {\n const iterableChanges = this._iterableDiffer.diff(this._rawClass);\n if (iterableChanges) {\n this._applyIterableChanges(iterableChanges);\n }\n }\n else if (this._keyValueDiffer) {\n const keyValueChanges = this._keyValueDiffer.diff(this._rawClass);\n if (keyValueChanges) {\n this._applyKeyValueChanges(keyValueChanges);\n }\n }\n }\n _applyKeyValueChanges(changes) {\n changes.forEachAddedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachRemovedItem((record) => {\n if (record.previousValue) {\n this._toggleClass(record.key, false);\n }\n });\n }\n _applyIterableChanges(changes) {\n changes.forEachAddedItem((record) => {\n if (typeof record.item === 'string') {\n this._toggleClass(record.item, true);\n }\n else {\n throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${ɵstringify(record.item)}`);\n }\n });\n changes.forEachRemovedItem((record) => this._toggleClass(record.item, false));\n }\n /**\n * Applies a collection of CSS classes to the DOM element.\n *\n * For argument of type Set and Array CSS class names contained in those collections are always\n * added.\n * For argument of type Map CSS class name in the map's key is toggled based on the value (added\n * for truthy and removed for falsy).\n */\n _applyClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, true));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, !!rawClassVal[klass]));\n }\n }\n }\n /**\n * Removes a collection of CSS classes from the DOM element. This is mostly useful for cleanup\n * purposes.\n */\n _removeClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, false));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, false));\n }\n }\n }\n _toggleClass(klass, enabled) {\n klass = klass.trim();\n if (klass) {\n klass.split(/\\s+/g).forEach(klass => {\n if (enabled) {\n this._renderer.addClass(this._ngEl.nativeElement, klass);\n }\n else {\n this._renderer.removeClass(this._ngEl.nativeElement, klass);\n }\n });\n }\n }\n}\nNgClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgClass, deps: [{ token: i0.IterableDiffers }, { token: i0.KeyValueDiffers }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgClass, selector: \"[ngClass]\", inputs: { klass: [\"class\", \"klass\"], ngClass: \"ngClass\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgClass, decorators: [{\n type: Directive,\n args: [{ selector: '[ngClass]' }]\n }], ctorParameters: function () { return [{ type: i0.IterableDiffers }, { type: i0.KeyValueDiffers }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { klass: [{\n type: Input,\n args: ['class']\n }], ngClass: [{\n type: Input,\n args: ['ngClass']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Instantiates a {@link Component} type and inserts its Host View into the current View.\n * `NgComponentOutlet` provides a declarative approach for dynamic component creation.\n *\n * `NgComponentOutlet` requires a component type, if a falsy value is set the view will clear and\n * any existing component will be destroyed.\n *\n * @usageNotes\n *\n * ### Fine tune control\n *\n * You can control the component creation process by using the following optional attributes:\n *\n * * `ngComponentOutletInjector`: Optional custom {@link Injector} that will be used as parent for\n * the Component. Defaults to the injector of the current view container.\n *\n * * `ngComponentOutletContent`: Optional list of projectable nodes to insert into the content\n * section of the component, if it exists.\n *\n * * `ngComponentOutletNgModuleFactory`: Optional module factory to allow loading another\n * module dynamically, then loading a component from that module.\n *\n * ### Syntax\n *\n * Simple\n * ```\n * \n * ```\n *\n * Customized injector/content\n * ```\n * \n * \n * ```\n *\n * Customized ngModuleFactory\n * ```\n * \n * \n * ```\n *\n * ### A simple example\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='SimpleExample'}\n *\n * A more complete example with additional options:\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='CompleteExample'}\n *\n * @publicApi\n * @ngModule CommonModule\n */\nclass NgComponentOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._componentRef = null;\n this._moduleRef = null;\n }\n ngOnChanges(changes) {\n this._viewContainerRef.clear();\n this._componentRef = null;\n if (this.ngComponentOutlet) {\n const elInjector = this.ngComponentOutletInjector || this._viewContainerRef.parentInjector;\n if (changes['ngComponentOutletNgModuleFactory']) {\n if (this._moduleRef)\n this._moduleRef.destroy();\n if (this.ngComponentOutletNgModuleFactory) {\n const parentModule = elInjector.get(NgModuleRef);\n this._moduleRef = this.ngComponentOutletNgModuleFactory.create(parentModule.injector);\n }\n else {\n this._moduleRef = null;\n }\n }\n const componentFactoryResolver = this._moduleRef ? this._moduleRef.componentFactoryResolver :\n elInjector.get(ComponentFactoryResolver);\n const componentFactory = componentFactoryResolver.resolveComponentFactory(this.ngComponentOutlet);\n this._componentRef = this._viewContainerRef.createComponent(componentFactory, this._viewContainerRef.length, elInjector, this.ngComponentOutletContent);\n }\n }\n ngOnDestroy() {\n if (this._moduleRef)\n this._moduleRef.destroy();\n }\n}\nNgComponentOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgComponentOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgComponentOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: { ngComponentOutlet: \"ngComponentOutlet\", ngComponentOutletInjector: \"ngComponentOutletInjector\", ngComponentOutletContent: \"ngComponentOutletContent\", ngComponentOutletNgModuleFactory: \"ngComponentOutletNgModuleFactory\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgComponentOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[ngComponentOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngComponentOutlet: [{\n type: Input\n }], ngComponentOutletInjector: [{\n type: Input\n }], ngComponentOutletContent: [{\n type: Input\n }], ngComponentOutletNgModuleFactory: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgForOfContext {\n constructor($implicit, ngForOf, index, count) {\n this.$implicit = $implicit;\n this.ngForOf = ngForOf;\n this.index = index;\n this.count = count;\n }\n get first() {\n return this.index === 0;\n }\n get last() {\n return this.index === this.count - 1;\n }\n get even() {\n return this.index % 2 === 0;\n }\n get odd() {\n return !this.even;\n }\n}\n/**\n * A [structural directive](guide/structural-directives) that renders\n * a template for each item in a collection.\n * The directive is placed on an element, which becomes the parent\n * of the cloned templates.\n *\n * The `ngForOf` directive is generally used in the\n * [shorthand form](guide/structural-directives#asterisk) `*ngFor`.\n * In this form, the template to be rendered for each iteration is the content\n * of an anchor element containing the directive.\n *\n * The following example shows the shorthand syntax with some options,\n * contained in an `
  • ` element.\n *\n * ```\n *
  • ...
  • \n * ```\n *\n * The shorthand form expands into a long form that uses the `ngForOf` selector\n * on an `` element.\n * The content of the `` element is the `
  • ` element that held the\n * short-form directive.\n *\n * Here is the expanded version of the short-form example.\n *\n * ```\n * \n *
  • ...
  • \n *
    \n * ```\n *\n * Angular automatically expands the shorthand syntax as it compiles the template.\n * The context for each embedded view is logically merged to the current component\n * context according to its lexical position.\n *\n * When using the shorthand syntax, Angular allows only [one structural directive\n * on an element](guide/built-in-directives#one-per-element).\n * If you want to iterate conditionally, for example,\n * put the `*ngIf` on a container element that wraps the `*ngFor` element.\n * For futher discussion, see\n * [Structural Directives](guide/built-in-directives#one-per-element).\n *\n * @usageNotes\n *\n * ### Local variables\n *\n * `NgForOf` provides exported values that can be aliased to local variables.\n * For example:\n *\n * ```\n *
  • \n * {{i}}/{{users.length}}. {{user}} default\n *
  • \n * ```\n *\n * The following exported values can be aliased to local variables:\n *\n * - `$implicit: T`: The value of the individual items in the iterable (`ngForOf`).\n * - `ngForOf: NgIterable`: The value of the iterable expression. Useful when the expression is\n * more complex then a property access, for example when using the async pipe (`userStreams |\n * async`).\n * - `index: number`: The index of the current item in the iterable.\n * - `count: number`: The length of the iterable.\n * - `first: boolean`: True when the item is the first item in the iterable.\n * - `last: boolean`: True when the item is the last item in the iterable.\n * - `even: boolean`: True when the item has an even index in the iterable.\n * - `odd: boolean`: True when the item has an odd index in the iterable.\n *\n * ### Change propagation\n *\n * When the contents of the iterator changes, `NgForOf` makes the corresponding changes to the DOM:\n *\n * * When an item is added, a new instance of the template is added to the DOM.\n * * When an item is removed, its template instance is removed from the DOM.\n * * When items are reordered, their respective templates are reordered in the DOM.\n *\n * Angular uses object identity to track insertions and deletions within the iterator and reproduce\n * those changes in the DOM. This has important implications for animations and any stateful\n * controls that are present, such as `` elements that accept user input. Inserted rows can\n * be animated in, deleted rows can be animated out, and unchanged rows retain any unsaved state\n * such as user input.\n * For more on animations, see [Transitions and Triggers](guide/transition-and-triggers).\n *\n * The identities of elements in the iterator can change while the data does not.\n * This can happen, for example, if the iterator is produced from an RPC to the server, and that\n * RPC is re-run. Even if the data hasn't changed, the second response produces objects with\n * different identities, and Angular must tear down the entire DOM and rebuild it (as if all old\n * elements were deleted and all new elements inserted).\n *\n * To avoid this expensive operation, you can customize the default tracking algorithm.\n * by supplying the `trackBy` option to `NgForOf`.\n * `trackBy` takes a function that has two arguments: `index` and `item`.\n * If `trackBy` is given, Angular tracks changes by the return value of the function.\n *\n * @see [Structural Directives](guide/structural-directives)\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgForOf {\n constructor(_viewContainer, _template, _differs) {\n this._viewContainer = _viewContainer;\n this._template = _template;\n this._differs = _differs;\n this._ngForOf = null;\n this._ngForOfDirty = true;\n this._differ = null;\n }\n /**\n * The value of the iterable expression, which can be used as a\n * [template input variable](guide/structural-directives#shorthand).\n */\n set ngForOf(ngForOf) {\n this._ngForOf = ngForOf;\n this._ngForOfDirty = true;\n }\n /**\n * Specifies a custom `TrackByFunction` to compute the identity of items in an iterable.\n *\n * If a custom `TrackByFunction` is not provided, `NgForOf` will use the item's [object\n * identity](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)\n * as the key.\n *\n * `NgForOf` uses the computed key to associate items in an iterable with DOM elements\n * it produces for these items.\n *\n * A custom `TrackByFunction` is useful to provide good user experience in cases when items in an\n * iterable rendered using `NgForOf` have a natural identifier (for example, custom ID or a\n * primary key), and this iterable could be updated with new object instances that still\n * represent the same underlying entity (for example, when data is re-fetched from the server,\n * and the iterable is recreated and re-rendered, but most of the data is still the same).\n *\n * @see `TrackByFunction`\n */\n set ngForTrackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n // TODO(vicb): use a log service once there is a public one available\n if (console && console.warn) {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}. ` +\n `See https://angular.io/api/common/NgForOf#change-propagation for more information.`);\n }\n }\n this._trackByFn = fn;\n }\n get ngForTrackBy() {\n return this._trackByFn;\n }\n /**\n * A reference to the template that is stamped out for each item in the iterable.\n * @see [template reference variable](guide/template-reference-variables)\n */\n set ngForTemplate(value) {\n // TODO(TS2.1): make TemplateRef>> once we move to TS v2.1\n // The current type is too restrictive; a template that just uses index, for example,\n // should be acceptable.\n if (value) {\n this._template = value;\n }\n }\n /**\n * Applies the changes when needed.\n */\n ngDoCheck() {\n if (this._ngForOfDirty) {\n this._ngForOfDirty = false;\n // React on ngForOf changes only once all inputs have been initialized\n const value = this._ngForOf;\n if (!this._differ && value) {\n try {\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n catch {\n throw new Error(`Cannot find a differ supporting object '${value}' of type '${getTypeName(value)}'. NgFor only supports binding to Iterables such as Arrays.`);\n }\n }\n }\n if (this._differ) {\n const changes = this._differ.diff(this._ngForOf);\n if (changes)\n this._applyChanges(changes);\n }\n }\n _applyChanges(changes) {\n const insertTuples = [];\n changes.forEachOperation((item, adjustedPreviousIndex, currentIndex) => {\n if (item.previousIndex == null) {\n // NgForOf is never \"null\" or \"undefined\" here because the differ detected\n // that a new item needs to be inserted from the iterable. This implies that\n // there is an iterable value for \"_ngForOf\".\n const view = this._viewContainer.createEmbeddedView(this._template, new NgForOfContext(null, this._ngForOf, -1, -1), currentIndex === null ? undefined : currentIndex);\n const tuple = new RecordViewTuple(item, view);\n insertTuples.push(tuple);\n }\n else if (currentIndex == null) {\n this._viewContainer.remove(adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex);\n }\n else if (adjustedPreviousIndex !== null) {\n const view = this._viewContainer.get(adjustedPreviousIndex);\n this._viewContainer.move(view, currentIndex);\n const tuple = new RecordViewTuple(item, view);\n insertTuples.push(tuple);\n }\n });\n for (let i = 0; i < insertTuples.length; i++) {\n this._perViewChange(insertTuples[i].view, insertTuples[i].record);\n }\n for (let i = 0, ilen = this._viewContainer.length; i < ilen; i++) {\n const viewRef = this._viewContainer.get(i);\n viewRef.context.index = i;\n viewRef.context.count = ilen;\n viewRef.context.ngForOf = this._ngForOf;\n }\n changes.forEachIdentityChange((record) => {\n const viewRef = this._viewContainer.get(record.currentIndex);\n viewRef.context.$implicit = record.item;\n });\n }\n _perViewChange(view, record) {\n view.context.$implicit = record.item;\n }\n /**\n * Asserts the correct type of the context for the template that `NgForOf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgForOf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });\nNgForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgForOf, selector: \"[ngFor][ngForOf]\", inputs: { ngForOf: \"ngForOf\", ngForTrackBy: \"ngForTrackBy\", ngForTemplate: \"ngForTemplate\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgForOf, decorators: [{\n type: Directive,\n args: [{ selector: '[ngFor][ngForOf]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }]; }, propDecorators: { ngForOf: [{\n type: Input\n }], ngForTrackBy: [{\n type: Input\n }], ngForTemplate: [{\n type: Input\n }] } });\nclass RecordViewTuple {\n constructor(record, view) {\n this.record = record;\n this.view = view;\n }\n}\nfunction getTypeName(type) {\n return type['name'] || typeof type;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A structural directive that conditionally includes a template based on the value of\n * an expression coerced to Boolean.\n * When the expression evaluates to true, Angular renders the template\n * provided in a `then` clause, and when false or null,\n * Angular renders the template provided in an optional `else` clause. The default\n * template for the `else` clause is blank.\n *\n * A [shorthand form](guide/structural-directives#asterisk) of the directive,\n * `*ngIf=\"condition\"`, is generally used, provided\n * as an attribute of the anchor element for the inserted template.\n * Angular expands this into a more explicit version, in which the anchor element\n * is contained in an `` element.\n *\n * Simple form with shorthand syntax:\n *\n * ```\n *
    Content to render when condition is true.
    \n * ```\n *\n * Simple form with expanded syntax:\n *\n * ```\n *
    Content to render when condition is\n * true.
    \n * ```\n *\n * Form with an \"else\" block:\n *\n * ```\n *
    Content to render when condition is true.
    \n * Content to render when condition is false.\n * ```\n *\n * Shorthand form with \"then\" and \"else\" blocks:\n *\n * ```\n *
    \n * Content to render when condition is true.\n * Content to render when condition is false.\n * ```\n *\n * Form with storing the value locally:\n *\n * ```\n *
    {{value}}
    \n * Content to render when value is null.\n * ```\n *\n * @usageNotes\n *\n * The `*ngIf` directive is most commonly used to conditionally show an inline template,\n * as seen in the following example.\n * The default `else` template is blank.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfSimple'}\n *\n * ### Showing an alternative template using `else`\n *\n * To display a template when `expression` evaluates to false, use an `else` template\n * binding as shown in the following example.\n * The `else` binding points to an `` element labeled `#elseBlock`.\n * The template can be defined anywhere in the component view, but is typically placed right after\n * `ngIf` for readability.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfElse'}\n *\n * ### Using an external `then` template\n *\n * In the previous example, the then-clause template is specified inline, as the content of the\n * tag that contains the `ngIf` directive. You can also specify a template that is defined\n * externally, by referencing a labeled `` element. When you do this, you can\n * change which template to use at runtime, as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfThenElse'}\n *\n * ### Storing a conditional result in a variable\n *\n * You might want to show a set of properties from the same object. If you are waiting\n * for asynchronous data, the object can be undefined.\n * In this case, you can use `ngIf` and store the result of the condition in a local\n * variable as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfAs'}\n *\n * This code uses only one `AsyncPipe`, so only one subscription is created.\n * The conditional statement stores the result of `userStream|async` in the local variable `user`.\n * You can then bind the local `user` repeatedly.\n *\n * The conditional displays the data only if `userStream` returns a value,\n * so you don't need to use the\n * safe-navigation-operator (`?.`)\n * to guard against null values when accessing properties.\n * You can display an alternative template while waiting for the data.\n *\n * ### Shorthand syntax\n *\n * The shorthand syntax `*ngIf` expands into two separate template specifications\n * for the \"then\" and \"else\" clauses. For example, consider the following shorthand statement,\n * that is meant to show a loading page while waiting for data to be loaded.\n *\n * ```\n *
    \n * ...\n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * You can see that the \"else\" clause references the ``\n * with the `#loading` label, and the template for the \"then\" clause\n * is provided as the content of the anchor element.\n *\n * However, when Angular expands the shorthand syntax, it creates\n * another `` tag, with `ngIf` and `ngIfElse` directives.\n * The anchor element containing the template for the \"then\" clause becomes\n * the content of this unlabeled `` tag.\n *\n * ```\n * \n *
    \n * ...\n *
    \n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * The presence of the implicit template object has implications for the nesting of\n * structural directives. For more on this subject, see\n * [Structural Directives](https://angular.io/guide/built-in-directives#one-per-element).\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgIf {\n constructor(_viewContainer, templateRef) {\n this._viewContainer = _viewContainer;\n this._context = new NgIfContext();\n this._thenTemplateRef = null;\n this._elseTemplateRef = null;\n this._thenViewRef = null;\n this._elseViewRef = null;\n this._thenTemplateRef = templateRef;\n }\n /**\n * The Boolean expression to evaluate as the condition for showing a template.\n */\n set ngIf(condition) {\n this._context.$implicit = this._context.ngIf = condition;\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to true.\n */\n set ngIfThen(templateRef) {\n assertTemplate('ngIfThen', templateRef);\n this._thenTemplateRef = templateRef;\n this._thenViewRef = null; // clear previous view if any.\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to false.\n */\n set ngIfElse(templateRef) {\n assertTemplate('ngIfElse', templateRef);\n this._elseTemplateRef = templateRef;\n this._elseViewRef = null; // clear previous view if any.\n this._updateView();\n }\n _updateView() {\n if (this._context.$implicit) {\n if (!this._thenViewRef) {\n this._viewContainer.clear();\n this._elseViewRef = null;\n if (this._thenTemplateRef) {\n this._thenViewRef =\n this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);\n }\n }\n }\n else {\n if (!this._elseViewRef) {\n this._viewContainer.clear();\n this._thenViewRef = null;\n if (this._elseTemplateRef) {\n this._elseViewRef =\n this._viewContainer.createEmbeddedView(this._elseTemplateRef, this._context);\n }\n }\n }\n }\n /**\n * Asserts the correct type of the context for the template that `NgIf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgIf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgIf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgIf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgIf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgIf, selector: \"[ngIf]\", inputs: { ngIf: \"ngIf\", ngIfThen: \"ngIfThen\", ngIfElse: \"ngIfElse\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgIf, decorators: [{\n type: Directive,\n args: [{ selector: '[ngIf]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { ngIf: [{\n type: Input\n }], ngIfThen: [{\n type: Input\n }], ngIfElse: [{\n type: Input\n }] } });\n/**\n * @publicApi\n */\nclass NgIfContext {\n constructor() {\n this.$implicit = null;\n this.ngIf = null;\n }\n}\nfunction assertTemplate(property, templateRef) {\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\n if (!isTemplateRefOrNull) {\n throw new Error(`${property} must be a TemplateRef, but received '${ɵstringify(templateRef)}'.`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SwitchView {\n constructor(_viewContainerRef, _templateRef) {\n this._viewContainerRef = _viewContainerRef;\n this._templateRef = _templateRef;\n this._created = false;\n }\n create() {\n this._created = true;\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n destroy() {\n this._created = false;\n this._viewContainerRef.clear();\n }\n enforceState(created) {\n if (created && !this._created) {\n this.create();\n }\n else if (!created && this._created) {\n this.destroy();\n }\n }\n}\n/**\n * @ngModule CommonModule\n *\n * @description\n * The `[ngSwitch]` directive on a container specifies an expression to match against.\n * The expressions to match are provided by `ngSwitchCase` directives on views within the container.\n * - Every view that matches is rendered.\n * - If there are no matches, a view with the `ngSwitchDefault` directive is rendered.\n * - Elements within the `[NgSwitch]` statement but outside of any `NgSwitchCase`\n * or `ngSwitchDefault` directive are preserved at the location.\n *\n * @usageNotes\n * Define a container element for the directive, and specify the switch expression\n * to match against as an attribute:\n *\n * ```\n * \n * ```\n *\n * Within the container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * ### Usage Examples\n *\n * The following example shows how to use more than one case to display the same view:\n *\n * ```\n * \n * \n * ...\n * ...\n * ...\n * \n * ...\n * \n * ```\n *\n * The following example shows how cases can be nested:\n * ```\n * \n * ...\n * ...\n * ...\n * \n * \n * \n * \n * \n * ...\n * \n * ```\n *\n * @publicApi\n * @see `NgSwitchCase`\n * @see `NgSwitchDefault`\n * @see [Structural Directives](guide/structural-directives)\n *\n */\nclass NgSwitch {\n constructor() {\n this._defaultUsed = false;\n this._caseCount = 0;\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n set ngSwitch(newValue) {\n this._ngSwitch = newValue;\n if (this._caseCount === 0) {\n this._updateDefaultCases(true);\n }\n }\n /** @internal */\n _addCase() {\n return this._caseCount++;\n }\n /** @internal */\n _addDefault(view) {\n if (!this._defaultViews) {\n this._defaultViews = [];\n }\n this._defaultViews.push(view);\n }\n /** @internal */\n _matchCase(value) {\n const matched = value == this._ngSwitch;\n this._lastCasesMatched = this._lastCasesMatched || matched;\n this._lastCaseCheckIndex++;\n if (this._lastCaseCheckIndex === this._caseCount) {\n this._updateDefaultCases(!this._lastCasesMatched);\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n return matched;\n }\n _updateDefaultCases(useDefault) {\n if (this._defaultViews && useDefault !== this._defaultUsed) {\n this._defaultUsed = useDefault;\n for (let i = 0; i < this._defaultViews.length; i++) {\n const defaultView = this._defaultViews[i];\n defaultView.enforceState(useDefault);\n }\n }\n }\n}\nNgSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitch.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgSwitch, selector: \"[ngSwitch]\", inputs: { ngSwitch: \"ngSwitch\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgSwitch, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitch]' }]\n }], propDecorators: { ngSwitch: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n * Provides a switch case expression to match against an enclosing `ngSwitch` expression.\n * When the expressions match, the given `NgSwitchCase` template is rendered.\n * If multiple match expressions match the switch expression value, all of them are displayed.\n *\n * @usageNotes\n *\n * Within a switch container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * Each switch-case statement contains an in-line HTML template or template reference\n * that defines the subtree to be selected if the value of the match expression\n * matches the value of the switch expression.\n *\n * Unlike JavaScript, which uses strict equality, Angular uses loose equality.\n * This means that the empty string, `\"\"` matches 0.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchDefault`\n *\n */\nclass NgSwitchCase {\n constructor(viewContainer, templateRef, ngSwitch) {\n this.ngSwitch = ngSwitch;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchCase', 'NgSwitchCase');\n }\n ngSwitch._addCase();\n this._view = new SwitchView(viewContainer, templateRef);\n }\n /**\n * Performs case matching. For internal use only.\n */\n ngDoCheck() {\n this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));\n }\n}\nNgSwitchCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgSwitchCase, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitchCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: { ngSwitchCase: \"ngSwitchCase\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgSwitchCase, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitchCase]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, propDecorators: { ngSwitchCase: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that is rendered when no `NgSwitchCase` expressions\n * match the `NgSwitch` expression.\n * This statement should be the final case in an `NgSwitch`.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchCase`\n *\n */\nclass NgSwitchDefault {\n constructor(viewContainer, templateRef, ngSwitch) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchDefault', 'NgSwitchDefault');\n }\n ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));\n }\n}\nNgSwitchDefault.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgSwitchDefault, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitchDefault.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgSwitchDefault, selector: \"[ngSwitchDefault]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgSwitchDefault, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitchDefault]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; } });\nfunction throwNgSwitchProviderNotFoundError(attrName, directiveName) {\n throw new ɵRuntimeError(\"305\" /* TEMPLATE_STRUCTURE_ERROR */, `An element with the \"${attrName}\" attribute ` +\n `(matching the \"${directiveName}\" directive) must be located inside an element with the \"ngSwitch\" attribute ` +\n `(matching \"NgSwitch\" directive)`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * \n * there is nothing\n * there is one\n * there are a few\n * \n * ```\n *\n * @description\n *\n * Adds / removes DOM sub-trees based on a numeric value. Tailored for pluralization.\n *\n * Displays DOM sub-trees that match the switch expression value, or failing that, DOM sub-trees\n * that match the switch expression's pluralization category.\n *\n * To use this directive you must provide a container element that sets the `[ngPlural]` attribute\n * to a switch expression. Inner elements with a `[ngPluralCase]` will display based on their\n * expression:\n * - if `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value\n * matches the switch expression exactly,\n * - otherwise, the view will be treated as a \"category match\", and will only display if exact\n * value matches aren't found and the value maps to its category for the defined locale.\n *\n * See http://cldr.unicode.org/index/cldr-spec/plural-rules\n *\n * @publicApi\n */\nclass NgPlural {\n constructor(_localization) {\n this._localization = _localization;\n this._caseViews = {};\n }\n set ngPlural(value) {\n this._switchValue = value;\n this._updateView();\n }\n addCase(value, switchView) {\n this._caseViews[value] = switchView;\n }\n _updateView() {\n this._clearViews();\n const cases = Object.keys(this._caseViews);\n const key = getPluralCategory(this._switchValue, cases, this._localization);\n this._activateView(this._caseViews[key]);\n }\n _clearViews() {\n if (this._activeView)\n this._activeView.destroy();\n }\n _activateView(view) {\n if (view) {\n this._activeView = view;\n this._activeView.create();\n }\n }\n}\nNgPlural.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgPlural, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Directive });\nNgPlural.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgPlural, selector: \"[ngPlural]\", inputs: { ngPlural: \"ngPlural\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgPlural, decorators: [{\n type: Directive,\n args: [{ selector: '[ngPlural]' }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; }, propDecorators: { ngPlural: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that will be added/removed from the parent {@link NgPlural} when the\n * given expression matches the plural expression according to CLDR rules.\n *\n * @usageNotes\n * ```\n * \n * ...\n * ...\n * \n *```\n *\n * See {@link NgPlural} for more details and example.\n *\n * @publicApi\n */\nclass NgPluralCase {\n constructor(value, template, viewContainer, ngPlural) {\n this.value = value;\n const isANumber = !isNaN(Number(value));\n ngPlural.addCase(isANumber ? `=${value}` : value, new SwitchView(viewContainer, template));\n }\n}\nNgPluralCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgPluralCase, deps: [{ token: 'ngPluralCase', attribute: true }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: NgPlural, host: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgPluralCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgPluralCase, selector: \"[ngPluralCase]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgPluralCase, decorators: [{\n type: Directive,\n args: [{ selector: '[ngPluralCase]' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['ngPluralCase']\n }] }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: NgPlural, decorators: [{\n type: Host\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n *\n * Set the font of the containing element to the result of an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set the width of the containing element to a pixel value returned by an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set a collection of style values using an expression that returns key-value pairs.\n *\n * ```\n * ...\n * ```\n *\n * @description\n *\n * An attribute directive that updates styles for the containing HTML element.\n * Sets one or more style properties, specified as colon-separated key-value pairs.\n * The key is a style name, with an optional `.` suffix\n * (such as 'top.px', 'font-style.em').\n * The value is an expression to be evaluated.\n * The resulting non-null value, expressed in the given unit,\n * is assigned to the given style property.\n * If the result of evaluation is null, the corresponding style is removed.\n *\n * @publicApi\n */\nclass NgStyle {\n constructor(_ngEl, _differs, _renderer) {\n this._ngEl = _ngEl;\n this._differs = _differs;\n this._renderer = _renderer;\n this._ngStyle = null;\n this._differ = null;\n }\n set ngStyle(values) {\n this._ngStyle = values;\n if (!this._differ && values) {\n this._differ = this._differs.find(values).create();\n }\n }\n ngDoCheck() {\n if (this._differ) {\n const changes = this._differ.diff(this._ngStyle);\n if (changes) {\n this._applyChanges(changes);\n }\n }\n }\n _setStyle(nameAndUnit, value) {\n const [name, unit] = nameAndUnit.split('.');\n value = value != null && unit ? `${value}${unit}` : value;\n if (value != null) {\n this._renderer.setStyle(this._ngEl.nativeElement, name, value);\n }\n else {\n this._renderer.removeStyle(this._ngEl.nativeElement, name);\n }\n }\n _applyChanges(changes) {\n changes.forEachRemovedItem((record) => this._setStyle(record.key, null));\n changes.forEachAddedItem((record) => this._setStyle(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._setStyle(record.key, record.currentValue));\n }\n}\nNgStyle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgStyle, deps: [{ token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgStyle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgStyle, selector: \"[ngStyle]\", inputs: { ngStyle: \"ngStyle\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgStyle, decorators: [{\n type: Directive,\n args: [{ selector: '[ngStyle]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }]; }, propDecorators: { ngStyle: [{\n type: Input,\n args: ['ngStyle']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Inserts an embedded view from a prepared `TemplateRef`.\n *\n * You can attach a context object to the `EmbeddedViewRef` by setting `[ngTemplateOutletContext]`.\n * `[ngTemplateOutletContext]` should be an object, the object's keys will be available for binding\n * by the local template `let` declarations.\n *\n * @usageNotes\n * ```\n * \n * ```\n *\n * Using the key `$implicit` in the context object will set its value as default.\n *\n * ### Example\n *\n * {@example common/ngTemplateOutlet/ts/module.ts region='NgTemplateOutlet'}\n *\n * @publicApi\n */\nclass NgTemplateOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._viewRef = null;\n /**\n * A context object to attach to the {@link EmbeddedViewRef}. This should be an\n * object, the object's keys will be available for binding by the local template `let`\n * declarations.\n * Using the key `$implicit` in the context object will set its value as default.\n */\n this.ngTemplateOutletContext = null;\n /**\n * A string defining the template reference and optionally the context object for the template.\n */\n this.ngTemplateOutlet = null;\n }\n ngOnChanges(changes) {\n if (changes['ngTemplateOutlet']) {\n const viewContainerRef = this._viewContainerRef;\n if (this._viewRef) {\n viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef));\n }\n this._viewRef = this.ngTemplateOutlet ?\n viewContainerRef.createEmbeddedView(this.ngTemplateOutlet, this.ngTemplateOutletContext) :\n null;\n }\n else if (this._viewRef && changes['ngTemplateOutletContext'] && this.ngTemplateOutletContext) {\n this._viewRef.context = this.ngTemplateOutletContext;\n }\n }\n}\nNgTemplateOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgTemplateOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgTemplateOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: { ngTemplateOutletContext: \"ngTemplateOutletContext\", ngTemplateOutlet: \"ngTemplateOutlet\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgTemplateOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[ngTemplateOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngTemplateOutletContext: [{\n type: Input\n }], ngTemplateOutlet: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular directives that are likely to be used in each and every Angular\n * application.\n */\nconst COMMON_DIRECTIVES = [\n NgClass,\n NgComponentOutlet,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n NgStyle,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n NgPlural,\n NgPluralCase,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction invalidPipeArgumentError(type, value) {\n return Error(`InvalidPipeArgument: '${value}' for pipe '${ɵstringify(type)}'`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SubscribableStrategy {\n createSubscription(async, updateLatestValue) {\n return async.subscribe({\n next: updateLatestValue,\n error: (e) => {\n throw e;\n }\n });\n }\n dispose(subscription) {\n subscription.unsubscribe();\n }\n onDestroy(subscription) {\n subscription.unsubscribe();\n }\n}\nclass PromiseStrategy {\n createSubscription(async, updateLatestValue) {\n return async.then(updateLatestValue, e => {\n throw e;\n });\n }\n dispose(subscription) { }\n onDestroy(subscription) { }\n}\nconst _promiseStrategy = new PromiseStrategy();\nconst _subscribableStrategy = new SubscribableStrategy();\n/**\n * @ngModule CommonModule\n * @description\n *\n * Unwraps a value from an asynchronous primitive.\n *\n * The `async` pipe subscribes to an `Observable` or `Promise` and returns the latest value it has\n * emitted. When a new value is emitted, the `async` pipe marks the component to be checked for\n * changes. When the component gets destroyed, the `async` pipe unsubscribes automatically to avoid\n * potential memory leaks. When the reference of the expression changes, the `async` pipe\n * automatically unsubscribes from the old `Observable` or `Promise` and subscribes to the new one.\n *\n * @usageNotes\n *\n * ### Examples\n *\n * This example binds a `Promise` to the view. Clicking the `Resolve` button resolves the\n * promise.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipePromise'}\n *\n * It's also possible to use `async` with Observables. The example below binds the `time` Observable\n * to the view. The Observable continuously updates the view with the current time.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipeObservable'}\n *\n * @publicApi\n */\nclass AsyncPipe {\n constructor(_ref) {\n this._ref = _ref;\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n this._strategy = null;\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._dispose();\n }\n }\n transform(obj) {\n if (!this._obj) {\n if (obj) {\n this._subscribe(obj);\n }\n return this._latestValue;\n }\n if (obj !== this._obj) {\n this._dispose();\n return this.transform(obj);\n }\n return this._latestValue;\n }\n _subscribe(obj) {\n this._obj = obj;\n this._strategy = this._selectStrategy(obj);\n this._subscription = this._strategy.createSubscription(obj, (value) => this._updateLatestValue(obj, value));\n }\n _selectStrategy(obj) {\n if (ɵisPromise(obj)) {\n return _promiseStrategy;\n }\n if (ɵisSubscribable(obj)) {\n return _subscribableStrategy;\n }\n throw invalidPipeArgumentError(AsyncPipe, obj);\n }\n _dispose() {\n this._strategy.dispose(this._subscription);\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n }\n _updateLatestValue(async, value) {\n if (async === this._obj) {\n this._latestValue = value;\n this._ref.markForCheck();\n }\n }\n}\nAsyncPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: AsyncPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });\nAsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: AsyncPipe, name: \"async\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: AsyncPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'async', pure: false }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms text to all lower case.\n *\n * @see `UpperCasePipe`\n * @see `TitleCasePipe`\n * @usageNotes\n *\n * The following example defines a view that allows the user to enter\n * text, and then uses the pipe to convert the input text to all lower case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass LowerCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(LowerCasePipe, value);\n }\n return value.toLowerCase();\n }\n}\nLowerCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LowerCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nLowerCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LowerCasePipe, name: \"lowercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LowerCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'lowercase' }]\n }] });\n//\n// Regex below matches any Unicode word and number compatible with ES5. In ES2018 the same result\n// can be achieved by using /[0-9\\p{L}]\\S*/gu and also known as Unicode Property Escapes\n// (https://2ality.com/2017/07/regexp-unicode-property-escapes.html). Since there is no\n// transpilation of this functionality down to ES5 without external tool, the only solution is\n// to use already transpiled form. Example can be found here -\n// https://mothereff.in/regexpu#input=var+regex+%3D+%2F%5B0-9%5Cp%7BL%7D%5D%5CS*%2Fgu%3B%0A%0A&unicodePropertyEscape=1\n//\nconst unicodeWordMatch = /(?:[0-9A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])\\S*/g;\n/**\n * Transforms text to title case.\n * Capitalizes the first letter of each word and transforms the\n * rest of the word to lower case.\n * Words are delimited by any whitespace character, such as a space, tab, or line-feed character.\n *\n * @see `LowerCasePipe`\n * @see `UpperCasePipe`\n *\n * @usageNotes\n * The following example shows the result of transforming various strings into title case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass TitleCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(TitleCasePipe, value);\n }\n return value.replace(unicodeWordMatch, (txt => txt[0].toUpperCase() + txt.substr(1).toLowerCase()));\n }\n}\nTitleCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: TitleCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nTitleCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: TitleCasePipe, name: \"titlecase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: TitleCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'titlecase' }]\n }] });\n/**\n * Transforms text to all upper case.\n * @see `LowerCasePipe`\n * @see `TitleCasePipe`\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass UpperCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(UpperCasePipe, value);\n }\n return value.toUpperCase();\n }\n}\nUpperCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: UpperCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nUpperCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: UpperCasePipe, name: \"uppercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: UpperCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'uppercase' }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Optionally-provided default timezone to use for all instances of `DatePipe` (such as `'+0430'`).\n * If the value isn't provided, the `DatePipe` will use the end-user's local system timezone.\n */\nconst DATE_PIPE_DEFAULT_TIMEZONE = new InjectionToken('DATE_PIPE_DEFAULT_TIMEZONE');\n// clang-format off\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date value according to locale rules.\n *\n * `DatePipe` is executed only when it detects a pure change to the input value.\n * A pure change is either a change to a primitive input value\n * (such as `String`, `Number`, `Boolean`, or `Symbol`),\n * or a changed object reference (such as `Date`, `Array`, `Function`, or `Object`).\n *\n * Note that mutating a `Date` object does not cause the pipe to be rendered again.\n * To ensure that the pipe is executed, you must create a new `Date` object.\n *\n * Only the `en-US` locale data comes with Angular. To localize dates\n * in another language, you must import the corresponding locale data.\n * See the [I18n guide](guide/i18n-common-format-data-locale) for more information.\n *\n * The time zone of the formatted value can be specified either by passing it in as the second\n * parameter of the pipe, or by setting the default through the `DATE_PIPE_DEFAULT_TIMEZONE`\n * injection token. The value that is passed in as the second parameter takes precedence over\n * the one defined using the injection token.\n *\n * @see `formatDate()`\n *\n *\n * @usageNotes\n *\n * The result of this pipe is not reevaluated when the input is mutated. To avoid the need to\n * reformat the date on every change-detection cycle, treat the date as an immutable object\n * and change the reference when the pipe needs to run again.\n *\n * ### Pre-defined format options\n *\n * | Option | Equivalent to | Examples (given in `en-US` locale) |\n * |---------------|-------------------------------------|-------------------------------------------------|\n * | `'short'` | `'M/d/yy, h:mm a'` | `6/15/15, 9:03 AM` |\n * | `'medium'` | `'MMM d, y, h:mm:ss a'` | `Jun 15, 2015, 9:03:01 AM` |\n * | `'long'` | `'MMMM d, y, h:mm:ss a z'` | `June 15, 2015 at 9:03:01 AM GMT+1` |\n * | `'full'` | `'EEEE, MMMM d, y, h:mm:ss a zzzz'` | `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00` |\n * | `'shortDate'` | `'M/d/yy'` | `6/15/15` |\n * | `'mediumDate'`| `'MMM d, y'` | `Jun 15, 2015` |\n * | `'longDate'` | `'MMMM d, y'` | `June 15, 2015` |\n * | `'fullDate'` | `'EEEE, MMMM d, y'` | `Monday, June 15, 2015` |\n * | `'shortTime'` | `'h:mm a'` | `9:03 AM` |\n * | `'mediumTime'`| `'h:mm:ss a'` | `9:03:01 AM` |\n * | `'longTime'` | `'h:mm:ss a z'` | `9:03:01 AM GMT+1` |\n * | `'fullTime'` | `'h:mm:ss a zzzz'` | `9:03:01 AM GMT+01:00` |\n *\n * ### Custom format options\n *\n * You can construct a format string using symbols to specify the components\n * of a date-time value, as described in the following table.\n * Format details depend on the locale.\n * Fields marked with (*) are only available in the extra data set for the given locale.\n *\n * | Field type | Format | Description | Example Value |\n * |-------------------- |-------------|---------------------------------------------------------------|------------------------------------------------------------|\n * | Era | G, GG & GGG | Abbreviated | AD |\n * | | GGGG | Wide | Anno Domini |\n * | | GGGGG | Narrow | A |\n * | Year | y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | yy | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | yyy | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | yyyy | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Week-numbering year | Y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | YY | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | YYY | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | YYYY | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Month | M | Numeric: 1 digit | 9, 12 |\n * | | MM | Numeric: 2 digits + zero padded | 09, 12 |\n * | | MMM | Abbreviated | Sep |\n * | | MMMM | Wide | September |\n * | | MMMMM | Narrow | S |\n * | Month standalone | L | Numeric: 1 digit | 9, 12 |\n * | | LL | Numeric: 2 digits + zero padded | 09, 12 |\n * | | LLL | Abbreviated | Sep |\n * | | LLLL | Wide | September |\n * | | LLLLL | Narrow | S |\n * | Week of year | w | Numeric: minimum digits | 1... 53 |\n * | | ww | Numeric: 2 digits + zero padded | 01... 53 |\n * | Week of month | W | Numeric: 1 digit | 1... 5 |\n * | Day of month | d | Numeric: minimum digits | 1 |\n * | | dd | Numeric: 2 digits + zero padded | 01 |\n * | Week day | E, EE & EEE | Abbreviated | Tue |\n * | | EEEE | Wide | Tuesday |\n * | | EEEEE | Narrow | T |\n * | | EEEEEE | Short | Tu |\n * | Week day standalone | c, cc | Numeric: 1 digit | 2 |\n * | | ccc | Abbreviated | Tue |\n * | | cccc | Wide | Tuesday |\n * | | ccccc | Narrow | T |\n * | | cccccc | Short | Tu |\n * | Period | a, aa & aaa | Abbreviated | am/pm or AM/PM |\n * | | aaaa | Wide (fallback to `a` when missing) | ante meridiem/post meridiem |\n * | | aaaaa | Narrow | a/p |\n * | Period* | B, BB & BBB | Abbreviated | mid. |\n * | | BBBB | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | BBBBB | Narrow | md |\n * | Period standalone* | b, bb & bbb | Abbreviated | mid. |\n * | | bbbb | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | bbbbb | Narrow | md |\n * | Hour 1-12 | h | Numeric: minimum digits | 1, 12 |\n * | | hh | Numeric: 2 digits + zero padded | 01, 12 |\n * | Hour 0-23 | H | Numeric: minimum digits | 0, 23 |\n * | | HH | Numeric: 2 digits + zero padded | 00, 23 |\n * | Minute | m | Numeric: minimum digits | 8, 59 |\n * | | mm | Numeric: 2 digits + zero padded | 08, 59 |\n * | Second | s | Numeric: minimum digits | 0... 59 |\n * | | ss | Numeric: 2 digits + zero padded | 00... 59 |\n * | Fractional seconds | S | Numeric: 1 digit | 0... 9 |\n * | | SS | Numeric: 2 digits + zero padded | 00... 99 |\n * | | SSS | Numeric: 3 digits + zero padded (= milliseconds) | 000... 999 |\n * | Zone | z, zz & zzz | Short specific non location format (fallback to O) | GMT-8 |\n * | | zzzz | Long specific non location format (fallback to OOOO) | GMT-08:00 |\n * | | Z, ZZ & ZZZ | ISO8601 basic format | -0800 |\n * | | ZZZZ | Long localized GMT format | GMT-8:00 |\n * | | ZZZZZ | ISO8601 extended format + Z indicator for offset 0 (= XXXXX) | -08:00 |\n * | | O, OO & OOO | Short localized GMT format | GMT-8 |\n * | | OOOO | Long localized GMT format | GMT-08:00 |\n *\n *\n * ### Format examples\n *\n * These examples transform a date into various formats,\n * assuming that `dateObj` is a JavaScript `Date` object for\n * year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11,\n * given in the local time for the `en-US` locale.\n *\n * ```\n * {{ dateObj | date }} // output is 'Jun 15, 2015'\n * {{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'\n * {{ dateObj | date:'shortTime' }} // output is '9:43 PM'\n * {{ dateObj | date:'mm:ss' }} // output is '43:11'\n * ```\n *\n * ### Usage example\n *\n * The following component uses a date pipe to display the current date in different formats.\n *\n * ```\n * @Component({\n * selector: 'date-pipe',\n * template: `
    \n *

    Today is {{today | date}}

    \n *

    Or if you prefer, {{today | date:'fullDate'}}

    \n *

    The time is {{today | date:'h:mm a z'}}

    \n *
    `\n * })\n * // Get the current date and time as a date-time value.\n * export class DatePipeComponent {\n * today: number = Date.now();\n * }\n * ```\n *\n * @publicApi\n */\n// clang-format on\nclass DatePipe {\n constructor(locale, defaultTimezone) {\n this.locale = locale;\n this.defaultTimezone = defaultTimezone;\n }\n transform(value, format = 'mediumDate', timezone, locale) {\n if (value == null || value === '' || value !== value)\n return null;\n try {\n return formatDate(value, format, locale || this.locale, timezone ?? this.defaultTimezone ?? undefined);\n }\n catch (error) {\n throw invalidPipeArgumentError(DatePipe, error.message);\n }\n }\n}\nDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });\nDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DatePipe, name: \"date\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DatePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'date', pure: true }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DATE_PIPE_DEFAULT_TIMEZONE]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst _INTERPOLATION_REGEXP = /#/g;\n/**\n * @ngModule CommonModule\n * @description\n *\n * Maps a value to a string that pluralizes the value according to locale rules.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nPluralPipeComponent'}\n *\n * @publicApi\n */\nclass I18nPluralPipe {\n constructor(_localization) {\n this._localization = _localization;\n }\n /**\n * @param value the number to be formatted\n * @param pluralMap an object that mimics the ICU format, see\n * http://userguide.icu-project.org/formatparse/messages.\n * @param locale a `string` defining the locale to use (uses the current {@link LOCALE_ID} by\n * default).\n */\n transform(value, pluralMap, locale) {\n if (value == null)\n return '';\n if (typeof pluralMap !== 'object' || pluralMap === null) {\n throw invalidPipeArgumentError(I18nPluralPipe, pluralMap);\n }\n const key = getPluralCategory(value, Object.keys(pluralMap), this._localization, locale);\n return pluralMap[key].replace(_INTERPOLATION_REGEXP, value.toString());\n }\n}\nI18nPluralPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: I18nPluralPipe, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Pipe });\nI18nPluralPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: I18nPluralPipe, name: \"i18nPlural\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: I18nPluralPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'i18nPlural', pure: true }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Generic selector that displays the string that matches the current value.\n *\n * If none of the keys of the `mapping` match the `value`, then the content\n * of the `other` key is returned when present, otherwise an empty string is returned.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nSelectPipeComponent'}\n *\n * @publicApi\n */\nclass I18nSelectPipe {\n /**\n * @param value a string to be internationalized.\n * @param mapping an object that indicates the text that should be displayed\n * for different values of the provided `value`.\n */\n transform(value, mapping) {\n if (value == null)\n return '';\n if (typeof mapping !== 'object' || typeof value !== 'string') {\n throw invalidPipeArgumentError(I18nSelectPipe, mapping);\n }\n if (mapping.hasOwnProperty(value)) {\n return mapping[value];\n }\n if (mapping.hasOwnProperty('other')) {\n return mapping['other'];\n }\n return '';\n }\n}\nI18nSelectPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: I18nSelectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nI18nSelectPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: I18nSelectPipe, name: \"i18nSelect\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: I18nSelectPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'i18nSelect', pure: true }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Converts a value into its JSON-format representation. Useful for debugging.\n *\n * @usageNotes\n *\n * The following component uses a JSON pipe to convert an object\n * to JSON format, and displays the string in both formats for comparison.\n *\n * {@example common/pipes/ts/json_pipe.ts region='JsonPipe'}\n *\n * @publicApi\n */\nclass JsonPipe {\n /**\n * @param value A value of any type to convert into a JSON-format string.\n */\n transform(value) {\n return JSON.stringify(value, null, 2);\n }\n}\nJsonPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: JsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nJsonPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: JsonPipe, name: \"json\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: JsonPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'json', pure: false }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction makeKeyValuePair(key, value) {\n return { key: key, value: value };\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms Object or Map into an array of key value pairs.\n *\n * The output array will be ordered by keys.\n * By default the comparator will be by Unicode point value.\n * You can optionally pass a compareFn if your keys are complex types.\n *\n * @usageNotes\n * ### Examples\n *\n * This examples show how an Object or a Map can be iterated by ngFor with the use of this\n * keyvalue pipe.\n *\n * {@example common/pipes/ts/keyvalue_pipe.ts region='KeyValuePipe'}\n *\n * @publicApi\n */\nclass KeyValuePipe {\n constructor(differs) {\n this.differs = differs;\n this.keyValues = [];\n this.compareFn = defaultComparator;\n }\n transform(input, compareFn = defaultComparator) {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null;\n }\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create();\n }\n const differChanges = this.differ.diff(input);\n const compareFnChanged = compareFn !== this.compareFn;\n if (differChanges) {\n this.keyValues = [];\n differChanges.forEachItem((r) => {\n this.keyValues.push(makeKeyValuePair(r.key, r.currentValue));\n });\n }\n if (differChanges || compareFnChanged) {\n this.keyValues.sort(compareFn);\n this.compareFn = compareFn;\n }\n return this.keyValues;\n }\n}\nKeyValuePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: KeyValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe });\nKeyValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: KeyValuePipe, name: \"keyvalue\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: KeyValuePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'keyvalue', pure: false }]\n }], ctorParameters: function () { return [{ type: i0.KeyValueDiffers }]; } });\nfunction defaultComparator(keyValueA, keyValueB) {\n const a = keyValueA.key;\n const b = keyValueB.key;\n // if same exit with 0;\n if (a === b)\n return 0;\n // make sure that undefined are at the end of the sort.\n if (a === undefined)\n return 1;\n if (b === undefined)\n return -1;\n // make sure that nulls are at the end of the sort.\n if (a === null)\n return 1;\n if (b === null)\n return -1;\n if (typeof a == 'string' && typeof b == 'string') {\n return a < b ? -1 : 1;\n }\n if (typeof a == 'number' && typeof b == 'number') {\n return a - b;\n }\n if (typeof a == 'boolean' && typeof b == 'boolean') {\n return a < b ? -1 : 1;\n }\n // `a` and `b` are of different types. Compare their string values.\n const aString = String(a);\n const bString = String(b);\n return aString == bString ? 0 : aString < bString ? -1 : 1;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a value according to digit options and locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * @see `formatNumber()`\n *\n * @usageNotes\n *\n * ### digitsInfo\n *\n * The value's decimal representation is specified by the `digitsInfo`\n * parameter, written in the following format:
    \n *\n * ```\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}\n * ```\n *\n * - `minIntegerDigits`:\n * The minimum number of integer digits before the decimal point.\n * Default is 1.\n *\n * - `minFractionDigits`:\n * The minimum number of digits after the decimal point.\n * Default is 0.\n *\n * - `maxFractionDigits`:\n * The maximum number of digits after the decimal point.\n * Default is 3.\n *\n * If the formatted value is truncated it will be rounded using the \"to-nearest\" method:\n *\n * ```\n * {{3.6 | number: '1.0-0'}}\n * \n *\n * {{-3.6 | number:'1.0-0'}}\n * \n * ```\n *\n * ### locale\n *\n * `locale` will format a value according to locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n *\n * See [Setting your app locale](guide/i18n-common-locale-id).\n *\n * ### Example\n *\n * The following code shows how the pipe transforms values\n * according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass DecimalPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n * @param value The value to be formatted.\n * @param digitsInfo Sets digit and decimal representation.\n * [See more](#digitsinfo).\n * @param locale Specifies what locale format rules to use.\n * [See more](#locale).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatNumber(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(DecimalPipe, error.message);\n }\n }\n}\nDecimalPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DecimalPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nDecimalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DecimalPipe, name: \"number\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DecimalPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'number' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a percentage\n * string, formatted according to locale rules that determine group sizing and\n * separator, decimal-point character, and other locale-specific\n * configurations.\n *\n * @see `formatPercent()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass PercentPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n *\n * @param value The number to be formatted as a percentage.\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `0`.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatPercent(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(PercentPipe, error.message);\n }\n }\n}\nPercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PercentPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nPercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PercentPipe, name: \"percent\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PercentPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'percent' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a currency string, formatted according to locale rules\n * that determine group sizing and separator, decimal-point character,\n * and other locale-specific configurations.\n *\n * {@a currency-code-deprecation}\n *
    \n *\n * **Deprecation notice:**\n *\n * The default currency code is currently always `USD` but this is deprecated from v9.\n *\n * **In v11 the default currency code will be taken from the current locale identified by\n * the `LOCALE_ID` token. See the [i18n guide](guide/i18n-common-locale-id) for\n * more information.**\n *\n * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in\n * your application `NgModule`:\n *\n * ```ts\n * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'}\n * ```\n *\n *
    \n *\n * @see `getCurrencySymbol()`\n * @see `formatCurrency()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass CurrencyPipe {\n constructor(_locale, _defaultCurrencyCode = 'USD') {\n this._locale = _locale;\n this._defaultCurrencyCode = _defaultCurrencyCode;\n }\n /**\n *\n * @param value The number to be formatted as currency.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code,\n * such as `USD` for the US dollar and `EUR` for the euro. The default currency code can be\n * configured using the `DEFAULT_CURRENCY_CODE` injection token.\n * @param display The format for the currency indicator. One of the following:\n * - `code`: Show the code (such as `USD`).\n * - `symbol`(default): Show the symbol (such as `$`).\n * - `symbol-narrow`: Use the narrow symbol for locales that have two symbols for their\n * currency.\n * For example, the Canadian dollar CAD has the symbol `CA$` and the symbol-narrow `$`. If the\n * locale has no narrow symbol, uses the standard symbol for the locale.\n * - String: Use the given string value instead of a code or a symbol.\n * For example, an empty string will suppress the currency & symbol.\n * - Boolean (marked deprecated in v5): `true` for symbol and false for `code`.\n *\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `2`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `2`.\n * If not provided, the number will be formatted with the proper amount of digits,\n * depending on what the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) specifies.\n * For example, the Canadian dollar has 2 digits, whereas the Chilean peso has none.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, currencyCode = this._defaultCurrencyCode, display = 'symbol', digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n if (typeof display === 'boolean') {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && console && console.warn) {\n console.warn(`Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are \"code\", \"symbol\" or \"symbol-narrow\".`);\n }\n display = display ? 'symbol' : 'code';\n }\n let currency = currencyCode || this._defaultCurrencyCode;\n if (display !== 'code') {\n if (display === 'symbol' || display === 'symbol-narrow') {\n currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);\n }\n else {\n currency = display;\n }\n }\n try {\n const num = strToNumber(value);\n return formatCurrency(num, locale, currency, currencyCode, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(CurrencyPipe, error.message);\n }\n }\n}\nCurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: CurrencyPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe });\nCurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: CurrencyPipe, name: \"currency\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: CurrencyPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'currency' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DEFAULT_CURRENCY_CODE]\n }] }]; } });\nfunction isValue(value) {\n return !(value == null || value === '' || value !== value);\n}\n/**\n * Transforms a string into a number (if needed).\n */\nfunction strToNumber(value) {\n // Convert strings to numbers\n if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {\n return Number(value);\n }\n if (typeof value !== 'number') {\n throw new Error(`${value} is not a number`);\n }\n return value;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Creates a new `Array` or `String` containing a subset (slice) of the elements.\n *\n * @usageNotes\n *\n * All behavior is based on the expected behavior of the JavaScript API `Array.prototype.slice()`\n * and `String.prototype.slice()`.\n *\n * When operating on an `Array`, the returned `Array` is always a copy even when all\n * the elements are being returned.\n *\n * When operating on a blank value, the pipe returns the blank value.\n *\n * ### List Example\n *\n * This `ngFor` example:\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_list'}\n *\n * produces the following:\n *\n * ```html\n *
  • b
  • \n *
  • c
  • \n * ```\n *\n * ### String Examples\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_string'}\n *\n * @publicApi\n */\nclass SlicePipe {\n transform(value, start, end) {\n if (value == null)\n return null;\n if (!this.supports(value)) {\n throw invalidPipeArgumentError(SlicePipe, value);\n }\n return value.slice(start, end);\n }\n supports(obj) {\n return typeof obj === 'string' || Array.isArray(obj);\n }\n}\nSlicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: SlicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nSlicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: SlicePipe, name: \"slice\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: SlicePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'slice', pure: false }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular pipes that are likely to be used in each and every application.\n */\nconst COMMON_PIPES = [\n AsyncPipe,\n UpperCasePipe,\n LowerCasePipe,\n JsonPipe,\n SlicePipe,\n DecimalPipe,\n PercentPipe,\n TitleCasePipe,\n CurrencyPipe,\n DatePipe,\n I18nPluralPipe,\n I18nSelectPipe,\n KeyValuePipe,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Note: This does not contain the location providers,\n// as they need some platform specific implementations to work.\n/**\n * Exports all the basic Angular directives and pipes,\n * such as `NgIf`, `NgForOf`, `DecimalPipe`, and so on.\n * Re-exported by `BrowserModule`, which is included automatically in the root\n * `AppModule` when you create a new app with the CLI `new` command.\n *\n * * The `providers` options configure the NgModule's injector to provide\n * localization dependencies to members.\n * * The `exports` options make the declared directives and pipes available for import\n * by other NgModules.\n *\n * @publicApi\n */\nclass CommonModule {\n}\nCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: CommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: CommonModule, declarations: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe], exports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe] });\nCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: CommonModule, providers: [\n { provide: NgLocalization, useClass: NgLocaleLocalization },\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: CommonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMMON_DIRECTIVES, COMMON_PIPES],\n exports: [COMMON_DIRECTIVES, COMMON_PIPES],\n providers: [\n { provide: NgLocalization, useClass: NgLocaleLocalization },\n ],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst PLATFORM_BROWSER_ID = 'browser';\nconst PLATFORM_SERVER_ID = 'server';\nconst PLATFORM_WORKER_APP_ID = 'browserWorkerApp';\nconst PLATFORM_WORKER_UI_ID = 'browserWorkerUi';\n/**\n * Returns whether a platform id represents a browser platform.\n * @publicApi\n */\nfunction isPlatformBrowser(platformId) {\n return platformId === PLATFORM_BROWSER_ID;\n}\n/**\n * Returns whether a platform id represents a server platform.\n * @publicApi\n */\nfunction isPlatformServer(platformId) {\n return platformId === PLATFORM_SERVER_ID;\n}\n/**\n * Returns whether a platform id represents a web worker app platform.\n * @publicApi\n */\nfunction isPlatformWorkerApp(platformId) {\n return platformId === PLATFORM_WORKER_APP_ID;\n}\n/**\n * Returns whether a platform id represents a web worker UI platform.\n * @publicApi\n */\nfunction isPlatformWorkerUi(platformId) {\n return platformId === PLATFORM_WORKER_UI_ID;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('13.0.2');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.\n *\n * @publicApi\n */\nclass ViewportScroller {\n}\n// De-sugared tree-shakable injection\n// See #23917\n/** @nocollapse */\nViewportScroller.ɵprov = ɵɵdefineInjectable({\n token: ViewportScroller,\n providedIn: 'root',\n factory: () => new BrowserViewportScroller(ɵɵinject(DOCUMENT), window)\n});\n/**\n * Manages the scroll position for a browser window.\n */\nclass BrowserViewportScroller {\n constructor(document, window) {\n this.document = document;\n this.window = window;\n this.offset = () => [0, 0];\n }\n /**\n * Configures the top offset used when scrolling to an anchor.\n * @param offset A position in screen coordinates (a tuple with x and y values)\n * or a function that returns the top offset position.\n *\n */\n setOffset(offset) {\n if (Array.isArray(offset)) {\n this.offset = () => offset;\n }\n else {\n this.offset = offset;\n }\n }\n /**\n * Retrieves the current scroll position.\n * @returns The position in screen coordinates.\n */\n getScrollPosition() {\n if (this.supportsScrolling()) {\n return [this.window.pageXOffset, this.window.pageYOffset];\n }\n else {\n return [0, 0];\n }\n }\n /**\n * Sets the scroll position.\n * @param position The new position in screen coordinates.\n */\n scrollToPosition(position) {\n if (this.supportsScrolling()) {\n this.window.scrollTo(position[0], position[1]);\n }\n }\n /**\n * Scrolls to an element and attempts to focus the element.\n *\n * Note that the function name here is misleading in that the target string may be an ID for a\n * non-anchor element.\n *\n * @param target The ID of an element or name of the anchor.\n *\n * @see https://html.spec.whatwg.org/#the-indicated-part-of-the-document\n * @see https://html.spec.whatwg.org/#scroll-to-fragid\n */\n scrollToAnchor(target) {\n if (!this.supportsScrolling()) {\n return;\n }\n const elSelected = findAnchorFromDocument(this.document, target);\n if (elSelected) {\n this.scrollToElement(elSelected);\n // After scrolling to the element, the spec dictates that we follow the focus steps for the\n // target. Rather than following the robust steps, simply attempt focus.\n this.attemptFocus(elSelected);\n }\n }\n /**\n * Disables automatic scroll restoration provided by the browser.\n */\n setHistoryScrollRestoration(scrollRestoration) {\n if (this.supportScrollRestoration()) {\n const history = this.window.history;\n if (history && history.scrollRestoration) {\n history.scrollRestoration = scrollRestoration;\n }\n }\n }\n /**\n * Scrolls to an element using the native offset and the specified offset set on this scroller.\n *\n * The offset can be used when we know that there is a floating header and scrolling naively to an\n * element (ex: `scrollIntoView`) leaves the element hidden behind the floating header.\n */\n scrollToElement(el) {\n const rect = el.getBoundingClientRect();\n const left = rect.left + this.window.pageXOffset;\n const top = rect.top + this.window.pageYOffset;\n const offset = this.offset();\n this.window.scrollTo(left - offset[0], top - offset[1]);\n }\n /**\n * Calls `focus` on the `focusTarget` and returns `true` if the element was focused successfully.\n *\n * If `false`, further steps may be necessary to determine a valid substitute to be focused\n * instead.\n *\n * @see https://html.spec.whatwg.org/#get-the-focusable-area\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus\n * @see https://html.spec.whatwg.org/#focusable-area\n */\n attemptFocus(focusTarget) {\n focusTarget.focus();\n return this.document.activeElement === focusTarget;\n }\n /**\n * We only support scroll restoration when we can get a hold of window.\n * This means that we do not support this behavior when running in a web worker.\n *\n * Lifting this restriction right now would require more changes in the dom adapter.\n * Since webworkers aren't widely used, we will lift it once RouterScroller is\n * battle-tested.\n */\n supportScrollRestoration() {\n try {\n if (!this.supportsScrolling()) {\n return false;\n }\n // The `scrollRestoration` property could be on the `history` instance or its prototype.\n const scrollRestorationDescriptor = getScrollRestorationProperty(this.window.history) ||\n getScrollRestorationProperty(Object.getPrototypeOf(this.window.history));\n // We can write to the `scrollRestoration` property if it is a writable data field or it has a\n // setter function.\n return !!scrollRestorationDescriptor &&\n !!(scrollRestorationDescriptor.writable || scrollRestorationDescriptor.set);\n }\n catch {\n return false;\n }\n }\n supportsScrolling() {\n try {\n return !!this.window && !!this.window.scrollTo && 'pageXOffset' in this.window;\n }\n catch {\n return false;\n }\n }\n}\nfunction getScrollRestorationProperty(obj) {\n return Object.getOwnPropertyDescriptor(obj, 'scrollRestoration');\n}\nfunction findAnchorFromDocument(document, target) {\n const documentResult = document.getElementById(target) || document.getElementsByName(target)[0];\n if (documentResult) {\n return documentResult;\n }\n // `getElementById` and `getElementsByName` won't pierce through the shadow DOM so we\n // have to traverse the DOM manually and do the lookup through the shadow roots.\n if (typeof document.createTreeWalker === 'function' && document.body &&\n (document.body.createShadowRoot || document.body.attachShadow)) {\n const treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);\n let currentNode = treeWalker.currentNode;\n while (currentNode) {\n const shadowRoot = currentNode.shadowRoot;\n if (shadowRoot) {\n // Note that `ShadowRoot` doesn't support `getElementsByName`\n // so we have to fall back to `querySelector`.\n const result = shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name=\"${target}\"]`);\n if (result) {\n return result;\n }\n }\n currentNode = treeWalker.nextNode();\n }\n }\n return null;\n}\n/**\n * Provides an empty implementation of the viewport scroller.\n */\nclass NullViewportScroller {\n /**\n * Empty implementation\n */\n setOffset(offset) { }\n /**\n * Empty implementation\n */\n getScrollPosition() {\n return [0, 0];\n }\n /**\n * Empty implementation\n */\n scrollToPosition(position) { }\n /**\n * Empty implementation\n */\n scrollToAnchor(anchor) { }\n /**\n * Empty implementation\n */\n setHistoryScrollRestoration(scrollRestoration) { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A wrapper around the `XMLHttpRequest` constructor.\n *\n * @publicApi\n */\nclass XhrFactory {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { APP_BASE_HREF, AsyncPipe, CommonModule, CurrencyPipe, DATE_PIPE_DEFAULT_TIMEZONE, DOCUMENT, DatePipe, DecimalPipe, FormStyle, FormatWidth, HashLocationStrategy, I18nPluralPipe, I18nSelectPipe, JsonPipe, KeyValuePipe, LOCATION_INITIALIZED, Location, LocationStrategy, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NumberFormatStyle, NumberSymbol, PathLocationStrategy, PercentPipe, PlatformLocation, Plural, SlicePipe, TitleCasePipe, TranslationWidth, UpperCasePipe, VERSION, ViewportScroller, WeekDay, XhrFactory, formatCurrency, formatDate, formatNumber, formatPercent, getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleDirection, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits, isPlatformBrowser, isPlatformServer, isPlatformWorkerApp, isPlatformWorkerUi, registerLocaleData, BrowserPlatformLocation as ɵBrowserPlatformLocation, DomAdapter as ɵDomAdapter, NullViewportScroller as ɵNullViewportScroller, PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, PLATFORM_WORKER_APP_ID as ɵPLATFORM_WORKER_APP_ID, PLATFORM_WORKER_UI_ID as ɵPLATFORM_WORKER_UI_ID, getDOM as ɵgetDOM, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };\n","/**\n * @license Angular v13.0.2\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, ɵparseCookieValue, XhrFactory as XhrFactory$1 } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, Inject, PLATFORM_ID, NgModule } from '@angular/core';\nimport { of, Observable } from 'rxjs';\nimport { concatMap, filter, map } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a\n * `HttpResponse`.\n *\n * `HttpHandler` is injectable. When injected, the handler instance dispatches requests to the\n * first interceptor in the chain, which dispatches to the second, etc, eventually reaching the\n * `HttpBackend`.\n *\n * In an `HttpInterceptor`, the `HttpHandler` parameter is the next interceptor in the chain.\n *\n * @publicApi\n */\nclass HttpHandler {\n}\n/**\n * A final `HttpHandler` which will dispatch the request via browser HTTP APIs to a backend.\n *\n * Interceptors sit between the `HttpClient` interface and the `HttpBackend`.\n *\n * When injected, `HttpBackend` dispatches requests directly to the backend, without going\n * through the interceptor chain.\n *\n * @publicApi\n */\nclass HttpBackend {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Represents the header configuration options for an HTTP request.\n * Instances are immutable. Modifying methods return a cloned\n * instance with the change. The original object is never changed.\n *\n * @publicApi\n */\nclass HttpHeaders {\n /** Constructs a new HTTP header object with the given values.*/\n constructor(headers) {\n /**\n * Internal map of lowercased header names to the normalized\n * form of the name (the form seen first).\n */\n this.normalizedNames = new Map();\n /**\n * Queued updates to be materialized the next initialization.\n */\n this.lazyUpdate = null;\n if (!headers) {\n this.headers = new Map();\n }\n else if (typeof headers === 'string') {\n this.lazyInit = () => {\n this.headers = new Map();\n headers.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const key = name.toLowerCase();\n const value = line.slice(index + 1).trim();\n this.maybeSetNormalizedName(name, key);\n if (this.headers.has(key)) {\n this.headers.get(key).push(value);\n }\n else {\n this.headers.set(key, [value]);\n }\n }\n });\n };\n }\n else {\n this.lazyInit = () => {\n this.headers = new Map();\n Object.keys(headers).forEach(name => {\n let values = headers[name];\n const key = name.toLowerCase();\n if (typeof values === 'string') {\n values = [values];\n }\n if (values.length > 0) {\n this.headers.set(key, values);\n this.maybeSetNormalizedName(name, key);\n }\n });\n };\n }\n }\n /**\n * Checks for existence of a given header.\n *\n * @param name The header name to check for existence.\n *\n * @returns True if the header exists, false otherwise.\n */\n has(name) {\n this.init();\n return this.headers.has(name.toLowerCase());\n }\n /**\n * Retrieves the first value of a given header.\n *\n * @param name The header name.\n *\n * @returns The value string if the header exists, null otherwise\n */\n get(name) {\n this.init();\n const values = this.headers.get(name.toLowerCase());\n return values && values.length > 0 ? values[0] : null;\n }\n /**\n * Retrieves the names of the headers.\n *\n * @returns A list of header names.\n */\n keys() {\n this.init();\n return Array.from(this.normalizedNames.values());\n }\n /**\n * Retrieves a list of values for a given header.\n *\n * @param name The header name from which to retrieve values.\n *\n * @returns A string of values if the header exists, null otherwise.\n */\n getAll(name) {\n this.init();\n return this.headers.get(name.toLowerCase()) || null;\n }\n /**\n * Appends a new value to the existing set of values for a header\n * and returns them in a clone of the original instance.\n *\n * @param name The header name for which to append the values.\n * @param value The value to append.\n *\n * @returns A clone of the HTTP headers object with the value appended to the given header.\n */\n append(name, value) {\n return this.clone({ name, value, op: 'a' });\n }\n /**\n * Sets or modifies a value for a given header in a clone of the original instance.\n * If the header already exists, its value is replaced with the given value\n * in the returned object.\n *\n * @param name The header name.\n * @param value The value or values to set or overide for the given header.\n *\n * @returns A clone of the HTTP headers object with the newly set header value.\n */\n set(name, value) {\n return this.clone({ name, value, op: 's' });\n }\n /**\n * Deletes values for a given header in a clone of the original instance.\n *\n * @param name The header name.\n * @param value The value or values to delete for the given header.\n *\n * @returns A clone of the HTTP headers object with the given value deleted.\n */\n delete(name, value) {\n return this.clone({ name, value, op: 'd' });\n }\n maybeSetNormalizedName(name, lcName) {\n if (!this.normalizedNames.has(lcName)) {\n this.normalizedNames.set(lcName, name);\n }\n }\n init() {\n if (!!this.lazyInit) {\n if (this.lazyInit instanceof HttpHeaders) {\n this.copyFrom(this.lazyInit);\n }\n else {\n this.lazyInit();\n }\n this.lazyInit = null;\n if (!!this.lazyUpdate) {\n this.lazyUpdate.forEach(update => this.applyUpdate(update));\n this.lazyUpdate = null;\n }\n }\n }\n copyFrom(other) {\n other.init();\n Array.from(other.headers.keys()).forEach(key => {\n this.headers.set(key, other.headers.get(key));\n this.normalizedNames.set(key, other.normalizedNames.get(key));\n });\n }\n clone(update) {\n const clone = new HttpHeaders();\n clone.lazyInit =\n (!!this.lazyInit && this.lazyInit instanceof HttpHeaders) ? this.lazyInit : this;\n clone.lazyUpdate = (this.lazyUpdate || []).concat([update]);\n return clone;\n }\n applyUpdate(update) {\n const key = update.name.toLowerCase();\n switch (update.op) {\n case 'a':\n case 's':\n let value = update.value;\n if (typeof value === 'string') {\n value = [value];\n }\n if (value.length === 0) {\n return;\n }\n this.maybeSetNormalizedName(update.name, key);\n const base = (update.op === 'a' ? this.headers.get(key) : undefined) || [];\n base.push(...value);\n this.headers.set(key, base);\n break;\n case 'd':\n const toDelete = update.value;\n if (!toDelete) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n let existing = this.headers.get(key);\n if (!existing) {\n return;\n }\n existing = existing.filter(value => toDelete.indexOf(value) === -1);\n if (existing.length === 0) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n this.headers.set(key, existing);\n }\n }\n break;\n }\n }\n /**\n * @internal\n */\n forEach(fn) {\n this.init();\n Array.from(this.normalizedNames.keys())\n .forEach(key => fn(this.normalizedNames.get(key), this.headers.get(key)));\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Provides encoding and decoding of URL parameter and query-string values.\n *\n * Serializes and parses URL parameter keys and values to encode and decode them.\n * If you pass URL query parameters without encoding,\n * the query parameters can be misinterpreted at the receiving end.\n *\n *\n * @publicApi\n */\nclass HttpUrlEncodingCodec {\n /**\n * Encodes a key name for a URL parameter or query-string.\n * @param key The key name.\n * @returns The encoded key name.\n */\n encodeKey(key) {\n return standardEncoding(key);\n }\n /**\n * Encodes the value of a URL parameter or query-string.\n * @param value The value.\n * @returns The encoded value.\n */\n encodeValue(value) {\n return standardEncoding(value);\n }\n /**\n * Decodes an encoded URL parameter or query-string key.\n * @param key The encoded key name.\n * @returns The decoded key name.\n */\n decodeKey(key) {\n return decodeURIComponent(key);\n }\n /**\n * Decodes an encoded URL parameter or query-string value.\n * @param value The encoded value.\n * @returns The decoded value.\n */\n decodeValue(value) {\n return decodeURIComponent(value);\n }\n}\nfunction paramParser(rawParams, codec) {\n const map = new Map();\n if (rawParams.length > 0) {\n // The `window.location.search` can be used while creating an instance of the `HttpParams` class\n // (e.g. `new HttpParams({ fromString: window.location.search })`). The `window.location.search`\n // may start with the `?` char, so we strip it if it's present.\n const params = rawParams.replace(/^\\?/, '').split('&');\n params.forEach((param) => {\n const eqIdx = param.indexOf('=');\n const [key, val] = eqIdx == -1 ?\n [codec.decodeKey(param), ''] :\n [codec.decodeKey(param.slice(0, eqIdx)), codec.decodeValue(param.slice(eqIdx + 1))];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * Encode input string with standard encodeURIComponent and then un-encode specific characters.\n */\nconst STANDARD_ENCODING_REGEX = /%(\\d[a-f0-9])/gi;\nconst STANDARD_ENCODING_REPLACEMENTS = {\n '40': '@',\n '3A': ':',\n '24': '$',\n '2C': ',',\n '3B': ';',\n '2B': '+',\n '3D': '=',\n '3F': '?',\n '2F': '/',\n};\nfunction standardEncoding(v) {\n return encodeURIComponent(v).replace(STANDARD_ENCODING_REGEX, (s, t) => STANDARD_ENCODING_REPLACEMENTS[t] ?? s);\n}\nfunction valueToString(value) {\n return `${value}`;\n}\n/**\n * An HTTP request/response body that represents serialized parameters,\n * per the MIME type `application/x-www-form-urlencoded`.\n *\n * This class is immutable; all mutation operations return a new instance.\n *\n * @publicApi\n */\nclass HttpParams {\n constructor(options = {}) {\n this.updates = null;\n this.cloneFrom = null;\n this.encoder = options.encoder || new HttpUrlEncodingCodec();\n if (!!options.fromString) {\n if (!!options.fromObject) {\n throw new Error(`Cannot specify both fromString and fromObject.`);\n }\n this.map = paramParser(options.fromString, this.encoder);\n }\n else if (!!options.fromObject) {\n this.map = new Map();\n Object.keys(options.fromObject).forEach(key => {\n const value = options.fromObject[key];\n this.map.set(key, Array.isArray(value) ? value : [value]);\n });\n }\n else {\n this.map = null;\n }\n }\n /**\n * Reports whether the body includes one or more values for a given parameter.\n * @param param The parameter name.\n * @returns True if the parameter has one or more values,\n * false if it has no value or is not present.\n */\n has(param) {\n this.init();\n return this.map.has(param);\n }\n /**\n * Retrieves the first value for a parameter.\n * @param param The parameter name.\n * @returns The first value of the given parameter,\n * or `null` if the parameter is not present.\n */\n get(param) {\n this.init();\n const res = this.map.get(param);\n return !!res ? res[0] : null;\n }\n /**\n * Retrieves all values for a parameter.\n * @param param The parameter name.\n * @returns All values in a string array,\n * or `null` if the parameter not present.\n */\n getAll(param) {\n this.init();\n return this.map.get(param) || null;\n }\n /**\n * Retrieves all the parameters for this body.\n * @returns The parameter names in a string array.\n */\n keys() {\n this.init();\n return Array.from(this.map.keys());\n }\n /**\n * Appends a new value to existing values for a parameter.\n * @param param The parameter name.\n * @param value The new value to add.\n * @return A new body with the appended value.\n */\n append(param, value) {\n return this.clone({ param, value, op: 'a' });\n }\n /**\n * Constructs a new body with appended values for the given parameter name.\n * @param params parameters and values\n * @return A new body with the new value.\n */\n appendAll(params) {\n const updates = [];\n Object.keys(params).forEach(param => {\n const value = params[param];\n if (Array.isArray(value)) {\n value.forEach(_value => {\n updates.push({ param, value: _value, op: 'a' });\n });\n }\n else {\n updates.push({ param, value: value, op: 'a' });\n }\n });\n return this.clone(updates);\n }\n /**\n * Replaces the value for a parameter.\n * @param param The parameter name.\n * @param value The new value.\n * @return A new body with the new value.\n */\n set(param, value) {\n return this.clone({ param, value, op: 's' });\n }\n /**\n * Removes a given value or all values from a parameter.\n * @param param The parameter name.\n * @param value The value to remove, if provided.\n * @return A new body with the given value removed, or with all values\n * removed if no value is specified.\n */\n delete(param, value) {\n return this.clone({ param, value, op: 'd' });\n }\n /**\n * Serializes the body to an encoded string, where key-value pairs (separated by `=`) are\n * separated by `&`s.\n */\n toString() {\n this.init();\n return this.keys()\n .map(key => {\n const eKey = this.encoder.encodeKey(key);\n // `a: ['1']` produces `'a=1'`\n // `b: []` produces `''`\n // `c: ['1', '2']` produces `'c=1&c=2'`\n return this.map.get(key).map(value => eKey + '=' + this.encoder.encodeValue(value))\n .join('&');\n })\n // filter out empty values because `b: []` produces `''`\n // which results in `a=1&&c=1&c=2` instead of `a=1&c=1&c=2` if we don't\n .filter(param => param !== '')\n .join('&');\n }\n clone(update) {\n const clone = new HttpParams({ encoder: this.encoder });\n clone.cloneFrom = this.cloneFrom || this;\n clone.updates = (this.updates || []).concat(update);\n return clone;\n }\n init() {\n if (this.map === null) {\n this.map = new Map();\n }\n if (this.cloneFrom !== null) {\n this.cloneFrom.init();\n this.cloneFrom.keys().forEach(key => this.map.set(key, this.cloneFrom.map.get(key)));\n this.updates.forEach(update => {\n switch (update.op) {\n case 'a':\n case 's':\n const base = (update.op === 'a' ? this.map.get(update.param) : undefined) || [];\n base.push(valueToString(update.value));\n this.map.set(update.param, base);\n break;\n case 'd':\n if (update.value !== undefined) {\n let base = this.map.get(update.param) || [];\n const idx = base.indexOf(valueToString(update.value));\n if (idx !== -1) {\n base.splice(idx, 1);\n }\n if (base.length > 0) {\n this.map.set(update.param, base);\n }\n else {\n this.map.delete(update.param);\n }\n }\n else {\n this.map.delete(update.param);\n break;\n }\n }\n });\n this.cloneFrom = this.updates = null;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A token used to manipulate and access values stored in `HttpContext`.\n *\n * @publicApi\n */\nclass HttpContextToken {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n}\n/**\n * Http context stores arbitrary user defined values and ensures type safety without\n * actually knowing the types. It is backed by a `Map` and guarantees that keys do not clash.\n *\n * This context is mutable and is shared between cloned requests unless explicitly specified.\n *\n * @usageNotes\n *\n * ### Usage Example\n *\n * ```typescript\n * // inside cache.interceptors.ts\n * export const IS_CACHE_ENABLED = new HttpContextToken(() => false);\n *\n * export class CacheInterceptor implements HttpInterceptor {\n *\n * intercept(req: HttpRequest, delegate: HttpHandler): Observable> {\n * if (req.context.get(IS_CACHE_ENABLED) === true) {\n * return ...;\n * }\n * return delegate.handle(req);\n * }\n * }\n *\n * // inside a service\n *\n * this.httpClient.get('/api/weather', {\n * context: new HttpContext().set(IS_CACHE_ENABLED, true)\n * }).subscribe(...);\n * ```\n *\n * @publicApi\n */\nclass HttpContext {\n constructor() {\n this.map = new Map();\n }\n /**\n * Store a value in the context. If a value is already present it will be overwritten.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n * @param value The value to store.\n *\n * @returns A reference to itself for easy chaining.\n */\n set(token, value) {\n this.map.set(token, value);\n return this;\n }\n /**\n * Retrieve the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns The stored value or default if one is defined.\n */\n get(token) {\n if (!this.map.has(token)) {\n this.map.set(token, token.defaultValue());\n }\n return this.map.get(token);\n }\n /**\n * Delete the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns A reference to itself for easy chaining.\n */\n delete(token) {\n this.map.delete(token);\n return this;\n }\n /**\n * @returns a list of tokens currently stored in the context.\n */\n keys() {\n return this.map.keys();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Determine whether the given HTTP method may include a body.\n */\nfunction mightHaveBody(method) {\n switch (method) {\n case 'DELETE':\n case 'GET':\n case 'HEAD':\n case 'OPTIONS':\n case 'JSONP':\n return false;\n default:\n return true;\n }\n}\n/**\n * Safely assert whether the given value is an ArrayBuffer.\n *\n * In some execution environments ArrayBuffer is not defined.\n */\nfunction isArrayBuffer(value) {\n return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;\n}\n/**\n * Safely assert whether the given value is a Blob.\n *\n * In some execution environments Blob is not defined.\n */\nfunction isBlob(value) {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n/**\n * Safely assert whether the given value is a FormData instance.\n *\n * In some execution environments FormData is not defined.\n */\nfunction isFormData(value) {\n return typeof FormData !== 'undefined' && value instanceof FormData;\n}\n/**\n * Safely assert whether the given value is a URLSearchParams instance.\n *\n * In some execution environments URLSearchParams is not defined.\n */\nfunction isUrlSearchParams(value) {\n return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams;\n}\n/**\n * An outgoing HTTP request with an optional typed body.\n *\n * `HttpRequest` represents an outgoing request, including URL, method,\n * headers, body, and other request configuration options. Instances should be\n * assumed to be immutable. To modify a `HttpRequest`, the `clone`\n * method should be used.\n *\n * @publicApi\n */\nclass HttpRequest {\n constructor(method, url, third, fourth) {\n this.url = url;\n /**\n * The request body, or `null` if one isn't set.\n *\n * Bodies are not enforced to be immutable, as they can include a reference to any\n * user-defined data type. However, interceptors should take care to preserve\n * idempotence by treating them as such.\n */\n this.body = null;\n /**\n * Whether this request should be made in a way that exposes progress events.\n *\n * Progress events are expensive (change detection runs on each event) and so\n * they should only be requested if the consumer intends to monitor them.\n */\n this.reportProgress = false;\n /**\n * Whether this request should be sent with outgoing credentials (cookies).\n */\n this.withCredentials = false;\n /**\n * The expected response type of the server.\n *\n * This is used to parse the response appropriately before returning it to\n * the requestee.\n */\n this.responseType = 'json';\n this.method = method.toUpperCase();\n // Next, need to figure out which argument holds the HttpRequestInit\n // options, if any.\n let options;\n // Check whether a body argument is expected. The only valid way to omit\n // the body argument is to use a known no-body method like GET.\n if (mightHaveBody(this.method) || !!fourth) {\n // Body is the third argument, options are the fourth.\n this.body = (third !== undefined) ? third : null;\n options = fourth;\n }\n else {\n // No body required, options are the third argument. The body stays null.\n options = third;\n }\n // If options have been passed, interpret them.\n if (options) {\n // Normalize reportProgress and withCredentials.\n this.reportProgress = !!options.reportProgress;\n this.withCredentials = !!options.withCredentials;\n // Override default response type of 'json' if one is provided.\n if (!!options.responseType) {\n this.responseType = options.responseType;\n }\n // Override headers if they're provided.\n if (!!options.headers) {\n this.headers = options.headers;\n }\n if (!!options.context) {\n this.context = options.context;\n }\n if (!!options.params) {\n this.params = options.params;\n }\n }\n // If no headers have been passed in, construct a new HttpHeaders instance.\n if (!this.headers) {\n this.headers = new HttpHeaders();\n }\n // If no context have been passed in, construct a new HttpContext instance.\n if (!this.context) {\n this.context = new HttpContext();\n }\n // If no parameters have been passed in, construct a new HttpUrlEncodedParams instance.\n if (!this.params) {\n this.params = new HttpParams();\n this.urlWithParams = url;\n }\n else {\n // Encode the parameters to a string in preparation for inclusion in the URL.\n const params = this.params.toString();\n if (params.length === 0) {\n // No parameters, the visible URL is just the URL given at creation time.\n this.urlWithParams = url;\n }\n else {\n // Does the URL already have query parameters? Look for '?'.\n const qIdx = url.indexOf('?');\n // There are 3 cases to handle:\n // 1) No existing parameters -> append '?' followed by params.\n // 2) '?' exists and is followed by existing query string ->\n // append '&' followed by params.\n // 3) '?' exists at the end of the url -> append params directly.\n // This basically amounts to determining the character, if any, with\n // which to join the URL and parameters.\n const sep = qIdx === -1 ? '?' : (qIdx < url.length - 1 ? '&' : '');\n this.urlWithParams = url + sep + params;\n }\n }\n }\n /**\n * Transform the free-form body into a serialized format suitable for\n * transmission to the server.\n */\n serializeBody() {\n // If no body is present, no need to serialize it.\n if (this.body === null) {\n return null;\n }\n // Check whether the body is already in a serialized form. If so,\n // it can just be returned directly.\n if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||\n isUrlSearchParams(this.body) || typeof this.body === 'string') {\n return this.body;\n }\n // Check whether the body is an instance of HttpUrlEncodedParams.\n if (this.body instanceof HttpParams) {\n return this.body.toString();\n }\n // Check whether the body is an object or array, and serialize with JSON if so.\n if (typeof this.body === 'object' || typeof this.body === 'boolean' ||\n Array.isArray(this.body)) {\n return JSON.stringify(this.body);\n }\n // Fall back on toString() for everything else.\n return this.body.toString();\n }\n /**\n * Examine the body and attempt to infer an appropriate MIME type\n * for it.\n *\n * If no such type can be inferred, this method will return `null`.\n */\n detectContentTypeHeader() {\n // An empty body has no content type.\n if (this.body === null) {\n return null;\n }\n // FormData bodies rely on the browser's content type assignment.\n if (isFormData(this.body)) {\n return null;\n }\n // Blobs usually have their own content type. If it doesn't, then\n // no type can be inferred.\n if (isBlob(this.body)) {\n return this.body.type || null;\n }\n // Array buffers have unknown contents and thus no type can be inferred.\n if (isArrayBuffer(this.body)) {\n return null;\n }\n // Technically, strings could be a form of JSON data, but it's safe enough\n // to assume they're plain strings.\n if (typeof this.body === 'string') {\n return 'text/plain';\n }\n // `HttpUrlEncodedParams` has its own content-type.\n if (this.body instanceof HttpParams) {\n return 'application/x-www-form-urlencoded;charset=UTF-8';\n }\n // Arrays, objects, boolean and numbers will be encoded as JSON.\n if (typeof this.body === 'object' || typeof this.body === 'number' ||\n typeof this.body === 'boolean') {\n return 'application/json';\n }\n // No type could be inferred.\n return null;\n }\n clone(update = {}) {\n // For method, url, and responseType, take the current value unless\n // it is overridden in the update hash.\n const method = update.method || this.method;\n const url = update.url || this.url;\n const responseType = update.responseType || this.responseType;\n // The body is somewhat special - a `null` value in update.body means\n // whatever current body is present is being overridden with an empty\n // body, whereas an `undefined` value in update.body implies no\n // override.\n const body = (update.body !== undefined) ? update.body : this.body;\n // Carefully handle the boolean options to differentiate between\n // `false` and `undefined` in the update args.\n const withCredentials = (update.withCredentials !== undefined) ? update.withCredentials : this.withCredentials;\n const reportProgress = (update.reportProgress !== undefined) ? update.reportProgress : this.reportProgress;\n // Headers and params may be appended to if `setHeaders` or\n // `setParams` are used.\n let headers = update.headers || this.headers;\n let params = update.params || this.params;\n // Pass on context if needed\n const context = update.context ?? this.context;\n // Check whether the caller has asked to add headers.\n if (update.setHeaders !== undefined) {\n // Set every requested header.\n headers =\n Object.keys(update.setHeaders)\n .reduce((headers, name) => headers.set(name, update.setHeaders[name]), headers);\n }\n // Check whether the caller has asked to set params.\n if (update.setParams) {\n // Set every requested param.\n params = Object.keys(update.setParams)\n .reduce((params, param) => params.set(param, update.setParams[param]), params);\n }\n // Finally, construct the new HttpRequest using the pieces from above.\n return new HttpRequest(method, url, body, {\n params,\n headers,\n context,\n reportProgress,\n responseType,\n withCredentials,\n });\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Type enumeration for the different kinds of `HttpEvent`.\n *\n * @publicApi\n */\nvar HttpEventType;\n(function (HttpEventType) {\n /**\n * The request was sent out over the wire.\n */\n HttpEventType[HttpEventType[\"Sent\"] = 0] = \"Sent\";\n /**\n * An upload progress event was received.\n */\n HttpEventType[HttpEventType[\"UploadProgress\"] = 1] = \"UploadProgress\";\n /**\n * The response status code and headers were received.\n */\n HttpEventType[HttpEventType[\"ResponseHeader\"] = 2] = \"ResponseHeader\";\n /**\n * A download progress event was received.\n */\n HttpEventType[HttpEventType[\"DownloadProgress\"] = 3] = \"DownloadProgress\";\n /**\n * The full response including the body was received.\n */\n HttpEventType[HttpEventType[\"Response\"] = 4] = \"Response\";\n /**\n * A custom event from an interceptor or a backend.\n */\n HttpEventType[HttpEventType[\"User\"] = 5] = \"User\";\n})(HttpEventType || (HttpEventType = {}));\n/**\n * Base class for both `HttpResponse` and `HttpHeaderResponse`.\n *\n * @publicApi\n */\nclass HttpResponseBase {\n /**\n * Super-constructor for all responses.\n *\n * The single parameter accepted is an initialization hash. Any properties\n * of the response passed there will override the default values.\n */\n constructor(init, defaultStatus = 200 /* Ok */, defaultStatusText = 'OK') {\n // If the hash has values passed, use them to initialize the response.\n // Otherwise use the default values.\n this.headers = init.headers || new HttpHeaders();\n this.status = init.status !== undefined ? init.status : defaultStatus;\n this.statusText = init.statusText || defaultStatusText;\n this.url = init.url || null;\n // Cache the ok value to avoid defining a getter.\n this.ok = this.status >= 200 && this.status < 300;\n }\n}\n/**\n * A partial HTTP response which only includes the status and header data,\n * but no response body.\n *\n * `HttpHeaderResponse` is a `HttpEvent` available on the response\n * event stream, only when progress events are requested.\n *\n * @publicApi\n */\nclass HttpHeaderResponse extends HttpResponseBase {\n /**\n * Create a new `HttpHeaderResponse` with the given parameters.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.ResponseHeader;\n }\n /**\n * Copy this `HttpHeaderResponse`, overriding its contents with the\n * given parameter hash.\n */\n clone(update = {}) {\n // Perform a straightforward initialization of the new HttpHeaderResponse,\n // overriding the current parameters with new ones if given.\n return new HttpHeaderResponse({\n headers: update.headers || this.headers,\n status: update.status !== undefined ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A full HTTP response, including a typed response body (which may be `null`\n * if one was not returned).\n *\n * `HttpResponse` is a `HttpEvent` available on the response event\n * stream.\n *\n * @publicApi\n */\nclass HttpResponse extends HttpResponseBase {\n /**\n * Construct a new `HttpResponse`.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.Response;\n this.body = init.body !== undefined ? init.body : null;\n }\n clone(update = {}) {\n return new HttpResponse({\n body: (update.body !== undefined) ? update.body : this.body,\n headers: update.headers || this.headers,\n status: (update.status !== undefined) ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A response that represents an error or failure, either from a\n * non-successful HTTP status, an error while executing the request,\n * or some other failure which occurred during the parsing of the response.\n *\n * Any error returned on the `Observable` response stream will be\n * wrapped in an `HttpErrorResponse` to provide additional context about\n * the state of the HTTP layer when the error occurred. The error property\n * will contain either a wrapped Error object or the error response returned\n * from the server.\n *\n * @publicApi\n */\nclass HttpErrorResponse extends HttpResponseBase {\n constructor(init) {\n // Initialize with a default status of 0 / Unknown Error.\n super(init, 0, 'Unknown Error');\n this.name = 'HttpErrorResponse';\n /**\n * Errors are never okay, even when the status code is in the 2xx success range.\n */\n this.ok = false;\n // If the response was successful, then this was a parse error. Otherwise, it was\n // a protocol-level failure of some sort. Either the request failed in transit\n // or the server returned an unsuccessful status code.\n if (this.status >= 200 && this.status < 300) {\n this.message = `Http failure during parsing for ${init.url || '(unknown url)'}`;\n }\n else {\n this.message = `Http failure response for ${init.url || '(unknown url)'}: ${init.status} ${init.statusText}`;\n }\n this.error = init.error || null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Constructs an instance of `HttpRequestOptions` from a source `HttpMethodOptions` and\n * the given `body`. This function clones the object and adds the body.\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n *\n */\nfunction addBody(options, body) {\n return {\n body,\n headers: options.headers,\n context: options.context,\n observe: options.observe,\n params: options.params,\n reportProgress: options.reportProgress,\n responseType: options.responseType,\n withCredentials: options.withCredentials,\n };\n}\n/**\n * Performs HTTP requests.\n * This service is available as an injectable class, with methods to perform HTTP requests.\n * Each request method has multiple signatures, and the return type varies based on\n * the signature that is called (mainly the values of `observe` and `responseType`).\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n\n *\n * @usageNotes\n * Sample HTTP requests for the [Tour of Heroes](/tutorial/toh-pt0) application.\n *\n * ### HTTP Request Example\n *\n * ```\n * // GET heroes whose name contains search term\n * searchHeroes(term: string): observable{\n *\n * const params = new HttpParams({fromString: 'name=term'});\n * return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params});\n * }\n * ```\n *\n * Alternatively, the parameter string can be used without invoking HttpParams\n * by directly joining to the URL.\n * ```\n * this.httpClient.request('GET', this.heroesUrl + '?' + 'name=term', {responseType:'json'});\n * ```\n *\n *\n * ### JSONP Example\n * ```\n * requestJsonp(url, callback = 'callback') {\n * return this.httpClient.jsonp(this.heroesURL, callback);\n * }\n * ```\n *\n * ### PATCH Example\n * ```\n * // PATCH one of the heroes' name\n * patchHero (id: number, heroName: string): Observable<{}> {\n * const url = `${this.heroesUrl}/${id}`; // PATCH api/heroes/42\n * return this.httpClient.patch(url, {name: heroName}, httpOptions)\n * .pipe(catchError(this.handleError('patchHero')));\n * }\n * ```\n *\n * @see [HTTP Guide](guide/http)\n * @see [HTTP Request](api/common/http/HttpRequest)\n *\n * @publicApi\n */\nclass HttpClient {\n constructor(handler) {\n this.handler = handler;\n }\n /**\n * Constructs an observable for a generic HTTP request that, when subscribed,\n * fires the request through the chain of registered interceptors and on to the\n * server.\n *\n * You can pass an `HttpRequest` directly as the only parameter. In this case,\n * the call returns an observable of the raw `HttpEvent` stream.\n *\n * Alternatively you can pass an HTTP method as the first parameter,\n * a URL string as the second, and an options hash containing the request body as the third.\n * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the\n * type of returned observable.\n * * The `responseType` value determines how a successful response body is parsed.\n * * If `responseType` is the default `json`, you can pass a type interface for the resulting\n * object as a type parameter to the call.\n *\n * The `observe` value determines the return type, according to what you are interested in\n * observing.\n * * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including\n * progress events by default.\n * * An `observe` value of response returns an observable of `HttpResponse`,\n * where the `T` parameter depends on the `responseType` and any optionally provided type\n * parameter.\n * * An `observe` value of body returns an observable of `` with the same `T` body type.\n *\n */\n request(first, url, options = {}) {\n let req;\n // First, check whether the primary argument is an instance of `HttpRequest`.\n if (first instanceof HttpRequest) {\n // It is. The other arguments must be undefined (per the signatures) and can be\n // ignored.\n req = first;\n }\n else {\n // It's a string, so it represents a URL. Construct a request based on it,\n // and incorporate the remaining arguments (assuming `GET` unless a method is\n // provided.\n // Figure out the headers.\n let headers = undefined;\n if (options.headers instanceof HttpHeaders) {\n headers = options.headers;\n }\n else {\n headers = new HttpHeaders(options.headers);\n }\n // Sort out parameters.\n let params = undefined;\n if (!!options.params) {\n if (options.params instanceof HttpParams) {\n params = options.params;\n }\n else {\n params = new HttpParams({ fromObject: options.params });\n }\n }\n // Construct the request.\n req = new HttpRequest(first, url, (options.body !== undefined ? options.body : null), {\n headers,\n context: options.context,\n params,\n reportProgress: options.reportProgress,\n // By default, JSON is assumed to be returned for all calls.\n responseType: options.responseType || 'json',\n withCredentials: options.withCredentials,\n });\n }\n // Start with an Observable.of() the initial request, and run the handler (which\n // includes all interceptors) inside a concatMap(). This way, the handler runs\n // inside an Observable chain, which causes interceptors to be re-run on every\n // subscription (this also makes retries re-run the handler, including interceptors).\n const events$ = of(req).pipe(concatMap((req) => this.handler.handle(req)));\n // If coming via the API signature which accepts a previously constructed HttpRequest,\n // the only option is to get the event stream. Otherwise, return the event stream if\n // that is what was requested.\n if (first instanceof HttpRequest || options.observe === 'events') {\n return events$;\n }\n // The requested stream contains either the full response or the body. In either\n // case, the first step is to filter the event stream to extract a stream of\n // responses(s).\n const res$ = events$.pipe(filter((event) => event instanceof HttpResponse));\n // Decide which stream to return.\n switch (options.observe || 'body') {\n case 'body':\n // The requested stream is the body. Map the response stream to the response\n // body. This could be done more simply, but a misbehaving interceptor might\n // transform the response body into a different format and ignore the requested\n // responseType. Guard against this by validating that the response is of the\n // requested type.\n switch (req.responseType) {\n case 'arraybuffer':\n return res$.pipe(map((res) => {\n // Validate that the body is an ArrayBuffer.\n if (res.body !== null && !(res.body instanceof ArrayBuffer)) {\n throw new Error('Response is not an ArrayBuffer.');\n }\n return res.body;\n }));\n case 'blob':\n return res$.pipe(map((res) => {\n // Validate that the body is a Blob.\n if (res.body !== null && !(res.body instanceof Blob)) {\n throw new Error('Response is not a Blob.');\n }\n return res.body;\n }));\n case 'text':\n return res$.pipe(map((res) => {\n // Validate that the body is a string.\n if (res.body !== null && typeof res.body !== 'string') {\n throw new Error('Response is not a string.');\n }\n return res.body;\n }));\n case 'json':\n default:\n // No validation needed for JSON responses, as they can be of any type.\n return res$.pipe(map((res) => res.body));\n }\n case 'response':\n // The response stream was requested directly, so return it.\n return res$;\n default:\n // Guard against new future observe types being added.\n throw new Error(`Unreachable: unhandled observe type ${options.observe}}`);\n }\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `DELETE` request to execute on the server. See the individual overloads for\n * details on the return type.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n */\n delete(url, options = {}) {\n return this.request('DELETE', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `GET` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n get(url, options = {}) {\n return this.request('GET', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `HEAD` request to execute on the server. The `HEAD` method returns\n * meta information about the resource without transferring the\n * resource itself. See the individual overloads for\n * details on the return type.\n */\n head(url, options = {}) {\n return this.request('HEAD', url, options);\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes a request with the special method\n * `JSONP` to be dispatched via the interceptor pipeline.\n * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain\n * API endpoints that don't support newer,\n * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol.\n * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the\n * requests even if the API endpoint is not located on the same domain (origin) as the client-side\n * application making the request.\n * The endpoint API must support JSONP callback for JSONP requests to work.\n * The resource API returns the JSON response wrapped in a callback function.\n * You can pass the callback function name as one of the query parameters.\n * Note that JSONP requests can only be used with `GET` requests.\n *\n * @param url The resource URL.\n * @param callbackParam The callback function name.\n *\n */\n jsonp(url, callbackParam) {\n return this.request('JSONP', url, {\n params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),\n observe: 'body',\n responseType: 'json',\n });\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes the configured\n * `OPTIONS` request to execute on the server. This method allows the client\n * to determine the supported HTTP methods and other capabilities of an endpoint,\n * without implying a resource action. See the individual overloads for\n * details on the return type.\n */\n options(url, options = {}) {\n return this.request('OPTIONS', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PATCH` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n patch(url, body, options = {}) {\n return this.request('PATCH', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `POST` request to execute on the server. The server responds with the location of\n * the replaced resource. See the individual overloads for\n * details on the return type.\n */\n post(url, body, options = {}) {\n return this.request('POST', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PUT` request to execute on the server. The `PUT` method replaces an existing resource\n * with a new set of values.\n * See the individual overloads for details on the return type.\n */\n put(url, body, options = {}) {\n return this.request('PUT', url, addBody(options, body));\n }\n}\nHttpClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable });\nHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: HttpClient });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: HttpClient, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: HttpHandler }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * `HttpHandler` which applies an `HttpInterceptor` to an `HttpRequest`.\n *\n *\n */\nclass HttpInterceptorHandler {\n constructor(next, interceptor) {\n this.next = next;\n this.interceptor = interceptor;\n }\n handle(req) {\n return this.interceptor.intercept(req, this.next);\n }\n}\n/**\n * A multi-provider token that represents the array of registered\n * `HttpInterceptor` objects.\n *\n * @publicApi\n */\nconst HTTP_INTERCEPTORS = new InjectionToken('HTTP_INTERCEPTORS');\nclass NoopInterceptor {\n intercept(req, next) {\n return next.handle(req);\n }\n}\nNoopInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NoopInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NoopInterceptor });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NoopInterceptor, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Every request made through JSONP needs a callback name that's unique across the\n// whole page. Each request is assigned an id and the callback name is constructed\n// from that. The next id to be assigned is tracked in a global variable here that\n// is shared among all applications on the page.\nlet nextRequestId = 0;\n// Error text given when a JSONP script is injected, but doesn't invoke the callback\n// passed in its URL.\nconst JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';\n// Error text given when a request is passed to the JsonpClientBackend that doesn't\n// have a request method JSONP.\nconst JSONP_ERR_WRONG_METHOD = 'JSONP requests must use JSONP request method.';\nconst JSONP_ERR_WRONG_RESPONSE_TYPE = 'JSONP requests must use Json response type.';\n/**\n * DI token/abstract type representing a map of JSONP callbacks.\n *\n * In the browser, this should always be the `window` object.\n *\n *\n */\nclass JsonpCallbackContext {\n}\n/**\n * Processes an `HttpRequest` with the JSONP method,\n * by performing JSONP style requests.\n * @see `HttpHandler`\n * @see `HttpXhrBackend`\n *\n * @publicApi\n */\nclass JsonpClientBackend {\n constructor(callbackMap, document) {\n this.callbackMap = callbackMap;\n this.document = document;\n /**\n * A resolved promise that can be used to schedule microtasks in the event handlers.\n */\n this.resolvedPromise = Promise.resolve();\n }\n /**\n * Get the name of the next callback method, by incrementing the global `nextRequestId`.\n */\n nextCallback() {\n return `ng_jsonp_callback_${nextRequestId++}`;\n }\n /**\n * Processes a JSONP request and returns an event stream of the results.\n * @param req The request object.\n * @returns An observable of the response events.\n *\n */\n handle(req) {\n // Firstly, check both the method and response type. If either doesn't match\n // then the request was improperly routed here and cannot be handled.\n if (req.method !== 'JSONP') {\n throw new Error(JSONP_ERR_WRONG_METHOD);\n }\n else if (req.responseType !== 'json') {\n throw new Error(JSONP_ERR_WRONG_RESPONSE_TYPE);\n }\n // Everything else happens inside the Observable boundary.\n return new Observable((observer) => {\n // The first step to make a request is to generate the callback name, and replace the\n // callback placeholder in the URL with the name. Care has to be taken here to ensure\n // a trailing &, if matched, gets inserted back into the URL in the correct place.\n const callback = this.nextCallback();\n const url = req.urlWithParams.replace(/=JSONP_CALLBACK(&|$)/, `=${callback}$1`);\n // Construct the