{"version":3,"mappings":"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AAI5R,EAAc2kK,SAAUr9J,sDApc1H1L,IAAUtE,8GAAVsE,GAAUvE,QAAVuE,GAAU,qBAFT,SAEDA,IAAb,mDCjCA,IAAY1I,EAKX,MALD,OAAYoE,QAAQ,KAClBA,iBACAA,mBACAA,qBACAA,qBAJUpE,EAAZ,IAAYoE,GAKX,mDCLD,IAAYpE,EAiPX,MAjPD,OAAYoE,QAAS,KACnBA,uBAGAA,+CACAA,+BACAA,yCACAA,mCACAA,yDACAA,iCACAA,2CACAA,iDACAA,6CACAA,sCACAA,wCACAA,wCACAA,8CACAA,kCACAA,sCACAA,0CACAA,oDACAA,kDACAA,0CACAA,wCACAA,kCACAA,0CACAA,kCACAA,gCACAA,wCACAA,gCACAA,wCACAA,gDACAA,8CACAA,oCACAA,gDACAA,wCACAA,wCACAA,wCACAA,kCACAA,kCACAA,0CACAA,8CACAA,oCACAA,wDAGAA,0DAGAA,8BACAA,gCACAA,kCACAA,sCACAA,0CACAA,sCACAA,sCACAA,4BACAA,gDACAA,4CACAA,0CACAA,8CACAA,oCAGAA,0DACAA,0DACAA,wDACAA,wDACAA,sCACAA,oDACAA,oDACAA,oDAEAA,0DACAA,oDACAA,0CACAA,gEACAA,kDACAA,sDACAA,sDACAA,8EACAA,4DACAA,wDACAA,sDACAA,gDACAA,wDACAA,sEACAA,wEACAA,sDACAA,8CACAA,gEACAA,sEACAA,8DACAA,oDACAA,gDACAA,gEACAA,gDACAA,gDACAA,oDACAA,4CACAA,wDACAA,sDACAA,wCACAA,4DACAA,sDACAA,gFACAA,wDACAA,kEACAA,oDAGAA,oDACAA,yDACAA,qEACAA,+DACAA,mDACAA,mDACAA,mDACAA,uDACAA,6EACAA,iEACAA,6DACAA,+CACAA,6CACAA,6CACAA,+CACAA,6CACAA,qCAGAA,2CACAA,+CACAA,yCACAA,6CACAA,6CACAA,iDACAA,6CAEAA,+BACAA,mDAEAA,yCACAA,6CACAA,2CACAA,qCACAA,yCACAA,yCACAA,6CAEAA,iDACAA,+CACAA,uDACAA,qDACAA,+CACAA,qDACAA,mDACAA,mDACAA,+CAC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","names":["e","G","Te","C","Q","O","type","name","definitions","options","styles","timings","steps","offset","re","expr","animation","selector","Promise","resolve","then","constructor","this","totalTime","_onFinish","_finished","_onDoneFns","forEach","onStart","_onStartFns","push","onDone","onDestroy","_onDestroyFns","hasStarted","_started","init","play","_onStart","triggerMicrotask","ie","pause","restart","finish","destroy","_destroyed","reset","setPosition","_position","getPosition","triggerCallback","L","length","players","le","he","Ee","_onDestroy","reduce","Ce","Math","max","parentPlayer","min","beforeDestroy","z","providedIn","factory","t","d","_","D","documentElement","dir","I","body","value","ngOnDestroy","change","complete","p","m","_e","subscriber","counter","period","N","next","q","schedule","ye","hasOwnProperty","style","touchAction","webkitUserDrag","webkitTapHighlightColor","userSelect","msUserSelect","webkitUserSelect","MozUserSelect","toLowerCase","indexOf","parseFloat","getPropertyValue","split","map","trim","getBoundingClientRect","top","right","bottom","left","width","height","ze","qe","gt","Qt","xt","jt","Bt","vt","Map","clear","positions","cache","set","_document","scrollPosition","_viewportRuler","getViewportScrollPosition","scrollTop","scrollLeft","clientRect","handleScroll","target","get","contains","Ve","cloneNode","querySelectorAll","nodeName","removeAttribute","$e","Ze","Y","We","getContext","drawImage","Qe","g","passive","Le","x","y","T","Set","_moveEvents","beforeStarted","_handles","find","_disabledHandles","has","disabled","_initializeDragSequence","_rootElement","preventDefault","_getPointerPositionOnPage","_hasStartedDragging","abs","_pickupPositionOnPage","_config","dragStartThreshold","Date","now","_dragStartTime","_getDragStartDelay","_endDragSequence","_dropContainer","isDragging","_ngZone","run","_startDragSequence","_boundaryElement","_previewRect","_preview","_getConstrainedPointerPosition","_hasMoved","_lastKnownPointerPosition","_updatePointerDirectionDelta","_updateActiveDropContainer","_activeTransform","_passiveTransform","_applyRootElementTransform","SVGElement","setAttribute","observers","source","pointerPosition","event","distance","_getDragDistance","delta","_pointerDirectionDelta","withRootElement","_parentPositions","k","registerDragItem","_disabled","_toggleNativeDragInteractions","getPlaceholderElement","_placeholder","getRootElement","getVisibleElement","withHandles","withPreviewTemplate","_previewTemplate","withPlaceholderTemplate","_placeholderTemplate","_removeRootElementListeners","runOutsideAngular","addEventListener","_pointerDown","_initialTransform","_ownerSVGElement","ownerSVGElement","withBoundaryElement","_resizeSubscription","unsubscribe","subscribe","_containInsideBoundaryOnResize","dispose","nt","_anchor","_destroyPreview","_destroyPlaceholder","_dragDropRegistry","removeDragItem","_removeSubscriptions","started","released","ended","entered","exited","dropped","transform","disableHandle","add","enableHandle","delete","withDirection","_direction","_withDropContainer","getFreeDragPosition","setFreeDragPosition","_sortFromLastPointerPosition","_pointerMoveSubscription","_pointerUpSubscription","_scrollSubscription","_previewRef","_placeholderRef","stopDragging","_rootElementTapHighlight","_stopScrolling","_animatePreviewToPlaceholder","_cleanupDragArtifacts","_cleanupCachedDimensions","kt","_lastTouchEventTime","parentNode","_createPreviewElement","_createPlaceholderElement","createComment","insertBefore","display","appendChild","replaceChild","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","start","_initialContainer","_initialIndex","getItemIndex","getScrollableParents","stopPropagation","button","draggable","pointerMove","_pointerMove","pointerUp","_pointerUp","scroll","_updateOnScroll","_boundaryRect","_pickupPositionInElement","template","matchSize","_getPointerPositionInElement","_pointerPositionAtLastDirectionChange","startDragging","_isOverContainer","item","currentIndex","previousIndex","container","previousContainer","isPointerOverContainer","drop","_getSiblingContainerFromPosition","exit","enter","sortingDisabled","_startScrollingIfNecessary","_sortItem","st","previewClass","viewContainer","createEmbeddedView","context","detectChanges","Wt","gn","fe","pointerEvents","margin","position","zIndex","classList","Array","isArray","getComputedStyle","propertyName","removeEventListener","clearTimeout","setTimeout","targetTouches","_getViewportScrollPosition","pageX","pageY","touches","changedTouches","getScreenCTM","createSVGPoint","matrixTransform","inverse","lockAxis","constrainPosition","ut","pointerDirectionChangeThreshold","_nativeInteractionsEnabled","dragStartDelay","touch","mouse","round","removeChild","rootNodes","nodeType","ELEMENT_NODE","createElement","drag","overlaps","u","b","pipe","_stopScrollTimers","_scrollNode","_verticalScrollDirection","Nn","_horizontalScrollDirection","St","element","withScrollableParents","registerDropContainer","_viewportScrollSubscription","sorted","_activeSiblings","removeDropContainer","_isDragging","_initialScrollSnap","msScrollSnapType","scrollSnapType","_cacheItems","_siblings","_startReceiving","_listenToScrollEvents","_draggables","_getItemIndexFromPointerPosition","_activeDraggables","splice","parentElement","_shouldEnterAsFirstChild","unshift","_cacheItemPositions","_cacheParentPositions","_reset","withItems","filter","every","connectedTo","slice","withOrientation","_orientation","_scrollableElements","Gn","_itemPositions","reverse","isReceiving","size","be","_clientRect","qt","In","an","_getItemOffsetPx","Dn","_getSiblingOffsetPx","Ut","clamp","En","kn","jn","Kn","Se","_previousSwap","autoScrollDisabled","rt","me","scrollHeight","clientHeight","scrollWidth","clientWidth","Ne","getViewportSize","window","_startScrollInterval","sort","_stopReceiving","floor","_canReceive","enterPredicate","_getShadowRoot","elementFromPoint","_cachedShadowRoot","scrollBy","H","capture","w","_activeDragInstances","_dropInstances","_dragInstances","_persistentTouchmoveListener","startsWith","_globalListeners","handler","_preventDefaultWhileDragging","_clearGlobalListeners","E","F","createDrag","it","createDropList","_n","Pe","pt","Ke","mt","Ie","_t","_dropListRef","data","_assignDefaults","_setupInputSyncSubscription","_handleEvents","_dropLists","_items","_group","addItem","_unsortedItems","_syncItemsWithRef","removeItem","getSortedItems","from","_dragRef","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","_dir","$","id","_scrollableParentsResolved","_scrollDispatcher","getAncestorScrollContainers","getElementRef","nativeElement","orientation","_changeDetectorRef","markForCheck","emit","draggingDisabled","listAutoScrollDisabled","listOrientation","Ct","zt","_parentDrag","_stateChanges","selectors","tn","wn","Pn","Rn","moved","_syncInputs","dropContainer","ngAfterViewInit","onStable","_updateRootElement","changes","_selfHandle","rootElementSelector","R","freeDragPosition","ngOnChanges","firstChange","Bn","_getBoundaryElement","boundaryElement","templateRef","_viewContainerRef","matches","msMatchesSelector","dt","imports","Intl","v8BreakIterator","ee","_platformId","document","isBrowser","test","navigator","userAgent","chrome","CSS","EDGE","TRIDENT","BLINK","WEBKIT","Object","defineProperty","Element","prototype","scrollTo","toString","overflow","visibility","head","createShadowRoot","attachShadow","getRootNode","ShadowRoot","arguments","call","on","off","addListener","removeListener","TypeError","U","setImmediate","clearImmediate","flush","active","scheduled","actions","shift","execute","state","delay","super","requestAsyncId","bind","recycleAsyncId","lift","compare","keySelector","_next","destination","error","hasKey","key","durationSelector","hasValue","throttled","closed","clearThrottle","remove","notifyNext","notifyComplete","index","Number","yt","hasPrev","prev","connect","_data","observableOf","disconnect","applyChanges","forEachOperation","_insertView","_detachAndCacheView","_moveView","operation","record","detach","_viewCache","_insertViewFromCache","$implicit","_detachView","_maybeCacheView","move","viewCacheSize","pop","insert","_scrolledIndexChange","_itemSize","_minBufferPx","_maxBufferPx","attach","_viewport","_updateTotalContentSize","_updateRenderedRange","updateItemAndBufferSize","onContentScrolled","onDataLengthChanged","onContentRendered","onRenderedOffsetChanged","scrollToIndex","scrollToOffset","setTotalContentSize","getDataLength","getRenderedRange","end","measureScrollOffset","ceil","setRenderedRange","setRenderedContentOffset","_scrollStrategy","itemSize","minBufferPx","maxBufferPx","features","register","scrollContainers","elementScrolled","_scrolled","deregister","scrolled","_platform","_globalSubscription","_addGlobalListener","_scrolledCount","_removeGlobalListener","ancestorScrolled","_scrollableContainsElement","_getDocument","_getWindow","defaultView","Je","ngZone","elementRef","ngOnInit","scrollDispatcher","_elementScrolled","rn","_applyScrollToOptions","_change","_changeListener","_updateViewportSize","_viewportSize","getViewportRect","scrollY","scrollX","innerWidth","innerHeight","requestAnimationFrame","scrolledIndexChange","_renderedRangeSubject","_viewportChanges","checkViewportSize","_calculateSpacerSize","_measureViewportSize","_markChangeDetectionNeeded","_detachedSubject","_forOf","dataStream","_dataLength","_doChangeDetection","_renderedRange","_totalContentSize","getOffsetToRenderedContentStart","_renderedContentOffsetNeedsRewrite","_renderedContentOffset","_renderedContentTransform","measureRenderedContentSize","behavior","_contentWrapper","offsetWidth","offsetHeight","measureRangeSize","_runAfterChangeDetection","_isChangeDetectionPending","_totalContentHeight","_totalContentWidth","hostAttrs","hostVars","inputs","outputs","Yn","_dataSourceChanges","Jt","_changeDataSource","_onRenderedDataChange","renderedRangeStream","viewChange","_cdkVirtualForOf","_cdkVirtualForTrackBy","_needsUpdate","_template","_viewRepeater","ngDoCheck","_differ","diff","_renderedItems","_applyChanges","_updateContext","_differs","create","cdkVirtualForTrackBy","count","_updateComputedContextProperties","_getEmbeddedViewArgs","forEachIdentityChange","first","last","even","odd","cdkVirtualForOf","Ft","isNaN","ne","historyGo","ae","Error","_init","location","_history","history","getBaseHrefFromDOM","getBaseHref","_doc","onPopState","He","getGlobalEventTarget","onHashChange","href","protocol","hostname","port","pathname","search","hash","pushState","et","replaceState","forward","back","go","getState","De","endsWith","substring","match","origin","_platformLocation","_baseHref","_removeListenerFns","prepareExternalUrl","path","Et","It","_platformStrategy","_subject","url","normalize","isCurrentPathEqualTo","stripTrailingSlash","_notifyUrlChangeListeners","onUrlChange","_urlChangeListeners","_urlChangeSubscription","replace","CurrencyDecimal","Decimal","CurrencyGroup","Group","en","hours","minutes","te","setUTCFullYear","setFullYear","setUTCHours","setHours","K","Z","Mt","exec","concat","xe","getTimezoneOffset","getTime","setMinutes","getMinutes","ht","Eras","Abbreviated","Wide","Narrow","FullYear","Month","Months","Standalone","Day","Days","Short","DayPeriods","Format","Hours","Minutes","Seconds","FractionalSeconds","Extended","ShortGMT","Long","Medium","Full","String","substr","getFullYear","getMonth","getDate","getHours","getSeconds","getMilliseconds","getDay","MinusSign","hn","mn","findIndex","Vt","Nt","Jn","Qi","ai","parse","valueOf","ve","Fe","getPluralCategory","locale","Zero","One","Two","Few","Many","encodeURIComponent","decodeURIComponent","At","_removeClasses","_initialClasses","_applyClasses","_rawClass","_iterableDiffer","_keyValueDiffer","isListLikeIterable","_iterableDiffers","_keyValueDiffers","_applyIterableChanges","_applyKeyValueChanges","forEachAddedItem","_toggleClass","currentValue","forEachChangedItem","forEachRemovedItem","previousValue","stringify","keys","_renderer","addClass","_ngEl","removeClass","se","_ngForOf","_ngForOfDirty","_trackByFn","ngForTrackBy","Ae","_viewContainer","Me","ce","_perViewChange","view","ngForOf","ct","Ot","_thenTemplateRef","_context","ngIf","_updateView","Xt","_thenViewRef","_elseTemplateRef","_elseViewRef","_created","_templateRef","enforceState","Vn","_ngSwitch","_caseCount","_updateDefaultCases","_addCase","_addDefault","_defaultViews","_matchCase","_lastCasesMatched","_lastCaseCheckIndex","_defaultUsed","Fn","_view","yn","ngSwitch","ngSwitchCase","Ti","_ngStyle","_setStyle","setStyle","removeStyle","Ai","ngTemplateOutlet","_viewRef","ngTemplateOutletContext","Ir","_i","message","cr","providers","provide","useClass","yr","br","token","Li","setOffset","getScrollPosition","supportsScrolling","pageXOffset","pageYOffset","scrollToPosition","scrollToAnchor","getElementById","getElementsByName","createTreeWalker","NodeFilter","SHOW_ELEMENT","currentNode","shadowRoot","querySelector","nextNode","Ss","scrollToElement","attemptFocus","setHistoryScrollRestoration","supportScrollRestoration","scrollRestoration","focus","activeElement","Fr","getPrototypeOf","writable","getOwnPropertyDescriptor","lazyInit","headers","maybeSetNormalizedName","normalizedNames","values","getAll","append","clone","op","copyFrom","lazyUpdate","applyUpdate","encodeKey","encodeValue","decodeKey","decodeValue","encoder","fromString","fromObject","param","appendAll","join","cloneFrom","updates","defaultValue","ArrayBuffer","Blob","FormData","method","toUpperCase","reportProgress","withCredentials","responseType","params","urlWithParams","serializeBody","URLSearchParams","JSON","detectContentTypeHeader","setHeaders","setParams","status","statusText","ok","ResponseHeader","Response","observe","request","handle","jsonp","patch","post","put","interceptor","intercept","xhrFactory","build","open","setRequestHeader","getAllResponseHeaders","responseURL","getResponseHeader","response","responseText","text","DownloadProgress","loaded","lengthComputable","total","partialText","UploadProgress","upload","send","Sent","readyState","DONE","abort","dn","getToken","platform","doc","cookie","lastCookieString","parseCount","lastToken","parseCookieValue","cookieName","tokenService","headerName","chain","injector","reduceRight","backend","disable","ngModule","useValue","useExisting","multi","n","i","r","overriddenName","__forward_ref__","V","s","ngInjectableDef","ngInjectorDef","Optional","globalThis","self","WorkerGlobalScope","global","__NG_ELEMENT_ID__","providersResolver","decls","vars","consts","ngContentSelectors","hostBindings","contentQueries","declaredInputs","exportAs","onPush","changeDetection","OnPush","directiveDefs","pipeDefs","viewQuery","encapsulation","Emulated","setInput","schemas","tView","l","directives","c","v","pipes","S","bootstrap","declarations","exports","transitiveCompileScopes","pure","flags","isFirstChange","Ts","bs","es","current","previous","Cr","Js","P","Xr","ngInherit","listen","createRenderer","Qs","bi","cn","lFrame","ia","bindingsEnabled","isInCheckNoChangesMode","lView","contextLView","Es","parent","currentTNode","isParent","bindingRootIndex","bindingStartIndex","bindingIndex","no","currentDirectiveIndex","currentQueryIndex","declTNode","SkipSelf","Host","na","Vl","firstChild","inI18n","child","selectedIndex","elementDepthCount","currentNamespace","ir","ra","directiveStart","directiveEnd","ngAfterContentInit","ngAfterContentChecked","ngAfterViewChecked","contentHooks","contentCheckHooks","viewHooks","J","viewCheckHooks","pe","destroyHooks","Vr","Zl","canSeeViewProviders","injectImpl","setAttributeNS","lo","setProperty","charCodeAt","Fa","aa","Er","Zt","po","firstCreatePass","injectorIndex","la","blueprint","ei","Ro","ts","uo","Gt","Self","Ni","Default","mo","M","xo","fo","de","X","Be","hr","Os","Oe","di","Pt","B","A","providerIndexes","Ge","tt","at","Oi","nn","Gl","resolving","ho","preOrderHooks","preOrderCheckHooks","Na","_tNode","_lView","ot","Ui","classes","attrs","oa","Ba","Zn","apply","annotation","ngMetadataName","annotationCls","_desc","Nd","Wn","pi","Function","pr","Ur","ks","Vd","su","da","zl","Fo","jd","jl","Jl","ha","Jd","Yl","vi","Qd","charAt","cu","Vo","Bo","Gi","is","Ns","Qa","policy","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","ql","changingThisBreaksApplicationSecurity","yo","getTypeName","fu","rh","sh","oh","ah","lh","getInertBodyElement","DOMParser","parseFromString","Zo","inertDocumentHelper","inertDocument","defaultDoc","implementation","createHTMLDocument","innerHTML","documentMode","stripCustomNsAttrs","attributes","nextSibling","mh","_h","_u","Zr","vu","yu","ic","fa","rc","Ka","Cu","vh","sanitizeChildren","startElement","TEXT_NODE","chars","nodeValue","sanitizedSomething","endElement","checkClobberedElement","buf","pa","bu","DOCUMENT_POSITION_CONTAINED_BY","outerHTML","Ch","bh","$a","fh","gh","gu","tc","yh","sc","Th","content","gi","ga","Go","sanitize","HTML","Wo","rs","Tu","URL","ec","RESOURCE_URL","Du","ma","console","handleError","_findOriginalError","_findContext","Rh","_console","Xa","Lu","ownerDocument","Wr","fc","ni","Gu","$t","Rt","ln","Ln","zr","destroyNode","jo","Jo","zu","createElementNS","Ii","o","Is","Vh","detachView","oe","Zh","je","cleanup","Ue","None","bt","ui","lt","Un","vn","Dr","sr","gc","zi","Ca","projection","Wi","Mr","Fs","projectionNext","cssText","className","xi","Sn","Co","Ls","xr","jr","Jr","qi","Cc","mi","wg","An","Mg","Hn","Ri","qs","ki","Oo","Ei","ta","Pi","Ks","insertBeforeIndex","directiveStylingLast","propertyBindings","mergedAttrs","localNames","initialInputs","tViews","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","rC","qh","ws","io","ap","Bg","staticContentQueries","Lg","staticViewQueries","components","TC","tC","incompleteFirstPass","xs","Xs","dr","mc","_c","CC","rl","yC","hostBindingOpCodes","Br","Xy","bC","eC","firstUpdatePass","begin","Tc","ri","Pa","qn","mC","_C","dC","Jg","hC","Ku","iC","queries","fill","expandoStartIndex","directiveRegistry","pipeRegistry","Xg","em","im","aC","oC","Qo","ko","Qg","pC","Yg","il","co","Kg","gC","vC","Wg","sC","fC","uC","jg","Hg","$u","bc","np","ip","SC","uc","nC","sp","MC","ya","setValue","textContent","Wu","INJECTOR","Sc","Ec","OC","lp","rm","IC","sm","processProvider","processInjectorType","records","ol","scope","assertNotDestroyed","injectorDefTypes","Lo","injectableDefInScope","cp","hydrate","lu","_resolveInjectorDefTypes","al","lm","am","vo","Rs","warn","RC","useFactory","FC","deps","NC","BC","cm","om","PC","Zi","wm","mp","ib","tb","nb","gp","eb","ii","Xu","Symbol","iterator","getOwnPropertyNames","entries","wrapped","as","isWrapped","_p","ll","Xi","Ta","Ms","Bs","li","vp","Bi","nl","tp","embeddedTView","cb","ur","mr","$g","Xh","ep","Ar","Sp","yc","qu","elementStart","kb","Io","fn","sn","Vg","Xn","elementEnd","oo","Ep","Po","wp","Dp","Nb","Mp","xp","Op","qm","ft","Lt","Dt","un","Tn","Fb","__ngLastListenerFn__","__ngNextListenerFn__","Ip","zn","Tt","Hi","$r","e_","Pp","rp","t_","returnValue","Ra","Hl","tl","Zy","Lb","ba","Rp","ul","kp","dl","Np","ss","bo","Hb","zh","Gh","Vi","textEnd","keyEnd","valueEnd","Wb","yl","zb","__","v_","jb","Fp","Lp","us","T_","Jb","g_","Gb","p_","Ub","fr","Hs","f_","Zb","Tr","b_","S_","e1","w_","C_","Xb","qb","ea","Ac","Bp","Yb","Kb","$b","Qb","Ju","Wh","jy","h_","Vb","Bb","nd","Ag","E_","xg","DashCase","removeProperty","Important","ju","ru","createText","createTextNode","vc","Vp","So","Hp","Qr","fl","Up","Zp","Sa","Cl","T1","W_","b1","Gp","Cn","PluralCase","ng","common","locales","rd","z_","resolveProvider","xc","Yp","Qp","componentProviders","gv","yT","vT","_T","providerFactory","LC","Kp","mT","yv","resolveComponentFactory","vv","Us","Ea","bT","ET","Tl","wT","MT","xT","qp","major","minor","Tv","bv","supports","Dc","PT","OT","forEachItem","_itHead","_removalsHead","wv","_nextRemoved","forEachPreviousItem","_previousItHead","_nextPrevious","_additionsHead","_nextAdded","forEachMovedItem","_movesHead","_nextMoved","_identityChangesHead","_nextIdentityChange","check","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","done","lb","_truncate","collection","isDirty","_additionsTail","_movesTail","_removalsTail","_identityChangesTail","_itTail","_prev","_remove","_unlinkedRecords","_reinsertAfter","_linkedRecords","_moveAfter","_addAfter","IT","_addToMoves","_addToRemovals","_unlink","_prevRemoved","_insertAfter","Ev","_head","_tail","_nextDup","_prevDup","RT","kT","_changesHead","_mapHead","_previousMapHead","_nextChanged","_appendAfter","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","_records","_changesTail","NT","_addToAdditions","_addToChanges","dd","Sv","factories","Mv","FT","hd","Dv","xv","pd","_appRef","_attachedToViewContainer","h","Gg","_cdRefInjectingView","reattach","checkNoChanges","hi","wC","attachToViewContainerRef","detachFromAppRef","attachToAppRef","kc","qg","DC","VT","R3_ViewRef","ZT","HT","GT","zT","jT","QT","fd","Nc","YT","KT","_declarationTContainer","_declarationLView","XT","Iv","gd","tS","Ov","_hostTNode","_hostLView","Pv","_lContainer","createComponent","parentInjector","wa","hostView","_adjustIndex","Ga","f","insertView","Hh","Xp","R3ViewRef","bn","Dl","viewEngine_ComponentFactoryResolver","ComponentFactory","propName","templateName","$S","viewEngine_ComponentFactory","componentType","Gy","isBoundToModule","Xv","componentDef","qS","ud","selectRootElement","ShadowDom","Zg","getNamespace","scheduler","clean","playerHandler","Em","Tm","full","zy","cC","Sm","XC","ComponentRef","instance","changeDetectorRef","LT","_rootLView","Ml","viewEngine_NgModuleRef","ComponentFactoryResolver","Wp","_bootstrapComponents","Gr","_r3Injector","componentFactoryResolver","THROW_IF_NOT_FOUND","destroyed","destroyCbs","viewEngine_NgModuleFactory","t0","nE","NgModuleRef","moduleType","fi","Vs","Mc","Gc","h0","p0","ed","f0","g0","m0","getPipeDef","ub","unwrap","unwrapValue","Wc","Zs","__isAsync","ff","_results","Cd","hE","_changes","some","toArray","dirty","_changesDetected","Ld","notifyOnChanges","_emitDistinctChangesOnly","setDirty","gf","queryList","getByIndex","indexInDeclarationView","mf","dirtyQueriesWithMatches","M0","_f","track","_declarationNodeIndex","isApplyingToNode","matchTNode","_appliesToNextNode","crossesNgTemplate","addMatch","vf","metadata","predicate","matchTNodeWithReadOption","gE","ViewEngine_TemplateRef","read","ViewEngine_ElementRef","mE","vE","_E","C0","yf","Ia","Cv","D0","y0","w0","CE","wf","Al","cd","donePromise","reject","runInitializers","initialized","appInits","Ap","all","catch","j0","JE","Df","fromCharCode","random","J0","Q0","Y0","K0","log","LOCALE_ID","$0","Mf","NgModuleFactoryR3","KE","$E","q0","ComponentFactoryR3","YE","qE","XE","Jc","clearCache","clearCacheFor","getModuleId","nw","Zone","scheduleMicroTask","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","fork","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","cancelAnimationFrame","__symbol__","nativeCancelAnimationFrame","iw","isCheckStableRunning","fakeTopEventTask","root","scheduleEventTask","Of","Af","invoke","sw","properties","isAngularZone","onInvokeTask","invokeTask","ey","onInvoke","onHasTask","hasTask","_hasPendingMicrotasks","microTask","hasPendingMacrotasks","macroTask","onHandleError","onError","ow","assertInAngularZone","Or","isInAngularZone","runTask","rw","cancelTask","runGuarded","hasPendingMicrotasks","isStable","onMicrotaskEmpty","onUnstable","ty","_watchAngularEvents","taskTrackingZone","_didWork","_isZoneStable","assertNotInAngularZone","xf","_runCallbacksIfReady","increasePendingRequestCount","_pendingCount","decreasePendingRequestCount","_callbacks","timeoutId","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","whenStable","getPendingRequestCount","findProviders","ny","Pf","addToWindow","registerApplication","_applications","unregisterApplication","unregisterAllApplications","getTestability","getAllTestabilities","getAllRootElements","findTestabilityInTree","lw","iy","ry","ps","oy","ly","cy","vw","yw","bootstrapModuleFactory","aw","ngZoneEventCoalescing","ngZoneRunCoalescing","Cw","If","_modules","bw","_moduleDoBootstrap","bootstrapModule","uy","R3NgModuleFactory","dw","Qc","ngDoBootstrap","_destroyListeners","_injector","_onMicrotaskEmptySubscription","_zone","tick","_stable","merge","_initStatus","_v","_componentFactoryResolver","componentTypes","gw","NULL","_loadComponent","_runningTick","_views","_exceptionHandler","attachView","_bootstrapListeners","Dw","factoryPathPrefix","factoryPathSuffix","Mw","load","loadAndCompile","a","fy","_compiler","compileModuleAsync","loadFactory","Nw","Lw","ay","Zw","$localize","Ww","_elementRef","registerOnTouched","onTouched","registerOnChange","onChange","setDisabledState","writeValue","_compositionMode","getDOM","getUserAgent","_handleInput","_composing","_compositionStart","_compositionEnd","isPromise","isObservable","validate","includes","control","valid","invalid","pending","enabled","errors","pristine","touched","untouched","statusChanges","valueChanges","_setValidators","_rawValidators","_composedValidatorFn","_setAsyncValidators","_rawAsyncValidators","_composedAsyncValidatorFn","_registerOnDestroy","_onDestroyCallbacks","_invokeOnDestroyCallbacks","hasError","getError","formDirective","_cd","submitted","validator","setValidators","asyncValidator","setAsyncValidators","updateValueAndValidity","valueAccessor","_pendingValue","_pendingChange","_pendingDirty","updateOn","viewToModelUpdate","_unregisterOnChange","_pendingTouched","markAsTouched","registerOnDisabledChange","_unregisterOnDisabledChange","registerOnValidatorChange","markAsDirty","emitModelToViewChange","validators","asyncValidators","_parent","_updateOn","addValidators","addAsyncValidators","removeValidators","removeAsyncValidators","hasValidator","hasAsyncValidator","clearValidators","clearAsyncValidators","onlySelf","markAllAsTouched","_forEachChild","markAsUntouched","_updateTouched","markAsPristine","_updatePristine","markAsPending","emitEvent","_parentMarkedDirty","_updateValue","_updateAncestors","skipPristineCheck","_onDisabledChange","enable","setParent","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","_allControlsDisabled","_hasOwnPendingAsyncValidator","_asyncValidationSubscription","setErrors","_updateControlsErrors","j","controls","W","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_isBoxedValue","_registerOnCollectionChange","_onCollectionChange","_setUpdateStrategy","_applyFormState","_onChange","emitViewToModelChange","patchValue","_syncPendingControls","_setUpControls","registerControl","addControl","removeControl","setControl","_checkAllValuesPresent","_throwIfControlMissing","getRawValue","_reduceChildren","_reduceValue","_registerControl","removeAt","resolvedPromise","_checkForErrors","_registered","_setUpControl","_updateDisabled","model","viewModel","update","_isStandalone","_setUpStandalone","standalone","_checkParentType","_checkName","isDisabled","Ci","InternalFormsSharedModule","DomAdapter","makeCurrent","setRootDomAdapter","onAndCancel","ke","ue","dispatchEvent","getDefaultDocument","createHtmlDocument","isElementNode","isShadowRoot","DocumentFragment","getAttribute","resetBaseElement","getCookie","Xe","Yt","host","XMLHttpRequest","manager","_plugins","_findPluginFor","addGlobalEventListener","getZone","_eventNameToPlugin","addStyles","_stylesSet","onStylesAdded","getAllStyles","_hostNodes","_addStylesToHost","addHost","removeHost","svg","xhtml","xlink","xml","xmlns","defaultRenderer","rendererByCompId","eventManager","sharedStylesHost","appId","applyToHost","removeAttributeNS","contentAttr","hostAttr","mode","nodeOrShadowRoot","hostEl","Del","Esc","Left","Right","Down","Menu","Scroll","Win","alt","altKey","ctrlKey","meta","metaKey","shiftKey","parseEventName","eventCallback","fullKey","domEventName","_normalizeKey","keyIdentifier","parseInt","getEventFullKey","allowSanitizationBypassOrThrow","unwrapSafeValue","_sanitizeHtml","getSanitizationBypassType","_sanitizeUrl","bypassSecurityTrustHtml","bypassSanitizationTrustHtml","bypassSecurityTrustStyle","bypassSanitizationTrustStyle","bypassSecurityTrustScript","bypassSanitizationTrustScript","bypassSecurityTrustUrl","bypassSanitizationTrustUrl","bypassSecurityTrustResourceUrl","bypassSanitizationTrustResourceUrl","PLATFORM_BROWSER_ID","INJECTOR_SCOPE","getTitle","title","setTitle","getValue","_subscribe","_value","thrownError","notifyError","outerValue","outerIndex","_error","_complete","resultSelector","observables","toRespond","Ye","_tryResultSelector","accumulator","seed","hasSeed","_seed","_tryNext","ring","callback","navigationTrigger","restoredState","urlAfterRedirects","shouldActivate","route","snapshot","routeConfig","anchor","pathMatch","hasChildren","consumed","posParams","exact","segments","numberOfChildren","children","subset","ignored","paths","matrixParams","queryParams","fragment","parameters","_queryParamMap","serialize","_parameterMap","parseRootSegment","parseQueryParams","parseFragment","we","encodeURI","Re","remaining","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","parseParens","parseMatrixParams","parseParam","_root","pathFromRoot","siblings","outlet","nr","Gs","wt","_futureSnapshot","_routerState","_paramMap","component","_resolvedData","Kt","Mn","_urlSegment","_lastPathIndex","_resolve","ms","_r","shouldReuseRoute","vr","ys","shouldAttach","retrieve","vs","outlets","segmentPath","Ws","Si","Fi","toRoot","isAbsolute","commands","pathIndex","commandIndex","$i","lr","activate","futureState","currState","deactivateChildRoutes","Pr","activateChildRoutes","deactivateRoutes","deactivateRouteAndItsChildren","routeReuseStrategy","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","onOutletDeactivated","store","componentRef","contexts","deactivate","attachRef","resolver","activateRoutes","forwardEvent","getOrCreateContext","onOutletReAttached","_loadedConfig","kr","module","activateWith","loadChildren","EmptyOutletComponent","matched","consumedSegments","lastChild","positionalParamSegments","matcher","_sourceSegment","_segmentIndexShift","segmentGroup","slicedSegments","Ys","urlTree","config","expandSegmentGroup","createUrlTree","allowRedirects","noMatchError","expandChildren","expandSegment","segment","expandSegmentAgainstRoute","redirectTo","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","noMatch","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","Oa","lineralizeSegments","$n","configLoader","getChildConfig","routes","rr","Hr","ns","wr","Nr","runCanLoadGuards","canLoad","si","urlSerializer","Nl","applyRedirectCreatreUrlTree","createSegmentGroup","createQueryParams","createSegments","findPosParam","findOrReturn","Ds","canDeactivateChecks","canActivateChecks","runGuardsAndResolvers","isActivated","$s","recognize","relativeLinkResolution","processSegmentGroup","freeze","rootComponentType","inheritParamsAndData","paramsInheritanceStrategy","processChildren","processSegment","localeCompare","processSegmentAgainstRoute","Ao","_loader$","onLoadStartListener","loadModuleFactory","onLoadEndListener","loader","compiler","onChildOutletCreated","onChildOutletDestroyed","shouldProcessUrl","extract","oi","beforePreactivation","Sr","afterPreactivation","sa","Console","isNgZoneEnabled","resetConfig","currentUrlTree","rawUrlTree","browserUrlTree","triggerEvent","routerState","transitions","targetPageId","currentRawUrl","extractedUrl","urlHandlingStrategy","rawUrl","extras","promise","currentSnapshot","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","navigations","setupNavigations","processNavigations","events","currentNavigation","initialUrl","trigger","previousNavigation","lastSuccessfulNavigation","navigated","onSameUrlNavigation","As","serializeUrl","Ll","applyRedirectsFn","applyRedirects","finalUrl","NoMatch","recognizeFn","urlUpdateStrategy","skipLocationChange","setBrowserUrl","replaceUrl","ro","hooks","navigationId","appliedUrlTree","rootContexts","canDeactivate","Mo","canActivateChild","node","eo","canActivate","Bl","restoreHistory","cancelNavigationTransition","_s","canceledNavigationResolution","scheduleNavigation","errorHandler","resetRootComponentType","getTransition","setTransition","initialNavigation","setUpLocationChangeListener","navigateByUrl","locationSubscription","extractLocationChangeInfoFromEvent","shouldScheduleNavigation","lastLocationChangeInfo","parseUrl","transitionId","getCurrentNavigation","lastSuccessfulId","disposed","relativeTo","queryParamsHandling","preserveFragment","removeEmptyProps","Cs","qr","zs","Rr","js","numberOfDoubleDots","Ki","Do","navigate","so","malformedUriErrorHandler","isActive","currentPageId","_o","browserPageId","generateNgRouterState","resetState","resetUrlToCurrentUrlTree","subscription","updateTargetUrlAndHref","onChanges","onClick","ao","router","locationStrategy","parentContexts","activated","_activatedRoute","deactivateEvents","changeDetector","activateEvents","childContexts","preload","setUpPreloading","processRoutes","preloadConfig","preloadingStrategy","scrollPositionRestoration","anchorScrolling","viewportScroller","routerEventsSubscription","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","lastId","lastSource","restoredId","scheduleScrollEvent","La","enableTracing","group","groupEnd","forRoot","Ht","forChild","scrollOffset","useHash","appInitializer","initNavigation","resultOfPreactivationDone","bootstrapListener","__export","require","lexoInteger_1","stringBuilder_1","half","sys","mid","getBase","LexoDecimal","make","LexoInteger","str","system","partialIndex","getRadixPointChar","lastIndexOf","intStr","integer","sig","isZero","zeroCount","getMag","newInteger","shiftRight","mag","getSystem","other","osig","tmag","tsig","omag","shiftLeft","subtract","otherSig","thisMag","thisSig","otherMag","multiply","isExact","one","getScale","setScale","nsig","ceiling","nmag","compareTo","tMag","oMag","format","sb","default","specialHead","getPositiveChar","getNegativeChar","toChar","equals","arrayCopy","sourceArray","sourceIndex","destinationArray","destinationIndex","finalLength","lexoHelper_1","sign","strFull","strIndex","magIndex","toDigit","ZERO_MAG","ONE_MAG","actualLength","zero","lexoHelper","estimatedSize","result","carry","sum","extendWithCarry","extendedMag","rComplement","complement","rSum","resultIndex","digits","checkSystem","pos","negate","cmp","isOneish","newMag","times","complementDigits","isOne","var2","var3","var4","NEGATIVE_SIGN","ZERO_SIGN","POSITIVE_SIGN","lexoDecimal_1","lexoRankBucket_1","numeralSystems_1","NUMERAL_SYSTEM","_NUMERAL_SYSTEM","LexoNumeralSystem36","_ZERO_DECIMAL","LexoRank","_ONE_DECIMAL","_EIGHT_DECIMAL","_MIN_DECIMAL","ZERO_DECIMAL","_MAX_DECIMAL","ONE_DECIMAL","_MID_DECIMAL","between","MIN_DECIMAL","MAX_DECIMAL","_INITIAL_MIN_DECIMAL","_INITIAL_MAX_DECIMAL","BUCKET_0","minLexoRank","bucket","INITIAL_MIN_DECIMAL","INITIAL_MAX_DECIMAL","oLeft","oRight","nLeft","nRight","scale","nScale1","nLeft1","checkMid","nScale","middleInternal","mScale","nMid","parts","decimal","lbound","rbound","roundDown","roundUp","formatVal","val","formatDecimal","genPrev","isMax","floorInteger","nextDecimal","floorDecimal","EIGHT_DECIMAL","genNext","isMin","ceilInteger","ceilDecimal","getBucket","getDecimal","inNextBucket","inPrevBucket","lexoRank_1","_BUCKET_0","LexoRankBucket","_BUCKET_1","_BUCKET_2","_VALUES","BUCKET_1","BUCKET_2","VALUES","bucketId","var1","ch","digit","DIGITS","startIndex","obj","sources","_class","defaultOptions","fuzzyLink","fuzzyEmail","fuzzyIP","defaultSchemas","tail","http","RegExp","src_auth","src_host_port_strict","src_path","no_http","src_domain","src_domain_root","src_port","src_host_terminator","mailto","src_email_name","src_host_strict","tlds_default","__opts__","tlds","__tlds__","tpl","src_tlds","onCompile","__tlds_replaced__","src_xn","email_fuzzy","untpl","tpl_email_fuzzy","link_fuzzy","tpl_link_fuzzy","link_no_ip_fuzzy","tpl_link_no_ip_fuzzy","host_fuzzy_test","tpl_host_fuzzy_test","aliases","__compiled__","__schemas__","compiled","link","isObject","isRegExp","createValidator","isFunction","schemaError","isString","alias","slist","escapeRE","schema_test","src_ZPCc","schema_search","schema_at_start","pretest","__index__","__text_cache__","resetScanCache","__last_index__","schema","__schema__","lastIndex","raw","Match","LinkifyIt","acc","isOptionsObj","assign","compile","definition","ml","len","tld_pos","testSchemaAt","createMatch","matchAtStart","list","keepOld","el","idx","arr","opts","src_Any","src_Cc","src_Z","src_P","src_ZCc","src_pseudo_letter","src_ip4","src_host","tpl_host_fuzzy","tpl_host_no_ip_fuzzy","tpl_host_fuzzy_strict","tpl_host_port_fuzzy_strict","tpl_host_port_no_ip_fuzzy_strict","open_tag","close_tag","HTML_TAG_RE","HTML_OPEN_CLOSE_TAG_RE","_hasOwnProperty","object","UNESCAPE_MD_RE","UNESCAPE_ALL_RE","DIGITAL_ENTITY_TEST_RE","entities","HTML_ESCAPE_TEST_RE","HTML_ESCAPE_REPLACE_RE","HTML_REPLACEMENTS","REGEXP_ESCAPE_RE","UNICODE_PUNCT_RE","escaped","entity","code","isValidEntityCode","fromCodePoint","replaceEntityPattern","replaceUnsafeChar","src","newElements","unescapeAll","level","lines","disableNested","found","marker","prevPos","labelEnd","posMax","oldPos","md","inline","skipToken","utils","helpers","Renderer","ParserCore","ParserBlock","ParserInline","mdurl","punycode","commonmark","BAD_PROTO_RE","GOOD_DATA_RE","RECODE_HOSTNAME_FOR","parsed","toASCII","er","encode","toUnicode","decode","defaultChars","presetName","MarkdownIt","block","core","renderer","linkify","validateLink","normalizeLink","normalizeLinkText","configure","presets","rules","ruler","enableOnly","rules2","ruler2","ignoreInvalid","missed","use","plugin","args","env","State","process","tokens","render","parseInline","inlineMode","renderInline","Ruler","_rules","tokenize","startLine","endLine","getRules","line","hasEmptyLines","maxNesting","skipEmptyLines","sCount","blkIndent","tight","isEmpty","outTokens","lineMax","Core","_rules2","pushPending","html","xhtmlOut","breaks","langPrefix","typographer","quotes","highlight","escapeHtml","default_rules","code_inline","slf","renderAttrs","code_block","fence","highlighted","tmpAttrs","info","langName","langAttrs","attrIndex","image","renderInlineAsText","renderToken","hardbreak","softbreak","html_block","html_inline","nextToken","needLf","hidden","nesting","tag","__rules__","__cache__","__find__","__compile__","chains","rule","altName","opt","before","beforeName","ruleName","after","afterName","chainName","isSpace","silent","adjustTab","initial","lastLineEmpty","nextLine","oldBMarks","oldBSCount","oldIndent","oldParentType","oldSCount","oldTShift","spaceAfterMarker","terminate","terminatorRules","isOutdented","oldLineMax","bMarks","tShift","eMarks","bsCount","parentType","markup","getLines","mem","haveEndMarker","skipChars","skipSpaces","tmp","skipSpacesBack","skipCharsBack","cnt","block_names","HTML_SEQUENCES","lineText","contentStart","indent","indentAfterMarker","isOrdered","itemLines","listLines","listTokIdx","markerCharCode","markerValue","oldListIndent","oldTight","posAfterMarker","prevEmptyEnd","isTerminatingParagraph","listIndent","skipOrderedListMarker","skipBulletListMarker","markTightParagraphs","normalizeReference","_endLine","destEndPos","destEndLineNo","label","res","parseLinkDestination","parseLinkTitle","references","Token","indent_found","ddIndent","StateBlock","keepLastLF","lineIndent","queue","lineStart","isEscaped","lastPos","columns","columnCount","aligns","tableLines","tbodyLines","firstCh","secondCh","getLine","escapedSplit","tok","arrayReplaceAt","currentToken","nodes","htmlLinkLevel","fullUrl","urlText","links","blockTokens","NEWLINES_RE","NULL_RE","RARE_RE","SCOPED_ABBR_TEST_RE","SCOPED_ABBR_RE","SCOPED_ABBR","tm","inlineTokens","inside_autolink","replaceFn","blkIdx","replace_scoped","replace_rare","isWhiteSpace","isPunctChar","isMdAsciiPunct","QUOTE_TEST_RE","QUOTE_RE","thisLevel","lastChar","nextChar","isLastPunctChar","isNextPunctChar","isLastWhiteSpace","isNextWhiteSpace","canOpen","canClose","isSingle","stack","openQuote","closeQuote","OUTER","single","replaceAt","process_inlines","StateCore","curr","EMAIL_RE","AUTOLINK_RE","matchStart","matchEnd","openerLength","closerLength","backticksScanned","backticks","delimiters","closerIdx","openerIdx","closer","opener","minOpenerIdx","newMinOpenerIdx","isOddMatch","lastJump","openersBottom","headerIdx","lastTokenIdx","jumps","close","tokens_meta","processDelimiters","startDelim","endDelim","isStrong","scanned","scanDelims","can_open","can_close","postProcess","DIGITAL_RE","NAMED_RE","ESCAPED","ch1","ch2","origStr","escapedStr","lc","isLetter","linkLevel","labelStart","ref","parseLinkLabel","parseReference","SCHEME_RE","proto","pmax","pendingLevel","_prev_delimiters","StateInline","token_meta","canSplitWord","left_flanking","right_flanking","loneMarkers","isTerminatorChar","attrPush","attrData","attrSet","attrGet","attrJoin","decodeCache","string","exclude","getDecodeCache","seq","b2","b3","b4","chr","componentChars","encodeCache","keepEscaped","nextCode","getEncodeCache","slashes","auth","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","hostlessProtocol","javascript","slashedProtocol","https","ftp","gopher","file","Url","slashesDenoteHost","lowerProto","hec","rest","simplePath","atSign","hostEnd","parseHost","ipv6Hostname","hostparts","part","newpart","validParts","notHost","bit","electron","_electron","isElectronApp","isWindows","isLinux","isX86","arch","isX64","isArm","desktopCapturer","ipcRenderer","remote","webFrame","clipboard","crashReporter","nativeImage","screen","shell","STARTS_WITH","CONTAINS","NOT_CONTAINS","ENDS_WITH","EQUALS","NOT_EQUALS","numeric","LESS_THAN","LESS_THAN_OR_EQUAL_TO","GREATER_THAN","GREATER_THAN_OR_EQUAL_TO","date","DATE_IS","DATE_IS_NOT","DATE_BEFORE","DATE_AFTER","notContains","notEquals","noFilter","lte","gte","isNot","dateIs","dateIsNot","dateBefore","dateAfter","matchAll","matchAny","addRule","removeRule","accept","choose","cancel","dayNames","dayNamesShort","dayNamesMin","monthNames","monthNamesShort","dateFormat","today","weekHeader","weak","medium","strong","passwordPrompt","emptyMessage","emptyFilterMessage","modal","overlay","menu","tooltip","translationSource","asObservable","getTranslation","translation","setTranslation","requireConfirmationSource","acceptConfirmationSource","confirm","onAccept","toLocaleLowerCase","in","filters","toDateString","messageSource","clearSource","addAll","clickSource","getType","dragStartSource","dragStopSource","startDrag","stopDrag","differ","listId","_suggestions","handleSuggestionsChange","suggestionsUpdated","offsetParent","alignOverlay","highlightOptionChanged","itemsWrapper","virtualScroll","viewPort","updateVirtualScrollSelectedIndex","virtualScrollSelectedIndex","loading","highlightOption","noResults","show","autoHighlight","showEmptyMessage","hide","templates","itemTemplate","groupTemplate","selectedItemTemplate","headerTemplate","emptyTemplate","footerTemplate","suggestions","findOptionIndex","filled","updateInputField","getOptionGroupChildren","optionGroupChildren","items","getOptionGroupLabel","optionGroupLabel","onModelChange","onModelTouched","onInput","inputKeyDown","timeout","multiple","forceSelection","onClear","minLength","updateFilledState","onInputClick","documentClickListener","inputClick","completeMethod","originalEvent","query","selectItem","forceSelectionUpdateModelTimeout","multiInputEL","isSelected","unique","inputEL","resolveFieldData","onSelect","itemClicked","focusInput","overlayVisible","onOverlayAnimationStart","toState","appendOverlay","autoZIndex","baseZIndex","bindDocumentClickListener","bindDocumentResizeListener","bindScrollListener","onShow","onOverlayHide","onOverlayAnimationEnd","onOverlayClick","overlayService","appendTo","minWidth","field","restoreOverlayAppend","multiContainerEL","handleDropdownClick","dropdownMode","onDropdownClick","onUnselect","onKeydown","which","findOptionGroupIndex","itemIndex","groupIndex","onKeyup","onKeyUp","onInputFocus","completeOnFocus","onFocus","onInputBlur","onBlur","onInputChange","onInputPaste","inputFieldValue","isDropdownClick","dropdown","unbindDocumentClickListener","onWindowResize","unbindDocumentResizeListener","scrollHandler","unbindScrollListener","opacity","containerClass","shape","severity","_initialStyleClass","getStyleClass","icon","createIconEl","setStyleClass","iconPos","getIconClass","loadingIcon","_icon","setIconClass","removeIconElement","_label","_loading","hourFormat","contentViewChild","isMonthNavigate","updateFocus","initFocusableCell","_defaultDate","currentMonth","currentYear","initTime","createMonths","_minDate","_maxDate","_disabledDates","_disabledDays","_yearRange","populateYearOptions","_showTime","currentHour","updateInputfield","_locale","defaultDate","createWeekDays","ticksTo1970","createMonthPickerValues","translationSubscription","translationObserver","dateTemplate","disabledDateTemplate","yearOptions","weekDays","firstDayOfWeek","monthPickerValues","months","numberOfMonths","createMonth","getWeekNumber","setDate","setMonth","getFirstDayOfMonthIndex","getDaysCountInMonth","getDaysCountInPrevMonth","getPreviousMonthAndYear","day","month","year","otherMonth","isToday","selectable","isSelectable","getNextMonthAndYear","showWeek","dates","weekNumbers","pm","showTime","currentMinute","currentSecond","setCurrentHourPM","timeOnly","navBackward","decrementYear","onMonthChange","navForward","incrementYear","yearNavigator","onDateSelect","isMultipleSelection","isDateEquals","updateModel","shouldSelectDate","selectDate","isSingleSelection","hideOnDateTimeSelect","hideOverlay","mask","disableModality","maxDateCount","onMonthSelect","formatDateTime","multipleSeparator","isRangeSelection","rangeSeparator","inputfieldViewChild","formatTime","formatDate","getDateFormat","setSeconds","minDate","maxDate","dataType","getSundayIndex","daylightSavingAdjust","isDateBetween","isMonthSelected","selectionMode","selectOtherMonths","disabledDates","isDateDisabled","disabledDays","isDayDisabled","showOnFocus","showOverlay","keepInvalid","onButtonClick","onPrevButtonClick","navigationState","backward","onNextButtonClick","onContainerButtonKeydown","trapFocus","onInputKeydown","isKeydown","keyCode","tabIndex","onDateCellKeydown","currentTarget","nextElementSibling","previousElementSibling","navigateToMonth","onMonthCellKeydown","focusTrap","onMonthDropdownChange","onYearDropdownChange","onYearChange","validateTime","convertTo24Hour","incrementHour","stepHour","onTimePickerElementMouseDown","repeat","onTimePickerElementMouseUp","clearTimePickerTimer","updateTime","onTimePickerElementMouseLeave","timePickerTimer","decrementHour","incrementMinute","decrementMinute","incrementSecond","decrementSecond","stepMinute","stepSecond","toggleAMPM","onUserInput","parseValueFromString","isValidSelection","updateUI","parseDateTime","populateTime","parseDate","parseTime","hour","minute","second","touchUI","toggle","onClose","onOverlayAnimationDone","enableModality","maskClickListener","unbindMaskClickListener","showSeconds","shortYearCutoff","onTodayButtonClick","onTodayClick","onClearButtonClick","onClearClick","zone","isOutsideClicked","onClickOutside","documentResizeListener","containerViewChild","isSameNode","isNavIconClicked","readonly","checked","binary","addValue","removeValue","formControl","handleChange","isChecked","focused","inputViewChild","confirmationService","requireConfirmation$","confirmation","confirmationOptions","header","rejectVisible","acceptVisible","acceptLabel","rejectLabel","acceptIcon","rejectIcon","acceptButtonStyleClass","rejectButtonStyleClass","defaultFocus","blockScroll","closeOnEscape","dismissableMask","acceptEvent","rejectEvent","visible","_visible","maskVisible","transformOptions","breakpoints","createStyle","option","onAnimationStart","wrapper","contentContainer","getElementToFocus","appendContainer","moveOnTop","bindGlobalListeners","onAnimationEnd","restoreAppend","styleElement","onHide","getMaskClass","getPositionClass","closable","documentEscapeListener","unbindGlobalListeners","destroyStyle","contentTemplate","_style","originalStyle","visibleChange","maximize","maximized","onMaximize","initDrag","dragging","lastPageX","lastPageY","onDrag","keepInViewport","minX","minY","endDrag","onDragEnd","resetPosition","center","initResize","resizable","resizing","onResizeInit","onResize","minHeight","resizeEnd","onResizeEnd","bindDocumentDragListener","bindDocumentDragEndListener","bindDocumentResizeListeners","bindDocumentEscapeListener","unbindDocumentDragListener","unbindDocumentDragEndListener","unbindDocumentResizeListeners","unbindDocumentEscapeListener","documentDragListener","documentDragEndListener","documentResizeEndListener","focusOnShow","onContainerDestroy","childNodes","getHiddenElementDimensions","getViewport","transformOrigin","getWindowScrollTop","getWindowScrollLeft","getParents","dataset","scrollselectors","findSingle","getOuterHeight","setInterval","clearInterval","clientTop","clientLeft","webkitMatchesSelector","mozMatchesSelector","marginLeft","marginRight","paddingLeft","paddingRight","paddingTop","paddingBottom","marginTop","marginBottom","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","getElementsByTagName","getOffset","MSStream","isElement","removeElement","HTMLElement","calculateScrollbarWidth","calculatedScrollbarWidth","calculatedScrollbarHeight","getSelection","empty","removeAllRanges","rangeCount","getRangeAt","getClientRects","selection","getBrowser","browser","resolveUserAgent","version","webkit","safari","isInteger","isFinite","getFocusableElements","zindex","listener","scrollableParents","onOptionClick","emptyFilterTemplate","optionsToDisplay","updateSelectedOption","labelId","_options","optionsChanged","_filterValue","activateFilter","editable","updateEditableLabel","selectedOption","getOptionLabel","editableInputViewChild","optionLabel","getOptionValue","optionValue","isOptionDisabled","optionDisabled","onItemClick","accessibleViewChild","viewPortOffsetTop","selectedOptionUpdated","resetFilter","filterViewChild","findOption","autoDisplayFirst","placeholder","onMouseclick","isInputClick","onEditableInputClick","onEditableInputFocus","onEditableInputChange","preventModelTouched","autofocusFilter","scrollToSelectedVirtualScrollElement","virtualAutoScrolled","resetFilterOnHide","findPrevEnabledOption","findNextEnabledOption","searchTimeout","previousSearchChar","currentSearchChar","searchValue","searchOptionWithinGroup","searchOption","searchOptionInRange","filterLocale","dataKey","onFilterInputChange","onFilter","filterBy","filterService","filterValue","filterMatchMode","applyFocus","onkeydown","pFocusTrapDisabled","ngModel","Cf","pint","int","pnum","money","num","hex","email","alpha","alphanum","isAndroid","_pattern","regex","isNavKeyPress","isSpecialKey","charCode","opera","getKey","getCharCode","findDelta","isValidChar","isValidString","pValidateOnly","lastValue","ngModelChange","onKeyPress","mozilla","onPaste","clipboardData","getData","validatePattern","messageService","enableService","messageSubscription","messageObserver","clearSubscription","clearObserver","hasMessages","valueChange","removeMessage","onOptionKeydown","_defaultLabel","updateLabel","selectedItemsTemplate","filtered","maxSelectionLimitReached","checkSelectionLimit","selectionLimit","findSelectionIndex","itemValue","optionsToRender","toggleAll","toggleAllDisabled","allChecked","uncheckAll","checkAll","filterInputChild","onPanelShow","_filteredOptions","onPanelHide","isOverlayClick","removeChip","findNextItem","findPrevItem","displaySelectedLabel","findLabelByValue","maxSelectedLabels","selectedItemsLabel","valuesAsString","defaultLabel","searchLabelByValue","emptyMessageLabel","hasFilter","onHeaderCheckboxFocus","headerCheckboxFocus","onHeaderCheckboxBlur","dismissable","selfClick","hasTargetChanged","destroyCallback","align","overlayEventListener","overlaySubscription","clickObservable","onCloseClick","ripple","mouseDownListener","onMouseDown","getInk","resetInk","animationListener","removeOption","containerStyle","borderRadius","buttonTemplate","onVisibleChange","isItemClicked","command","calculatePointStyle","radius","PI","cos","sin","direction","calculateTransitionDelay","transitionDelay","buttonClass","rotateAnimation","hideIcon","buttonClassName","showIcon","getItemStyle","isClickableRouterLink","routerLink","hideOnClickOutside","_step","step","calculatedPrecision","formatInput","localeDecimalSeparator","toLocaleString","localeThousandSeparator","thousandRegExp","thousandSeparator","decimalSeparator","clearTimer","timer","spin","getPrecision","parseValue","toFixed","maxlength","formatValue","precision","pow","onUpButtonMousedown","onUpButtonMouseup","onUpButtonMouseleave","onDownButtonMousedown","onDownButtonMouseup","onDownButtonMouseleave","maximumFractionDigits","formattedValue","rounded","initTimeout","sticky","life","onMouseEnter","onMouseLeave","onCloseIconClick","canAdd","messages","preventDuplicates","messagesArchieve","preventOpenDuplicates","containsMessage","summary","detail","onMessageClose","fromState","tooltipPosition","tooltipEvent","tooltipZIndex","escape","positionTop","positionLeft","getOption","mouseEnterListener","mouseLeaveListener","clickListener","focusListener","blurListener","setOption","positionStyle","tooltipStyleClass","showDelay","hideDelay","tooltipLabel","updateText","tooltipOptions","_tooltipOptions","showTimeout","clearHideTimeout","hideTimeout","clearShowTimeout","tooltipText","alignTop","isOutOfBounds","alignBottom","alignRight","alignLeft","getHostOffset","preAlign","resizeListener","unbindEvents","clearTimeouts","equalsByValue","findIndexInList","getCurrent","maxInt","base","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","RangeError","domain","encoded","array","output","extra","ucs2encode","codePoints","basicToDigit","codePoint","digitToBasic","flag","adapt","numPoints","firstTime","baseMinusTMin","input","inputLength","bias","basic","oldi","baseMinusT","out","ucs2decode","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","mapDomain","ucs2","operator","syncErrorThrowable","_trySubscribe","syncErrorThrown","syncErrorValue","isStopped","toPromise","subject","_unsubscribeAndRecycle","_parentOrParents","_parentSubscriber","__tryOrSetError","__tryOrUnsub","useDeprecatedSynchronousErrorHandling","_unsubscribe","_ctorUnsubscribe","_subscriptions","EMPTY","getSubject","subjectFactory","_connection","_isComplete","refCount","_refCount","connectable","return","POSITIVE_INFINITY","caught","thisArg","project","concurrent","buffer","_innerSub","hasCompleted","connection","_execute","kind","do","toObservable","undefinedValueNotification","completeNotification","notification","scheduleMessage","dispatch","_bufferSize","_windowTime","_infiniteTimeWindow","nextInfiniteTimeWindow","nextTimeWindow","_events","_getNow","_trimBufferThenGetEvents","time","bufferSize","windowTime","innerSubscription","notifier","seenValue","nextOrObserver","_tapError","_tapComplete","_tapNext","errorFactory","work","SchedulerAction","delegate","observable","alignRow","forceRowFlow","containerElement","bigStyle","autoFlow","autoFlowWidthThreshold","expandRightEvent","windowWidth","expandRight","retractRight","resetWindow","retractCenter","clearContentCenter","retractedCenter","expandCenter","retractedRight","clearContentRight","onTabChange","tabIndexChange","action","loggingService","logMessage","commonOptions","startDate","endDate","stringValueStart","toLocaleDateString","dateHandler","dateProcessor","stringValueEnd","calendarFocus","select","startDateSelect","endDateSelect","setMaxBetweenDate","labelStyle","domSanitizer","rowSpan","sanitizer","fieldsStyle","labelsWidth","noWrap","appStateService","clientService","customer","fullName","filterUsers","customerFromQuery","autoComplete","blur","filteredCustomers","contactName","searchCustomer","getContactName","maxLength","getCompanyName","companyName","getCustomerName","stringValue","calendar","dateSelect","onValueChange","onValueChanges","setOptions","initialOption","flagService","flagColorKeys","color","getColor","widthSplits","selectOption","getColorStyle","highlightMode","fixedItemWidth","textAreaStyle","mockValue","timeHandler","timeSelect","userService","accountId","username","addUnassignedUser","groupId","avatarUrl","getWorkerName","elRef","forcePlatform","elService","isMacOS","assistant","finished","getHtml","getImageUrl","getInitials","getName","getIsFinished","getIsStreaming","isStreaming","addToken","startStreaming","finishStreaming","user","computeSize","computeRadius","registrationToken","localRegistrationToken","PACKET_TYPES","ping","pong","upgrade","noop","PACKET_TYPES_REVERSE","ERROR_PACKET","withNativeBlob","withNativeArrayBuffer","isView","encodePacket","supportsBinary","encodeBlobAsBase64","fileReader","FileReader","onload","readAsDataURL","Uint8Array","byteOffset","byteLength","TEXT_ENCODER","packet","arrayBuffer","TextEncoder","lookup","decodePacket","encodedPacket","binaryType","mapBinary","decodeBase64Packet","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","arraybuffer","bytes","SEPARATOR","TEXT_DECODER","Emitter","mixin","once","removeAllListeners","callbacks","emitReserved","listeners","hasListeners","globalThisShim","attr","NATIVE_SET_TIMEOUT","NATIVE_CLEAR_TIMEOUT","useNativeTimers","setTimeoutFn","clearTimeoutFn","utf8Length","reason","description","installTimerFunctions","socket","TransportError","doOpen","doClose","packets","write","onOpen","onData","onPacket","details","onPause","createUri","_hostname","_port","_query","secure","encodedQuery","alphabet","err","hasCORS","xdomain","hasXHR2","xhr","Request","uri","undefined","_a","pick","xd","extraHeaders","setDisableHeaderCheck","cookieJar","addCookies","requestTimeout","onreadystatechange","parseCookies","onLoad","requestsCount","requests","fromError","attachEvent","unloadHandler","nextTick","WebSocket","isReactNative","product","transports","websocket","Transport","forceBase64","protocols","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","lastPacket","timestampRequests","timestampParam","yeast","b64","webtransport","WebTransport","transport","transportOptions","ready","createBidirectionalStream","stream","reader","readable","getReader","binaryFlag","writer","getWriter","isBinary","TextDecoder","decodePacketFromBinary","handshake","sid","encodePacketToBinary","shouldIncludeBinaryHeader","of","polling","isSSL","createCookieJar","poll","doPoll","encodedPayload","encodedPackets","decodedPacket","decodePayload","encodePayload","doWrite","req","xhrStatus","pollXhr","authority","ipv6uri","pathNames","names","queryKey","$1","$2","Socket","writeBuffer","prevBufferLen","agent","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","closeOnBeforeunload","qry","pairs","pair","upgrades","pingInterval","pingTimeout","pingTimeoutTimer","beforeunloadEventListener","offlineEventListener","createTransport","EIO","priorWebsocketSuccess","setTransport","onDrain","probe","failed","onTransportOpen","msg","upgrading","freezeTransport","to","onTransportClose","onupgrade","onHandshake","resetPingTimeout","sendPacket","filterUpgrades","maxPayload","getWritablePackets","payloadSize","compress","cleanupAndClose","waitForUpgrade","filteredUpgrades","withNativeFile","File","toJSON","hasBinary","buffers","pack","_deconstructPacket","attachments","newData","_reconstructPacket","RESERVED_EVENTS","PacketType","CONNECT","DISCONNECT","EVENT","ACK","CONNECT_ERROR","BINARY_EVENT","BINARY_ACK","replacer","encodeAsString","encodeAsBinary","nsp","deconstruction","deconstructPacket","reviver","reconstructor","decodeString","isBinaryEvent","BinaryReconstructor","takeBinaryData","payload","tryParse","Decoder","isPayloadValid","finishedReconstruction","reconPack","binData","reconstructPacket","connect_error","disconnecting","newListener","connected","recovered","receiveBuffer","sendBuffer","_queue","_queueSeq","ids","acks","_opts","_autoConnect","subEvents","subs","onpacket","_reconnecting","_readyState","retries","fromQueue","volatile","_addToQueue","ack","_registerAckCallback","engine","notifyOutgoingListeners","ackTimeout","emitWithAck","withErr","arg1","arg2","tryCount","responseArgs","_drainQueue","force","_packet","_sendConnectPacket","_pid","pid","_lastOffset","onconnect","onevent","onack","ondisconnect","_anyListeners","sent","emitBuffered","subDestroy","_destroy","onAny","prependAny","offAny","listenersAny","onAnyOutgoing","_anyOutgoingListeners","prependAnyOutgoing","offAnyOutgoing","listenersAnyOutgoing","factor","jitter","attempts","Backoff","duration","rand","deviation","setMin","setMax","setJitter","nsps","reconnection","reconnectionAttempts","Infinity","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","parser","Encoder","decoder","autoConnect","_reconnection","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","maybeReconnectOnOpen","reconnect","Engine","skipReconnect","openSubDestroy","errorSub","onping","ondata","ondecoded","_close","onreconnect","attempt","loc","forceNew","multiplex","Manager","emptyConfig","ioSocket","io.default","fromEvent","subscribersCounter","eventObservables$","fromOneTimeEvent","role","availability","apiClient","aiAssistantApiClient","initialize","subscribeToSocketIo","getAssistants","confirmLicenseAgreement","localStorage","getItem","showDisclaimer","setItem","disclaimerHtml","askQuestion","baseUrl","aiFocus","question","summarize","llmRequests","entityType","entityId","clientRequestId","generate","snippetId","getRegistrationToken","registrationTokenProvider","Authorization","authService","jwtToken","chatUpdateEvent","reqId","newToken","assistants","accessors","isSameGroup","checkName","registry","handleClick","formControlName","throwNameError","getDefinition","CkModule","HtmlEditorCkComponent","onHtmlChange","htmlChange","HtmlViewerCkComponent","loadComponent","bindInputs","bindOutputs","triggerDetectChanges","onModuleLoad","appRef","onTabClick","loggerService","tabHeaders","setDefaultProperties","createdBy","creationDate","modifiedBy","modifiedDate","deleted","emitAsync","callAsync","clearListeners","_MODEL","updaterService","initImpersonation","initWindowCommunication","electronService","messageEvent","impersonate","showSuccessMessage","showMessage","showErrorMessage","showWarnMessage","showInfoMessage","windowId","postMessage","reload","sleep","Login","clearLocalStorageOnVersionChange","AppWindowState","appWindowStateChange","Headless","windowMessage","getWindowDetails","requestApplicationExit","windowDetails","windowDetailsFetched","headless","isMainWindow","getVersion","closeApp","pleaseWaitService","addToQueue","sendMessages","removeFromQueue","minimizeApp","maximizeApp","reloadApp","openHeadlessWindow","saveObjectToJsonFile","jsonObject","openNewWindow","openInBrowser","openExternal","closeCurrentWindow","BrowserName","platformService","nativeService","isIOS","isMac","isHeadless","findRoute","orderRoutes","matchRoute","loadLazyLoadedRoutes","getRouteSpecificity","tabbingService","tabsLoaded","navigateTab","navigationData","visibleTab","routeChange","splitPaths","getIcon","splits","routeSolverService","navigateInNewTab","addTab","setHeader","startProgressive","progressiveCurrent","progressiveWaiting","progressiveTotal","increaseTotalProgressive","advanceProgressive","onProgressEvent","waiting","enquedOperations","searchAndEmit","union","dto","logic","apiUrl","processStatusCode","appService","getWithParams","requestTimeDict","requestsCached","activeRequestsDict","toFetchRequestsDict","fetchedRequestsDict","httpClient","requestsSent","trace","postWithPD","postFile","postFileWithData","patchWithCustomURL","initializeAccountClient","initializeTenantClient","initializeAiAssistantClient","accountApiClient","initializeApplicationClient","applicationApiClient","tenantApiClient","conflict","serverService","sendWithCallback","sendWithPromise","hook","onChatRoomCreated","onChatMessage","currentUser","participants","tenantService","tenantDto","tenant","roomId","chatService","refreshChatRooms","chatRooms","room","chatId","onReceive","ge","statusCode","__proto__","isWebWorker","observer","cancelCallback","minimumLogLevel","outputConsole","toISOString","isNode","versions","logger","fetch","jar","CookieJar","fetchType","abortControllerType","AbortController","abortSignal","aborted","onabort","credentials","redirect","signal","getCookies","ontimeout","getCookieString","RecordSeparator","RecordSeparatorCode","Buffer","serverTimeoutInMilliseconds","keepAliveIntervalInMilliseconds","reconnectPolicy","handshakeProtocol","onreceive","processIncomingData","connectionClosed","methods","closedCallbacks","reconnectingCallbacks","reconnectedCallbacks","invocationId","receivedHandshakeResponse","connectionState","Disconnected","connectionStarted","cachedPingMessage","writeMessage","connectionId","Reconnecting","startPromise","startWithStateTransitions","Connecting","startInternal","Connected","stopDuringStartError","handshakeResolver","handshakeRejecter","transferFormat","sendMessage","writeHandshakeRequest","cleanupTimeout","resetTimeoutPeriod","resetKeepAliveInterval","cleanupPingTimer","stop","stopPromise","stopInternal","Disconnecting","reconnectDelayHandle","completeClose","createStreamInvocation","createCancelInvocation","sendWithProtocol","launchStreams","createInvocation","processHandshakeResponse","parseMessages","invokeClientMethod","allowReconnect","inherentKeepAlive","nextKeepAlive","timeoutHandle","pingServerHandle","cancelCallbacksWithError","getNextRetryDelay","onreconnecting","onreconnected","nextRetryDelayInMilliseconds","elapsedMilliseconds","previousRetryCount","retryReason","streamIds","createCompletionMessage","createStreamItemMessage","retryDelays","isAborted","accessTokenFactory","pollAbort","logMessageContent","running","getAccessToken","updateHeaderToken","closeError","receiving","pollAborted","raiseOnClose","eventSourceConstructor","Cookie","eventSource","webSocketConstructor","webSocket","ErrorEvent","OPEN","isCloseEvent","wasClean","resolveUrl","EventSource","startInternalPromise","sendQueue","stopPromiseResolver","stopError","stopConnection","skipNegotiation","constructTransport","startTransport","getNegotiationResponse","ProtocolVersion","accessToken","resolveNegotiateUrl","negotiateVersion","connectionToken","createConnectUrl","isITransport","availableTransports","resolveTransportOrError","transferFormats","sendBufferedData","transportResult","sendLoopPromise","sendLoop","bufferData","executing","concatBuffers","rejecter","isInvocationMessage","isStreamItemMessage","isCompletionMessage","assertNotEmptyString","debug","information","warning","critical","none","httpConnectionOptions","signalRService","onCrudActivity","activityData","selectEventsRoot","selectOperationEvent","attachmentEvents","communicationEvents","categoryEvents","customerEvents","jobEvents","snippetEvents","appointmentEvents","docEvents","onFlagActivity","onCustomerConvertActivity","triggerAppointmentReceive","onNotificationCreated","crudHandler","flagHandler","customerConvertHandler","appointmentHandler","chatHandler","notificationHandler","withUrl","tenantCode","withAutomaticReconnect","onRetry","onReconnecting","configureLogging","connectionSuccessListener","progressChangeEvent","percent","progressEvent","checkedForUpdates","updateAvailable","hiddenUI","getFormattedPhoneNumber","phoneNumberFormats","US","UK","FR","RO","generateString","letters","includeUppercase","numbers","specialCharacters","sortingPropertyName","sortingDescending","apptDto","listenToRefreshAppointment","refreshAppointmentFlag","triggerRefreshAppointment","getAppointments","apiService","getCalendarApptEntries","appointment","dueDate","getAppointmentHistory","getAppointmentVersion","getAppointmentVersionLabels","deleteAppointment","editAppointment","onConflict","my","db","revertAppointment","snooze","getAppointmentById","createAppointment","searchAppointments","buildSearchQueryModel","dismissAppointment","getAllAppointmentsWorthToRemind","getEmptyAppointmentDto","appointmentType","reminderTime","notes","dismissed","appointmentContacts","additionalUsers","additionalCustomers","createContainsFilter","property","queryValue","InvalidCharacterError","atob","InvalidTokenError","initializeAccount","decodeToken","base64_url_decode","login","password","storeToken","registerTrial","sendPasswordResetEmail","appWindowState","logout","authenticated","connectToTenant","server","restoreCachedTabs","users","environmentType","saveTabsToCache","getMyOrganizations","createTenant","copyAttributes","copyDtoAttributes","category","cloneDto","getCategory","httpService","getAllCategories","addCategory","editCategory","deleteCategory","getAllCategory","shortDescription","longDescription","getAllDto","checkCategoryEmpty","getMyChatRooms","createChatRoom","sendChatMessage","communicationService","builders","commTabId","comm","getDummyDto","lead","generateDummyLeadDTO","newLead","phoneNumber","saveToCache","addNewCommunication","communication","addLeadCommunication","mail","mailChecks","saveSuccess","refreshCustomer","customerId","addCustomerCommunication","showOtherCarriers","customerService","commTypeOptions","commDirectionOptions","communicationType","communicationDirection","outgoing","getTrackingNumber","eventDate","triggerCommChange","commChange","onNewLead","leadChange","getDummyMail","trackingNumber","customerChangeHandler","onCustomerChange","commTypeChangeHandler","commDirectionChangeHandler","handleFlagColorChange","flagged","flagColor","getDummyCommunication","personName","carrier","returnReceipt","receivedOrSentDate","hasChecks","hasProblems","problems","fileSavedAs","filePath","problemReturnToSender","problemReturnMail","problemReturnUserId","problemReturnDate","problemCB","problemStipulations","problemHearing","problemRenewals","problemCNC","problemDenials","problemOutOfState","assigned","hasDateScanned","dateScanned","getDummyMailCheck","amount","payable","memo","trimCommunicationNames","trimMailNames","trimLeadNames","editCommunication","communicationDto","customerDto","getCustomer","creatorDto","getUser","modifierDto","revertCommunication","setFlagCommunication","communicationId","deleteCommunication","buildGetCommunicationsForCustomerQuery","createEqualsFilter","getCommunication","trimFullCommunicationDtoNames","getCommunicationHistory","getCommunicationVersion","getFullCommunicationVersion","getCommunicationVersionLabels","trimCommunicationDtoNames","trimUserDtoNames","trimCustomerNames","getFullName","triggerSwitchToDisplay","switchToDisplay","listenToSwitchToDisplay","listenToCustomerListReload","refreshListFlag","getEmptyCustomer","isLead","email2","email3","dba1","address1","address2","city","zip","county","ein","phoneNumberType","businessPhoneNumber","altPhoneNumber","altPhoneNumberType","getEmptyDto","categories","getCustomerHistory","getCustomerVersion","getCustomerVersionLabels","addCustomer","editCustomer","revertCustomer","Customer","Categories","deleteLeadOrCustomer","triggerRefreshDocsList","refreshDocListFlag","listenRefreshDocsList","getDummyPostDTO","parentId","lexoRank","tags","author","addPost","postDto","editPost","deletePost","getPostsTree","convertPostsTreeToPrimeNodeTree","expanded","convertPostToPrimeTreeNode","getPostById","searchPost","getPostHistory","getPostVersion","getPostVersionLabels","revertPost","emails","sendMail","sender","receiver","cc","bcc","fetchSMTPConfig","fetchIMAPConfig","fetchPOP3Config","saveSMTPConfig","saveIMAPConfig","savePOP3Config","loadEmails","getEmailAttachments","folderName","syncFolder","markSeen","markUnseen","openFileSelector","flagColors","buildGetJobsForCustomerQuery","getJob","job","trimJobDtoNames","getChildren","getAllJobsByCustomerId","getGraphJobsByCustomerId","getDummyJob","getDummyJobDto","assignee","modifier","creator","progress","getJobHistory","getJobVersion","getJobVersionLabels","addJob","assigneeId","hasAssignee","hasCustomer","hasDueDate","editJob","emailNotifications","revertJob","deleteJob","changeLexoRank","changeFlaggedStatus","searchJobs","reparentJob","sourceType","createAndPushMessage","getStringHash","debounceSendMessages","debounceTimeout","rollingWindow","timestamp","rollingWindowSize","isErrorBurst","lastErrorBurstTimestamp","batchSize","triggerRefreshWorkerList","refreshWorkerList","listenRefreshWorkerList","getAllPermissions","getMyPermissions","isLoggedIn","permissions","getGroups","getGroupPermissions","getGroupUsers","editGroupPermissions","operations","addGroup","groupName","hasPermission","identifier","solve","toQueryFilter","withField","withDir","singleValue","withOperator","withValue","withMultipleValues","withMultipleValuesType","withFilters","withLogic","multipleValues","multipleValuesType","withFilter","withJoin","limit","withUnion","withOffset","withLimit","withSort","withSorts","externalTable","internalTableKey","externalTableKey","withExternalTable","withInternalTableKey","withExternalTableKey","withDTO","convertQueryToFilter","queryArray","objectType","displayName","visuals","possibleValues","pass","loadConfigs","IMAPConfig","emailingService","SMTPConfig","POP3Config","saveConfigs","selectedTabName","waitForShadowDOM","rel","commService","generateEml","eml","cons","dropdownSelect","selectedValue","singleSelect","singleSelectValue","multiSelect","multiSelectValue","notify1","appointmentService","contentStyleClass","HomeModule","AppointmentModule","CategoryModule","CustomersModule","SnippetModule","JobModule","CommunicationModule","DocsModule","triggerRefreshSnippetList","refreshListOnEdit","listenToRefreshList","getDummySnippet","getDummySnippetDto","snippet","getSnippet","getSnippetHistory","getSnippetVersion","getSnippetVersionLabels","addSnippet","editSnippet","revertSnippet","deleteSnippet","buildSearchSnippetsFilter","buildGetJobSnippetsFilter","getDefault","_visibleTab","initializeDefaultTab","visibleIndex","tabs","interceptClickEvent","tagName","customerTooltips","externalTooltips","flagEditors","leftArea","fetchCurrentUser","CURRENT_USER","getEmptyUser","getEmptyAddUserToTenantRequest","firstName","lastName","addAccount","editAccount","toggleAccount","entriesPerPage","pageNumber","getUserColor","getAvatarType","getAvatarImage","getAvatarInitial","production","tenantApiUrl","accountApiUrl","frontendUrl","aiApiUrl","applicationApiUrl","authFrontendUrl","normalizePropertyName","PRE_STYLE","normalizeStyleValue","triggerName","phaseName","matchesSelector","oMatchesSelector","validateStyleProperty","matchesElement","containsElement","computeStyle","animate","easing","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","_resetContextStyleTimingState","currentQuerySelector","collectedStyles","currentTime","queryCount","depCount","states","containsDynamicStyles","matchers","dynamic","strValue","currentAnimateTimings","isEmptyStep","_makeStyleAst","_validateStyleAst","_driver","startTime","endTime","ci","Mi","wi","currentQuery","optional","includeSelf","originalSelector","keyframes","preStyleProps","postStyleProps","subTimeline","consume","_map","buildKeyframes","currentTimeline","setStyles","timelines","containsAnimation","allowOnlyTimelineStyles","subInstructions","createSubContext","_visitSubInstructions","transformIntoNewTimeline","previousNode","appendInstructionToTimeline","updateOptions","subContextCount","snapshotCurrentStyles","delayNextStep","applyStylesToKeyframe","mergeTimelineCollectedStyles","_visitTiming","incrementTime","getCurrentStyleProperties","forwardFrame","applyEmptyStep","forwardTime","invokeQuery","currentQueryTotal","parentContext","currentStaggerTime","_copyOptions","_enterClassName","_leaveClassName","stretchStartingKeyframe","_elementTimelineStylesLookup","_localTimelineStyles","_backFill","_globalTimelineStyles","_loadKeyframe","_keyframes","_currentKeyframe","_pendingStyles","_previousKeyframe","_updateStyle","_styleSummary","_currentEmptyStepKeyframe","getFinalKeyframe","_stretchStartingKeyframe","isRemovalTransition","fromStyles","toStyles","queriedElements","ast","buildStyles","_stateStyles","_triggerName","defaultParams","normalizer","transitionFactories","fallbackTransition","containsQueries","matchTransition","matchStyles","_animations","_buildPlayer","_normalizer","_playersById","_getPlayer","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","absorbOptions","_hostClassName","_triggers","_elementListeners","phase","_engine","statesByElement","afterFlush","_getTrigger","reportError","playersByElement","queued","totalQueuedPlayers","transition","player","isFallbackTransition","clearElementCache","_signalRemovalForInnerTriggers","driver","fetchNamespacesByElement","triggerLeaveAnimation","afterFlushAnimationsDone","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","removeNode","childElementCount","totalAnimations","playersByQueriedElement","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","markedForDestroy","hostElement","elementContainsData","onRemovalComplete","_namespaceList","createNamespace","bodyNode","_balanceNamespaceList","newHostElements","collectEnterElement","_namespaceLookup","namespacesByHostElement","registerTrigger","_fetchNamespace","collectedLeaveElements","collectedEnterElements","markElementAsDisabled","disabledNodes","_buildInstruction","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","_flushAnimations","_flushFns","_whenQuietFns","Qn","instruction","_beforeAnimationBuild","_getPreviousPlayers","overrideTotalTime","_buildAnimation","setRealPlayer","syncPlayerEvents","getRealPlayer","_containsRealPlayer","_player","_queuedCallbacks","_queueEvent","AnimationGroupPlayer","_transitionEngine","_timelineEngine","_triggerCache","onInsert","onRemove","disableAnimations","initialStylesByElement","_initialStyles","_state","_startStyles","_element","_endStyles","WeakMap","_eventFn","_handleCallback","_duration","_easing","_delay","_fillMode","_name","_startTime","resume","_ngTestManualTimestamp","elapsedTime","animationName","_onDoneFn","_buildStyler","_styler","_flushStartFns","_flushDoneFns","_specialStyles","_finalStyles","_styles","__initialized","_startingStyles","buildKeyframeElement","_count","_preparePlayerBeforeStart","_initialized","domPlayer","_triggerWebAnimation","_finalKeyframe","_resetDomPlayerState","overrideWebAnimationsSupport","_isNativeImpl","_cssKeyframesDriver","_nextAnimationId","_id","_command","_listen","_rendererCache","Lr","_currentId","_cdRecurDepth","_scheduleCountTask","_microtaskId","scheduleListenerCallback","_animationCallbacksBuffer","Fl","AnimationEngine","Xo","AnimationStyleNormalizer","WebAnimationsStyleNormalizer","DomRendererFactory2","WebAnimationsDriver","CssKeyframesDriver","NoopAnimationDriver","withConfig","FsService","_fs","enumerable","configurable","f_s","Ul","timingStore","cacheMisses","cacheHits","ka","isStartingWithClientBaseUrl","tenantcode","registrationtoken","startedTime","pages","httpVersion","cookies","queryString","mimeType","pageref","startedDateTime","includeResponses","eu","addEntry","addToLog","sendHar","harService","convert","isIsoDateString","isoDateFormat","tu","waitForApiService","globalSettings","saveSetting","getSetting","waitForReady","themes","lightTheme","darkTheme","addExtraVariables","currentTheme","changeTheme","applyOverridesFromLocalStorage","applyOverridesFromServer","themeWrapper","globalSettingsService","applyDefaultThemeAccent","isDarkTheme","shiftedDarkTheme","emulateConsole","changeConsoleBehavior","errOld","warnOld","logOld","UKNOWN","CHROME","FIREFOX","SAFARI","OPERA","IE","MS_EDGE","MS_EDGE_CHROMIUM","FB_MESSANGER","SAMSUNG","UCBROWSER","UNKNOWN","HTC","NEXUS_PHONE","DELL","MOTOROLA","LG","SONY","ASUS","NOKIA_LUMIA","MICROMAX","PALM","VERTU","PANTECH","FLY","WIKO","I_MOBILE","SIMVALLEY","WOLFGANG","ALCATEL","NINTENDO","AMOI","INQ","VITA","BLACKBERRY","FIREFOX_OS","IPHONE","iPod","ANDROID","WINDOWS_PHONE","GENERIC_PHONE","iPad","NexusTablet","GoogleTablet","SamsungTablet","Kindle","SurfaceTablet","HPTablet","AsusTablet","BlackBerryTablet","HTCtablet","MotorolaTablet","NookTablet","AcerTablet","ToshibaTablet","LGTablet","FujitsuTablet","PrestigioTablet","LenovoTablet","DellTablet","YarvikTablet","MedionTablet","ArnovaTablet","IntensoTablet","IRUTablet","MegafonTablet","EbodaTablet","AllViewTablet","ArchosTablet","AinolTablet","NokiaLumiaTablet","SonyTablet","PhilipsTablet","CubeTablet","CobyTablet","MIDTablet","MSITablet","SMiTTablet","RockChipTablet","FlyTablet","bqTablet","HuaweiTablet","NecTablet","PantechTablet","BronchoTablet","VersusTablet","ZyncTablet","PositivoTablet","NabiTablet","KoboTablet","DanewTablet","TexetTablet","PlaystationTablet","TrekstorTablet","PyleAudioTablet","AdvanTablet","DanyTechTablet","GalapadTablet","MicromaxTablet","KarbonnTablet","AllFineTablet","PROSCANTablet","YONESTablet","ChangJiaTablet","GUTablet","PointOfViewTablet","OvermaxTablet","HCLTablet","DPSTablet","VistureTablet","CrestaTablet","MediatekTablet","ConcordeTablet","GoCleverTablet","ModecomTablet","VoninoTablet","ECSTablet","StorexTablet","VodafoneTablet","EssentielBTablet","RossMoorTablet","iMobileTablet","TolinoTablet","AudioSonicTablet","AMPETablet","SkkTablet","TecnoTablet","JXDTablet","iJoyTablet","FX2Tablet","XoroTablet","ViewsonicTablet","VerizonTablet","OdysTablet","CaptivaTablet","IconbitTablet","TeclastTablet","OndaTablet","JaytechTablet","BlaupunktTablet","DigmaTablet","EvolioTablet","LavaTablet","AocTablet","MpmanTablet","CelkonTablet","WolderTablet","MediacomTablet","MiTablet","NibiruTablet","NexoTablet","LeaderTablet","UbislateTablet","PocketBookTablet","KocasoTablet","HisenseTablet","Hudl","TelstraTablet","Honeywell","GenericTablet","CHROME_BOOK","PS4","MAC","CHROMECAST","APPLE_TV","GOOGLE_TV","Tesla","HONEYWELL","MI_SE_9","WINDOWS","IOS","LINUX","UNIX","CHROME_OS","WINDOWS_3_11","WINDOWS_95","WINDOWS_ME","WINDOWS_98","WINDOWS_CE","WINDOWS_2000","WINDOWS_XP","WINDOWS_SERVER_2003","WINDOWS_VISTA","WINDOWS_7","WINDOWS_8_1","WINDOWS_8","WINDOWS_10","WINDOWS_PHONE_7_5","WINDOWS_PHONE_8_1","WINDOWS_PHONE_10","WINDOWS_NT_4_0","MACOSX_11_0","MACOSX_16","MACOSX_15","MACOSX_14","MACOSX_13","MACOSX_12","MACOSX_11","MACOSX_10","MACOSX_9","MACOSX_8","MACOSX_7","MACOSX_6","MACOSX_5","MACOSX_4","MACOSX_3","MACOSX_2","MACOSX","iOS","ANDROID_9","and","or","not","Hy","Ps","Va","nu","qf","platformId","setDeviceInfo","const","prop","reTree","Constants.TABLETS_RE","maxTouchPoints","browser_version","Constants.BROWSERS","Constants.BROWSER_VERSIONS_RE","matchMedia","Landscape","Portrait","Constants.GENERAL","deviceType","isTablet","Tablet","isMobile","Mobile","isDesktop","Desktop","Unknown","getDeviceInfo","os","device","os_version","Constants.MOBILES_RE","Constants.DEVICES","Constants.DESKTOP_DEVICES","Xf","logDeviceInfo","buildNumber","deviceService","eg","pleaseWaitView","Fd","tg","getActivityLogsAfter","toUTCString","Ua","activityLogService","fetchData","processActivityDTO","scrollToBottomOfLog","firstOpenEvent","expandEvent","logElement","processCustomerConvertActivity","customerConversionType","createEntityHTML","pn","processFlagActivity","convertEntityTypeEnumToString","getEntityName","createFlagHTML","oldFlagValue","oldFlagColor","newFlagValue","newFlagColor","processCrudActivity","convertOperationTypeEnumToString","convertEntityTypeEnumToIcon","createMentionHTML","createDateHTML","hour12","categoryService","jobService","snippetService","postService","authorName","activityType","logEntries","authorId","soundElement","getRoomName","getRoomPreview","getRoomLastMessageTimestamp","selectChat","selectChatEvent","getCircleStyle","Zd","scrollToBottomOfChat","getParticipantIcon","Ud","getParticipantFromMessage","getParticipantFirstName","messagesElement","chatInvitations","newChatRoomName","resetInvitations","addInvitation","newChatButton","createChatDialogVisible","removeInvitation","setInvitation","resetCreateChatForm","createChat","ig","roomName","selectedChat","rebuildIcons","sideDialItems","hasLogOpenedYet","openLog","openChat","getAudioIcon","og","subscribeToSignalR","getDueTime","getAppointmentType","getRemainingTime","getReminder","getNotes","dismiss","finally","showSnooze","deletion","searchService","ja","subscribeToAppointmentChanges","addAppointment","addAppointmentDto","appointments","updateAppointment","updateAppointmentDto","removeAppointment","getAppointmentsForToday","uu","SnippetPopupInternalComponent","oxw","Ja","Ho","navigationService","getCustomerColor","du","onRightClick","rightClickPresses","hu","setColor","flaggableObject","selectFlag","Uo","removeFlag","onFlagSelect","tooltipService","Xl","san","progressStyle","pu","sendFeedbackEmail","togglePopup","popupVisible","resetForm","feedback","closePopup","submitFeedback","feedbackService","Content","minimize","openSettings","settingsPanelOpen","scrollTabs","horizontalScroll","deltaY","addNewTab","selectTab","closeTab","copyUrl","writeText","pasteUrl","readText","cleanCache","getSettings","saveSettings","settings","accountSettingsService","desktopWrapperVersionAndBuildNumber","settingsPopupOpen","nc","getAllNotifications","notifications","dismissNotification","dismissAllNotifications","readNotification","userNotifications","hg","getReadStatus","createdOn","padStart","formattedTime","notificationIcon","entityIcon","readState","userId","changeReadStatus","notificationService","redirectToEntity","closeNotificationPopup","applyDisappearAnimation","dismissNotificationEvent","notificationElement","getFadeAnimation","getFadeAnimationTiming","iterations","closePopUp","fg","notificationListComponent","notificationListOpen","clickOutsideEnabled","checkParent","clickOutside","openNotificationModal","notificationPopupOpen","ac","extended","getTenantName","icons","buildLinks","keepExitContainerAlive","exitContainerLife","closeExitContainer","extendedChange","tenantName","currentRoute","showToolTip","permissionService","frontEndBuildBranch","frontEndBuildNumber","changePage","tab","changeExtended","settingsOpen","openExitContainer","exitContainerOpen","keepExitContainerOpen","changeOrganization","goToSettings","openInvitationWebsite","isAdmin","Eu","gg","aiAssistantService","selectAssistant","selectAssistantEvent","Yi","currentMessage","canSearch","searching","Mh","goBackToSelection","backToSelection","xh","orgDesc","empDesc","custDesc","aiFocusOptions","collapse","collapsed","currentSelectedAssistant","currentScreen","onSettingsClick","settingsVisible","onBetaClick","qa","createErrorLabel","errorLabel","checkIfProblem","getProblems","showErrorLabel","problemDetailsKey","hideErrorLabel","problemDetailsModel","MODEL","innerText","Mu","colorService","loginButtonAction","problemDetails","openForgotPasswordLink","changeStateToRegister","changeStateToForgotPassword","dc","generateLayout","updateNativeElement","updateSpan","updateHoverElement","span","getSpanClassName","hoverElement","adjustHoverElement","Au","Ih","requirements","minUppercase","minLowercase","minDigits","minSpecial","getPluralSuffixIfRequired","Iu","keyboardEnter","isValid","isLengthValid","isUppercaseValid","isLowercaseValid","isDigitValid","isSpecialCharacterValid","Ru","emailValid","companyWebsite","confirmPassword","companyNameValid","firstNameValid","lastNameValid","passwordValid","isSecondOasswordValid","isFormValid","isSubmitting","accountInformation","website","companyInformation","companyDescription","changeStateToLogin","sendEmail","va","organizationName","isEmailValid","isFirstNameValid","isLastNameValid","isInvitationValid","areAllInvitationsValid","invitations","openModal","modalOpen","checkNoInvitation","saveNewOrganization","noInvitation","kh","organizationDescription","success","cancelNewOrganization","getUserProblemDetailsKey","displayCreateOrganizationDialogEvent","zo","tenants","connectToOrganization","noOrganizations","refreshTenants","openDownloadPage","pc","onNavigation","prevComponentType","Bh","isSideNavExtended","onkeyup","connectToSignalRAppointments","redirectToRegister","commonClose","cedeToast","actionMessagesCount","getTimeLeft","timerObj","headlessTab","Uh","Ql","collectionClone","getRegExpFlags","regExp","ignoreCase","multiline","unicode"],"sources":["./$_lazy_route_resources|lazy|groupOptions:%20%7B%7D|namespace%20object","../packages/animations/src/animation_builder.ts","../packages/animations/src/animation_metadata.ts","../packages/animations/src/util.ts","../packages/animations/src/players/animation_player.ts","../packages/animations/src/players/animation_group_player.ts","../packages/animations/src/private_export.ts","../src/cdk/bidi/dir-document-token.ts","../src/cdk/bidi/directionality.ts","../src/cdk/bidi/bidi-module.ts","./node_modules/rxjs/src/internal/observable/interval.ts","../src/cdk/drag-drop/drag-styling.ts","../src/cdk/drag-drop/transition-duration.ts","../src/cdk/drag-drop/client-rect.ts","../src/cdk/drag-drop/parent-position-tracker.ts","../src/cdk/drag-drop/clone-node.ts","../src/cdk/drag-drop/drag-ref.ts","../src/cdk/drag-drop/drag-utils.ts","../src/cdk/drag-drop/drop-list-ref.ts","../src/cdk/drag-drop/drag-drop-registry.ts","../src/cdk/drag-drop/drag-drop.ts","../src/cdk/drag-drop/drag-parent.ts","../src/cdk/drag-drop/directives/drop-list-group.ts","../src/cdk/drag-drop/directives/config.ts","../src/cdk/drag-drop/directives/drop-list.ts","../src/cdk/drag-drop/directives/drag-handle.ts","../src/cdk/drag-drop/directives/drag-placeholder.ts","../src/cdk/drag-drop/directives/drag-preview.ts","../src/cdk/drag-drop/directives/drag.ts","../src/cdk/drag-drop/drag-drop-module.ts","../src/cdk/platform/platform.ts","../src/cdk/platform/features/passive-listeners.ts","../src/cdk/platform/features/scrolling.ts","../src/cdk/platform/features/shadow-dom.ts","../src/cdk/platform/platform-module.ts","./node_modules/rxjs/src/internal/observable/fromEvent.ts","./node_modules/rxjs/src/internal/util/Immediate.ts","./node_modules/rxjs/src/internal/scheduler/asap.ts","./node_modules/rxjs/src/internal/scheduler/AsapScheduler.ts","./node_modules/rxjs/src/internal/scheduler/AsapAction.ts","./node_modules/rxjs/src/internal/util/isObservable.ts","./node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts","./node_modules/rxjs/src/internal/operators/audit.ts","./node_modules/rxjs/src/internal/observable/timer.ts","./node_modules/rxjs/src/internal/operators/auditTime.ts","./node_modules/rxjs/src/internal/operators/pairwise.ts","../src/cdk/collections/array-data-source.ts","../src/cdk/collections/data-source.ts","../src/cdk/collections/recycle-view-repeater-strategy.ts","../src/cdk/collections/view-repeater.ts","../src/cdk/scrolling/virtual-scroll-strategy.ts","../src/cdk/scrolling/fixed-size-virtual-scroll.ts","../src/cdk/scrolling/scroll-dispatcher.ts","../src/cdk/scrolling/scrollable.ts","../src/cdk/scrolling/viewport-ruler.ts","../src/cdk/scrolling/virtual-scroll-viewport.ts","../src/cdk/scrolling/virtual-for-of.ts","../src/cdk/scrolling/scrolling-module.ts","../src/cdk/coercion/boolean-property.ts","../src/cdk/coercion/number-property.ts","../src/cdk/coercion/array.ts","../src/cdk/coercion/element.ts","../packages/common/src/dom_adapter.ts","../packages/common/src/dom_tokens.ts","../packages/common/src/location/platform_location.ts","../packages/common/src/location/util.ts","../packages/common/src/location/location_strategy.ts","../packages/common/src/location/hash_location_strategy.ts","../packages/common/src/location/location.ts","../packages/common/src/i18n/locale_data_api.ts","../packages/common/src/i18n/format_date.ts","../packages/common/src/i18n/localization.ts","../packages/common/src/cookie.ts","../packages/common/src/directives/ng_class.ts","../packages/common/src/directives/ng_for_of.ts","../packages/common/src/directives/ng_if.ts","../packages/common/src/directives/ng_switch.ts","../packages/common/src/directives/ng_style.ts","../packages/common/src/directives/ng_template_outlet.ts","../packages/common/src/pipes/date_pipe.ts","../packages/common/src/pipes/invalid_pipe_argument_error.ts","../packages/common/src/common_module.ts","../packages/common/src/platform_id.ts","../packages/common/src/viewport_scroller.ts","../packages/common/src/xhr.ts","../packages/common/http/src/backend.ts","../packages/common/http/src/headers.ts","../packages/common/http/src/params.ts","../packages/common/http/src/context.ts","../packages/common/http/src/request.ts","../packages/common/http/src/response.ts","../packages/common/http/src/client.ts","../packages/common/http/src/interceptor.ts","../packages/common/http/src/xhr.ts","../packages/common/http/src/xsrf.ts","../packages/common/http/src/module.ts","../packages/core/src/util/property.ts","../packages/core/src/util/stringify.ts","../packages/core/src/di/forward_ref.ts","../packages/core/src/render3/error_code.ts","../packages/core/src/render3/util/stringify_utils.ts","../packages/core/src/render3/errors_di.ts","../packages/core/src/util/assert.ts","../packages/core/src/di/interface/defs.ts","../packages/core/src/di/interface/injector.ts","../packages/core/src/di/inject_switch.ts","../packages/core/src/util/closure.ts","../packages/core/src/change_detection/constants.ts","../packages/core/src/metadata/view.ts","../packages/core/src/util/global.ts","../packages/core/src/util/empty.ts","../packages/core/src/render3/fields.ts","../packages/core/src/render3/definition.ts","../packages/core/src/render3/interfaces/type_checks.ts","../packages/core/src/render3/interfaces/container.ts","../packages/core/src/render3/interfaces/view.ts","../packages/core/src/render3/definition_factory.ts","../packages/core/src/interface/simple_change.ts","../packages/core/src/render3/features/ng_onchanges_feature.ts","../packages/core/src/render3/profiler.ts","../packages/core/src/render3/namespaces.ts","../packages/core/src/render3/interfaces/document.ts","../packages/core/src/render3/interfaces/renderer.ts","../packages/core/src/render3/util/view_utils.ts","../packages/core/src/render3/state.ts","../packages/core/src/render3/hooks.ts","../packages/core/src/render3/interfaces/injector.ts","../packages/core/src/render3/util/attrs_utils.ts","../packages/core/src/render3/util/injector_utils.ts","../packages/core/src/render3/di.ts","../packages/core/src/render3/instructions/di_attr.ts","../packages/core/src/util/decorators.ts","../packages/core/src/di/injection_token.ts","../packages/core/src/metadata/di.ts","../packages/core/src/interface/type.ts","../packages/core/src/util/array_utils.ts","../packages/core/src/di/injector_compatibility.ts","../packages/core/src/di/metadata.ts","../packages/core/src/util/security/trusted_types.ts","../packages/core/src/util/security/trusted_types_bypass.ts","../packages/core/src/sanitization/bypass.ts","../packages/core/src/sanitization/inert_body.ts","../packages/core/src/sanitization/url_sanitizer.ts","../packages/core/src/sanitization/html_sanitizer.ts","../packages/core/src/sanitization/security.ts","../packages/core/src/sanitization/sanitization.ts","../packages/core/src/render3/context_discovery.ts","../packages/core/src/errors.ts","../packages/core/src/error_handler.ts","../packages/core/src/render3/util/misc_utils.ts","../packages/core/src/render/api_flags.ts","../packages/core/src/render3/i18n/i18n_tree_shaking.ts","../packages/core/src/render3/util/view_traversal_utils.ts","../packages/core/src/render3/node_manipulation.ts","../packages/core/src/render3/styling/class_differ.ts","../packages/core/src/render3/node_selector_matcher.ts","../packages/core/src/render3/tokens.ts","../packages/core/src/render3/instructions/advance.ts","../packages/core/src/render3/interfaces/styling.ts","../packages/core/src/render3/instructions/shared.ts","../packages/core/src/render3/styling/static_styling.ts","../packages/core/src/di/injector_token.ts","../packages/core/src/di/null_injector.ts","../packages/core/src/di/scope.ts","../packages/core/src/di/r3_injector.ts","../packages/core/src/di/injector.ts","../packages/core/src/render3/component.ts","../packages/core/src/render3/features/inherit_definition_feature.ts","../packages/core/src/util/symbol.ts","../packages/core/src/change_detection/change_detection_util.ts","../packages/core/src/render3/bindings.ts","../packages/core/src/render3/instructions/attribute.ts","../packages/core/src/render3/instructions/interpolation.ts","../packages/core/src/render3/instructions/template.ts","../packages/core/src/render3/instructions/storage.ts","../packages/core/src/render3/instructions/di.ts","../packages/core/src/render3/instructions/property.ts","../packages/core/src/render3/instructions/element.ts","../packages/core/src/render3/interfaces/node.ts","../packages/core/src/render3/instructions/element_container.ts","../packages/core/src/render3/instructions/get_current_view.ts","../packages/core/src/util/lang.ts","../packages/core/src/render3/instructions/listener.ts","../packages/core/src/render3/instructions/next_context.ts","../packages/core/src/render3/instructions/projection.ts","../packages/core/src/render3/instructions/property_interpolation.ts","../packages/core/src/render3/styling/style_binding_list.ts","../packages/core/src/render3/styling/styling_parser.ts","../packages/core/src/render3/instructions/styling.ts","../packages/core/src/render3/instructions/text.ts","../packages/core/src/render3/instructions/text_interpolation.ts","../packages/core/src/render3/instructions/host_property.ts","../packages/core/src/i18n/locale_en.ts","../packages/core/src/i18n/locale_data_api.ts","../packages/core/src/i18n/localization.ts","../packages/core/src/render3/i18n/i18n_locale_id.ts","../packages/core/src/render3/di_setup.ts","../packages/core/src/render3/features/providers_feature.ts","../packages/core/src/linker/component_factory.ts","../packages/core/src/linker/component_factory_resolver.ts","../packages/core/src/util/noop.ts","../packages/core/src/linker/element_ref.ts","../packages/core/src/render/api.ts","../packages/core/src/sanitization/sanitizer.ts","../packages/core/src/version.ts","../packages/core/src/change_detection/differs/default_iterable_differ.ts","../packages/core/src/change_detection/differs/default_keyvalue_differ.ts","../packages/core/src/change_detection/differs/iterable_differs.ts","../packages/core/src/change_detection/differs/keyvalue_differs.ts","../packages/core/src/render3/collect_native_nodes.ts","../packages/core/src/render3/view_ref.ts","../packages/core/src/change_detection/change_detector_ref.ts","../packages/core/src/change_detection/change_detection.ts","../packages/core/src/linker/template_ref.ts","../packages/core/src/linker/ng_module_factory.ts","../packages/core/src/linker/view_container_ref.ts","../packages/core/src/view/provider.ts","../packages/core/src/render3/component_ref.ts","../packages/core/src/linker/ng_module_factory_registration.ts","../packages/core/src/render3/ng_module_ref.ts","../packages/core/src/render3/pure_function.ts","../packages/core/src/render3/pipe.ts","../packages/core/src/event_emitter.ts","../packages/core/src/linker/query_list.ts","../packages/core/src/render3/query.ts","../packages/core/src/render3/view_engine_compatibility_prebound.ts","../packages/core/src/metadata/ng_module.ts","../packages/core/src/application_init.ts","../packages/core/src/application_tokens.ts","../packages/core/src/console.ts","../packages/core/src/i18n/tokens.ts","../packages/core/src/linker/compiler.ts","../packages/core/src/util/microtask.ts","../packages/core/src/zone/ng_zone.ts","../packages/core/src/util/raf.ts","../packages/core/src/testability/testability.ts","../packages/core/src/util/is_dev_mode.ts","../packages/core/src/application_ref.ts","../packages/core/src/linker/ng_module_factory_loader.ts","../packages/core/src/linker/system_js_ng_module_factory_loader.ts","../packages/core/src/debug/debug_node.ts","../packages/core/src/platform_core_providers.ts","../packages/core/src/application_module.ts","./node_modules/rxjs/src/internal/observable/forkJoin.ts","../packages/forms/src/directives/control_value_accessor.ts","../packages/forms/src/directives/checkbox_value_accessor.ts","../packages/forms/src/directives/default_value_accessor.ts","../packages/forms/src/validators.ts","../packages/forms/src/directives/abstract_control_directive.ts","../packages/forms/src/directives/control_container.ts","../packages/forms/src/directives/ng_control.ts","../packages/forms/src/directives/ng_control_status.ts","../packages/forms/src/directives/shared.ts","../packages/forms/src/model.ts","../packages/forms/src/directives/ng_model.ts","../packages/forms/src/directives/number_value_accessor.ts","../packages/forms/src/directives/radio_control_value_accessor.ts","../packages/forms/src/directives.ts","../packages/forms/src/form_providers.ts","../packages/platform-browser/src/browser/generic_browser_adapter.ts","../packages/platform-browser/src/browser/browser_adapter.ts","../packages/platform-browser/src/browser/server-transition.ts","../packages/platform-browser/src/browser/testability.ts","../packages/platform-browser/src/browser/xhr.ts","../packages/platform-browser/src/dom/debug/ng_probe.ts","../packages/platform-browser/src/dom/events/event_manager.ts","../packages/platform-browser/src/dom/shared_styles_host.ts","../packages/platform-browser/src/dom/dom_renderer.ts","../packages/platform-browser/src/dom/events/dom_events.ts","../packages/platform-browser/src/dom/events/hammer_gestures.ts","../packages/platform-browser/src/dom/events/key_events.ts","../packages/platform-browser/src/security/dom_sanitization_service.ts","../packages/platform-browser/src/browser.ts","../packages/platform-browser/src/browser/title.ts","../packages/platform-browser/src/browser/tools/browser.ts","./node_modules/rxjs/src/internal/BehaviorSubject.ts","./node_modules/rxjs/src/internal/OuterSubscriber.ts","./node_modules/rxjs/src/internal/InnerSubscriber.ts","./node_modules/rxjs/src/internal/util/subscribeToResult.ts","./node_modules/rxjs/src/internal/observable/combineLatest.ts","./node_modules/rxjs/src/internal/observable/defer.ts","./node_modules/rxjs/src/internal/operators/scan.ts","./node_modules/rxjs/src/internal/operators/takeLast.ts","./node_modules/rxjs/src/internal/operators/finalize.ts","../packages/router/src/events.ts","../packages/router/src/shared.ts","../packages/router/src/utils/collection.ts","../packages/router/src/url_tree.ts","../packages/router/src/utils/tree.ts","../packages/router/src/router_state.ts","../packages/router/src/create_router_state.ts","../packages/router/src/create_url_tree.ts","../packages/router/src/operators/activate_routes.ts","../packages/router/src/config.ts","../packages/router/src/utils/type_guards.ts","../packages/router/src/operators/prioritized_guard_value.ts","../packages/router/src/components/empty_outlet.ts","../packages/router/src/utils/config.ts","../packages/router/src/utils/config_matching.ts","../packages/router/src/apply_redirects.ts","./node_modules/rxjs/src/internal/operators/last.ts","../packages/router/src/utils/preactivation.ts","../packages/router/src/recognize.ts","../packages/router/src/operators/switch_tap.ts","../packages/router/src/route_reuse_strategy.ts","../packages/router/src/router_config_loader.ts","../packages/router/src/router_outlet_context.ts","../packages/router/src/url_handling_strategy.ts","../packages/router/src/router.ts","../packages/router/src/operators/apply_redirects.ts","../packages/router/src/operators/recognize.ts","../packages/router/src/operators/check_guards.ts","../packages/router/src/operators/resolve_data.ts","../packages/router/src/directives/router_link.ts","../packages/router/src/directives/router_outlet.ts","../packages/router/src/router_preloader.ts","../packages/router/src/router_scroller.ts","../packages/router/src/router_module.ts","./node_modules/lexorank/lib/index.js","./node_modules/lexorank/lib/lexoRank/index.js","./node_modules/lexorank/lib/lexoRank/lexoDecimal.js","./node_modules/lexorank/lib/lexoRank/lexoHelper.js","./node_modules/lexorank/lib/lexoRank/lexoInteger.js","./node_modules/lexorank/lib/lexoRank/lexoRank.js","./node_modules/lexorank/lib/lexoRank/lexoRankBucket.js","./node_modules/lexorank/lib/numeralSystems/index.js","./node_modules/lexorank/lib/numeralSystems/lexoNumeralSystem10.js","./node_modules/lexorank/lib/numeralSystems/lexoNumeralSystem36.js","./node_modules/lexorank/lib/numeralSystems/lexoNumeralSystem64.js","./node_modules/lexorank/lib/utils/stringBuilder.js","./node_modules/linkify-it/index.js","./node_modules/linkify-it/lib/re.js","./node_modules/markdown-it/index.js","./node_modules/markdown-it/lib/common/entities.js","./node_modules/markdown-it/lib/common/html_blocks.js","./node_modules/markdown-it/lib/common/html_re.js","./node_modules/markdown-it/lib/common/utils.js","./node_modules/markdown-it/lib/helpers/index.js","./node_modules/markdown-it/lib/helpers/parse_link_destination.js","./node_modules/markdown-it/lib/helpers/parse_link_label.js","./node_modules/markdown-it/lib/helpers/parse_link_title.js","./node_modules/markdown-it/lib/index.js","./node_modules/markdown-it/lib/parser_block.js","./node_modules/markdown-it/lib/parser_core.js","./node_modules/markdown-it/lib/parser_inline.js","./node_modules/markdown-it/lib/presets/commonmark.js","./node_modules/markdown-it/lib/presets/default.js","./node_modules/markdown-it/lib/presets/zero.js","./node_modules/markdown-it/lib/renderer.js","./node_modules/markdown-it/lib/ruler.js","./node_modules/markdown-it/lib/rules_block/blockquote.js","./node_modules/markdown-it/lib/rules_block/code.js","./node_modules/markdown-it/lib/rules_block/fence.js","./node_modules/markdown-it/lib/rules_block/heading.js","./node_modules/markdown-it/lib/rules_block/hr.js","./node_modules/markdown-it/lib/rules_block/html_block.js","./node_modules/markdown-it/lib/rules_block/lheading.js","./node_modules/markdown-it/lib/rules_block/list.js","./node_modules/markdown-it/lib/rules_block/paragraph.js","./node_modules/markdown-it/lib/rules_block/reference.js","./node_modules/markdown-it/lib/rules_block/state_block.js","./node_modules/markdown-it/lib/rules_block/table.js","./node_modules/markdown-it/lib/rules_core/block.js","./node_modules/markdown-it/lib/rules_core/inline.js","./node_modules/markdown-it/lib/rules_core/linkify.js","./node_modules/markdown-it/lib/rules_core/normalize.js","./node_modules/markdown-it/lib/rules_core/replacements.js","./node_modules/markdown-it/lib/rules_core/smartquotes.js","./node_modules/markdown-it/lib/rules_core/state_core.js","./node_modules/markdown-it/lib/rules_core/text_join.js","./node_modules/markdown-it/lib/rules_inline/autolink.js","./node_modules/markdown-it/lib/rules_inline/backticks.js","./node_modules/markdown-it/lib/rules_inline/balance_pairs.js","./node_modules/markdown-it/lib/rules_inline/emphasis.js","./node_modules/markdown-it/lib/rules_inline/entity.js","./node_modules/markdown-it/lib/rules_inline/escape.js","./node_modules/markdown-it/lib/rules_inline/fragments_join.js","./node_modules/markdown-it/lib/rules_inline/html_inline.js","./node_modules/markdown-it/lib/rules_inline/image.js","./node_modules/markdown-it/lib/rules_inline/link.js","./node_modules/markdown-it/lib/rules_inline/linkify.js","./node_modules/markdown-it/lib/rules_inline/newline.js","./node_modules/markdown-it/lib/rules_inline/state_inline.js","./node_modules/markdown-it/lib/rules_inline/strikethrough.js","./node_modules/markdown-it/lib/rules_inline/text.js","./node_modules/markdown-it/lib/token.js","./node_modules/mdurl/decode.js","./node_modules/mdurl/encode.js","./node_modules/mdurl/format.js","./node_modules/mdurl/index.js","./node_modules/mdurl/parse.js","./node_modules/ngx-electron/__ivy_ngcc__/fesm2015/ngx-electron/lib/electron.service.ts","./node_modules/ngx-electron/__ivy_ngcc__/fesm2015/ngx-electron/lib/electron.service.ref.ts","./node_modules/ngx-electron/__ivy_ngcc__/fesm2015/ngx-electron/public_api.ts","./node_modules/src/app/components/accordion/accordion.ts","./node_modules/src/app/components/api/filtermatchmode.ts","./node_modules/src/app/components/api/primengconfig.ts","./node_modules/src/app/components/api/translationkeys.ts","./node_modules/src/app/components/api/confirmaeventtype.ts","./node_modules/src/app/components/api/confirmationservice.ts","./node_modules/src/app/components/api/filterservice.ts","./node_modules/src/app/components/api/messageservice.ts","./node_modules/src/app/components/api/overlayservice.ts","./node_modules/src/app/components/api/shared.ts","./node_modules/src/app/components/api/treedragdropservice.ts","./node_modules/src/app/components/autocomplete/autocomplete.ts","./node_modules/src/app/components/avatar/avatar.ts","./node_modules/src/app/components/avatargroup/avatargroup.ts","./node_modules/src/app/components/badge/badge.ts","./node_modules/src/app/components/button/button.ts","./node_modules/src/app/components/calendar/calendar.ts","./node_modules/src/app/components/checkbox/checkbox.ts","./node_modules/src/app/components/confirmdialog/confirmdialog.ts","./node_modules/src/app/components/dialog/dialog.ts","./node_modules/src/app/components/dom/domhandler.ts","./node_modules/src/app/components/dom/connectedoverlayscrollhandler.ts","./node_modules/src/app/components/dropdown/dropdown.ts","./node_modules/src/app/components/focustrap/focustrap.ts","./node_modules/src/app/components/inputswitch/inputswitch.ts","./node_modules/src/app/components/inputtext/inputtext.ts","./node_modules/src/app/components/keyfilter/keyfilter.ts","./node_modules/src/app/components/message/message.ts","./node_modules/src/app/components/messages/messages.ts","./node_modules/src/app/components/multiselect/multiselect.ts","./node_modules/src/app/components/overlaypanel/overlaypanel.ts","./node_modules/src/app/components/progressspinner/progressspinner.ts","./node_modules/src/app/components/ripple/ripple.ts","./node_modules/src/app/components/selectbutton/selectbutton.ts","./node_modules/src/app/components/skeleton/skeleton.ts","./node_modules/src/app/components/speeddial/speeddial.ts","./node_modules/src/app/components/spinner/spinner.ts","./node_modules/src/app/components/tag/tag.ts","./node_modules/src/app/components/toast/toast.ts","./node_modules/src/app/components/tooltip/tooltip.ts","./node_modules/src/app/components/utils/objectutils.ts","./node_modules/src/app/components/utils/uniquecomponentid.ts","./node_modules/src/app/components/utils/zindexutils.ts","./node_modules/punycode/punycode.es6.js","./node_modules/rxjs/src/internal/Observable.ts","./node_modules/rxjs/src/internal/util/toSubscriber.ts","./node_modules/rxjs/src/internal/util/canReportError.ts","./node_modules/rxjs/src/internal/util/pipe.ts","./node_modules/rxjs/src/internal/Observer.ts","./node_modules/rxjs/src/internal/Subject.ts","./node_modules/rxjs/src/internal/SubjectSubscription.ts","./node_modules/rxjs/src/internal/Subscriber.ts","./node_modules/rxjs/src/internal/util/UnsubscriptionError.ts","./node_modules/rxjs/src/internal/Subscription.ts","./node_modules/rxjs/src/internal/config.ts","./node_modules/rxjs/src/internal/innerSubscribe.ts","./node_modules/rxjs/src/internal/observable/ConnectableObservable.ts","./node_modules/rxjs/src/internal/observable/concat.ts","./node_modules/rxjs/src/internal/operators/concatAll.ts","./node_modules/rxjs/src/internal/observable/empty.ts","./node_modules/rxjs/src/internal/observable/from.ts","./node_modules/rxjs/src/internal/scheduled/scheduled.ts","./node_modules/rxjs/src/internal/util/isInteropObservable.ts","./node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts","./node_modules/rxjs/src/internal/scheduled/schedulePromise.ts","./node_modules/rxjs/src/internal/util/isIterable.ts","./node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts","./node_modules/rxjs/src/internal/observable/fromArray.ts","./node_modules/rxjs/src/internal/observable/merge.ts","./node_modules/rxjs/src/internal/observable/of.ts","./node_modules/rxjs/src/internal/observable/throwError.ts","./node_modules/rxjs/src/internal/operators/catchError.ts","./node_modules/rxjs/src/internal/operators/concatMap.ts","./node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts","./node_modules/rxjs/src/internal/operators/filter.ts","./node_modules/rxjs/src/internal/operators/first.ts","./node_modules/rxjs/src/internal/operators/map.ts","./node_modules/rxjs/src/internal/operators/mergeAll.ts","./node_modules/rxjs/src/internal/operators/mergeMap.ts","./node_modules/rxjs/src/internal/operators/refCount.ts","./node_modules/rxjs/src/internal/operators/share.ts","./node_modules/rxjs/src/internal/operators/multicast.ts","./node_modules/rxjs/src/internal/scheduler/queue.ts","./node_modules/rxjs/src/internal/scheduler/QueueScheduler.ts","./node_modules/rxjs/src/internal/scheduler/QueueAction.ts","./node_modules/rxjs/src/internal/Notification.ts","./node_modules/rxjs/src/internal/operators/observeOn.ts","./node_modules/rxjs/src/internal/ReplaySubject.ts","./node_modules/rxjs/src/internal/operators/shareReplay.ts","./node_modules/rxjs/src/internal/operators/startWith.ts","./node_modules/rxjs/src/internal/operators/switchMap.ts","./node_modules/rxjs/src/internal/operators/take.ts","./node_modules/rxjs/src/internal/operators/takeUntil.ts","./node_modules/rxjs/src/internal/util/noop.ts","./node_modules/rxjs/src/internal/operators/tap.ts","./node_modules/rxjs/src/internal/operators/throwIfEmpty.ts","./node_modules/rxjs/src/internal/scheduled/scheduleArray.ts","./node_modules/rxjs/src/internal/scheduler/Action.ts","./node_modules/rxjs/src/internal/scheduler/AsyncAction.ts","./node_modules/rxjs/src/internal/Scheduler.ts","./node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts","./node_modules/rxjs/src/internal/scheduler/animationFrame.ts","./node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts","./node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts","./node_modules/rxjs/src/internal/scheduler/async.ts","./node_modules/rxjs/src/internal/symbol/iterator.ts","./node_modules/rxjs/src/internal/symbol/observable.ts","./node_modules/rxjs/src/internal/symbol/rxSubscriber.ts","./node_modules/rxjs/src/internal/util/ArgumentOutOfRangeError.ts","./node_modules/rxjs/src/internal/util/EmptyError.ts","./node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts","./node_modules/rxjs/src/internal/util/hostReportError.ts","./node_modules/rxjs/src/internal/util/identity.ts","./node_modules/rxjs/src/internal/util/isArray.ts","./node_modules/rxjs/src/internal/util/isArrayLike.ts","./node_modules/rxjs/src/internal/util/isFunction.ts","./node_modules/rxjs/src/internal/util/isNumeric.ts","./node_modules/rxjs/src/internal/util/isObject.ts","./node_modules/rxjs/src/internal/util/isPromise.ts","./node_modules/rxjs/src/internal/util/isScheduler.ts","./node_modules/rxjs/src/internal/util/subscribeTo.ts","./node_modules/rxjs/src/internal/util/subscribeToObservable.ts","./node_modules/rxjs/src/internal/util/subscribeToPromise.ts","./node_modules/rxjs/src/internal/util/subscribeToIterable.ts","./node_modules/rxjs/src/internal/util/subscribeToArray.ts","./node_modules/uc.micro/categories/Cc/regex.js","./node_modules/uc.micro/categories/Cf/regex.js","./node_modules/uc.micro/categories/P/regex.js","./node_modules/uc.micro/categories/Z/regex.js","./node_modules/uc.micro/index.js","./node_modules/uc.micro/properties/Any/regex.js","./src/app/_layout-library/full-page-layout/full-page-layout.component.ts","./src/app/_layout-library/full-page-layout/full-page-layout.component.html","./src/app/_layout-library/generic-editor/generic-editor.component.ts","./src/app/_layout-library/generic-editor/generic-editor.component.html","./src/app/_layout-library/layout-library.module.ts","./src/app/_layout-library/lmr-page-layout/l-c-r-page-layout.component.html","./src/app/_layout-library/lmr-page-layout/l-c-r-page-layout.component.ts","./src/app/_layout-library/page/page.component.html","./src/app/_layout-library/page/page.component.ts","./src/app/_widget-library/button/button.component.ts","./src/app/_widget-library/button/button.component.html","./src/app/_widget-library/date-field-interval/date-field-interval.component.html","./src/app/_widget-library/date-field-interval/date-field-interval.component.ts","./src/app/_widget-library/field-label/field-label.component.ts","./src/app/_widget-library/field-label/field-label.component.html","./src/app/_widget-library/field-wrapper/field-wrapper.component.ts","./src/app/_widget-library/field-wrapper/field-wrapper.component.html","./src/app/_widget-library/fields/boolean-field/boolean-field.component.html","./src/app/_widget-library/fields/boolean-field/boolean-field.component.ts","./src/app/_widget-library/fields/customer-field/customer-field.component.html","./src/app/_widget-library/fields/customer-field/customer-field.component.ts","./src/app/_widget-library/fields/date-field/date-field.component.ts","./src/app/_widget-library/fields/date-field/date-field.component.html","./src/app/_widget-library/fields/dropdown-field/dropdown-field.component.ts","./src/app/_widget-library/fields/dropdown-field/dropdown-field.component.html","./src/app/_widget-library/fields/single-dropdown/single-dropdown.component.html","./src/app/_widget-library/fields/single-dropdown/single-dropdown.component.ts","./src/app/_widget-library/fields/flag-single-select/flag-single-select.component.ts","./src/app/_widget-library/fields/flag-single-select/flag-single-select.component.html","./src/app/_widget-library/fields/generic-field/generic-field.component.html","./src/app/_widget-library/fields/generic-field/generic-field.component.ts","./src/app/_widget-library/fields/multi-column-field/multi-column-field.component.ts","./src/app/_widget-library/fields/multi-column-field/multi-column-field.component.html","./src/app/_widget-library/fields/multi-column-separator/multi-column-separator.component.ts","./src/app/_widget-library/fields/multi-column-separator/multi-column-separator.component.html","./src/app/_widget-library/fields/number-field/number-field.component.ts","./src/app/_widget-library/fields/number-field/number-field.component.html","./src/app/_widget-library/fields/single-select/single-select.component.html","./src/app/_widget-library/fields/single-select/single-select.component.ts","./src/app/_widget-library/fields/text-field/text-field.component.ts","./src/app/_widget-library/fields/text-field/text-field.component.html","./src/app/_widget-library/fields/textarea-field/textarea-field.component.ts","./src/app/_widget-library/fields/textarea-field/textarea-field.component.html","./src/app/_widget-library/fields/time-field/time-field.component.ts","./src/app/_widget-library/fields/time-field/time-field.component.html","./src/app/_widget-library/fields/worker-field/worker-field.component.html","./src/app/_widget-library/fields/worker-field/worker-field.component.ts","./src/app/_widget-library/platform-aware/platform-aware.component.ts","./src/app/_widget-library/widget-library.module.ts","./src/app/activity-log/data/operationTypeEnum.ts","./node_modules/src/app/components/paginator/paginator.ts","./src/app/ai-assistant/ai-assistant.module.ts","./src/app/ai-assistant/components/ai-message/ai-message.component.html","./src/app/ai-assistant/components/ai-message/ai-message.component.ts","./src/app/ai-assistant/components/ai-message-list/ai-message-list.component.html","./src/app/ai-assistant/components/ai-message-list/ai-message-list.component.ts","./src/app/ai-assistant/components/ai-message/ai-message-view.model.ts","./src/app/ai-assistant/components/assistant-profile-picture/assistant-profile-picture.component.ts","./src/app/ai-assistant/components/assistant-profile-picture/assistant-profile-picture.component.html","./src/app/ai-assistant/services/ai-assistant-registration.service.ts","./node_modules/engine.io-parser/build/esm/commons.js","./node_modules/engine.io-parser/build/esm/encodePacket.browser.js","./node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","./node_modules/engine.io-parser/build/esm/decodePacket.browser.js","./node_modules/engine.io-parser/build/esm/index.js","./node_modules/@socket.io/component-emitter/index.mjs","./node_modules/engine.io-client/build/esm/globalThis.browser.js","./node_modules/engine.io-client/build/esm/util.js","./node_modules/engine.io-client/build/esm/transport.js","./node_modules/engine.io-client/build/esm/contrib/parseqs.js","./node_modules/engine.io-client/build/esm/contrib/yeast.js","./node_modules/engine.io-client/build/esm/contrib/has-cors.js","./node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","./node_modules/engine.io-client/build/esm/transports/polling.js","./node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","./node_modules/engine.io-client/build/esm/transports/websocket.js","./node_modules/engine.io-client/build/esm/transports/webtransport.js","./node_modules/engine.io-client/build/esm/transports/index.js","./node_modules/engine.io-client/build/esm/contrib/parseuri.js","./node_modules/engine.io-client/build/esm/socket.js","./node_modules/socket.io-parser/build/esm/is-binary.js","./node_modules/socket.io-parser/build/esm/binary.js","./node_modules/socket.io-parser/build/esm/index.js","./node_modules/socket.io-client/build/esm/on.js","./node_modules/socket.io-client/build/esm/socket.js","./node_modules/socket.io-client/build/esm/contrib/backo2.js","./node_modules/socket.io-client/build/esm/manager.js","./node_modules/socket.io-client/build/esm/index.js","./node_modules/socket.io-client/build/esm/url.js","./node_modules/ngx-socket-io/src/socket-io.service.ts","./node_modules/ngx-socket-io/src/socket-io.module.ts","./src/app/ai-assistant/services/ai-assistant.service.ts","./node_modules/src/app/components/radiobutton/radiobutton.ts","./src/app/activity-log/activity-log.module.ts","./src/app/chat/chat.module.ts","./src/app/account-settings/account-settings.module.ts","./src/app/feedback/feedback.module.ts","./src/app/app-common/app-common.module.ts","./src/app/app-common/components/html-editor/html-editor.component.ts","./src/app/ck/html-editor-ck/html-editor-ck-lazy-component.definition.ts","./src/app/app-common/components/html-editor/html-editor.component.html","./src/app/app-common/components/html-viewer/html-viewer.component.ts","./src/app/ck/html-viewer-ck/html-viewer-ck-lazy-component.definition.ts","./src/app/app-common/components/html-viewer/html-viewer.component.html","./src/app/app-common/components/lazy-loaded-component/lazy-loaded-component.component.html","./src/app/app-common/components/lazy-loaded-component/lazy-loaded-component.component.ts","./src/app/app-common/components/tab-view/tab-view.component.html","./src/app/app-common/components/tab-view/tab-view.component.ts","./src/app/app-common/data/BaseEntity.ts","./src/app/app-common/data/BaseEntityUtils.ts","./src/app/app-common/data/EntityType.ts","./src/app/app-common/data/Event.ts","./src/app/app-common/data/problemDetails.ts","./src/app/app-common/data/requests/EditRequest.ts","./src/app/app-common/services/app/app.service.ts","./src/app/app-common/services/appState/app-state.service.ts","./src/app/app-common/services/native/native.service.ts","./src/app/app-common/services/native/browser.service.ts","./src/app/app-common/services/native/platform.service.ts","./src/app/app-common/services/route-solver.service.ts","./src/app/app-common/services/navigation.service.ts","./src/app/app-common/services/please-wait/please-wait.service.ts","./src/app/app-common/services/search/search.service.ts","./src/app/app-common/services/server/serverException.ts","./src/app/app-common/services/server/notFoundException.ts","./src/app/app-common/services/server/unauthorizedRequestException.ts","./src/app/app-common/services/server/requestException.ts","./src/app/app-common/services/server/genericHttpService.ts","./src/app/app-common/services/server/api.service.ts","./src/app/app-common/services/server/conflictException.ts","./src/app/app-common/services/server/requests-websocket.service.ts","./src/app/app-common/services/signalr/handlers/chatHandler.ts","./node_modules/@microsoft/signalr/src/Errors.ts","./node_modules/@microsoft/signalr/src/HttpClient.ts","./node_modules/@microsoft/signalr/src/ILogger.ts","./node_modules/@microsoft/signalr/src/Loggers.ts","./node_modules/@microsoft/signalr/src/Utils.ts","./node_modules/@microsoft/signalr/src/FetchHttpClient.ts","./node_modules/@microsoft/signalr/src/XhrHttpClient.ts","./node_modules/@microsoft/signalr/src/DefaultHttpClient.ts","./node_modules/@microsoft/signalr/src/TextMessageFormat.ts","./node_modules/@microsoft/signalr/src/HandshakeProtocol.ts","./node_modules/@microsoft/signalr/src/IHubProtocol.ts","./node_modules/@microsoft/signalr/src/Subject.ts","./node_modules/@microsoft/signalr/src/HubConnection.ts","./node_modules/@microsoft/signalr/src/DefaultReconnectPolicy.ts","./node_modules/@microsoft/signalr/src/ITransport.ts","./node_modules/@microsoft/signalr/src/AbortController.ts","./node_modules/@microsoft/signalr/src/LongPollingTransport.ts","./node_modules/@microsoft/signalr/src/ServerSentEventsTransport.ts","./node_modules/@microsoft/signalr/src/WebSocketTransport.ts","./node_modules/@microsoft/signalr/src/HttpConnection.ts","./node_modules/@microsoft/signalr/src/JsonHubProtocol.ts","./node_modules/@microsoft/signalr/src/HubConnectionBuilder.ts","./src/app/app-common/services/signalr/handlers/crudEvents.ts","./src/app/app-common/services/signalr/handlers/signalRCrudHandler.ts","./src/app/app-common/services/signalr/handlers/signalRFlagHandler.ts","./src/app/app-common/services/signalr/handlers/signalRCustomerConvertHandler.ts","./src/app/app-common/services/signalr/handlers/appointmentHandler.ts","./src/app/app-common/services/signalr/handlers/notificationHandler.ts","./src/app/app-common/services/signalr/signal-r.service.ts","./src/app/app-common/services/updater/updater.service.ts","./src/app/app-common/utils/phonenumber.formatter.ts","./src/app/app-common/utils/random-string.generator.ts","./src/app/app.component.html","./src/app/app.component.ts","./src/app/appointment/data/appointmentRenderTime.enum.ts","./src/app/appointment/data/appointmentType.enum.ts","./src/app/appointment/data/appointmentProperties.ts","./src/app/appointment/data/appointmentCalendarDto.ts","./src/app/appointment/services/appointment.service.ts","./src/app/audit/audit.module.ts","./node_modules/jwt-decode/lib/atob.js","./node_modules/jwt-decode/lib/index.js","./src/app/auth/services/auth/auth.service.ts","./node_modules/jwt-decode/lib/base64_url_decode.js","./src/app/auth/services/authGuard/auth-guard.service.ts","./src/app/auth/services/tenant/tenant.service.ts","./src/app/category/data/categoryDto.ts","./src/app/category/data/category.ts","./src/app/category/data/requests/editCategoryRequest.ts","./src/app/query/data/specifics/categoryProperties.ts","./src/app/category/services/category/category.service.ts","./src/app/category/data/categoryUtils.ts","./src/app/chat/services/chat.service.ts","./src/app/communication-common/communication-common.module.ts","./src/app/communication-common/components/communication-builder/communication-builder.component.ts","./src/app/communication-common/components/communication-builder/communication-builder.component.html","./src/app/_widget-library/fields/carrier-single-select/carrier-single-select.component.ts","./src/app/_widget-library/fields/carrier-single-select/carrier-single-select.component.html","./src/app/communication-common/components/communication-editor/communication-editor.component.html","./src/app/communication-common/components/communication-editor/communication-editor.component.ts","./src/app/communication/data/communication.ts","./src/app/communication/data/communicationDto.ts","./src/app/communication/data/communicationType.ts","./src/app/communication/data/requests/leadDto.ts","./src/app/communication/data/mail.ts","./src/app/communication/data/requests/addCommunicationRequest.ts","./src/app/communication/data/requests/editCommunicationRequest.ts","./src/app/communication/data/requests/flagCommunicationRequest.ts","./src/app/communication/data/mailCheck.ts","./src/app/communication/data/fullCommunicationDto.ts","./src/app/communication/services/communication.service.ts","./src/app/customers/data/customer.ts","./src/app/customers/data/customerDto.ts","./src/app/query/data/specifics/customerProperties.ts","./src/app/customers/data/requests/addCustomerRequest.ts","./src/app/customers/data/requests/editCustomerRequest.ts","./src/app/customers/services/customers.service.ts","./src/app/customers/data/customerUtils.ts","./src/app/docs/data/postDto.ts","./src/app/docs/data/requests/addPostRequest.ts","./src/app/docs/data/post.ts","./src/app/docs/data/requests/editPostRequest.ts","./src/app/query/data/specifics/postProperties.ts","./src/app/docs/services/post/post.service.ts","./src/app/emailing/services/emailing-service.service.ts","./src/app/flag/data/flagColor.ts","./src/app/flag/flag.module.ts","./src/app/flag/services/flag.service.ts","./src/app/headless/headless.module.ts","./src/app/headless/pages/headless-page/headless-page.component.html","./src/app/headless/pages/headless-page/headless-page.component.ts","./src/app/job/data/jobStatus.ts","./src/app/job/data/requests/addJobRequest.ts","./src/app/job/data/requests/editJobRequest.ts","./src/app/job/data/requests/changeLexoRankRequest.ts","./src/app/job/data/requests/changeFlaggedStatusRequest.ts","./src/app/job/data/job.ts","./src/app/job/services/job/job.service.ts","./src/app/logging/data/logLevel.ts","./src/app/logging/data/logSource.ts","./src/app/logging/data/logSourceType.ts","./src/app/logging/data/logMessage.ts","./src/app/logging/services/logger.service.ts","./src/app/permission/data/requests/editGroupPermissionsRequest.ts","./src/app/permission/data/requests/addGroupRequest.ts","./src/app/permission/services/permission/permission.service.ts","./src/app/query/data/containsValuePropertyFilter.ts","./src/app/query/data/equalsValuePropertyFilter.ts","./src/app/query/data/propertyFilter.ts","./src/app/query/data/query.ts","./src/app/query/data/queryCreator.ts","./src/app/query/data/queryableProperty.ts","./src/app/query/data/singleValuePropertyFilter.ts","./src/app/query/data/specifics/communicationProperties.ts","./src/app/query/data/specifics/jobProperties.ts","./node_modules/src/app/components/styleclass/styleclass.ts","./src/app/query/query.module.ts","./src/app/settings/section-tabs/general-tab/general-tab.component.ts","./src/app/settings/section-tabs/general-tab/general-tab.component.html","./src/app/emailing/data/emailServerConfig.ts","./src/app/emailing/components/email-settings/email-settings.component.html","./src/app/emailing/components/email-settings/email-settings.component.ts","./src/app/settings/section-tabs/emailing-tab/emailing-tab.component.ts","./src/app/settings/section-tabs/emailing-tab/emailing-tab.component.html","./src/app/settings/pages/settings-page/settings-page.component.html","./src/app/settings/pages/settings-page/settings-page.component.ts","./src/app/flowvisgraph/page/flow-graph-page/flow-graph-page.component.ts","./src/app/flowvisgraph/page/flow-graph-page/flow-graph-page.component.html","./src/app/flowvisgraph/page/vis-graph-page/vis-graph-page.component.ts","./src/app/flowvisgraph/page/vis-graph-page/vis-graph-page.component.html","./src/app/_testing-ground/testing-page/testing-page.component.ts","./src/app/_testing-ground/testing-page/testing-page.component.html","./src/app/video/components/resources-frame/resources-frame.component.ts","./src/app/video/components/resources-frame/resouces-frame.component.html","./src/app/video/resources-page/resources-page.component.ts","./src/app/video/resources-page/resources-page.component.html","./src/app/routing/app.routes.ts","./src/app/snippet/data/snippet.ts","./src/app/snippet/data/snippetDto.ts","./src/app/snippet/data/requests/addSnippetRequest.ts","./src/app/snippet/data/requests/editSnippetRequest.ts","./src/app/query/data/specifics/snippetProperties.ts","./src/app/snippet/services/snippet/snippet.service.ts","./src/app/tabbing/data/tab.ts","./src/app/tabbing/services/tabbing.service.ts","./src/app/tooltip/custom-tooltip.module.ts","./src/app/tooltip/services/tooltip.service.ts","./src/app/user/data/userDto.ts","./src/app/auth/data/editAccountRequest.ts","./src/app/user/data/add-user-to-tenant.request.ts","./src/app/user/services/user/user.service.ts","./src/app/user/user.module.ts","./src/app/virtual-scroll/services/reflection-utils.ts","./src/app/virtual-scroll/virtual-scroll.module.ts","./src/environments/environment.prod.ts","../packages/animations/browser/src/render/shared.ts","../packages/animations/browser/src/render/animation_driver.ts","../packages/animations/browser/src/util.ts","../packages/animations/browser/src/dsl/animation_transition_expr.ts","../packages/animations/browser/src/dsl/animation_ast_builder.ts","../packages/animations/browser/src/dsl/animation_timeline_instruction.ts","../packages/animations/browser/src/dsl/element_instruction_map.ts","../packages/animations/browser/src/dsl/animation_timeline_builder.ts","../packages/animations/browser/src/dsl/style_normalization/animation_style_normalizer.ts","../packages/animations/browser/src/dsl/style_normalization/web_animations_style_normalizer.ts","../packages/animations/browser/src/dsl/animation_transition_instruction.ts","../packages/animations/browser/src/dsl/animation_transition_factory.ts","../packages/animations/browser/src/dsl/animation_trigger.ts","../packages/animations/browser/src/render/timeline_animation_engine.ts","../packages/animations/browser/src/render/transition_animation_engine.ts","../packages/animations/browser/src/render/animation_engine_next.ts","../packages/animations/browser/src/render/special_cased_styles.ts","../packages/animations/browser/src/render/css_keyframes/element_animation_style_handler.ts","../packages/animations/browser/src/render/css_keyframes/css_keyframes_player.ts","../packages/animations/browser/src/render/css_keyframes/direct_style_player.ts","../packages/animations/browser/src/render/css_keyframes/css_keyframes_driver.ts","../packages/animations/browser/src/render/web_animations/web_animations_player.ts","../packages/animations/browser/src/render/web_animations/web_animations_driver.ts","../packages/platform-browser/animations/src/animation_builder.ts","../packages/platform-browser/animations/src/animation_renderer.ts","../packages/platform-browser/animations/src/providers.ts","../packages/platform-browser/animations/src/module.ts","./src/app/auth/auth.module.ts","./src/app/routing/app-routing.module.ts","./src/app/permission/permission.module.ts","./node_modules/ngx-fs/__ivy_ngcc__/src/fsServiceRef.js","./node_modules/ngx-fs/__ivy_ngcc__/src/fsService.js","./node_modules/ngx-fs/__ivy_ngcc__/index.js","./src/app/app-common/services/server/cache.interceptor.ts","./src/app/app-common/services/server/http-error.interceptor.ts","./src/app/app-common/services/server/jwt.interceptor.ts","./src/app/logging/data/harCreator.ts","./src/app/logging/data/harPage.ts","./src/app/logging/data/harLog.ts","./src/app/logging/data/harKV.ts","./src/app/logging/data/harRequest.ts","./src/app/logging/data/harResponseContent.ts","./src/app/logging/data/harResponse.ts","./src/app/logging/data/harEntry.ts","./src/app/logging/data/har.ts","./src/app/logging/services/har.service.ts","./src/app/app-common/services/server/har.interceptor.ts","./src/app/flowvisgraph/flowvisgraph.module.ts","./src/app/_testing-ground/testing-ground.module.ts","./src/app/app-common/services/server/json-date.interceptor.ts","./src/app/video/resources.module.ts","./src/app/logging/services/custom-error-handler.ts","./src/app/app-common/services/global-settings.service.ts","./src/app/app-common/services/color/color.service.ts","./src/app/logging/services/logger-console.service.ts","./projects/ngx-device-detector/src/lib/device-detector.constants.ts","./projects/ngx-device-detector/src/lib/retree.ts","./projects/ngx-device-detector/src/lib/device-detector.service.ts","./src/app/logging/services/logger-device.service.ts","./src/app/app-common/components/please-wait/please-wait.component.ts","./src/app/app-common/components/please-wait/please-wait.component.html","./src/app/activity-log/services/activity-log.service.ts","./src/app/activity-log/data/customerConversionType.ts","./src/app/activity-log/components/activity-log/activity-log.component.html","./src/app/activity-log/components/activity-log/activity-log.component.ts","./src/app/chat/models/createChatRoomRequest.ts","./src/app/chat/components/chat-room-list/chat-room-list.component.html","./src/app/chat/components/chat-room-list/chat-room-list.component.ts","./src/app/chat/models/sendChatMessageRequest.ts","./src/app/chat/components/chat-room/chat-room.component.html","./src/app/chat/components/chat-room/chat-room.component.ts","./src/app/chat/components/main-chat/main-chat.component.html","./src/app/chat/components/main-chat/main-chat.component.ts","./src/app/app-common/components/side-dial/side-dial.component.ts","./src/app/app-common/components/side-dial/side-dial.component.html","./src/app/_widget-library/appointment-notification/appointment-notification.component.html","./src/app/_widget-library/appointment-notification/appointment-notification.component.ts","./src/app/_widget-library/appointment-notifications-holder/appointment-notifications-holder.component.html","./src/app/_widget-library/appointment-notifications-holder/appointment-notifications-holder.component.ts","./src/app/snippet/components/snippet-popup/snippet-popup.component.ts","./src/app/snippet/components/snippet-popup/snippet-popup.component.html","./src/app/tooltip/views/tooltip-content/tooltip-content.component.html","./src/app/tooltip/views/tooltip-content/tooltip-content.component.ts","./src/app/customers/components/customer-tooltip/customer-tooltip.component.html","./src/app/customers/components/customer-tooltip/customer-tooltip.component.ts","./src/app/flag/components/popup-flag-editor/popup-flag-editor.component.html","./src/app/flag/components/popup-flag-editor/popup-flag-editor.component.ts","./src/app/tooltip/views/tooltip-renderer/tooltip-renderer.component.html","./src/app/tooltip/views/tooltip-renderer/tooltip-renderer.component.ts","./src/app/app-common/components/updater/updater.component.html","./src/app/app-common/components/updater/updater.component.ts","./src/app/feedback/services/feedback/feedback.service.ts","./src/app/feedback/components/feedback/feedback.component.html","./src/app/feedback/components/feedback/feedback.component.ts","./src/app/app-common/components/title-bar/title-bar.component.html","./src/app/app-common/components/title-bar/title-bar.component.ts","./src/app/account-settings/services/account-settings.service.ts","./src/app/account-settings/pages/account-settings-modal/account-settings-modal.component.html","./src/app/account-settings/pages/account-settings-modal/account-settings-modal.component.ts","./src/app/app-common/services/notification/notification.service.ts","./src/app/app-common/components/notification-list-entry/notification-list-entry.component.ts","./src/app/app-common/components/notification-list-entry/notification-list-entry.component.html","./src/app/app-common/components/notification-list/notification-list.component.html","./src/app/app-common/components/notification-list/notification-list.component.ts","./src/app/app-common/components/notification-badge/notification-badge.component.html","./src/app/app-common/components/notification-badge/notification-badge.component.ts","./src/app/app-common/directives/click-outside-scope.directive.ts","./src/app/app-common/components/avatar-component/avatar-component.component.html","./src/app/app-common/components/avatar-component/avatar-component.component.ts","./src/app/app-common/components/side-nav/side-nav.component.html","./src/app/app-common/components/side-nav/side-nav.component.ts","./src/app/ai-assistant/components/assistant-profile/assistant-profile.component.ts","./src/app/ai-assistant/components/assistant-profile/assistant-profile.component.html","./src/app/ai-assistant/components/assistant-picker-screen/assistant-picker-screen.component.html","./src/app/ai-assistant/components/assistant-picker-screen/assistant-picker-screen.component.ts","./src/app/ai-assistant/components/assistant-conversation/assistant-conversation.component.ts","./src/app/ai-assistant/components/assistant-conversation/assistant-conversation.component.html","./src/app/ai-assistant/components/assistant-window/assistant-window.component.html","./src/app/ai-assistant/components/assistant-window/assistant-window.component.ts","./src/app/app-common/directives/problem-details.directive.ts","./src/app/auth/pages/login-page/login-page.component.ts","./src/app/auth/pages/login-page/login-page.component.html","./src/app/app-common/utils/RegexUtils.ts","./src/app/app-common/directives/validation.directive.ts","./src/app/app-common/components/validation-entry/validation-entry.component.html","./src/app/app-common/components/validation-entry/validation-entry.component.ts","./src/app/app-common/components/password-field/password-field.component.html","./src/app/app-common/components/password-field/password-field.component.ts","./src/app/auth/pages/register-trial-page/register-trial-page.component.ts","./src/app/auth/pages/register-trial-page/register-trial-page.component.html","./src/app/auth/pages/forgot-password-page/forgot-password-page.component.ts","./src/app/auth/pages/forgot-password-page/forgot-password-page.component.html","./src/app/auth/data/tenantInvite.ts","./src/app/auth/data/createOrganizationRequest.ts","./src/app/auth/data/registerTrialRequest.ts","./src/app/auth/components/create-organization-form/create-organization-form.component.html","./src/app/auth/components/create-organization-form/create-organization-form.component.ts","./src/app/auth/pages/tenant-selection-page/tenant-selection-page.component.html","./src/app/auth/pages/tenant-selection-page/tenant-selection-page.component.ts","./src/app/auth/components/force-update-screen/force-update-screen.component.ts","./src/app/auth/components/force-update-screen/force-update-screen.component.html","./src/app/tabbing/components/app-tab/app-tab.component.html","./src/app/tabbing/components/app-tab/app-tab.component.ts","./src/app/app-common/windows/main-window/main-window.component.html","./src/app/app-common/windows/main-window/main-window.component.ts","./src/app/app-common/windows/headless-window/headless-window.component.html","./src/app/app-common/windows/headless-window/headless-window.component.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/tslib/tslib.es6.js","./node_modules/just-clone/index.mjs"],"sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(() => {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = () => ([]);\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 98255;\nmodule.exports = webpackEmptyAsyncContext;","/**\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 */\nimport {AnimationMetadata, AnimationOptions} from './animation_metadata';\nimport {AnimationPlayer} from './players/animation_player';\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 */\nexport abstract class AnimationBuilder {\n /**\n * Builds a factory for producing a defined animation.\n * @param animation A reusable animation definition.\n * @returns A factory object that can create a player for the defined animation.\n * @see `animate()`\n */\n abstract build(animation: AnimationMetadata|AnimationMetadata[]): AnimationFactory;\n}\n\n/**\n * A factory object returned from the `AnimationBuilder`.`build()` method.\n *\n * @publicApi\n */\nexport abstract class AnimationFactory {\n /**\n * Creates an `AnimationPlayer` instance for the reusable animation defined by\n * the `AnimationBuilder`.`build()` method that created this factory.\n * Attaches the new player a DOM element.\n * @param element The DOM element to which to attach the animation.\n * @param options A set of options that can include a time delay and\n * additional developer-defined parameters.\n */\n abstract create(element: any, options?: AnimationOptions): AnimationPlayer;\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 * Represents a set of CSS styles for use in an animation style.\n */\nexport interface ɵStyleData {\n [key: string]: string|number;\n}\n\n/**\n * Represents animation-step timing parameters for an animation step.\n * @see `animate()`\n *\n * @publicApi\n */\nexport declare type AnimateTimings = {\n /**\n * The full duration of an animation step. 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 */\n duration: number,\n /**\n * The delay in applying an animation step. A number and optional time unit.\n * The default unit is milliseconds.\n */\n delay: number,\n /**\n * An easing style that controls how an animations step accelerates\n * and decelerates during its run time. An easing function such as `cubic-bezier()`,\n * or one of the following constants:\n * - `ease-in`\n * - `ease-out`\n * - `ease-in-and-out`\n */\n easing: string | null\n};\n\n/**\n * @description Options that control animation styling and timing.\n *\n * The following animation functions accept `AnimationOptions` data:\n *\n * - `transition()`\n * - `sequence()`\n * - `{@link animations/group group()}`\n * - `query()`\n * - `animation()`\n * - `useAnimation()`\n * - `animateChild()`\n *\n * Programmatic animations built using the `AnimationBuilder` service also\n * make use of `AnimationOptions`.\n *\n * @publicApi\n */\nexport declare interface AnimationOptions {\n /**\n * Sets a time-delay for initiating an animation action.\n * A number and optional time unit, such as \"1s\" or \"10ms\" for one second\n * and 10 milliseconds, respectively.The default unit is milliseconds.\n * Default value is 0, meaning no delay.\n */\n delay?: number|string;\n /**\n * A set of developer-defined parameters that modify styling and timing\n * when an animation action starts. An array of key-value pairs, where the provided value\n * is used as a default.\n */\n params?: {[name: string]: any};\n}\n\n/**\n * Adds duration options to control animation styling and timing for a child animation.\n *\n * @see `animateChild()`\n *\n * @publicApi\n */\nexport declare interface AnimateChildOptions extends AnimationOptions {\n duration?: number|string;\n}\n\n/**\n * @description Constants for the categories of parameters that can be defined for animations.\n *\n * A corresponding function defines a set of parameters for each category, and\n * collects them into a corresponding `AnimationMetadata` object.\n *\n * @publicApi\n */\nexport const enum AnimationMetadataType {\n /**\n * Associates a named animation state with a set of CSS styles.\n * See `state()`\n */\n State = 0,\n /**\n * Data for a transition from one animation state to another.\n * See `transition()`\n */\n Transition = 1,\n /**\n * Contains a set of animation steps.\n * See `sequence()`\n */\n Sequence = 2,\n /**\n * Contains a set of animation steps.\n * See `{@link animations/group group()}`\n */\n Group = 3,\n /**\n * Contains an animation step.\n * See `animate()`\n */\n Animate = 4,\n /**\n * Contains a set of animation steps.\n * See `keyframes()`\n */\n Keyframes = 5,\n /**\n * Contains a set of CSS property-value pairs into a named style.\n * See `style()`\n */\n Style = 6,\n /**\n * Associates an animation with an entry trigger that can be attached to an element.\n * See `trigger()`\n */\n Trigger = 7,\n /**\n * Contains a re-usable animation.\n * See `animation()`\n */\n Reference = 8,\n /**\n * Contains data to use in executing child animations returned by a query.\n * See `animateChild()`\n */\n AnimateChild = 9,\n /**\n * Contains animation parameters for a re-usable animation.\n * See `useAnimation()`\n */\n AnimateRef = 10,\n /**\n * Contains child-animation query data.\n * See `query()`\n */\n Query = 11,\n /**\n * Contains data for staggering an animation sequence.\n * See `stagger()`\n */\n Stagger = 12\n}\n\n/**\n * Specifies automatic styling.\n *\n * @publicApi\n */\nexport const AUTO_STYLE = '*';\n\n/**\n * Base for animation data structures.\n *\n * @publicApi\n */\nexport interface AnimationMetadata {\n type: AnimationMetadataType;\n}\n\n/**\n * Contains an animation trigger. Instantiated and returned by the\n * `trigger()` function.\n *\n * @publicApi\n */\nexport interface AnimationTriggerMetadata extends AnimationMetadata {\n /**\n * The trigger name, used to associate it with an element. Unique within the component.\n */\n name: string;\n /**\n * An animation definition object, containing an array of state and transition declarations.\n */\n definitions: AnimationMetadata[];\n /**\n * An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation. Default delay is 0.\n */\n options: {params?: {[name: string]: any}}|null;\n}\n\n/**\n * Encapsulates an animation state by associating a state name with a set of CSS styles.\n * Instantiated and returned by the `state()` function.\n *\n * @publicApi\n */\nexport interface AnimationStateMetadata extends AnimationMetadata {\n /**\n * The state name, unique within the component.\n */\n name: string;\n /**\n * The CSS styles associated with this state.\n */\n styles: AnimationStyleMetadata;\n /**\n * An options object containing\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n */\n options?: {params: {[name: string]: any}};\n}\n\n/**\n * Encapsulates an animation transition. Instantiated and returned by the\n * `transition()` function.\n *\n * @publicApi\n */\nexport interface AnimationTransitionMetadata extends AnimationMetadata {\n /**\n * An expression that describes a state change.\n */\n expr: string|\n ((fromState: string, toState: string, element?: any,\n params?: {[key: string]: any}) => boolean);\n /**\n * One or more animation objects to which this transition applies.\n */\n animation: AnimationMetadata|AnimationMetadata[];\n /**\n * An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation. Default delay is 0.\n */\n options: AnimationOptions|null;\n}\n\n/**\n * Encapsulates a reusable animation, which is a collection of individual animation steps.\n * Instantiated and returned by the `animation()` function, and\n * passed to the `useAnimation()` function.\n *\n * @publicApi\n */\nexport interface AnimationReferenceMetadata extends AnimationMetadata {\n /**\n * One or more animation step objects.\n */\n animation: AnimationMetadata|AnimationMetadata[];\n /**\n * An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation. Default delay is 0.\n */\n options: AnimationOptions|null;\n}\n\n/**\n * Encapsulates an animation query. Instantiated and returned by\n * the `query()` function.\n *\n * @publicApi\n */\nexport interface AnimationQueryMetadata extends AnimationMetadata {\n /**\n * The CSS selector for this query.\n */\n selector: string;\n /**\n * One or more animation step objects.\n */\n animation: AnimationMetadata|AnimationMetadata[];\n /**\n * A query options object.\n */\n options: AnimationQueryOptions|null;\n}\n\n/**\n * Encapsulates a keyframes sequence. Instantiated and returned by\n * the `keyframes()` function.\n *\n * @publicApi\n */\nexport interface AnimationKeyframesSequenceMetadata extends AnimationMetadata {\n /**\n * An array of animation styles.\n */\n steps: AnimationStyleMetadata[];\n}\n\n/**\n * Encapsulates an animation style. Instantiated and returned by\n * the `style()` function.\n *\n * @publicApi\n */\nexport interface AnimationStyleMetadata extends AnimationMetadata {\n /**\n * A set of CSS style properties.\n */\n styles: '*'|{[key: string]: string | number}|Array<{[key: string]: string | number}|'*'>;\n /**\n * A percentage of the total animate time at which the style is to be applied.\n */\n offset: number|null;\n}\n\n/**\n * Encapsulates an animation step. Instantiated and returned by\n * the `animate()` function.\n *\n * @publicApi\n */\nexport interface AnimationAnimateMetadata extends AnimationMetadata {\n /**\n * The timing data for the step.\n */\n timings: string|number|AnimateTimings;\n /**\n * A set of styles used in the step.\n */\n styles: AnimationStyleMetadata|AnimationKeyframesSequenceMetadata|null;\n}\n\n/**\n * Encapsulates a child animation, that can be run explicitly when the parent is run.\n * Instantiated and returned by the `animateChild` function.\n *\n * @publicApi\n */\nexport interface AnimationAnimateChildMetadata extends AnimationMetadata {\n /**\n * An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation. Default delay is 0.\n */\n options: AnimationOptions|null;\n}\n\n/**\n * Encapsulates a reusable animation.\n * Instantiated and returned by the `useAnimation()` function.\n *\n * @publicApi\n */\nexport interface AnimationAnimateRefMetadata extends AnimationMetadata {\n /**\n * An animation reference object.\n */\n animation: AnimationReferenceMetadata;\n /**\n * An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation. Default delay is 0.\n */\n options: AnimationOptions|null;\n}\n\n/**\n * Encapsulates an animation sequence.\n * Instantiated and returned by the `sequence()` function.\n *\n * @publicApi\n */\nexport interface AnimationSequenceMetadata extends AnimationMetadata {\n /**\n * An array of animation step objects.\n */\n steps: AnimationMetadata[];\n /**\n * An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation. Default delay is 0.\n */\n options: AnimationOptions|null;\n}\n\n/**\n * Encapsulates an animation group.\n * Instantiated and returned by the `{@link animations/group group()}` function.\n *\n * @publicApi\n */\nexport interface AnimationGroupMetadata extends AnimationMetadata {\n /**\n * One or more animation or style steps that form this group.\n */\n steps: AnimationMetadata[];\n /**\n * An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation. Default delay is 0.\n */\n options: AnimationOptions|null;\n}\n\n/**\n * Encapsulates animation query options.\n * Passed to the `query()` function.\n *\n * @publicApi\n */\nexport declare interface AnimationQueryOptions extends AnimationOptions {\n /**\n * True if this query is optional, false if it is required. Default is false.\n * A required query throws an error if no elements are retrieved when\n * the query is executed. An optional query does not.\n *\n */\n optional?: boolean;\n /**\n * A maximum total number of results to return from the query.\n * If negative, results are limited from the end of the query list towards the beginning.\n * By default, results are not limited.\n */\n limit?: number;\n}\n\n/**\n * Encapsulates parameters for staggering the start times of a set of animation steps.\n * Instantiated and returned by the `stagger()` function.\n *\n * @publicApi\n **/\nexport interface AnimationStaggerMetadata extends AnimationMetadata {\n /**\n * The timing data for the steps.\n */\n timings: string|number;\n /**\n * One or more animation steps.\n */\n animation: AnimationMetadata|AnimationMetadata[];\n}\n\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 */\nexport function trigger(name: string, definitions: AnimationMetadata[]): AnimationTriggerMetadata {\n return {type: AnimationMetadataType.Trigger, name, definitions, options: {}};\n}\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 */\nexport function animate(\n timings: string|number,\n styles: AnimationStyleMetadata|AnimationKeyframesSequenceMetadata|null =\n null): AnimationAnimateMetadata {\n return {type: AnimationMetadataType.Animate, styles, timings};\n}\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 */\nexport function group(\n steps: AnimationMetadata[], options: AnimationOptions|null = null): AnimationGroupMetadata {\n return {type: AnimationMetadataType.Group, steps, options};\n}\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 **/\nexport function sequence(\n steps: AnimationMetadata[], options: AnimationOptions|null = null): AnimationSequenceMetadata {\n return {type: AnimationMetadataType.Sequence, steps, options};\n}\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 a component to animate from\n * a height of 0 up to the height of the parent element:\n *\n * ```\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * @publicApi\n **/\nexport function style(tokens: '*'|{[key: string]: string | number}|\n Array<'*'|{[key: string]: string | number}>): AnimationStyleMetadata {\n return {type: AnimationMetadataType.Style, styles: tokens, offset: null};\n}\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 **/\nexport function state(\n name: string, styles: AnimationStyleMetadata,\n options?: {params: {[name: string]: any}}): AnimationStateMetadata {\n return {type: AnimationMetadataType.State, name, styles, options};\n}\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 */\nexport function keyframes(steps: AnimationStyleMetadata[]): AnimationKeyframesSequenceMetadata {\n return {type: AnimationMetadataType.Keyframes, steps};\n}\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 **/\nexport function transition(\n stateChangeExpr: string|\n ((fromState: string, toState: string, element?: any, params?: {[key: string]: any}) => boolean),\n steps: AnimationMetadata|AnimationMetadata[],\n options: AnimationOptions|null = null): AnimationTransitionMetadata {\n return {type: AnimationMetadataType.Transition, expr: stateChangeExpr, animation: steps, options};\n}\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 */\nexport function animation(\n steps: AnimationMetadata|AnimationMetadata[],\n options: AnimationOptions|null = null): AnimationReferenceMetadata {\n return {type: AnimationMetadataType.Reference, animation: steps, options};\n}\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 * @publicApi\n */\nexport function animateChild(options: AnimateChildOptions|null = null):\n AnimationAnimateChildMetadata {\n return {type: AnimationMetadataType.AnimateChild, options};\n}\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 */\nexport function useAnimation(\n animation: AnimationReferenceMetadata,\n options: AnimationOptions|null = null): AnimationAnimateRefMetadata {\n return {type: AnimationMetadataType.AnimateRef, animation, options};\n}\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 */\nexport function query(\n selector: string, animation: AnimationMetadata|AnimationMetadata[],\n options: AnimationQueryOptions|null = null): AnimationQueryMetadata {\n return {type: AnimationMetadataType.Query, selector, animation, options};\n}\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 */\nexport function stagger(timings: string|number, animation: AnimationMetadata|AnimationMetadata[]):\n AnimationStaggerMetadata {\n return {type: AnimationMetadataType.Stagger, timings, animation};\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 */\nexport function scheduleMicroTask(cb: () => any) {\n Promise.resolve(null).then(cb);\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 */\nimport {scheduleMicroTask} from '../util';\n\n/**\n * Provides programmatic control of a reusable animation sequence,\n * built using the `build()` method of `AnimationBuilder`. The `build()` method\n * returns a factory, whose `create()` method instantiates and initializes this interface.\n *\n * @see `AnimationBuilder`\n * @see `AnimationFactory`\n * @see `animate()`\n *\n * @publicApi\n */\nexport interface AnimationPlayer {\n /**\n * Provides a callback to invoke when the animation finishes.\n * @param fn The callback function.\n * @see `finish()`\n */\n onDone(fn: () => void): void;\n /**\n * Provides a callback to invoke when the animation starts.\n * @param fn The callback function.\n * @see `run()`\n */\n onStart(fn: () => void): void;\n /**\n * Provides a callback to invoke after the animation is destroyed.\n * @param fn The callback function.\n * @see `destroy()`\n * @see `beforeDestroy()`\n */\n onDestroy(fn: () => void): void;\n /**\n * Initializes the animation.\n */\n init(): void;\n /**\n * Reports whether the animation has started.\n * @returns True if the animation has started, false otherwise.\n */\n hasStarted(): boolean;\n /**\n * Runs the animation, invoking the `onStart()` callback.\n */\n play(): void;\n /**\n * Pauses the animation.\n */\n pause(): void;\n /**\n * Restarts the paused animation.\n */\n restart(): void;\n /**\n * Ends the animation, invoking the `onDone()` callback.\n */\n finish(): void;\n /**\n * Destroys the animation, after invoking the `beforeDestroy()` callback.\n * Calls the `onDestroy()` callback when destruction is completed.\n */\n destroy(): void;\n /**\n * Resets the animation to its initial state.\n */\n reset(): void;\n /**\n * Sets the position of the animation.\n * @param position A 0-based offset into the duration, in milliseconds.\n */\n setPosition(position: any /** TODO #9100 */): void;\n /**\n * Reports the current position of the animation.\n * @returns A 0-based offset into the duration, in milliseconds.\n */\n getPosition(): number;\n /**\n * The parent of this player, if any.\n */\n parentPlayer: AnimationPlayer|null;\n /**\n * The total run time of the animation, in milliseconds.\n */\n readonly totalTime: number;\n /**\n * Provides a callback to invoke before the animation is destroyed.\n */\n beforeDestroy?: () => any;\n /**\n * @internal\n * Internal\n */\n triggerCallback?: (phaseName: string) => void;\n /**\n * @internal\n * Internal\n */\n disabled?: boolean;\n}\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 */\nexport class NoopAnimationPlayer implements AnimationPlayer {\n private _onDoneFns: Function[] = [];\n private _onStartFns: Function[] = [];\n private _onDestroyFns: Function[] = [];\n private _started = false;\n private _destroyed = false;\n private _finished = false;\n private _position = 0;\n public parentPlayer: AnimationPlayer|null = null;\n public readonly totalTime: number;\n constructor(duration: number = 0, delay: number = 0) {\n this.totalTime = duration + delay;\n }\n private _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n onStart(fn: () => void): void {\n this._onStartFns.push(fn);\n }\n onDone(fn: () => void): void {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn: () => void): void {\n this._onDestroyFns.push(fn);\n }\n hasStarted(): boolean {\n return this._started;\n }\n init(): void {}\n play(): void {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n }\n\n /** @internal */\n triggerMicrotask() {\n scheduleMicroTask(() => this._onFinish());\n }\n\n private _onStart() {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n\n pause(): void {}\n restart(): void {}\n finish(): void {\n this._onFinish();\n }\n destroy(): void {\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(): void {\n this._started = false;\n }\n setPosition(position: number): void {\n this._position = this.totalTime ? position * this.totalTime : 1;\n }\n getPosition(): number {\n return this.totalTime ? this._position / this.totalTime : 1;\n }\n\n /** @internal */\n triggerCallback(phaseName: string): void {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\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\nimport {scheduleMicroTask} from '../util';\nimport {AnimationPlayer} from './animation_player';\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 */\nexport class AnimationGroupPlayer implements AnimationPlayer {\n private _onDoneFns: Function[] = [];\n private _onStartFns: Function[] = [];\n private _finished = false;\n private _started = false;\n private _destroyed = false;\n private _onDestroyFns: Function[] = [];\n\n public parentPlayer: AnimationPlayer|null = null;\n public totalTime: number = 0;\n public readonly players: AnimationPlayer[];\n\n constructor(_players: AnimationPlayer[]) {\n this.players = _players;\n let doneCount = 0;\n let destroyCount = 0;\n let startCount = 0;\n const total = this.players.length;\n\n if (total == 0) {\n scheduleMicroTask(() => this._onFinish());\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\n this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);\n }\n\n private _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n\n init(): void {\n this.players.forEach(player => player.init());\n }\n\n onStart(fn: () => void): void {\n this._onStartFns.push(fn);\n }\n\n private _onStart() {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n }\n\n onDone(fn: () => void): void {\n this._onDoneFns.push(fn);\n }\n\n onDestroy(fn: () => void): void {\n this._onDestroyFns.push(fn);\n }\n\n hasStarted() {\n return this._started;\n }\n\n play() {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach(player => player.play());\n }\n\n pause(): void {\n this.players.forEach(player => player.pause());\n }\n\n restart(): void {\n this.players.forEach(player => player.restart());\n }\n\n finish(): void {\n this._onFinish();\n this.players.forEach(player => player.finish());\n }\n\n destroy(): void {\n this._onDestroy();\n }\n\n private _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\n reset(): void {\n this.players.forEach(player => player.reset());\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n\n setPosition(p: number): void {\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\n getPosition(): number {\n const longestPlayer =\n this.players.reduce((longestSoFar: AnimationPlayer|null, player: AnimationPlayer) => {\n const newPlayerIsLongest =\n longestSoFar === null || player.totalTime > longestSoFar.totalTime;\n return newPlayerIsLongest ? player : longestSoFar;\n }, null);\n return longestPlayer != null ? longestPlayer.getPosition() : 0;\n }\n\n beforeDestroy(): void {\n this.players.forEach(player => {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n });\n }\n\n /** @internal */\n triggerCallback(phaseName: string): void {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\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 */\nexport {AnimationGroupPlayer as ɵAnimationGroupPlayer} from './players/animation_group_player';\nexport const ɵPRE_STYLE = '!';\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\nimport {DOCUMENT} from '@angular/common';\nimport {inject, InjectionToken} from '@angular/core';\n\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 */\nexport const DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {\n providedIn: 'root',\n factory: DIR_DOCUMENT_FACTORY,\n});\n\n/** @docs-private */\nexport function DIR_DOCUMENT_FACTORY(): Document {\n return inject(DOCUMENT);\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\nimport {EventEmitter, Inject, Injectable, Optional, OnDestroy} from '@angular/core';\nimport {DIR_DOCUMENT} from './dir-document-token';\n\n\nexport type Direction = 'ltr' | 'rtl';\n\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 */\n@Injectable({providedIn: 'root'})\nexport class Directionality implements OnDestroy {\n /** The current 'ltr' or 'rtl' value. */\n readonly value: Direction = 'ltr';\n\n /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n readonly change = new EventEmitter();\n\n constructor(@Optional() @Inject(DIR_DOCUMENT) _document?: any) {\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\n ngOnDestroy() {\n this.change.complete();\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\nimport {NgModule} from '@angular/core';\nimport {Dir} from './dir';\n\n\n@NgModule({\n exports: [Dir],\n declarations: [Dir],\n})\nexport class BidiModule { }\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { isNumeric } from '../util/isNumeric';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that emits sequential numbers every specified\n * interval of time, on a specified {@link SchedulerLike}.\n *\n * Emits incremental numbers periodically in time.\n * \n *\n * ![](interval.png)\n *\n * `interval` returns an Observable that emits an infinite sequence of\n * ascending integers, with a constant interval of time of your choosing\n * between those emissions. The first emission is not sent immediately, but\n * only after the first period has passed. By default, this operator uses the\n * `async` {@link SchedulerLike} to provide a notion of time, but you may pass any\n * {@link SchedulerLike} to it.\n *\n * ## Example\n * Emits ascending numbers, one every second (1000ms) up to the number 3\n * ```ts\n * import { interval } from 'rxjs';\n * import { take } from 'rxjs/operators';\n *\n * const numbers = interval(1000);\n *\n * const takeFourNumbers = numbers.pipe(take(4));\n *\n * takeFourNumbers.subscribe(x => console.log('Next: ', x));\n *\n * // Logs:\n * // Next: 0\n * // Next: 1\n * // Next: 2\n * // Next: 3\n * ```\n *\n * @see {@link timer}\n * @see {@link delay}\n *\n * @param {number} [period=0] The interval size in milliseconds (by default)\n * or the time unit determined by the scheduler's clock.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for scheduling\n * the emission of values, and providing a notion of \"time\".\n * @return {Observable} An Observable that emits a sequential number each time\n * interval.\n * @static true\n * @name interval\n * @owner Observable\n */\nexport function interval(period = 0,\n scheduler: SchedulerLike = async): Observable {\n if (!isNumeric(period) || period < 0) {\n period = 0;\n }\n\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n scheduler = async;\n }\n\n return new Observable(subscriber => {\n subscriber.add(\n scheduler.schedule(dispatch, period, { subscriber, counter: 0, period })\n );\n return subscriber;\n });\n}\n\nfunction dispatch(this: SchedulerAction, state: IntervalState) {\n const { subscriber, counter, period } = state;\n subscriber.next(counter);\n this.schedule({ subscriber, counter: counter + 1, period }, period);\n}\n\ninterface IntervalState {\n subscriber: Subscriber;\n counter: number;\n period: number;\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// Helper type that ignores `readonly` properties. This is used in\n// `extendStyles` to ignore the readonly properties on CSSStyleDeclaration\n// since we won't be touching those anyway.\ntype Writeable = { -readonly [P in keyof T]-?: T[P] };\n\n/**\n * Extended CSSStyleDeclaration that includes a couple of drag-related\n * properties that aren't in the built-in TS typings.\n */\nexport interface DragCSSStyleDeclaration extends CSSStyleDeclaration {\n webkitUserDrag: string;\n MozUserSelect: string; // For some reason the Firefox property is in PascalCase.\n msScrollSnapType: string;\n scrollSnapType: string;\n msUserSelect: string;\n}\n\n/**\n * Shallow-extends a stylesheet object with another stylesheet object.\n * @docs-private\n */\nexport function extendStyles(\n dest: Writeable,\n source: Partial) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n dest[key] = source[key]!;\n }\n }\n\n return dest;\n}\n\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 */\nexport function toggleNativeDragInteractions(element: HTMLElement, enable: boolean) {\n const userSelect = enable ? '' : 'none';\n\n extendStyles(element.style, {\n touchAction: enable ? '' : 'none',\n webkitUserDrag: enable ? '' : 'none',\n webkitTapHighlightColor: enable ? '' : 'transparent',\n userSelect: userSelect,\n msUserSelect: userSelect,\n webkitUserSelect: userSelect,\n MozUserSelect: userSelect\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/** Parses a CSS time value to milliseconds. */\nfunction parseCssTimeUnitsToMs(value: string): number {\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\n/** Gets the transform transition duration, including the delay, of an element in milliseconds. */\nexport function getTransformTransitionDurationInMs(element: HTMLElement): number {\n const computedStyle = getComputedStyle(element);\n const transitionedProperties = parseCssPropertyValue(computedStyle, 'transition-property');\n const property = transitionedProperties.find(prop => prop === 'transform' || prop === 'all');\n\n // If there's no transition for `all` or `transform`, we shouldn't do anything.\n if (!property) {\n return 0;\n }\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\n return parseCssTimeUnitsToMs(rawDurations[propertyIndex]) +\n parseCssTimeUnitsToMs(rawDelays[propertyIndex]);\n}\n\n/** Parses out multiple values from a computed style into an array. */\nfunction parseCssPropertyValue(computedStyle: CSSStyleDeclaration, name: string): string[] {\n const value = computedStyle.getPropertyValue(name);\n return value.split(',').map(part => part.trim());\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 a mutable version of an element's bounding `ClientRect`. */\nexport function getMutableClientRect(element: Element): ClientRect {\n const clientRect = element.getBoundingClientRect();\n\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 };\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 */\nexport function isInsideClientRect(clientRect: ClientRect, x: number, y: number) {\n const {top, bottom, left, right} = clientRect;\n return y >= top && y <= bottom && x >= left && x <= right;\n}\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 */\nexport function adjustClientRect(clientRect: ClientRect, top: number, left: number) {\n clientRect.top += top;\n clientRect.bottom = clientRect.top + clientRect.height;\n\n clientRect.left += left;\n clientRect.right = clientRect.left + clientRect.width;\n}\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 */\nexport function isPointerNearClientRect(rect: ClientRect,\n threshold: number,\n pointerX: number,\n pointerY: number): boolean {\n const {top, right, bottom, left, width, height} = rect;\n const xThreshold = width * threshold;\n const yThreshold = height * threshold;\n\n return pointerY > top - yThreshold && pointerY < bottom + yThreshold &&\n pointerX > left - xThreshold && pointerX < right + xThreshold;\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\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {getMutableClientRect, adjustClientRect} from './client-rect';\n\n/** Object holding the scroll position of something. */\ninterface ScrollPosition {\n top: number;\n left: number;\n}\n\n/** Keeps track of the scroll position and dimensions of the parents of an element. */\nexport class ParentPositionTracker {\n /** Cached positions of the scrollable parent elements. */\n readonly positions = new Map();\n\n constructor(private _document: Document, private _viewportRuler: ViewportRuler) {}\n\n /** Clears the cached positions. */\n clear() {\n this.positions.clear();\n }\n\n /** Caches the positions. Should be called at the beginning of a drag sequence. */\n cache(elements: HTMLElement[] | ReadonlyArray) {\n this.clear();\n this.positions.set(this._document, {\n scrollPosition: this._viewportRuler.getViewportScrollPosition(),\n });\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\n /** Handles scrolling while a drag is taking place. */\n handleScroll(event: Event): ScrollPosition | null {\n const target = event.target as HTMLElement | Document;\n const cachedPosition = this.positions.get(target);\n\n if (!cachedPosition) {\n return null;\n }\n\n // Used when figuring out whether an element is inside the scroll parent. If the scrolled\n // parent is the `document`, we use the `documentElement`, because IE doesn't support\n // `contains` on the `document`.\n const scrolledParentNode = target === this._document ? target.documentElement : target;\n const scrollPosition = cachedPosition.scrollPosition;\n let newTop: number;\n let newLeft: number;\n\n if (target === this._document) {\n const viewportScrollPosition = this._viewportRuler!.getViewportScrollPosition();\n newTop = viewportScrollPosition.top;\n newLeft = viewportScrollPosition.left;\n } else {\n newTop = (target as HTMLElement).scrollTop;\n newLeft = (target as HTMLElement).scrollLeft;\n }\n\n const topDifference = scrollPosition.top - newTop;\n const leftDifference = scrollPosition.left - newLeft;\n\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 && scrolledParentNode.contains(node)) {\n adjustClientRect(position.clientRect, topDifference, leftDifference);\n }\n });\n\n scrollPosition.top = newTop;\n scrollPosition.left = newLeft;\n\n return {top: topDifference, left: leftDifference};\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/** Creates a deep clone of an element. */\nexport function deepCloneNode(node: HTMLElement): HTMLElement {\n const clone = node.cloneNode(true) as HTMLElement;\n const descendantsWithId = clone.querySelectorAll('[id]');\n const nodeName = node.nodeName.toLowerCase();\n\n // Remove the `id` to avoid having multiple elements with the same id on the page.\n clone.removeAttribute('id');\n\n for (let i = 0; i < descendantsWithId.length; i++) {\n descendantsWithId[i].removeAttribute('id');\n }\n\n if (nodeName === 'canvas') {\n transferCanvasData(node as HTMLCanvasElement, clone as HTMLCanvasElement);\n } else if (nodeName === 'input' || nodeName === 'select' || nodeName === 'textarea') {\n transferInputData(node as HTMLInputElement, clone as HTMLInputElement);\n }\n\n transferData('canvas', node, clone, transferCanvasData);\n transferData('input, textarea, select', node, clone, transferInputData);\n return clone;\n}\n\n/** Matches elements between an element and its clone and allows for their data to be cloned. */\nfunction transferData(selector: string, node: HTMLElement, clone: HTMLElement,\n callback: (source: T, clone: T) => void) {\n const descendantElements = node.querySelectorAll(selector);\n\n if (descendantElements.length) {\n const cloneElements = clone.querySelectorAll(selector);\n\n for (let i = 0; i < descendantElements.length; i++) {\n callback(descendantElements[i], cloneElements[i]);\n }\n }\n}\n\n// Counter for unique cloned radio button names.\nlet cloneUniqueId = 0;\n\n/** Transfers the data of one input element to another. */\nfunction transferInputData(source: Element & {value: string},\n clone: Element & {value: string; name: string; type: string}) {\n clone.value = source.value;\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\n/** Transfers the data of one canvas element to another. */\nfunction transferCanvasData(source: HTMLCanvasElement, clone: HTMLCanvasElement) {\n const context = clone.getContext('2d');\n\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 } catch {}\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\nimport {EmbeddedViewRef, ElementRef, NgZone, ViewContainerRef, TemplateRef} from '@angular/core';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {Direction} from '@angular/cdk/bidi';\nimport {normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {coerceBooleanProperty, coerceElement} from '@angular/cdk/coercion';\nimport {Subscription, Subject, Observable} from 'rxjs';\nimport {DropListRefInternal as DropListRef} from './drop-list-ref';\nimport {DragDropRegistry} from './drag-drop-registry';\nimport {extendStyles, toggleNativeDragInteractions} from './drag-styling';\nimport {getTransformTransitionDurationInMs} from './transition-duration';\nimport {getMutableClientRect, adjustClientRect} from './client-rect';\nimport {ParentPositionTracker} from './parent-position-tracker';\nimport {deepCloneNode} from './clone-node';\n\n/** Object that can be used to configure the behavior of DragRef. */\nexport interface DragRefConfig {\n /**\n * Minimum amount of pixels that the user should\n * drag, before the CDK initiates a drag sequence.\n */\n dragStartThreshold: number;\n\n /**\n * Amount the pixels the user should drag before the CDK\n * considers them to have changed the drag direction.\n */\n pointerDirectionChangeThreshold: number;\n\n /** `z-index` for the absolutely-positioned elements that are created by the drag item. */\n zIndex?: number;\n}\n\n/** Options that can be used to bind a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({passive: true});\n\n/** Options that can be used to bind an active event listener. */\nconst activeEventListenerOptions = normalizePassiveListenerOptions({passive: false});\n\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\n// TODO(crisbeto): add an API for moving a draggable up/down the\n// list programmatically. Useful for keyboard controls.\n\n/**\n * Internal compile-time-only representation of a `DragRef`.\n * Used to avoid circular import issues between the `DragRef` and the `DropListRef`.\n * @docs-private\n */\nexport interface DragRefInternal extends DragRef {}\n\n/** Template that can be used to create a drag helper element (e.g. a preview or a placeholder). */\ninterface DragHelperTemplate {\n template: TemplateRef | null;\n viewContainer: ViewContainerRef;\n context: T;\n}\n\n/** Template that can be used to create a drag preview element. */\ninterface DragPreviewTemplate extends DragHelperTemplate {\n matchSize?: boolean;\n}\n\n/** Point on the page or within an element. */\nexport interface Point {\n x: number;\n y: number;\n}\n\n/**\n * Reference to a draggable item. Used to manipulate or dispose of the item.\n */\nexport class DragRef {\n /** Element displayed next to the user's pointer while the element is dragged. */\n private _preview: HTMLElement;\n\n /** Reference to the view of the preview element. */\n private _previewRef: EmbeddedViewRef | null;\n\n /** Reference to the view of the placeholder element. */\n private _placeholderRef: EmbeddedViewRef | null;\n\n /** Element that is rendered instead of the draggable item while it is being sorted. */\n private _placeholder: HTMLElement;\n\n /** Coordinates within the element at which the user picked up the element. */\n private _pickupPositionInElement: Point;\n\n /** Coordinates on the page at which the user picked up the element. */\n private _pickupPositionOnPage: Point;\n\n /**\n * Anchor node used to save the place in the DOM where the element was\n * picked up so that it can be restored at the end of the drag sequence.\n */\n private _anchor: Comment;\n\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 private _passiveTransform: Point = {x: 0, y: 0};\n\n /** CSS `transform` that is applied to the element while it's being dragged. */\n private _activeTransform: Point = {x: 0, y: 0};\n\n /** Inline `transform` value that the element had before the first dragging sequence. */\n private _initialTransform?: string;\n\n /**\n * Whether the dragging sequence has been started. Doesn't\n * necessarily mean that the element has been moved.\n */\n private _hasStartedDragging: boolean;\n\n /** Whether the element has moved since the user started dragging it. */\n private _hasMoved: boolean;\n\n /** Drop container in which the DragRef resided when dragging began. */\n private _initialContainer: DropListRef;\n\n /** Index at which the item started in its initial container. */\n private _initialIndex: number;\n\n /** Cached positions of scrollable parent elements. */\n private _parentPositions: ParentPositionTracker;\n\n /** Emits when the item is being moved. */\n private _moveEvents = new Subject<{\n source: DragRef;\n pointerPosition: {x: number, y: number};\n event: MouseEvent | TouchEvent;\n distance: Point;\n delta: {x: -1 | 0 | 1, y: -1 | 0 | 1};\n }>();\n\n /** Keeps track of the direction in which the user is dragging along each axis. */\n private _pointerDirectionDelta: {x: -1 | 0 | 1, y: -1 | 0 | 1};\n\n /** Pointer position at which the last change in the delta occurred. */\n private _pointerPositionAtLastDirectionChange: Point;\n\n /** Position of the pointer at the last pointer event. */\n private _lastKnownPointerPosition: Point;\n\n /**\n * Root DOM node of the drag instance. This is the element that will\n * be moved around as the user is dragging.\n */\n private _rootElement: HTMLElement;\n\n /**\n * Nearest ancestor SVG, relative to which coordinates are calculated if dragging SVGElement\n */\n private _ownerSVGElement: SVGSVGElement | null;\n\n /**\n * Inline style value of `-webkit-tap-highlight-color` at the time the\n * dragging was started. Used to restore the value once we're done dragging.\n */\n private _rootElementTapHighlight: string;\n\n /** Subscription to pointer movement events. */\n private _pointerMoveSubscription = Subscription.EMPTY;\n\n /** Subscription to the event that is dispatched when the user lifts their pointer. */\n private _pointerUpSubscription = Subscription.EMPTY;\n\n /** Subscription to the viewport being scrolled. */\n private _scrollSubscription = Subscription.EMPTY;\n\n /** Subscription to the viewport being resized. */\n private _resizeSubscription = Subscription.EMPTY;\n\n /**\n * Time at which the last touch event occurred. Used to avoid firing the same\n * events multiple times on touch devices where the browser will fire a fake\n * mouse event for each touch event, after a certain time.\n */\n private _lastTouchEventTime: number;\n\n /** Time at which the last dragging sequence was started. */\n private _dragStartTime: number;\n\n /** Cached reference to the boundary element. */\n private _boundaryElement: HTMLElement | null = null;\n\n /** Whether the native dragging interactions have been enabled on the root element. */\n private _nativeInteractionsEnabled = true;\n\n /** Cached dimensions of the preview element. */\n private _previewRect?: ClientRect;\n\n /** Cached dimensions of the boundary element. */\n private _boundaryRect?: ClientRect;\n\n /** Element that will be used as a template to create the draggable item's preview. */\n private _previewTemplate?: DragPreviewTemplate | null;\n\n /** Template for placeholder element rendered to show where a draggable would be dropped. */\n private _placeholderTemplate?: DragHelperTemplate | null;\n\n /** Elements that can be used to drag the draggable item. */\n private _handles: HTMLElement[] = [];\n\n /** Registered handles that are currently disabled. */\n private _disabledHandles = new Set();\n\n /** Droppable container that the draggable is a part of. */\n private _dropContainer?: DropListRef;\n\n /** Layout direction of the item. */\n private _direction: Direction = 'ltr';\n\n /** Axis along which dragging is locked. */\n lockAxis: 'x' | 'y';\n\n /**\n * Amount of milliseconds to wait after the user has put their\n * pointer down before starting to drag the element.\n */\n dragStartDelay: number | {touch: number, mouse: number} = 0;\n\n /** Class to be added to the preview element. */\n previewClass: string|string[]|undefined;\n\n /** Whether starting to drag this element is disabled. */\n get disabled(): boolean {\n return this._disabled || !!(this._dropContainer && this._dropContainer.disabled);\n }\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this._toggleNativeDragInteractions();\n }\n }\n private _disabled = false;\n\n /** Emits as the drag sequence is being prepared. */\n beforeStarted = new Subject();\n\n /** Emits when the user starts dragging the item. */\n started = new Subject<{source: DragRef}>();\n\n /** Emits when the user has released a drag item, before any animations have started. */\n released = new Subject<{source: DragRef}>();\n\n /** Emits when the user stops dragging an item in the container. */\n ended = new Subject<{source: DragRef, distance: Point}>();\n\n /** Emits when the user has moved the item into a new container. */\n entered = new Subject<{container: DropListRef, item: DragRef, currentIndex: number}>();\n\n /** Emits when the user removes the item its container by dragging it into another container. */\n exited = new Subject<{container: DropListRef, item: DragRef}>();\n\n /** Emits when the user drops the item inside a container. */\n dropped = new Subject<{\n previousIndex: number;\n currentIndex: number;\n item: DragRef;\n container: DropListRef;\n previousContainer: DropListRef;\n distance: Point;\n isPointerOverContainer: boolean;\n }>();\n\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 moved: Observable<{\n source: DragRef;\n pointerPosition: {x: number, y: number};\n event: MouseEvent | TouchEvent;\n distance: Point;\n delta: {x: -1 | 0 | 1, y: -1 | 0 | 1};\n }> = this._moveEvents;\n\n /** Arbitrary data that can be attached to the drag item. */\n data: T;\n\n /**\n * Function that can be used to customize the logic of how the position of the drag item\n * is limited while it's being dragged. Gets called with a point containing the current position\n * of the user's pointer on the page and should return a point describing where the item should\n * be rendered.\n */\n constrainPosition?: (point: Point, dragRef: DragRef) => Point;\n\n constructor(\n element: ElementRef | HTMLElement,\n private _config: DragRefConfig,\n private _document: Document,\n private _ngZone: NgZone,\n private _viewportRuler: ViewportRuler,\n private _dragDropRegistry: DragDropRegistry) {\n\n this.withRootElement(element);\n this._parentPositions = new ParentPositionTracker(_document, _viewportRuler);\n _dragDropRegistry.registerDragItem(this);\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(): HTMLElement {\n return this._placeholder;\n }\n\n /** Returns the root draggable element. */\n getRootElement(): HTMLElement {\n return this._rootElement;\n }\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(): HTMLElement {\n return this.isDragging() ? this.getPlaceholderElement() : this.getRootElement();\n }\n\n /** Registers the handles that can be used to drag the element. */\n withHandles(handles: (HTMLElement | ElementRef)[]): this {\n this._handles = handles.map(handle => coerceElement(handle));\n this._handles.forEach(handle => toggleNativeDragInteractions(handle, false));\n this._toggleNativeDragInteractions();\n return this;\n }\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: DragPreviewTemplate | null): this {\n this._previewTemplate = template;\n return this;\n }\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: DragHelperTemplate | null): this {\n this._placeholderTemplate = template;\n return this;\n }\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: ElementRef | HTMLElement): this {\n const element = coerceElement(rootElement);\n\n if (element !== this._rootElement) {\n if (this._rootElement) {\n this._removeRootElementListeners(this._rootElement);\n }\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\n if (typeof SVGElement !== 'undefined' && this._rootElement instanceof SVGElement) {\n this._ownerSVGElement = this._rootElement.ownerSVGElement;\n }\n\n return this;\n }\n\n /**\n * Element to which the draggable's position will be constrained.\n */\n withBoundaryElement(boundaryElement: ElementRef | HTMLElement | null): this {\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\n /** Removes the dragging functionality from the DOM element. */\n dispose() {\n this._removeRootElementListeners(this._rootElement);\n\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 removeNode(this._rootElement);\n }\n\n removeNode(this._anchor);\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 = this._rootElement = this._ownerSVGElement = this._placeholderTemplate =\n this._previewTemplate = this._anchor = null!;\n }\n\n /** Checks whether the element is currently being dragged. */\n isDragging(): boolean {\n return this._hasStartedDragging && this._dragDropRegistry.isDragging(this);\n }\n\n /** Resets a standalone drag item to its initial position. */\n reset(): void {\n this._rootElement.style.transform = this._initialTransform || '';\n this._activeTransform = {x: 0, y: 0};\n this._passiveTransform = {x: 0, y: 0};\n }\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: HTMLElement) {\n if (this._handles.indexOf(handle) > -1) {\n this._disabledHandles.add(handle);\n }\n }\n\n /**\n * Enables a handle, if it has been disabled.\n * @param handle Handle element to be enabled.\n */\n enableHandle(handle: HTMLElement) {\n this._disabledHandles.delete(handle);\n }\n\n /** Sets the layout direction of the draggable item. */\n withDirection(direction: Direction): this {\n this._direction = direction;\n return this;\n }\n\n /** Sets the container that the item is part of. */\n _withDropContainer(container: DropListRef) {\n this._dropContainer = container;\n }\n\n /**\n * Gets the current position in pixels the draggable outside of a drop container.\n */\n getFreeDragPosition(): Readonly {\n const position = this.isDragging() ? this._activeTransform : this._passiveTransform;\n return {x: position.x, y: position.y};\n }\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: Point): this {\n this._activeTransform = {x: 0, y: 0};\n this._passiveTransform.x = value.x;\n this._passiveTransform.y = value.y;\n\n if (!this._dropContainer) {\n this._applyRootElementTransform(value.x, value.y);\n }\n\n return this;\n }\n\n /** Updates the item's sort order based on the last-known pointer position. */\n _sortFromLastPointerPosition() {\n const position = this._lastKnownPointerPosition;\n\n if (position && this._dropContainer) {\n this._updateActiveDropContainer(this._getConstrainedPointerPosition(position), position);\n }\n }\n\n /** Unsubscribes from the global subscriptions. */\n private _removeSubscriptions() {\n this._pointerMoveSubscription.unsubscribe();\n this._pointerUpSubscription.unsubscribe();\n this._scrollSubscription.unsubscribe();\n }\n\n /** Destroys the preview element and its ViewRef. */\n private _destroyPreview() {\n if (this._preview) {\n removeNode(this._preview);\n }\n\n if (this._previewRef) {\n this._previewRef.destroy();\n }\n\n this._preview = this._previewRef = null!;\n }\n\n /** Destroys the placeholder element and its ViewRef. */\n private _destroyPlaceholder() {\n if (this._placeholder) {\n removeNode(this._placeholder);\n }\n\n if (this._placeholderRef) {\n this._placeholderRef.destroy();\n }\n\n this._placeholder = this._placeholderRef = null!;\n }\n\n /** Handler for the `mousedown`/`touchstart` events. */\n private _pointerDown = (event: MouseEvent | TouchEvent) => {\n this.beforeStarted.next();\n\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 const target = event.target;\n return !!target && (target === handle || handle.contains(target as HTMLElement));\n });\n\n if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) {\n this._initializeDragSequence(targetHandle, event);\n }\n } else if (!this.disabled) {\n this._initializeDragSequence(this._rootElement, event);\n }\n }\n\n /** Handler that is invoked when the user moves their pointer after they've initiated a drag. */\n private _pointerMove = (event: MouseEvent | TouchEvent) => {\n // Prevent the default action as early as possible in order to block\n // native actions like dragging the selected text or images with the mouse.\n event.preventDefault();\n const pointerPosition = this._getPointerPositionOnPage(event);\n\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\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 if (!isDelayElapsed) {\n this._endDragSequence(event);\n return;\n }\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 (!this._dropContainer || !this._dropContainer.isDragging()) {\n this._hasStartedDragging = true;\n this._ngZone.run(() => this._startDragSequence(event));\n }\n }\n\n return;\n }\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\n const constrainedPointerPosition = this._getConstrainedPointerPosition(pointerPosition);\n this._hasMoved = true;\n this._lastKnownPointerPosition = pointerPosition;\n this._updatePointerDirectionDelta(constrainedPointerPosition);\n\n if (this._dropContainer) {\n this._updateActiveDropContainer(constrainedPointerPosition, pointerPosition);\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\n this._applyRootElementTransform(activeTransform.x, activeTransform.y);\n\n // Apply transform as attribute if dragging and svg element to work for IE\n if (typeof SVGElement !== 'undefined' && this._rootElement instanceof SVGElement) {\n const appliedTransform = `translate(${activeTransform.x} ${activeTransform.y})`;\n this._rootElement.setAttribute('transform', appliedTransform);\n }\n }\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\n /** Handler that is invoked when the user lifts their pointer up, after initiating a drag. */\n private _pointerUp = (event: MouseEvent | TouchEvent) => {\n this._endDragSequence(event);\n }\n\n /**\n * Clears subscriptions and stops the dragging sequence.\n * @param event Browser event object that ended the sequence.\n */\n private _endDragSequence(event: MouseEvent | TouchEvent) {\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\n this._removeSubscriptions();\n this._dragDropRegistry.stopDragging(this);\n this._toggleNativeDragInteractions();\n\n if (this._handles) {\n this._rootElement.style.webkitTapHighlightColor = this._rootElementTapHighlight;\n }\n\n if (!this._hasStartedDragging) {\n return;\n }\n\n this.released.next({source: this});\n\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 } 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 this._passiveTransform.y = this._activeTransform.y;\n this._ngZone.run(() => {\n this.ended.next({\n source: this,\n distance: this._getDragDistance(this._getPointerPositionOnPage(event))\n });\n });\n this._cleanupCachedDimensions();\n this._dragDropRegistry.stopDragging(this);\n }\n }\n\n /** Starts the dragging sequence. */\n private _startDragSequence(event: MouseEvent | TouchEvent) {\n if (isTouchEvent(event)) {\n this._lastTouchEventTime = Date.now();\n }\n\n this._toggleNativeDragInteractions();\n\n const dropContainer = this._dropContainer;\n\n if (dropContainer) {\n const element = this._rootElement;\n const parent = element.parentNode!;\n const preview = this._preview = this._createPreviewElement();\n const placeholder = this._placeholder = this._createPlaceholderElement();\n const anchor = this._anchor = this._anchor || this._document.createComment('');\n\n // Insert an anchor node so that we can restore the element's position in the DOM.\n parent.insertBefore(anchor, element);\n\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 element.style.display = 'none';\n this._document.body.appendChild(parent.replaceChild(placeholder, element));\n getPreviewInsertionPoint(this._document).appendChild(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 } else {\n this.started.next({source: this});\n this._initialContainer = this._initialIndex = undefined!;\n }\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 /**\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 private _initializeDragSequence(referenceElement: HTMLElement, event: MouseEvent | TouchEvent) {\n // Always stop propagation for the event that initializes\n // the dragging sequence, in order to prevent it from potentially\n // starting another sequence for a draggable parent somewhere up the DOM tree.\n event.stopPropagation();\n\n const isDragging = this.isDragging();\n const isTouchSequence = isTouchEvent(event);\n const isAuxiliaryMouseButton = !isTouchSequence && (event as MouseEvent).button !== 0;\n const rootElement = this._rootElement;\n const isSyntheticEvent = !isTouchSequence && this._lastTouchEventTime &&\n this._lastTouchEventTime + MOUSE_EVENT_IGNORE_TIME > Date.now();\n\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 (event.target && (event.target as HTMLElement).draggable && event.type === 'mousedown') {\n event.preventDefault();\n }\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) {\n return;\n }\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 this._rootElementTapHighlight = rootElement.style.webkitTapHighlightColor || '';\n rootElement.style.webkitTapHighlightColor = 'transparent';\n }\n\n this._hasStartedDragging = this._hasMoved = false;\n\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.scroll.subscribe(scrollEvent => {\n this._updateOnScroll(scrollEvent);\n });\n\n if (this._boundaryElement) {\n this._boundaryRect = getMutableClientRect(this._boundaryElement);\n }\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 = previewTemplate && previewTemplate.template &&\n !previewTemplate.matchSize ? {x: 0, y: 0} :\n this._getPointerPositionInElement(referenceElement, event);\n const pointerPosition = this._pickupPositionOnPage = 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\n /** Cleans up the DOM artifacts that were added to facilitate the element being dragged. */\n private _cleanupDragArtifacts(event: MouseEvent | TouchEvent) {\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 this._rootElement.style.display = '';\n this._anchor.parentNode!.replaceChild(this._rootElement, this._anchor);\n\n this._destroyPreview();\n this._destroyPlaceholder();\n this._boundaryRect = this._previewRect = undefined;\n\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(this._getPointerPositionOnPage(event));\n const isPointerOverContainer = container._isOverContainer(\n pointerPosition.x, pointerPosition.y);\n\n this.ended.next({source: this, distance});\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 });\n container.drop(this, currentIndex, this._initialContainer, isPointerOverContainer, distance,\n this._initialIndex);\n this._dropContainer = this._initialContainer;\n });\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 private _updateActiveDropContainer({x, y}: Point, {x: rawX, y: rawY}: Point) {\n // Drop container that draggable has been moved into.\n let newContainer = this._initialContainer._getSiblingContainerFromPosition(this, x, y);\n\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 && this._dropContainer !== this._initialContainer &&\n this._initialContainer._isOverContainer(x, y)) {\n newContainer = this._initialContainer;\n }\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 ? this._initialIndex : undefined);\n this.entered.next({\n item: this,\n container: newContainer!,\n currentIndex: newContainer!.getItemIndex(this)\n });\n });\n }\n\n this._dropContainer!._startScrollingIfNecessary(rawX, rawY);\n this._dropContainer!._sortItem(this, x, y, this._pointerDirectionDelta);\n this._preview.style.transform =\n getTransform(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 private _createPreviewElement(): HTMLElement {\n const previewConfig = this._previewTemplate;\n const previewClass = this.previewClass;\n const previewTemplate = previewConfig ? previewConfig.template : null;\n let preview: HTMLElement;\n\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,\n previewConfig.context);\n viewRef.detectChanges();\n preview = getRootNode(viewRef, this._document);\n this._previewRef = viewRef;\n if (previewConfig.matchSize) {\n matchElementSize(preview, rootRect!);\n } else {\n preview.style.transform =\n getTransform(this._pickupPositionOnPage.x, this._pickupPositionOnPage.y);\n }\n } else {\n const element = this._rootElement;\n preview = deepCloneNode(element);\n matchElementSize(preview, element.getBoundingClientRect());\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 pointerEvents: '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 zIndex: `${this._config.zIndex || 1000}`\n });\n\n toggleNativeDragInteractions(preview, false);\n preview.classList.add('cdk-drag-preview');\n preview.setAttribute('dir', this._direction);\n\n if (previewClass) {\n if (Array.isArray(previewClass)) {\n previewClass.forEach(className => preview.classList.add(className));\n } else {\n preview.classList.add(previewClass);\n }\n }\n\n return preview;\n }\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 private _animatePreviewToPlaceholder(): Promise {\n // If the user hasn't moved yet, the transitionend event won't fire.\n if (!this._hasMoved) {\n return Promise.resolve();\n }\n\n const placeholderRect = this._placeholder.getBoundingClientRect();\n\n // Apply the class that adds a transition to the preview.\n this._preview.classList.add('cdk-drag-animating');\n\n // Move the preview to the placeholder position.\n this._preview.style.transform = getTransform(placeholderRect.left, placeholderRect.top);\n\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\n if (duration === 0) {\n return Promise.resolve();\n }\n\n return this._ngZone.runOutsideAngular(() => {\n return new Promise(resolve => {\n const handler = ((event: TransitionEvent) => {\n if (!event || (event.target === this._preview && event.propertyName === 'transform')) {\n this._preview.removeEventListener('transitionend', handler);\n resolve();\n clearTimeout(timeout);\n }\n }) as EventListenerOrEventListenerObject;\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 as Function, duration * 1.5);\n this._preview.addEventListener('transitionend', handler);\n });\n });\n }\n\n /** Creates an element that will be shown instead of the current element while dragging. */\n private _createPlaceholderElement(): HTMLElement {\n const placeholderConfig = this._placeholderTemplate;\n const placeholderTemplate = placeholderConfig ? placeholderConfig.template : null;\n let placeholder: HTMLElement;\n\n if (placeholderTemplate) {\n this._placeholderRef = placeholderConfig!.viewContainer.createEmbeddedView(\n placeholderTemplate,\n placeholderConfig!.context\n );\n this._placeholderRef.detectChanges();\n placeholder = getRootNode(this._placeholderRef, this._document);\n } else {\n placeholder = deepCloneNode(this._rootElement);\n }\n\n placeholder.classList.add('cdk-drag-placeholder');\n return placeholder;\n }\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 private _getPointerPositionInElement(referenceElement: HTMLElement,\n event: MouseEvent | TouchEvent): Point {\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\n return {\n x: referenceRect.left - elementRect.left + x,\n y: referenceRect.top - elementRect.top + y\n };\n }\n\n /** Determines the point of the page that was touched by the user. */\n private _getPointerPositionOnPage(event: MouseEvent | TouchEvent): Point {\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}) : event;\n\n const x = point.pageX - scrollPosition.left;\n const y = point.pageY - scrollPosition.top;\n\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\n return {x, y};\n }\n\n\n /** Gets the pointer position on the page, accounting for any position constraints. */\n private _getConstrainedPointerPosition(point: Point): Point {\n const dropContainerLock = this._dropContainer ? this._dropContainer.lockAxis : null;\n let {x, y} = this.constrainPosition ? this.constrainPosition(point, this) : point;\n\n if (this.lockAxis === 'x' || dropContainerLock === 'x') {\n y = this._pickupPositionOnPage.y;\n } else if (this.lockAxis === 'y' || dropContainerLock === 'y') {\n x = this._pickupPositionOnPage.x;\n }\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\n x = clamp(x, minX, maxX);\n y = clamp(y, minY, maxY);\n }\n\n return {x, y};\n }\n\n\n /** Updates the current drag delta, based on the user's current pointer position on the page. */\n private _updatePointerDirectionDelta(pointerPositionOnPage: Point) {\n const {x, y} = pointerPositionOnPage;\n const delta = this._pointerDirectionDelta;\n const positionSinceLastChange = this._pointerPositionAtLastDirectionChange;\n\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\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\n if (changeY > this._config.pointerDirectionChangeThreshold) {\n delta.y = y > positionSinceLastChange.y ? 1 : -1;\n positionSinceLastChange.y = y;\n }\n\n return delta;\n }\n\n /** Toggles the native drag interactions, based on how many handles are registered. */\n private _toggleNativeDragInteractions() {\n if (!this._rootElement || !this._handles) {\n return;\n }\n\n const shouldEnable = this._handles.length > 0 || !this.isDragging();\n\n if (shouldEnable !== this._nativeInteractionsEnabled) {\n this._nativeInteractionsEnabled = shouldEnable;\n toggleNativeDragInteractions(this._rootElement, shouldEnable);\n }\n }\n\n /** Removes the manually-added event listeners from the root element. */\n private _removeRootElementListeners(element: HTMLElement) {\n element.removeEventListener('mousedown', this._pointerDown, activeEventListenerOptions);\n element.removeEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);\n }\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 private _applyRootElementTransform(x: number, y: number) {\n const transform = getTransform(x, y);\n\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 if (this._initialTransform == null) {\n this._initialTransform = this._rootElement.style.transform || '';\n }\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 this._rootElement.style.transform = this._initialTransform ?\n transform + ' ' + this._initialTransform : transform;\n }\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 private _getDragDistance(currentPosition: Point): Point {\n const pickupPosition = this._pickupPositionOnPage;\n\n if (pickupPosition) {\n return {x: currentPosition.x - pickupPosition.x, y: currentPosition.y - pickupPosition.y};\n }\n\n return {x: 0, y: 0};\n }\n\n /** Cleans up any cached element dimensions that we don't need after dragging has stopped. */\n private _cleanupCachedDimensions() {\n this._boundaryRect = this._previewRect = undefined;\n this._parentPositions.clear();\n }\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 private _containInsideBoundaryOnResize() {\n let {x, y} = this._passiveTransform;\n\n if ((x === 0 && y === 0) || this.isDragging() || !this._boundaryElement) {\n return;\n }\n\n const boundaryRect = this._boundaryElement.getBoundingClientRect();\n const elementRect = this._rootElement.getBoundingClientRect();\n\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\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\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\n if (rightOverflow > 0) {\n x -= rightOverflow;\n }\n } else {\n x = 0;\n }\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\n if (bottomOverflow > 0) {\n y -= bottomOverflow;\n }\n } else {\n y = 0;\n }\n\n if (x !== this._passiveTransform.x || y !== this._passiveTransform.y) {\n this.setFreeDragPosition({y, x});\n }\n }\n\n /** Gets the drag start delay, based on the event type. */\n private _getDragStartDelay(event: MouseEvent | TouchEvent): number {\n const value = this.dragStartDelay;\n\n if (typeof value === 'number') {\n return value;\n } else if (isTouchEvent(event)) {\n return value.touch;\n }\n\n return value ? value.mouse : 0;\n }\n\n /** Updates the internal state of the draggable element when scrolling has occurred. */\n private _updateOnScroll(event: Event) {\n const scrollDifference = this._parentPositions.handleScroll(event);\n\n if (scrollDifference) {\n const target = event.target as Node;\n\n // ClientRect dimensions are based on the scroll position of the page and its parent node so\n // we have to update the cached boundary ClientRect if the user has scrolled. Check for\n // the `document` specifically since IE doesn't support `contains` on it.\n if (this._boundaryRect && (target === this._document ||\n (target !== this._boundaryElement && target.contains(this._boundaryElement)))) {\n adjustClientRect(this._boundaryRect, scrollDifference.top, scrollDifference.left);\n }\n\n this._pickupPositionOnPage.x += scrollDifference.left;\n this._pickupPositionOnPage.y += scrollDifference.top;\n\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\n /** Gets the scroll position of the viewport. */\n private _getViewportScrollPosition() {\n const cachedPosition = this._parentPositions.positions.get(this._document);\n return cachedPosition ? cachedPosition.scrollPosition :\n this._viewportRuler.getViewportScrollPosition();\n }\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: number, y: number): string {\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\n/** Clamps a value between a minimum and a maximum. */\nfunction clamp(value: number, min: number, max: number) {\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * Helper to remove a node from the DOM and to do all the necessary null checks.\n * @param node Node to be removed.\n */\nfunction removeNode(node: Node | null) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\n\n/** Determines whether an event is a touch event. */\nfunction isTouchEvent(event: MouseEvent | TouchEvent): event is TouchEvent {\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 element into which the drag preview should be inserted. */\nfunction getPreviewInsertionPoint(documentRef: any): HTMLElement {\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 documentRef.fullscreenElement ||\n documentRef.webkitFullscreenElement ||\n documentRef.mozFullScreenElement ||\n documentRef.msFullscreenElement ||\n documentRef.body;\n}\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: EmbeddedViewRef, _document: Document): HTMLElement {\n const rootNodes: Node[] = viewRef.rootNodes;\n\n if (rootNodes.length === 1 && rootNodes[0].nodeType === _document.ELEMENT_NODE) {\n return rootNodes[0] as HTMLElement;\n }\n\n const wrapper = _document.createElement('div');\n rootNodes.forEach(node => wrapper.appendChild(node));\n return wrapper;\n}\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: HTMLElement, sourceRect: ClientRect): void {\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 * @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 * 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 */\nexport function moveItemInArray(array: T[], fromIndex: number, toIndex: number): void {\n const from = clamp(fromIndex, array.length - 1);\n const to = clamp(toIndex, array.length - 1);\n\n if (from === to) {\n return;\n }\n\n const target = array[from];\n const delta = to < from ? -1 : 1;\n\n for (let i = from; i !== to; i += delta) {\n array[i] = array[i + delta];\n }\n\n array[to] = target;\n}\n\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 */\nexport function transferArrayItem(currentArray: T[],\n targetArray: T[],\n currentIndex: number,\n targetIndex: number): void {\n const from = clamp(currentIndex, currentArray.length - 1);\n const to = clamp(targetIndex, targetArray.length);\n\n if (currentArray.length) {\n targetArray.splice(to, 0, currentArray.splice(from, 1)[0]);\n }\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 */\nexport function copyArrayItem(currentArray: T[],\n targetArray: T[],\n currentIndex: number,\n targetIndex: number): void {\n const to = clamp(targetIndex, targetArray.length);\n\n if (currentArray.length) {\n targetArray.splice(to, 0, currentArray[currentIndex]);\n }\n}\n\n/** Clamps a number between zero and a maximum. */\nfunction clamp(value: number, max: number): number {\n return Math.max(0, Math.min(max, value));\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\nimport {ElementRef, NgZone} from '@angular/core';\nimport {Direction} from '@angular/cdk/bidi';\nimport {coerceElement} from '@angular/cdk/coercion';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {_getShadowRoot} from '@angular/cdk/platform';\nimport {Subject, Subscription, interval, animationFrameScheduler} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {moveItemInArray} from './drag-utils';\nimport {DragDropRegistry} from './drag-drop-registry';\nimport {DragRefInternal as DragRef, Point} from './drag-ref';\nimport {\n isPointerNearClientRect,\n adjustClientRect,\n getMutableClientRect,\n isInsideClientRect,\n} from './client-rect';\nimport {ParentPositionTracker} from './parent-position-tracker';\nimport {DragCSSStyleDeclaration} from './drag-styling';\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/**\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/**\n * Number of pixels to scroll for each frame when auto-scrolling an element.\n * The value comes from trying it out manually until it feels right.\n */\nconst AUTO_SCROLL_STEP = 2;\n\n/**\n * Entry in the position cache for draggable items.\n * @docs-private\n */\ninterface CachedItemPosition {\n /** Instance of the drag item. */\n drag: DragRef;\n /** Dimensions of the item. */\n clientRect: ClientRect;\n /** Amount by which the item has been moved since dragging started. */\n offset: number;\n}\n\n/** Vertical direction in which we can auto-scroll. */\nconst enum AutoScrollVerticalDirection {NONE, UP, DOWN}\n\n/** Horizontal direction in which we can auto-scroll. */\nconst enum AutoScrollHorizontalDirection {NONE, LEFT, RIGHT}\n\n/**\n * Internal compile-time-only representation of a `DropListRef`.\n * Used to avoid circular import issues between the `DropListRef` and the `DragRef`.\n * @docs-private\n */\nexport interface DropListRefInternal extends DropListRef {}\n\n/**\n * Reference to a drop list. Used to manipulate or dispose of the container.\n */\nexport class DropListRef {\n /** Element that the drop list is attached to. */\n element: HTMLElement | ElementRef;\n\n /** Whether starting a dragging sequence from this container is disabled. */\n disabled: boolean = false;\n\n /** Whether sorting items within the list is disabled. */\n sortingDisabled: boolean = false;\n\n /** Locks the position of the draggable elements inside the container along the specified axis. */\n lockAxis: 'x' | 'y';\n\n /**\n * Whether auto-scrolling the view when the user\n * moves their pointer close to the edges is disabled.\n */\n autoScrollDisabled: boolean = false;\n\n /**\n * Function that is used to determine whether an item\n * is allowed to be moved into a drop container.\n */\n enterPredicate: (drag: DragRef, drop: DropListRef) => boolean = () => true;\n\n /** Emits right before dragging has started. */\n beforeStarted = new Subject();\n\n /**\n * Emits when the user has moved a new drag item into this container.\n */\n entered = new Subject<{item: DragRef, container: DropListRef, currentIndex: number}>();\n\n /**\n * Emits when the user removes an item from the container\n * by dragging it into another container.\n */\n exited = new Subject<{item: DragRef, container: DropListRef}>();\n\n /** Emits when the user drops an item inside the container. */\n dropped = new Subject<{\n item: DragRef,\n currentIndex: number,\n previousIndex: number,\n container: DropListRef,\n previousContainer: DropListRef,\n isPointerOverContainer: boolean,\n distance: Point;\n }>();\n\n /** Emits as the user is swapping items while actively dragging. */\n sorted = new Subject<{\n previousIndex: number,\n currentIndex: number,\n container: DropListRef,\n item: DragRef\n }>();\n\n /** Arbitrary data that can be attached to the drop list. */\n data: T;\n\n /** Whether an item in the list is being dragged. */\n private _isDragging = false;\n\n /** Cache of the dimensions of all the items inside the container. */\n private _itemPositions: CachedItemPosition[] = [];\n\n /** Keeps track of the positions of any parent scrollable elements. */\n private _parentPositions: ParentPositionTracker;\n\n /** Cached `ClientRect` of the drop list. */\n private _clientRect: ClientRect;\n\n /**\n * Draggable items that are currently active inside the container. Includes the items\n * from `_draggables`, as well as any items that have been dragged in, but haven't\n * been dropped yet.\n */\n private _activeDraggables: DragRef[];\n\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 private _previousSwap = {drag: null as DragRef | null, delta: 0, overlaps: false};\n\n /** Draggable items in the container. */\n private _draggables: ReadonlyArray;\n\n /** Drop lists that are connected to the current one. */\n private _siblings: ReadonlyArray = [];\n\n /** Direction in which the list is oriented. */\n private _orientation: 'horizontal' | 'vertical' = 'vertical';\n\n /** Connected siblings that currently have a dragged item. */\n private _activeSiblings = new Set();\n\n /** Layout direction of the drop list. */\n private _direction: Direction = 'ltr';\n\n /** Subscription to the window being scrolled. */\n private _viewportScrollSubscription = Subscription.EMPTY;\n\n /** Vertical direction in which the list is currently scrolling. */\n private _verticalScrollDirection = AutoScrollVerticalDirection.NONE;\n\n /** Horizontal direction in which the list is currently scrolling. */\n private _horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;\n\n /** Node that is being auto-scrolled. */\n private _scrollNode: HTMLElement | Window;\n\n /** Used to signal to the current auto-scroll sequence when to stop. */\n private _stopScrollTimers = new Subject();\n\n /** Shadow root of the current element. Necessary for `elementFromPoint` to resolve correctly. */\n private _cachedShadowRoot: DocumentOrShadowRoot | null = null;\n\n /** Reference to the document. */\n private _document: Document;\n\n /** Elements that can be scrolled while the user is dragging. */\n private _scrollableElements: HTMLElement[];\n\n /** Initial value for the element's `scroll-snap-type` style. */\n private _initialScrollSnap: string;\n\n constructor(\n element: ElementRef | HTMLElement,\n private _dragDropRegistry: DragDropRegistry,\n _document: any,\n private _ngZone: NgZone,\n private _viewportRuler: ViewportRuler) {\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\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\n /** Whether an item from this list is currently being dragged. */\n isDragging() {\n return this._isDragging;\n }\n\n /** Starts dragging an item. */\n start(): void {\n const styles = coerceElement(this.element).style as DragCSSStyleDeclaration;\n this.beforeStarted.next();\n this._isDragging = true;\n\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._siblings.forEach(sibling => sibling._startReceiving(this));\n this._viewportScrollSubscription.unsubscribe();\n this._listenToScrollEvents();\n }\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: DragRef, pointerX: number, pointerY: number, index?: number): void {\n this.start();\n\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: number;\n\n if (index == null) {\n newIndex = this.sortingDisabled ? this._draggables.indexOf(item) : -1;\n\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 } else {\n newIndex = index;\n }\n\n const activeDraggables = this._activeDraggables;\n const currentIndex = activeDraggables.indexOf(item);\n const placeholder = item.getPlaceholderElement();\n let newPositionReference: DragRef | undefined = activeDraggables[newIndex];\n\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\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\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 } else if (this._shouldEnterAsFirstChild(pointerX, pointerY)) {\n const reference = activeDraggables[0].getRootElement();\n reference.parentNode!.insertBefore(placeholder, reference);\n activeDraggables.unshift(item);\n } else {\n coerceElement(this.element).appendChild(placeholder);\n activeDraggables.push(item);\n }\n\n // The transform needs to be cleared so it doesn't throw off the measurements.\n placeholder.style.transform = '';\n\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\n this.entered.next({item, container: this, currentIndex: this.getItemIndex(item)});\n }\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: DragRef): void {\n this._reset();\n this.exited.next({item, container: this});\n }\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 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 * @param previousIndex Index of the item when dragging started.\n *\n * @breaking-change 11.0.0 `previousIndex` parameter to become required.\n */\n drop(item: DragRef, currentIndex: number, previousContainer: DropListRef,\n isPointerOverContainer: boolean, distance: Point, previousIndex?: number): void {\n this._reset();\n\n // @breaking-change 11.0.0 Remove this fallback logic once `previousIndex` is a required param.\n if (previousIndex == null) {\n previousIndex = previousContainer.getItemIndex(item);\n }\n\n this.dropped.next({item,\n currentIndex,\n previousIndex,\n container: this,\n previousContainer,\n isPointerOverContainer,\n distance\n });\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: DragRef[]): this {\n const previousItems = this._draggables;\n this._draggables = items;\n items.forEach(item => item._withDropContainer(this));\n\n if (this.isDragging()) {\n const draggedItems = previousItems.filter(item => item.isDragging());\n\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 } else {\n this._cacheItems();\n }\n }\n\n return this;\n }\n\n /** Sets the layout direction of the drop list. */\n withDirection(direction: Direction): this {\n this._direction = direction;\n return this;\n }\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: DropListRef[]): this {\n this._siblings = connectedTo.slice();\n return this;\n }\n\n /**\n * Sets the orientation of the container.\n * @param orientation New orientation for the container.\n */\n withOrientation(orientation: 'vertical' | 'horizontal'): this {\n this._orientation = orientation;\n return this;\n }\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: HTMLElement[]): this {\n const element = coerceElement(this.element);\n\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\n /** Gets the scrollable parents that are registered with this drop container. */\n getScrollableParents(): ReadonlyArray {\n return this._scrollableElements;\n }\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: DragRef): number {\n if (!this._isDragging) {\n return this._draggables.indexOf(item);\n }\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() : this._itemPositions;\n\n return findIndex(items, currentItem => currentItem.drag === item);\n }\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(): boolean {\n return this._activeSiblings.size > 0;\n }\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: DragRef, pointerX: number, pointerY: number,\n pointerDelta: {x: number, y: number}): void {\n // Don't sort the item if sorting is disabled or it's out of range.\n if (this.sortingDisabled ||\n !isPointerNearClientRect(this._clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {\n return;\n }\n\n const siblings = this._itemPositions;\n const newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY, pointerDelta);\n\n if (newIndex === -1 && siblings.length > 0) {\n return;\n }\n\n const isHorizontal = this._orientation === 'horizontal';\n const currentIndex = findIndex(siblings, 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\n // How many pixels the item's placeholder should be offset.\n const itemOffset = this._getItemOffsetPx(currentPosition, newPosition, delta);\n\n // How many pixels all the other items should be offset.\n const siblingOffset = this._getSiblingOffsetPx(currentIndex, siblings, delta);\n\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\n // Shuffle the array in place.\n moveItemInArray(siblings, currentIndex, newIndex);\n\n this.sorted.next({\n previousIndex: currentIndex,\n currentIndex: newIndex,\n container: this,\n item\n });\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\n const isDraggedItem = sibling.drag === item;\n const offset = isDraggedItem ? itemOffset : siblingOffset;\n const elementToOffset = isDraggedItem ? item.getPlaceholderElement() :\n sibling.drag.getRootElement();\n\n // Update the offset to reflect the new position.\n sibling.offset += offset;\n\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 = `translate3d(${Math.round(sibling.offset)}px, 0, 0)`;\n adjustClientRect(sibling.clientRect, 0, offset);\n } else {\n elementToOffset.style.transform = `translate3d(0, ${Math.round(sibling.offset)}px, 0)`;\n adjustClientRect(sibling.clientRect, offset, 0);\n }\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 /**\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: number, pointerY: number) {\n if (this.autoScrollDisabled) {\n return;\n }\n\n let scrollNode: HTMLElement | Window | undefined;\n let verticalScrollDirection = AutoScrollVerticalDirection.NONE;\n let horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;\n\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\n if (isPointerNearClientRect(position.clientRect, DROP_PROXIMITY_THRESHOLD,\n pointerX, pointerY)) {\n [verticalScrollDirection, horizontalScrollDirection] = getElementScrollDirections(\n element as HTMLElement, position.clientRect, pointerX, pointerY);\n\n if (verticalScrollDirection || horizontalScrollDirection) {\n scrollNode = element as HTMLElement;\n }\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 = {width, height, top: 0, right: width, bottom: height, left: 0};\n verticalScrollDirection = getVerticalScrollDirection(clientRect, pointerY);\n horizontalScrollDirection = getHorizontalScrollDirection(clientRect, pointerX);\n scrollNode = window;\n }\n\n if (scrollNode && (verticalScrollDirection !== this._verticalScrollDirection ||\n horizontalScrollDirection !== this._horizontalScrollDirection ||\n scrollNode !== this._scrollNode)) {\n this._verticalScrollDirection = verticalScrollDirection;\n this._horizontalScrollDirection = horizontalScrollDirection;\n this._scrollNode = scrollNode;\n\n if ((verticalScrollDirection || horizontalScrollDirection) && scrollNode) {\n this._ngZone.runOutsideAngular(this._startScrollInterval);\n } else {\n this._stopScrolling();\n }\n }\n }\n\n /** Stops any currently-running auto-scroll sequences. */\n _stopScrolling() {\n this._stopScrollTimers.next();\n }\n\n /** Caches the positions of the configured scrollable parents. */\n private _cacheParentPositions() {\n const element = coerceElement(this.element);\n this._parentPositions.cache(this._scrollableElements);\n\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\n /** Refreshes the position cache of the items and sibling containers. */\n private _cacheItemPositions() {\n const isHorizontal = this._orientation === 'horizontal';\n\n this._itemPositions = this._activeDraggables.map(drag => {\n const elementToMeasure = drag.getVisibleElement();\n return {drag, offset: 0, clientRect: getMutableClientRect(elementToMeasure)};\n }).sort((a, b) => {\n return isHorizontal ? a.clientRect.left - b.clientRect.left :\n a.clientRect.top - b.clientRect.top;\n });\n }\n\n /** Resets the container to its initial state. */\n private _reset() {\n this._isDragging = false;\n\n const styles = coerceElement(this.element).style as DragCSSStyleDeclaration;\n styles.scrollSnapType = styles.msScrollSnapType = this._initialScrollSnap;\n\n // TODO(crisbeto): may have to wait for the animations to finish.\n this._activeDraggables.forEach(item => {\n const rootElement = item.getRootElement();\n\n if (rootElement) {\n rootElement.style.transform = '';\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 /**\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 private _getSiblingOffsetPx(currentIndex: number,\n siblings: CachedItemPosition[],\n delta: 1 | -1) {\n\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\n if (immediateSibling) {\n const start = isHorizontal ? 'left' : 'top';\n const end = isHorizontal ? 'right' : 'bottom';\n\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 } else {\n siblingOffset += currentPosition[start] - immediateSibling.clientRect[end];\n }\n }\n\n return siblingOffset;\n }\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 private _getItemOffsetPx(currentPosition: ClientRect, newPosition: ClientRect, delta: 1 | -1) {\n const isHorizontal = this._orientation === 'horizontal';\n let itemOffset = isHorizontal ? newPosition.left - currentPosition.left :\n newPosition.top - currentPosition.top;\n\n // Account for differences in the item width/height.\n if (delta === -1) {\n itemOffset += isHorizontal ? newPosition.width - currentPosition.width :\n newPosition.height - currentPosition.height;\n }\n\n return itemOffset;\n }\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 private _shouldEnterAsFirstChild(pointerX: number, pointerY: number) {\n if (!this._activeDraggables.length) {\n return false;\n }\n\n const itemPositions = this._itemPositions;\n const isHorizontal = this._orientation === 'horizontal';\n\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 } else {\n const firstItemRect = itemPositions[0].clientRect;\n return isHorizontal ? pointerX <= firstItemRect.left : pointerY <= firstItemRect.top;\n }\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 private _getItemIndexFromPointerPosition(item: DragRef, pointerX: number, pointerY: number,\n delta?: {x: number, y: number}) {\n const isHorizontal = this._orientation === 'horizontal';\n\n return findIndex(this._itemPositions, ({drag, clientRect}, _, array) => {\n if (drag === item) {\n // If there's only one item left in the container, it must be\n // the dragged item itself so we use it as a reference.\n return array.length < 2;\n }\n\n if (delta) {\n const direction = isHorizontal ? delta.x : delta.y;\n\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 && this._previousSwap.overlaps &&\n direction === this._previousSwap.delta) {\n return false;\n }\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 }\n\n /** Caches the current items in the list and their positions. */\n private _cacheItems(): void {\n this._activeDraggables = this._draggables.slice();\n this._cacheItemPositions();\n this._cacheParentPositions();\n }\n\n /** Starts the interval that'll auto-scroll the element. */\n private _startScrollInterval = () => {\n this._stopScrolling();\n\n interval(0, animationFrameScheduler)\n .pipe(takeUntil(this._stopScrollTimers))\n .subscribe(() => {\n const node = this._scrollNode;\n\n if (this._verticalScrollDirection === AutoScrollVerticalDirection.UP) {\n incrementVerticalScroll(node, -AUTO_SCROLL_STEP);\n } else if (this._verticalScrollDirection === AutoScrollVerticalDirection.DOWN) {\n incrementVerticalScroll(node, AUTO_SCROLL_STEP);\n }\n\n if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.LEFT) {\n incrementHorizontalScroll(node, -AUTO_SCROLL_STEP);\n } else if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.RIGHT) {\n incrementHorizontalScroll(node, AUTO_SCROLL_STEP);\n }\n });\n }\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: number, y: number): boolean {\n return isInsideClientRect(this._clientRect, x, y);\n }\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: DragRef, x: number, y: number): DropListRef | undefined {\n return this._siblings.find(sibling => sibling._canReceive(item, x, y));\n }\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: DragRef, x: number, y: number): boolean {\n if (!isInsideClientRect(this._clientRect, x, y) || !this.enterPredicate(item, this)) {\n return false;\n }\n\n const elementFromPoint = this._getShadowRoot().elementFromPoint(x, y) as HTMLElement | null;\n\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\n const nativeElement = coerceElement(this.element);\n\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 /**\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: DropListRef) {\n const activeSiblings = this._activeSiblings;\n\n if (!activeSiblings.has(sibling)) {\n activeSiblings.add(sibling);\n this._cacheParentPositions();\n this._listenToScrollEvents();\n }\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: DropListRef) {\n this._activeSiblings.delete(sibling);\n this._viewportScrollSubscription.unsubscribe();\n }\n\n /**\n * Starts listening to scroll events on the viewport.\n * Used for updating the internal state of the list.\n */\n private _listenToScrollEvents() {\n this._viewportScrollSubscription = this._dragDropRegistry.scroll.subscribe(event => {\n if (this.isDragging()) {\n const scrollDifference = this._parentPositions.handleScroll(event);\n\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\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 } else if (this.isReceiving()) {\n this._cacheParentPositions();\n }\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 private _getShadowRoot(): DocumentOrShadowRoot {\n if (!this._cachedShadowRoot) {\n const shadowRoot = _getShadowRoot(coerceElement(this.element)) as ShadowRoot | null;\n this._cachedShadowRoot = shadowRoot || this._document;\n }\n\n return this._cachedShadowRoot;\n }\n}\n\n\n/**\n * Finds the index of an item that matches a predicate function. Used as an equivalent\n * of `Array.prototype.findIndex` which isn't part of the standard Google typings.\n * @param array Array in which to look for matches.\n * @param predicate Function used to determine whether an item is a match.\n */\nfunction findIndex(array: T[],\n predicate: (value: T, index: number, obj: T[]) => boolean): number {\n\n for (let i = 0; i < array.length; i++) {\n if (predicate(array[i], i, array)) {\n return i;\n }\n }\n\n return -1;\n}\n\n/**\n * Increments the vertical scroll position of a node.\n * @param node Node whose scroll position should change.\n * @param amount Amount of pixels that the `node` should be scrolled.\n */\nfunction incrementVerticalScroll(node: HTMLElement | Window, amount: number) {\n if (node === window) {\n (node as Window).scrollBy(0, amount);\n } else {\n // Ideally we could use `Element.scrollBy` here as well, but IE and Edge don't support it.\n (node as HTMLElement).scrollTop += amount;\n }\n}\n\n/**\n * Increments the horizontal scroll position of a node.\n * @param node Node whose scroll position should change.\n * @param amount Amount of pixels that the `node` should be scrolled.\n */\nfunction incrementHorizontalScroll(node: HTMLElement | Window, amount: number) {\n if (node === window) {\n (node as Window).scrollBy(amount, 0);\n } else {\n // Ideally we could use `Element.scrollBy` here as well, but IE and Edge don't support it.\n (node as HTMLElement).scrollLeft += amount;\n }\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: ClientRect, pointerY: number) {\n const {top, bottom, height} = clientRect;\n const yThreshold = height * SCROLL_PROXIMITY_THRESHOLD;\n\n if (pointerY >= top - yThreshold && pointerY <= top + yThreshold) {\n return AutoScrollVerticalDirection.UP;\n } else if (pointerY >= bottom - yThreshold && pointerY <= bottom + yThreshold) {\n return AutoScrollVerticalDirection.DOWN;\n }\n\n return AutoScrollVerticalDirection.NONE;\n}\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: ClientRect, pointerX: number) {\n const {left, right, width} = clientRect;\n const xThreshold = width * SCROLL_PROXIMITY_THRESHOLD;\n\n if (pointerX >= left - xThreshold && pointerX <= left + xThreshold) {\n return AutoScrollHorizontalDirection.LEFT;\n } else if (pointerX >= right - xThreshold && pointerX <= right + xThreshold) {\n return AutoScrollHorizontalDirection.RIGHT;\n }\n\n return AutoScrollHorizontalDirection.NONE;\n}\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: HTMLElement, clientRect: ClientRect, pointerX: number,\n pointerY: number): [AutoScrollVerticalDirection, AutoScrollHorizontalDirection] {\n const computedVertical = getVerticalScrollDirection(clientRect, pointerY);\n const computedHorizontal = getHorizontalScrollDirection(clientRect, pointerX);\n let verticalScrollDirection = AutoScrollVerticalDirection.NONE;\n let horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;\n\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\n if (computedVertical === AutoScrollVerticalDirection.UP) {\n if (scrollTop > 0) {\n verticalScrollDirection = AutoScrollVerticalDirection.UP;\n }\n } else if (element.scrollHeight - scrollTop > element.clientHeight) {\n verticalScrollDirection = AutoScrollVerticalDirection.DOWN;\n }\n }\n\n if (computedHorizontal) {\n const scrollLeft = element.scrollLeft;\n\n if (computedHorizontal === AutoScrollHorizontalDirection.LEFT) {\n if (scrollLeft > 0) {\n horizontalScrollDirection = AutoScrollHorizontalDirection.LEFT;\n }\n } else if (element.scrollWidth - scrollLeft > element.clientWidth) {\n horizontalScrollDirection = AutoScrollHorizontalDirection.RIGHT;\n }\n }\n\n return [verticalScrollDirection, horizontalScrollDirection];\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\nimport {Injectable, NgZone, OnDestroy, Inject} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {normalizePassiveListenerOptions} from '@angular/cdk/platform';\nimport {Subject} from 'rxjs';\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/**\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.\n@Injectable({providedIn: 'root'})\nexport class DragDropRegistry implements OnDestroy {\n private _document: Document;\n\n /** Registered drop container instances. */\n private _dropInstances = new Set();\n\n /** Registered drag item instances. */\n private _dragInstances = new Set();\n\n /** Drag item instances that are currently being dragged. */\n private _activeDragInstances = new Set();\n\n /** Keeps track of the event listeners that we've bound to the `document`. */\n private _globalListeners = new Map void,\n options?: AddEventListenerOptions | boolean\n }>();\n\n /**\n * Emits the `touchmove` or `mousemove` events that are dispatched\n * while the user is dragging a drag item instance.\n */\n readonly pointerMove: Subject = new Subject();\n\n /**\n * Emits the `touchend` or `mouseup` events that are dispatched\n * while the user is dragging a drag item instance.\n */\n readonly pointerUp: Subject = new Subject();\n\n /** Emits when the viewport has been scrolled while the user is dragging an item. */\n readonly scroll: Subject = new Subject();\n\n constructor(\n private _ngZone: NgZone,\n @Inject(DOCUMENT) _document: any) {\n this._document = _document;\n }\n\n /** Adds a drop container to the registry. */\n registerDropContainer(drop: C) {\n if (!this._dropInstances.has(drop)) {\n this._dropInstances.add(drop);\n }\n }\n\n /** Adds a drag item instance to the registry. */\n registerDragItem(drag: I) {\n this._dragInstances.add(drag);\n\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,\n activeCapturingEventOptions);\n });\n }\n }\n\n /** Removes a drop container from the registry. */\n removeDropContainer(drop: C) {\n this._dropInstances.delete(drop);\n }\n\n /** Removes a drag item instance from the registry. */\n removeDragItem(drag: I) {\n this._dragInstances.delete(drag);\n this.stopDragging(drag);\n\n if (this._dragInstances.size === 0) {\n this._document.removeEventListener('touchmove', this._persistentTouchmoveListener,\n activeCapturingEventOptions);\n }\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: I, event: TouchEvent | MouseEvent) {\n // Do not process the same drag twice to avoid memory leaks and redundant listeners\n if (this._activeDragInstances.has(drag)) {\n return;\n }\n\n this._activeDragInstances.add(drag);\n\n if (this._activeDragInstances.size === 1) {\n const isTouchEvent = event.type.startsWith('touch');\n\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: Event) => this.pointerUp.next(e as TouchEvent | MouseEvent),\n options: true\n })\n .set('scroll', {\n handler: (e: Event) => 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\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: Event) => this.pointerMove.next(e as MouseEvent),\n options: activeCapturingEventOptions\n });\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\n /** Stops dragging a drag item instance. */\n stopDragging(drag: I) {\n this._activeDragInstances.delete(drag);\n\n if (this._activeDragInstances.size === 0) {\n this._clearGlobalListeners();\n }\n }\n\n /** Gets whether a drag item instance is currently being dragged. */\n isDragging(drag: I) {\n return this._activeDragInstances.has(drag);\n }\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\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 private _preventDefaultWhileDragging = (event: Event) => {\n if (this._activeDragInstances.size) {\n event.preventDefault();\n }\n }\n\n /** Event listener for `touchmove` that is bound even if no dragging is happening. */\n private _persistentTouchmoveListener = (event: TouchEvent) => {\n if (this._activeDragInstances.size) {\n event.preventDefault();\n this.pointerMove.next(event);\n }\n }\n\n /** Clears out the global event listeners from the `document`. */\n private _clearGlobalListeners() {\n this._globalListeners.forEach((config, name) => {\n this._document.removeEventListener(name, config.handler, config.options);\n });\n\n this._globalListeners.clear();\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\nimport {Injectable, Inject, NgZone, ElementRef} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\nimport {ViewportRuler} from '@angular/cdk/scrolling';\nimport {DragRef, DragRefConfig} from './drag-ref';\nimport {DropListRef} from './drop-list-ref';\nimport {DragDropRegistry} from './drag-drop-registry';\n\n/** Default configuration to be used when creating a `DragRef`. */\nconst DEFAULT_CONFIG = {\n dragStartThreshold: 5,\n pointerDirectionChangeThreshold: 5\n};\n\n/**\n * Service that allows for drag-and-drop functionality to be attached to DOM elements.\n */\n@Injectable({providedIn: 'root'})\nexport class DragDrop {\n constructor(\n @Inject(DOCUMENT) private _document: any,\n private _ngZone: NgZone,\n private _viewportRuler: ViewportRuler,\n private _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: ElementRef | HTMLElement,\n config: DragRefConfig = DEFAULT_CONFIG): DragRef {\n\n return new DragRef(element, config, this._document, this._ngZone, this._viewportRuler,\n this._dragDropRegistry);\n }\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: ElementRef | HTMLElement): DropListRef {\n return new DropListRef(element, this._dragDropRegistry, this._document, this._ngZone,\n this._viewportRuler);\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\nimport {InjectionToken} from '@angular/core';\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 */\nexport const CDK_DRAG_PARENT = new InjectionToken<{}>('CDK_DRAG_PARENT');\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\nimport {Directive, OnDestroy, Input, InjectionToken} from '@angular/core';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\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 */\nexport const CDK_DROP_LIST_GROUP =\n new InjectionToken>('CdkDropListGroup');\n\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 */\n@Directive({\n selector: '[cdkDropListGroup]',\n exportAs: 'cdkDropListGroup',\n providers: [{provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup}],\n})\nexport class CdkDropListGroup implements OnDestroy {\n /** Drop lists registered inside the group. */\n readonly _items = new Set();\n\n /** Whether starting a dragging sequence from inside this group is disabled. */\n @Input('cdkDropListGroupDisabled')\n get disabled(): boolean { return this._disabled; }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n ngOnDestroy() {\n this._items.clear();\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\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\nimport {InjectionToken} from '@angular/core';\nimport {DragRefConfig, Point, DragRef} from '../drag-ref';\n\n/** Possible values that can be used to configure the drag start delay. */\nexport type DragStartDelay = number | {touch: number, mouse: number};\n\n/** Possible axis along which dragging can be locked. */\nexport type DragAxis = 'x' | 'y';\n\n/** Function that can be used to constrain the position of a dragged element. */\nexport type DragConstrainPosition = (point: Point, dragRef: DragRef) => Point;\n\n/** Possible orientations for a drop list. */\nexport type DropListOrientation = 'horizontal' | 'vertical';\n\n/**\n * Injection token that can be used to configure the\n * behavior of the drag&drop-related components.\n */\nexport const CDK_DRAG_CONFIG = new InjectionToken('CDK_DRAG_CONFIG');\n\n/**\n * Object that can be used to configure the drag\n * items and drop lists within a module or a component.\n */\nexport interface DragDropConfig extends Partial {\n lockAxis?: DragAxis;\n dragStartDelay?: DragStartDelay;\n constrainPosition?: DragConstrainPosition;\n previewClass?: string | string[];\n boundaryElement?: string;\n rootElementSelector?: string;\n draggingDisabled?: boolean;\n sortingDisabled?: boolean;\n listAutoScrollDisabled?: boolean;\n listOrientation?: DropListOrientation;\n zIndex?: number;\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\nimport {BooleanInput, coerceArray, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n Optional,\n Directive,\n ChangeDetectorRef,\n SkipSelf,\n Inject,\n InjectionToken,\n} from '@angular/core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {ScrollDispatcher} from '@angular/cdk/scrolling';\nimport {CdkDrag} from './drag';\nimport {CdkDragDrop, CdkDragEnter, CdkDragExit, CdkDragSortEvent} from '../drag-events';\nimport {CDK_DROP_LIST_GROUP, CdkDropListGroup} from './drop-list-group';\nimport {DropListRef} from '../drop-list-ref';\nimport {DragRef} from '../drag-ref';\nimport {DragDrop} from '../drag-drop';\nimport {DropListOrientation, DragAxis, DragDropConfig, CDK_DRAG_CONFIG} from './config';\nimport {Subject} from 'rxjs';\nimport {startWith, takeUntil} from 'rxjs/operators';\n\n/** Counter used to generate unique ids for drop zones. */\nlet _uniqueIdCounter = 0;\n\n/**\n * Internal compile-time-only representation of a `CdkDropList`.\n * Used to avoid circular import issues between the `CdkDropList` and the `CdkDrag`.\n * @docs-private\n */\nexport interface CdkDropListInternal extends CdkDropList {}\n\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 */\nexport const CDK_DROP_LIST = new InjectionToken('CdkDropList');\n\n/** Container that wraps a set of draggable items. */\n@Directive({\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 '[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})\nexport class CdkDropList implements OnDestroy {\n /** Emits when the list has been destroyed. */\n private _destroyed = new Subject();\n\n /** Whether the element's scrollable parents have been resolved. */\n private _scrollableParentsResolved: boolean;\n\n /** Keeps track of the drop lists that are currently on the page. */\n private static _dropLists: CdkDropList[] = [];\n\n /** Reference to the underlying drop list instance. */\n _dropListRef: DropListRef>;\n\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 @Input('cdkDropListConnectedTo')\n connectedTo: (CdkDropList | string)[] | CdkDropList | string = [];\n\n /** Arbitrary data to attach to this container. */\n @Input('cdkDropListData') data: T;\n\n /** Direction in which the list is oriented. */\n @Input('cdkDropListOrientation') orientation: DropListOrientation;\n\n /**\n * Unique ID for the drop zone. Can be used as a reference\n * in the `connectedTo` of another `CdkDropList`.\n */\n @Input() id: string = `cdk-drop-list-${_uniqueIdCounter++}`;\n\n /** Locks the position of the draggable elements inside the container along the specified axis. */\n @Input('cdkDropListLockAxis') lockAxis: DragAxis;\n\n /** Whether starting a dragging sequence from this container is disabled. */\n @Input('cdkDropListDisabled')\n get disabled(): boolean {\n return this._disabled || (!!this._group && this._group.disabled);\n }\n set disabled(value: boolean) {\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 private _disabled: boolean;\n\n /** Whether sorting within this drop list is disabled. */\n @Input('cdkDropListSortingDisabled')\n sortingDisabled: boolean;\n\n /**\n * Function that is used to determine whether an item\n * is allowed to be moved into a drop container.\n */\n @Input('cdkDropListEnterPredicate')\n enterPredicate: (drag: CdkDrag, drop: CdkDropList) => boolean = () => true\n\n /** Whether to auto-scroll the view when the user moves their pointer close to the edges. */\n @Input('cdkDropListAutoScrollDisabled')\n autoScrollDisabled: boolean;\n\n /** Emits when the user drops an item inside the container. */\n @Output('cdkDropListDropped')\n dropped: EventEmitter> = new EventEmitter>();\n\n /**\n * Emits when the user has moved a new drag item into this container.\n */\n @Output('cdkDropListEntered')\n entered: EventEmitter> = new EventEmitter>();\n\n /**\n * Emits when the user removes an item from the container\n * by dragging it into another container.\n */\n @Output('cdkDropListExited')\n exited: EventEmitter> = new EventEmitter>();\n\n /** Emits as the user is swapping items while actively dragging. */\n @Output('cdkDropListSorted')\n sorted: EventEmitter> = new EventEmitter>();\n\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 private _unsortedItems = new Set();\n\n constructor(\n /** Element that the drop list is attached to. */\n public element: ElementRef, dragDrop: DragDrop,\n private _changeDetectorRef: ChangeDetectorRef, @Optional() private _dir?: Directionality,\n @Optional() @Inject(CDK_DROP_LIST_GROUP) @SkipSelf()\n private _group?: CdkDropListGroup,\n\n /**\n * @deprecated _scrollDispatcher parameter to become required.\n * @breaking-change 11.0.0\n */\n private _scrollDispatcher?: ScrollDispatcher,\n @Optional() @Inject(CDK_DRAG_CONFIG) config?: DragDropConfig) {\n this._dropListRef = dragDrop.createDropList(element);\n this._dropListRef.data = this;\n\n if (config) {\n this._assignDefaults(config);\n }\n\n this._dropListRef.enterPredicate = (drag: DragRef, drop: DropListRef) => {\n return this.enterPredicate(drag.data, drop.data);\n };\n\n this._setupInputSyncSubscription(this._dropListRef);\n this._handleEvents(this._dropListRef);\n CdkDropList._dropLists.push(this);\n\n if (_group) {\n _group._items.add(this);\n }\n }\n\n /** Registers an items with the drop list. */\n addItem(item: CdkDrag): void {\n this._unsortedItems.add(item);\n\n if (this._dropListRef.isDragging()) {\n this._syncItemsWithRef();\n }\n }\n\n /** Removes an item from the drop list. */\n removeItem(item: CdkDrag): void {\n this._unsortedItems.delete(item);\n\n if (this._dropListRef.isDragging()) {\n this._syncItemsWithRef();\n }\n }\n\n /** Gets the registered items in the list, sorted by their position in the DOM. */\n getSortedItems(): CdkDrag[] {\n return Array.from(this._unsortedItems).sort((a: CdkDrag, b: CdkDrag) => {\n const documentPosition =\n a._dragRef.getVisibleElement().compareDocumentPosition(b._dragRef.getVisibleElement());\n\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\n ngOnDestroy() {\n const index = CdkDropList._dropLists.indexOf(this);\n\n if (index > -1) {\n CdkDropList._dropLists.splice(index, 1);\n }\n\n if (this._group) {\n this._group._items.delete(this);\n }\n\n this._unsortedItems.clear();\n this._dropListRef.dispose();\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /** Syncs the inputs of the CdkDropList with the options of the underlying DropListRef. */\n private _setupInputSyncSubscription(ref: DropListRef) {\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\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\n if (!correspondingDropList && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n console.warn(`CdkDropList could not find connected drop list with id \"${drop}\"`);\n }\n\n return correspondingDropList!;\n }\n\n return drop;\n });\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\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 // @breaking-change 11.0.0 Remove null check for _scrollDispatcher once it's required.\n if (!this._scrollableParentsResolved && this._scrollDispatcher) {\n const scrollableParents = this._scrollDispatcher\n .getAncestorScrollContainers(this.element)\n .map(scrollable => scrollable.getElementRef().nativeElement);\n this._dropListRef.withScrollableParents(scrollableParents);\n\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\n ref.disabled = this.disabled;\n ref.lockAxis = this.lockAxis;\n ref.sortingDisabled = coerceBooleanProperty(this.sortingDisabled);\n ref.autoScrollDisabled = coerceBooleanProperty(this.autoScrollDisabled);\n ref\n .connectedTo(siblings.filter(drop => drop && drop !== this).map(list => list._dropListRef))\n .withOrientation(this.orientation);\n });\n }\n\n /** Handles events from the underlying DropListRef. */\n private _handleEvents(ref: DropListRef) {\n ref.beforeStarted.subscribe(() => {\n this._syncItemsWithRef();\n this._changeDetectorRef.markForCheck();\n });\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\n ref.exited.subscribe(event => {\n this.exited.emit({\n container: this,\n item: event.item.data\n });\n this._changeDetectorRef.markForCheck();\n });\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\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 });\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\n /** Assigns the default input values based on a provided config object. */\n private _assignDefaults(config: DragDropConfig) {\n const {\n lockAxis, draggingDisabled, sortingDisabled, listAutoScrollDisabled, listOrientation\n } = config;\n\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\n if (lockAxis) {\n this.lockAxis = lockAxis;\n }\n }\n\n /** Syncs up the registered drag items with underlying drop list ref. */\n private _syncItemsWithRef() {\n this._dropListRef.withItems(this.getSortedItems().map(item => item._dragRef));\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n static ngAcceptInputType_sortingDisabled: BooleanInput;\n static ngAcceptInputType_autoScrollDisabled: BooleanInput;\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\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n Directive,\n ElementRef,\n Inject,\n InjectionToken,\n Input,\n OnDestroy,\n Optional,\n SkipSelf,\n} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {CDK_DRAG_PARENT} from '../drag-parent';\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 */\nexport const CDK_DRAG_HANDLE = new InjectionToken('CdkDragHandle');\n\n/** Handle that can be used to drag a CdkDrag instance. */\n@Directive({\n selector: '[cdkDragHandle]',\n host: {\n 'class': 'cdk-drag-handle'\n },\n providers: [{provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle}],\n})\nexport class CdkDragHandle implements OnDestroy {\n /** Closest parent draggable instance. */\n _parentDrag: {} | undefined;\n\n /** Emits when the state of the handle has changed. */\n _stateChanges = new Subject();\n\n /** Whether starting to drag through this handle is disabled. */\n @Input('cdkDragHandleDisabled')\n get disabled(): boolean { return this._disabled; }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this._stateChanges.next(this);\n }\n private _disabled = false;\n\n constructor(\n public element: ElementRef,\n @Inject(CDK_DRAG_PARENT) @Optional() @SkipSelf() parentDrag?: any) {\n this._parentDrag = parentDrag;\n }\n\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\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\nimport {Directive, TemplateRef, Input, InjectionToken} from '@angular/core';\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 */\nexport const CDK_DRAG_PLACEHOLDER = new InjectionToken('CdkDragPlaceholder');\n\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 */\n@Directive({\n selector: 'ng-template[cdkDragPlaceholder]',\n providers: [{provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder}],\n})\nexport class CdkDragPlaceholder {\n /** Context data to be added to the placeholder template instance. */\n @Input() data: T;\n constructor(public templateRef: TemplateRef) {}\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\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {Directive, InjectionToken, Input, TemplateRef} from '@angular/core';\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 */\nexport const CDK_DRAG_PREVIEW = new InjectionToken('CdkDragPreview');\n\n/**\n * Element that will be used as a template for the preview\n * of a CdkDrag when it is being dragged.\n */\n@Directive({\n selector: 'ng-template[cdkDragPreview]',\n providers: [{provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview}],\n})\nexport class CdkDragPreview {\n /** Context data to be added to the preview template instance. */\n @Input() data: T;\n\n /** Whether the preview should preserve the same size as the item that is being dragged. */\n @Input()\n get matchSize(): boolean { return this._matchSize; }\n set matchSize(value: boolean) { this._matchSize = coerceBooleanProperty(value); }\n private _matchSize = false;\n\n constructor(public templateRef: TemplateRef) {}\n\n static ngAcceptInputType_matchSize: BooleanInput;\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\nimport {Directionality} from '@angular/cdk/bidi';\nimport {DOCUMENT} from '@angular/common';\nimport {\n AfterViewInit,\n ContentChild,\n ContentChildren,\n Directive,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n SkipSelf,\n ViewContainerRef,\n OnChanges,\n SimpleChanges,\n ChangeDetectorRef,\n Self,\n} from '@angular/core';\nimport {\n coerceBooleanProperty,\n coerceNumberProperty,\n coerceElement,\n BooleanInput\n} from '@angular/cdk/coercion';\nimport {Observable, Observer, Subject, merge} from 'rxjs';\nimport {startWith, take, map, takeUntil, switchMap, tap} from 'rxjs/operators';\nimport {\n CdkDragDrop,\n CdkDragEnd,\n CdkDragEnter,\n CdkDragExit,\n CdkDragMove,\n CdkDragStart,\n CdkDragRelease,\n} from '../drag-events';\nimport {CDK_DRAG_HANDLE, CdkDragHandle} from './drag-handle';\nimport {CDK_DRAG_PLACEHOLDER, CdkDragPlaceholder} from './drag-placeholder';\nimport {CDK_DRAG_PREVIEW, CdkDragPreview} from './drag-preview';\nimport {CDK_DRAG_PARENT} from '../drag-parent';\nimport {DragRef, Point} from '../drag-ref';\nimport {CDK_DROP_LIST, CdkDropListInternal as CdkDropList} from './drop-list';\nimport {DragDrop} from '../drag-drop';\nimport {CDK_DRAG_CONFIG, DragDropConfig, DragStartDelay, DragAxis} from './config';\n\n/** Element that can be moved inside a CdkDropList container. */\n@Directive({\n selector: '[cdkDrag]',\n exportAs: 'cdkDrag',\n host: {\n 'class': 'cdk-drag',\n '[class.cdk-drag-disabled]': 'disabled',\n '[class.cdk-drag-dragging]': '_dragRef.isDragging()',\n },\n providers: [{provide: CDK_DRAG_PARENT, useExisting: CdkDrag}]\n})\nexport class CdkDrag implements AfterViewInit, OnChanges, OnDestroy {\n private _destroyed = new Subject();\n\n /** Reference to the underlying drag instance. */\n _dragRef: DragRef>;\n\n /** Elements that can be used to drag the draggable item. */\n @ContentChildren(CDK_DRAG_HANDLE, {descendants: true}) _handles: QueryList;\n\n /** Element that will be used as a template to create the draggable item's preview. */\n @ContentChild(CDK_DRAG_PREVIEW) _previewTemplate: CdkDragPreview;\n\n /** Template for placeholder element rendered to show where a draggable would be dropped. */\n @ContentChild(CDK_DRAG_PLACEHOLDER) _placeholderTemplate: CdkDragPlaceholder;\n\n /** Arbitrary data to attach to this drag instance. */\n @Input('cdkDragData') data: T;\n\n /** Locks the position of the dragged element along the specified axis. */\n @Input('cdkDragLockAxis') lockAxis: DragAxis;\n\n /**\n * Selector that will be used to determine the root draggable element, starting from\n * the `cdkDrag` element and going up the DOM. Passing an alternate root element is useful\n * when trying to enable dragging on an element that you might not have access to.\n */\n @Input('cdkDragRootElement') rootElementSelector: string;\n\n /**\n * Node or selector that will be used to determine the element to which the draggable's\n * position will be constrained. If a string is passed in, it'll be used as a selector that\n * will be matched starting from the element's parent and going up the DOM until a match\n * has been found.\n */\n @Input('cdkDragBoundary') boundaryElement: string | ElementRef | HTMLElement;\n\n /**\n * Amount of milliseconds to wait after the user has put their\n * pointer down before starting to drag the element.\n */\n @Input('cdkDragStartDelay') dragStartDelay: DragStartDelay;\n\n /**\n * Sets the position of a `CdkDrag` that is outside of a drop container.\n * Can be used to restore the element's position for a returning user.\n */\n @Input('cdkDragFreeDragPosition') freeDragPosition: {x: number, y: number};\n\n /** Whether starting to drag this element is disabled. */\n @Input('cdkDragDisabled')\n get disabled(): boolean {\n return this._disabled || (this.dropContainer && this.dropContainer.disabled);\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this._dragRef.disabled = this._disabled;\n }\n private _disabled: boolean;\n\n /**\n * Function that can be used to customize the logic of how the position of the drag item\n * is limited while it's being dragged. Gets called with a point containing the current position\n * of the user's pointer on the page and should return a point describing where the item should\n * be rendered.\n */\n @Input('cdkDragConstrainPosition') constrainPosition?: (point: Point, dragRef: DragRef) => Point;\n\n /** Class to be added to the preview element. */\n @Input('cdkDragPreviewClass') previewClass: string | string[];\n\n /** Emits when the user starts dragging the item. */\n @Output('cdkDragStarted') started: EventEmitter = new EventEmitter();\n\n /** Emits when the user has released a drag item, before any animations have started. */\n @Output('cdkDragReleased') released: EventEmitter =\n new EventEmitter();\n\n /** Emits when the user stops dragging an item in the container. */\n @Output('cdkDragEnded') ended: EventEmitter = new EventEmitter();\n\n /** Emits when the user has moved the item into a new container. */\n @Output('cdkDragEntered') entered: EventEmitter> =\n new EventEmitter>();\n\n /** Emits when the user removes the item its container by dragging it into another container. */\n @Output('cdkDragExited') exited: EventEmitter> =\n new EventEmitter>();\n\n /** Emits when the user drops the item inside a container. */\n @Output('cdkDragDropped') dropped: EventEmitter> =\n new EventEmitter>();\n\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 @Output('cdkDragMoved') moved: Observable> =\n new Observable((observer: Observer>) => {\n const subscription = this._dragRef.moved.pipe(map(movedEvent => ({\n source: this,\n pointerPosition: movedEvent.pointerPosition,\n event: movedEvent.event,\n delta: movedEvent.delta,\n distance: movedEvent.distance\n }))).subscribe(observer);\n\n return () => {\n subscription.unsubscribe();\n };\n });\n\n constructor(\n /** Element that the draggable is attached to. */\n public element: ElementRef,\n /** Droppable container that the draggable is a part of. */\n @Inject(CDK_DROP_LIST) @Optional() @SkipSelf() public dropContainer: CdkDropList,\n @Inject(DOCUMENT) private _document: any, private _ngZone: NgZone,\n private _viewContainerRef: ViewContainerRef,\n @Optional() @Inject(CDK_DRAG_CONFIG) config: DragDropConfig,\n @Optional() private _dir: Directionality, dragDrop: DragDrop,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() @Self() @Inject(CDK_DRAG_HANDLE) private _selfHandle?: CdkDragHandle) {\n this._dragRef = dragDrop.createDrag(element, {\n dragStartThreshold: config && config.dragStartThreshold != null ?\n config.dragStartThreshold : 5,\n pointerDirectionChangeThreshold: config && config.pointerDirectionChangeThreshold != null ?\n config.pointerDirectionChangeThreshold : 5,\n zIndex: config?.zIndex\n });\n this._dragRef.data = this;\n\n if (config) {\n this._assignDefaults(config);\n }\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\n this._syncInputs(this._dragRef);\n this._handleEvents(this._dragRef);\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(): HTMLElement {\n return this._dragRef.getPlaceholderElement();\n }\n\n /** Returns the root draggable element. */\n getRootElement(): HTMLElement {\n return this._dragRef.getRootElement();\n }\n\n /** Resets a standalone drag item to its initial position. */\n reset(): void {\n this._dragRef.reset();\n }\n\n /**\n * Gets the pixel coordinates of the draggable outside of a drop container.\n */\n getFreeDragPosition(): {readonly x: number, readonly y: number} {\n return this._dragRef.getFreeDragPosition();\n }\n\n ngAfterViewInit() {\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\n .pipe(take(1), takeUntil(this._destroyed))\n .subscribe(() => {\n this._updateRootElement();\n\n // Listen for any newly-added handles.\n this._handles.changes.pipe(\n startWith(this._handles),\n // Sync the new handles with the DragRef.\n tap((handles: QueryList) => {\n const childHandleElements = handles\n .filter(handle => handle._parentDrag === this)\n .map(handle => handle.element);\n\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\n this._dragRef.withHandles(childHandleElements);\n }),\n // Listen if the state of any of the handles changes.\n switchMap((handles: QueryList) => {\n return merge(...handles.map(item => {\n return item._stateChanges.pipe(startWith(item));\n })) as Observable;\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 if (this.freeDragPosition) {\n this._dragRef.setFreeDragPosition(this.freeDragPosition);\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const rootSelectorChange = changes['rootElementSelector'];\n const positionChange = changes['freeDragPosition'];\n\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\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\n ngOnDestroy() {\n if (this.dropContainer) {\n this.dropContainer.removeItem(this);\n }\n\n this._destroyed.next();\n this._destroyed.complete();\n this._dragRef.dispose();\n }\n\n /** Syncs the root element with the `DragRef`. */\n private _updateRootElement() {\n const element = this.element.nativeElement;\n const rootElement = this.rootElementSelector ?\n getClosestMatchingAncestor(element, this.rootElementSelector) : element;\n\n if (rootElement && rootElement.nodeType !== this._document.ELEMENT_NODE &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`cdkDrag must be attached to an element node. ` +\n `Currently attached to \"${rootElement.nodeName}\".`);\n }\n\n this._dragRef.withRootElement(rootElement || element);\n }\n\n /** Gets the boundary element, based on the `boundaryElement` value. */\n private _getBoundaryElement() {\n const boundary = this.boundaryElement;\n\n if (!boundary) {\n return null;\n }\n\n if (typeof boundary === 'string') {\n return getClosestMatchingAncestor(this.element.nativeElement, boundary);\n }\n\n const element = coerceElement(boundary);\n\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n !element.contains(this.element.nativeElement)) {\n throw Error('Draggable element is not inside of the node passed into cdkDragBoundary.');\n }\n\n return element;\n }\n\n /** Syncs the inputs of the CdkDrag with the options of the underlying DragRef. */\n private _syncInputs(ref: DragRef>) {\n ref.beforeStarted.subscribe(() => {\n if (!ref.isDragging()) {\n const dir = this._dir;\n const dragStartDelay = this.dragStartDelay;\n const placeholder = this._placeholderTemplate ? {\n template: this._placeholderTemplate.templateRef,\n context: this._placeholderTemplate.data,\n viewContainer: this._viewContainerRef\n } : null;\n const preview = this._previewTemplate ? {\n template: this._previewTemplate.templateRef,\n context: this._previewTemplate.data,\n matchSize: this._previewTemplate.matchSize,\n viewContainer: this._viewContainerRef\n } : null;\n\n ref.disabled = this.disabled;\n ref.lockAxis = this.lockAxis;\n ref.dragStartDelay = (typeof dragStartDelay === 'object' && dragStartDelay) ?\n dragStartDelay : 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\n if (dir) {\n ref.withDirection(dir.value);\n }\n }\n });\n }\n\n /** Handles the events from the underlying `DragRef`. */\n private _handleEvents(ref: DragRef>) {\n ref.started.subscribe(() => {\n this.started.emit({source: this});\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\n ref.released.subscribe(() => {\n this.released.emit({source: this});\n });\n\n ref.ended.subscribe(event => {\n this.ended.emit({source: this, distance: event.distance});\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\n ref.entered.subscribe(event => {\n this.entered.emit({\n container: event.container.data,\n item: this,\n currentIndex: event.currentIndex\n });\n });\n\n ref.exited.subscribe(event => {\n this.exited.emit({\n container: event.container.data,\n item: this\n });\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 });\n });\n }\n\n /** Assigns the default input values based on a provided config object. */\n private _assignDefaults(config: DragDropConfig) {\n const {\n lockAxis, dragStartDelay, constrainPosition, previewClass,\n boundaryElement, draggingDisabled, rootElementSelector\n } = config;\n\n this.disabled = draggingDisabled == null ? false : draggingDisabled;\n this.dragStartDelay = dragStartDelay || 0;\n\n if (lockAxis) {\n this.lockAxis = lockAxis;\n }\n\n if (constrainPosition) {\n this.constrainPosition = constrainPosition;\n }\n\n if (previewClass) {\n this.previewClass = previewClass;\n }\n\n if (boundaryElement) {\n this.boundaryElement = boundaryElement;\n }\n\n if (rootElementSelector) {\n this.rootElementSelector = rootElementSelector;\n }\n }\n\n static ngAcceptInputType_disabled: BooleanInput;\n}\n\n/** Gets the closest ancestor of an element that matches a selector. */\nfunction getClosestMatchingAncestor(element: HTMLElement, selector: string) {\n let currentElement = element.parentElement as HTMLElement | null;\n\n while (currentElement) {\n // IE doesn't support `matches` so we have to fall back to `msMatchesSelector`.\n if (currentElement.matches ? currentElement.matches(selector) :\n (currentElement as any).msMatchesSelector(selector)) {\n return currentElement;\n }\n\n currentElement = currentElement.parentElement;\n }\n\n return null;\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\nimport {NgModule} from '@angular/core';\nimport {CdkScrollableModule} from '@angular/cdk/scrolling';\nimport {CdkDropList} from './directives/drop-list';\nimport {CdkDropListGroup} from './directives/drop-list-group';\nimport {CdkDrag} from './directives/drag';\nimport {CdkDragHandle} from './directives/drag-handle';\nimport {CdkDragPreview} from './directives/drag-preview';\nimport {CdkDragPlaceholder} from './directives/drag-placeholder';\nimport {DragDrop} from './drag-drop';\n\n@NgModule({\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: [\n DragDrop,\n ]\n})\nexport class DragDropModule {}\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\nimport {Inject, Injectable, PLATFORM_ID} from '@angular/core';\nimport {isPlatformBrowser} from '@angular/common';\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: boolean;\n\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 as any).v8BreakIterator);\n} catch {\n hasV8BreakIterator = false;\n}\n\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\n@Injectable({providedIn: 'root'})\nexport class Platform {\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 isBrowser: boolean = this._platformId ?\n isPlatformBrowser(this._platformId) : typeof document === 'object' && !!document;\n\n /** Whether the current browser is Microsoft Edge. */\n EDGE: boolean = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n\n /** Whether the current rendering engine is Microsoft Trident. */\n TRIDENT: boolean = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n\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 BLINK: boolean = this.isBrowser && (!!((window as any).chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' && !this.EDGE && !this.TRIDENT);\n\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 WEBKIT: boolean = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) && !this.BLINK && !this.EDGE && !this.TRIDENT;\n\n /** Whether the current platform is Apple iOS. */\n IOS: boolean = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) &&\n !('MSStream' in window);\n\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 FIREFOX: boolean = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n ANDROID: boolean = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n\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 SAFARI: boolean = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n\n constructor(@Inject(PLATFORM_ID) private _platformId: Object) {}\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/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents: boolean;\n\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 */\nexport function supportsPassiveEventListeners(): boolean {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', null!, Object.defineProperty({}, 'passive', {\n get: () => supportsPassiveEvents = true\n }));\n } finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n\n return supportsPassiveEvents;\n}\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 */\nexport function normalizePassiveListenerOptions(options: AddEventListenerOptions):\n AddEventListenerOptions | boolean {\n return supportsPassiveEventListeners() ? options : !!options.capture;\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 possible ways the browser may handle the horizontal scroll axis in RTL languages. */\nexport const enum RtlScrollAxisType {\n /**\n * scrollLeft is 0 when scrolled all the way left and (scrollWidth - clientWidth) when scrolled\n * all the way right.\n */\n NORMAL,\n /**\n * scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n NEGATED,\n /**\n * scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and 0 when scrolled\n * all the way right.\n */\n INVERTED\n}\n\n/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType: RtlScrollAxisType|undefined;\n\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\nlet scrollBehaviorSupported: boolean|undefined;\n\n/** Check whether the browser supports scroll behaviors. */\nexport function supportsScrollBehavior(): boolean {\n if (scrollBehaviorSupported == null) {\n // If we're not in the browser, it can't be supported.\n if (typeof document !== 'object' || !document) {\n scrollBehaviorSupported = false;\n }\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 } 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: Function|undefined = Element.prototype.scrollTo;\n\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 } else {\n scrollBehaviorSupported = false;\n }\n }\n }\n\n return scrollBehaviorSupported;\n}\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 */\nexport function getRtlScrollAxisType(): RtlScrollAxisType {\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 RtlScrollAxisType.NORMAL;\n }\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\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n\n rtlScrollAxisType = RtlScrollAxisType.NORMAL;\n\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 ? RtlScrollAxisType.NEGATED : RtlScrollAxisType.INVERTED;\n }\n\n scrollContainer.parentNode!.removeChild(scrollContainer);\n }\n return rtlScrollAxisType;\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\nlet shadowDomIsSupported: boolean;\n\n/** Checks whether the user's browser support Shadow DOM. */\nexport function _supportsShadowDom(): boolean {\n if (shadowDomIsSupported == null) {\n const head = typeof document !== 'undefined' ? document.head : null;\n shadowDomIsSupported = !!(head && ((head as any).createShadowRoot || head.attachShadow));\n }\n\n return shadowDomIsSupported;\n}\n\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nexport function _getShadowRoot(element: HTMLElement): Node | null {\n if (_supportsShadowDom()) {\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n\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\n return null;\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\nimport {NgModule} from '@angular/core';\n\n\n@NgModule({})\nexport class PlatformModule {}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { Subscriber } from '../Subscriber';\nimport { map } from '../operators/map';\n\nconst toString: Function = (() => Object.prototype.toString)();\n\nexport interface NodeStyleEventEmitter {\n addListener: (eventName: string | symbol, handler: NodeEventHandler) => this;\n removeListener: (eventName: string | symbol, handler: NodeEventHandler) => this;\n}\n\nexport type NodeEventHandler = (...args: any[]) => void;\n\n// For APIs that implement `addListener` and `removeListener` methods that may\n// not use the same arguments or return EventEmitter values\n// such as React Native\nexport interface NodeCompatibleEventEmitter {\n addListener: (eventName: string, handler: NodeEventHandler) => void | {};\n removeListener: (eventName: string, handler: NodeEventHandler) => void | {};\n}\n\nexport interface JQueryStyleEventEmitter {\n on: (eventName: string, handler: Function) => void;\n off: (eventName: string, handler: Function) => void;\n}\n\nexport interface HasEventTargetAddRemove {\n addEventListener(type: string, listener: ((evt: E) => void) | null, options?: boolean | AddEventListenerOptions): void;\n removeEventListener(type: string, listener?: ((evt: E) => void) | null, options?: EventListenerOptions | boolean): void;\n}\n\nexport type EventTargetLike = HasEventTargetAddRemove | NodeStyleEventEmitter | NodeCompatibleEventEmitter | JQueryStyleEventEmitter;\n\nexport type FromEventTarget = EventTargetLike | ArrayLike>;\n\nexport interface EventListenerOptions {\n capture?: boolean;\n passive?: boolean;\n once?: boolean;\n}\n\nexport interface AddEventListenerOptions extends EventListenerOptions {\n once?: boolean;\n passive?: boolean;\n}\n\n/* tslint:disable:max-line-length */\nexport function fromEvent(target: FromEventTarget, eventName: string): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function fromEvent(target: FromEventTarget, eventName: string, resultSelector: (...args: any[]) => T): Observable;\nexport function fromEvent(target: FromEventTarget, eventName: string, options: EventListenerOptions): Observable;\n/** @deprecated resultSelector no longer supported, pipe to map instead */\nexport function fromEvent(target: FromEventTarget, eventName: string, options: EventListenerOptions, resultSelector: (...args: any[]) => T): Observable;\n/* tslint:enable:max-line-length */\n\n/**\n * Creates an Observable that emits events of a specific type coming from the\n * given event target.\n *\n * Creates an Observable from DOM events, or Node.js\n * EventEmitter events or others.\n *\n * ![](fromEvent.png)\n *\n * `fromEvent` accepts as a first argument event target, which is an object with methods\n * for registering event handler functions. As a second argument it takes string that indicates\n * type of event we want to listen for. `fromEvent` supports selected types of event targets,\n * which are described in detail below. If your event target does not match any of the ones listed,\n * you should use {@link fromEventPattern}, which can be used on arbitrary APIs.\n * When it comes to APIs supported by `fromEvent`, their methods for adding and removing event\n * handler functions have different names, but they all accept a string describing event type\n * and function itself, which will be called whenever said event happens.\n *\n * Every time resulting Observable is subscribed, event handler function will be registered\n * to event target on given event type. When that event fires, value\n * passed as a first argument to registered function will be emitted by output Observable.\n * When Observable is unsubscribed, function will be unregistered from event target.\n *\n * Note that if event target calls registered function with more than one argument, second\n * and following arguments will not appear in resulting stream. In order to get access to them,\n * you can pass to `fromEvent` optional project function, which will be called with all arguments\n * passed to event handler. Output Observable will then emit value returned by project function,\n * instead of the usual value.\n *\n * Remember that event targets listed below are checked via duck typing. It means that\n * no matter what kind of object you have and no matter what environment you work in,\n * you can safely use `fromEvent` on that object if it exposes described methods (provided\n * of course they behave as was described above). So for example if Node.js library exposes\n * event target which has the same method names as DOM EventTarget, `fromEvent` is still\n * a good choice.\n *\n * If the API you use is more callback then event handler oriented (subscribed\n * callback function fires only once and thus there is no need to manually\n * unregister it), you should use {@link bindCallback} or {@link bindNodeCallback}\n * instead.\n *\n * `fromEvent` supports following types of event targets:\n *\n * **DOM EventTarget**\n *\n * This is an object with `addEventListener` and `removeEventListener` methods.\n *\n * In the browser, `addEventListener` accepts - apart from event type string and event\n * handler function arguments - optional third parameter, which is either an object or boolean,\n * both used for additional configuration how and when passed function will be called. When\n * `fromEvent` is used with event target of that type, you can provide this values\n * as third parameter as well.\n *\n * **Node.js EventEmitter**\n *\n * An object with `addListener` and `removeListener` methods.\n *\n * **JQuery-style event target**\n *\n * An object with `on` and `off` methods\n *\n * **DOM NodeList**\n *\n * List of DOM Nodes, returned for example by `document.querySelectorAll` or `Node.childNodes`.\n *\n * Although this collection is not event target in itself, `fromEvent` will iterate over all Nodes\n * it contains and install event handler function in every of them. When returned Observable\n * is unsubscribed, function will be removed from all Nodes.\n *\n * **DOM HtmlCollection**\n *\n * Just as in case of NodeList it is a collection of DOM nodes. Here as well event handler function is\n * installed and removed in each of elements.\n *\n *\n * ## Examples\n * ### Emits clicks happening on the DOM document\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicks = fromEvent(document, 'click');\n * clicks.subscribe(x => console.log(x));\n *\n * // Results in:\n * // MouseEvent object logged to console every time a click\n * // occurs on the document.\n * ```\n *\n * ### Use addEventListener with capture option\n * ```ts\n * import { fromEvent } from 'rxjs';\n *\n * const clicksInDocument = fromEvent(document, 'click', true); // note optional configuration parameter\n * // which will be passed to addEventListener\n * const clicksInDiv = fromEvent(someDivInDocument, 'click');\n *\n * clicksInDocument.subscribe(() => console.log('document'));\n * clicksInDiv.subscribe(() => console.log('div'));\n *\n * // By default events bubble UP in DOM tree, so normally\n * // when we would click on div in document\n * // \"div\" would be logged first and then \"document\".\n * // Since we specified optional `capture` option, document\n * // will catch event when it goes DOWN DOM tree, so console\n * // will log \"document\" and then \"div\".\n * ```\n *\n * @see {@link bindCallback}\n * @see {@link bindNodeCallback}\n * @see {@link fromEventPattern}\n *\n * @param {FromEventTarget} target The DOM EventTarget, Node.js\n * EventEmitter, JQuery-like event target, NodeList or HTMLCollection to attach the event handler to.\n * @param {string} eventName The event name of interest, being emitted by the\n * `target`.\n * @param {EventListenerOptions} [options] Options to pass through to addEventListener\n * @return {Observable}\n * @name fromEvent\n */\nexport function fromEvent(\n target: FromEventTarget,\n eventName: string,\n options?: EventListenerOptions | ((...args: any[]) => T),\n resultSelector?: ((...args: any[]) => T)\n): Observable {\n\n if (isFunction(options)) {\n // DEPRECATED PATH\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n // DEPRECATED PATH\n return fromEvent(target, eventName, options).pipe(\n map(args => isArray(args) ? resultSelector(...args) : resultSelector(args))\n );\n }\n\n return new Observable(subscriber => {\n function handler(e: T) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n } else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options as EventListenerOptions);\n });\n}\n\nfunction setupSubscription(sourceObj: FromEventTarget, eventName: string,\n handler: (...args: any[]) => void, subscriber: Subscriber,\n options?: EventListenerOptions) {\n let unsubscribe: () => void;\n if (isEventTarget(sourceObj)) {\n const source = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = () => source.removeEventListener(eventName, handler, options);\n } else if (isJQueryStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = () => source.off(eventName, handler);\n } else if (isNodeStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.addListener(eventName, handler as NodeEventHandler);\n unsubscribe = () => source.removeListener(eventName, handler as NodeEventHandler);\n } else if (sourceObj && (sourceObj as any).length) {\n for (let i = 0, len = (sourceObj as any).length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n } else {\n throw new TypeError('Invalid event target');\n }\n\n subscriber.add(unsubscribe);\n}\n\nfunction isNodeStyleEventEmitter(sourceObj: any): sourceObj is NodeStyleEventEmitter {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\n\nfunction isJQueryStyleEventEmitter(sourceObj: any): sourceObj is JQueryStyleEventEmitter {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\n\nfunction isEventTarget(sourceObj: any): sourceObj is HasEventTargetAddRemove {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n","let nextHandle = 1;\nconst RESOLVED = (() => Promise.resolve())();\nconst activeHandles: { [key: number]: any } = {};\n\n/**\n * Finds the handle in the list of active handles, and removes it.\n * Returns `true` if found, `false` otherwise. Used both to clear\n * Immediate scheduled tasks, and to identify if a task should be scheduled.\n */\nfunction findAndClearHandle(handle: number): boolean {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\n\n/**\n * Helper functions to schedule and unschedule microtasks.\n */\nexport const Immediate = {\n setImmediate(cb: () => void): number {\n const handle = nextHandle++;\n activeHandles[handle] = true;\n RESOLVED.then(() => findAndClearHandle(handle) && cb());\n return handle;\n },\n\n clearImmediate(handle: number): void {\n findAndClearHandle(handle);\n },\n};\n\n/**\n * Used for internal testing purposes only. Do not export from library.\n */\nexport const TestTools = {\n pending() {\n return Object.keys(activeHandles).length;\n }\n};\n","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\n\n/**\n *\n * Asap Scheduler\n *\n * Perform task as fast as it can be performed asynchronously\n *\n * `asap` scheduler behaves the same as {@link asyncScheduler} scheduler when you use it to delay task\n * in time. If however you set delay to `0`, `asap` will wait for current synchronously executing\n * code to end and then it will try to execute given task as fast as possible.\n *\n * `asap` scheduler will do its best to minimize time between end of currently executing code\n * and start of scheduled task. This makes it best candidate for performing so called \"deferring\".\n * Traditionally this was achieved by calling `setTimeout(deferredTask, 0)`, but that technique involves\n * some (although minimal) unwanted delay.\n *\n * Note that using `asap` scheduler does not necessarily mean that your task will be first to process\n * after currently executing code. In particular, if some task was also scheduled with `asap` before,\n * that task will execute first. That being said, if you need to schedule task asynchronously, but\n * as soon as possible, `asap` scheduler is your best bet.\n *\n * ## Example\n * Compare async and asap scheduler<\n * ```ts\n * import { asapScheduler, asyncScheduler } from 'rxjs';\n *\n * asyncScheduler.schedule(() => console.log('async')); // scheduling 'async' first...\n * asapScheduler.schedule(() => console.log('asap'));\n *\n * // Logs:\n * // \"asap\"\n * // \"async\"\n * // ... but 'asap' goes first!\n * ```\n */\nexport const asapScheduler = new AsapScheduler(AsapAction);\n\n/**\n * @deprecated renamed. Use {@link asapScheduler}\n */\nexport const asap = asapScheduler;\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\n\nexport class AsapScheduler extends AsyncScheduler {\n public flush(action?: AsyncAction): void {\n\n this.active = true;\n this.scheduled = undefined;\n\n const {actions} = this;\n let error: any;\n let index: number = -1;\n let count: number = actions.length;\n action = action || actions.shift();\n\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n\n this.active = false;\n\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { Immediate } from '../util/Immediate';\nimport { AsyncAction } from './AsyncAction';\nimport { AsapScheduler } from './AsapScheduler';\nimport { SchedulerAction } from '../types';\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nexport class AsapAction extends AsyncAction {\n\n constructor(protected scheduler: AsapScheduler,\n protected work: (this: SchedulerAction, state?: T) => void) {\n super(scheduler, work);\n }\n\n protected requestAsyncId(scheduler: AsapScheduler, id?: any, delay: number = 0): any {\n // If delay is greater than 0, request as an async action.\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n // Push the action to the end of the scheduler queue.\n scheduler.actions.push(this);\n // If a microtask has already been scheduled, don't schedule another\n // one. If a microtask hasn't been scheduled yet, schedule one now. Return\n // the current scheduled microtask id.\n return scheduler.scheduled || (scheduler.scheduled = Immediate.setImmediate(\n scheduler.flush.bind(scheduler, null)\n ));\n }\n protected recycleAsyncId(scheduler: AsapScheduler, id?: any, delay: number = 0): any {\n // If delay exists and is greater than 0, or if the delay is null (the\n // action wasn't rescheduled) but was originally scheduled as an async\n // action, then recycle as an async action.\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n // If the scheduler queue is empty, cancel the requested microtask and\n // set the scheduled flag to undefined so the next AsapAction will schedule\n // its own.\n if (scheduler.actions.length === 0) {\n Immediate.clearImmediate(id);\n scheduler.scheduled = undefined;\n }\n // Return undefined so the action knows to request a new async id if it's rescheduled.\n return undefined;\n }\n}\n","import { Observable } from '../Observable';\nimport { ObservableInput } from '../types';\n\n/**\n * Tests to see if the object is an RxJS {@link Observable}\n * @param obj the object to test\n */\nexport function isObservable(obj: any): obj is Observable {\n return !!obj && (obj instanceof Observable || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function'));\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { MonoTypeOperatorFunction, TeardownLogic } from '../types';\n\n/* tslint:disable:max-line-length */\nexport function distinctUntilChanged(compare?: (x: T, y: T) => boolean): MonoTypeOperatorFunction;\nexport function distinctUntilChanged(compare: (x: K, y: K) => boolean, keySelector: (x: T) => K): MonoTypeOperatorFunction;\n/* tslint:enable:max-line-length */\n\n/**\n * Returns an Observable that emits all items emitted by the source Observable that are distinct by comparison from the previous item.\n *\n * If a comparator function is provided, then it will be called for each item to test for whether or not that value should be emitted.\n *\n * If a comparator function is not provided, an equality check is used by default.\n *\n * ## Example\n * A simple example with numbers\n * ```ts\n * import { of } from 'rxjs';\n * import { distinctUntilChanged } from 'rxjs/operators';\n *\n * of(1, 1, 2, 2, 2, 1, 1, 2, 3, 3, 4).pipe(\n * distinctUntilChanged(),\n * )\n * .subscribe(x => console.log(x)); // 1, 2, 1, 2, 3, 4\n * ```\n *\n * An example using a compare function\n * ```typescript\n * import { of } from 'rxjs';\n * import { distinctUntilChanged } from 'rxjs/operators';\n *\n * interface Person {\n * age: number,\n * name: string\n * }\n *\n * of(\n * { age: 4, name: 'Foo'},\n * { age: 7, name: 'Bar'},\n * { age: 5, name: 'Foo'},\n * { age: 6, name: 'Foo'},\n * ).pipe(\n * distinctUntilChanged((p: Person, q: Person) => p.name === q.name),\n * )\n * .subscribe(x => console.log(x));\n *\n * // displays:\n * // { age: 4, name: 'Foo' }\n * // { age: 7, name: 'Bar' }\n * // { age: 5, name: 'Foo' }\n * ```\n *\n * @see {@link distinct}\n * @see {@link distinctUntilKeyChanged}\n *\n * @param {function} [compare] Optional comparison function called to test if an item is distinct from the previous item in the source.\n * @return {Observable} An Observable that emits items from the source Observable with distinct values.\n * @method distinctUntilChanged\n * @owner Observable\n */\nexport function distinctUntilChanged(compare?: (x: K, y: K) => boolean, keySelector?: (x: T) => K): MonoTypeOperatorFunction {\n return (source: Observable) => source.lift(new DistinctUntilChangedOperator(compare, keySelector));\n}\n\nclass DistinctUntilChangedOperator implements Operator {\n constructor(private compare: (x: K, y: K) => boolean,\n private keySelector: (x: T) => K) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass DistinctUntilChangedSubscriber extends Subscriber {\n private key: K;\n private hasKey: boolean = false;\n\n constructor(destination: Subscriber,\n compare: (x: K, y: K) => boolean,\n private keySelector: (x: T) => K) {\n super(destination);\n if (typeof compare === 'function') {\n this.compare = compare;\n }\n }\n\n private compare(x: any, y: any): boolean {\n return x === y;\n }\n\n protected _next(value: T): void {\n let key: any;\n try {\n const { keySelector } = this;\n key = keySelector ? keySelector(value) : value;\n } catch (err) {\n return this.destination.error(err);\n }\n let result = false;\n if (this.hasKey) {\n try {\n const { compare } = this;\n result = compare(this.key, key);\n } catch (err) {\n return this.destination.error(err);\n }\n } else {\n this.hasKey = true;\n }\n if (!result) {\n this.key = key;\n this.destination.next(value);\n }\n }\n}\n","import { Operator } from '../Operator';\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { MonoTypeOperatorFunction, SubscribableOrPromise, TeardownLogic } from '../types';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\n\n/**\n * Ignores source values for a duration determined by another Observable, then\n * emits the most recent value from the source Observable, then repeats this\n * process.\n *\n * It's like {@link auditTime}, but the silencing\n * duration is determined by a second Observable.\n *\n * ![](audit.png)\n *\n * `audit` is similar to `throttle`, but emits the last value from the silenced\n * time window, instead of the first value. `audit` emits the most recent value\n * from the source Observable on the output Observable as soon as its internal\n * timer becomes disabled, and ignores source values while the timer is enabled.\n * Initially, the timer is disabled. As soon as the first source value arrives,\n * the timer is enabled by calling the `durationSelector` function with the\n * source value, which returns the \"duration\" Observable. When the duration\n * Observable emits a value or completes, the timer is disabled, then the most\n * recent source value is emitted on the output Observable, and this process\n * repeats for the next source value.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent, interval } from 'rxjs';\n * import { audit } from 'rxjs/operators'\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(audit(ev => interval(1000)));\n * result.subscribe(x => console.log(x));\n * ```\n * @see {@link auditTime}\n * @see {@link debounce}\n * @see {@link delayWhen}\n * @see {@link sample}\n * @see {@link throttle}\n *\n * @param {function(value: T): SubscribableOrPromise} durationSelector A function\n * that receives a value from the source Observable, for computing the silencing\n * duration, returned as an Observable or a Promise.\n * @return {Observable} An Observable that performs rate-limiting of\n * emissions from the source Observable.\n * @method audit\n * @owner Observable\n */\nexport function audit(durationSelector: (value: T) => SubscribableOrPromise): MonoTypeOperatorFunction {\n return function auditOperatorFunction(source: Observable) {\n return source.lift(new AuditOperator(durationSelector));\n };\n}\n\nclass AuditOperator implements Operator {\n constructor(private durationSelector: (value: T) => SubscribableOrPromise) {\n }\n\n call(subscriber: Subscriber, source: any): TeardownLogic {\n return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass AuditSubscriber extends SimpleOuterSubscriber {\n\n private value?: T;\n private hasValue: boolean = false;\n private throttled?: Subscription;\n\n constructor(destination: Subscriber,\n private durationSelector: (value: T) => SubscribableOrPromise) {\n super(destination);\n }\n\n protected _next(value: T): void {\n this.value = value;\n this.hasValue = true;\n if (!this.throttled) {\n let duration;\n try {\n const { durationSelector } = this;\n duration = durationSelector(value);\n } catch (err) {\n return this.destination.error!(err);\n }\n const innerSubscription = innerSubscribe(duration, new SimpleInnerSubscriber(this));\n if (!innerSubscription || innerSubscription.closed) {\n this.clearThrottle();\n } else {\n this.add(this.throttled = innerSubscription);\n }\n }\n }\n\n clearThrottle() {\n const { value, hasValue, throttled } = this;\n if (throttled) {\n this.remove(throttled);\n this.throttled = undefined;\n throttled.unsubscribe();\n }\n if (hasValue) {\n this.value = undefined;\n this.hasValue = false;\n this.destination.next!(value);\n }\n }\n\n notifyNext(): void {\n this.clearThrottle();\n }\n\n notifyComplete(): void {\n this.clearThrottle();\n }\n}\n","import { Observable } from '../Observable';\nimport { SchedulerAction, SchedulerLike } from '../types';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nimport { Subscriber } from '../Subscriber';\n\n/**\n * Creates an Observable that starts emitting after an `dueTime` and\n * emits ever increasing numbers after each `period` of time thereafter.\n *\n * Its like {@link index/interval}, but you can specify when\n * should the emissions start.\n *\n * ![](timer.png)\n *\n * `timer` returns an Observable that emits an infinite sequence of ascending\n * integers, with a constant interval of time, `period` of your choosing\n * between those emissions. The first emission happens after the specified\n * `dueTime`. The initial delay may be a `Date`. By default, this\n * operator uses the {@link asyncScheduler} {@link SchedulerLike} to provide a notion of time, but you\n * may pass any {@link SchedulerLike} to it. If `period` is not specified, the output\n * Observable emits only one value, `0`. Otherwise, it emits an infinite\n * sequence.\n *\n * ## Examples\n * ### Emits ascending numbers, one every second (1000ms), starting after 3 seconds\n * ```ts\n * import { timer } from 'rxjs';\n *\n * const numbers = timer(3000, 1000);\n * numbers.subscribe(x => console.log(x));\n * ```\n *\n * ### Emits one number after five seconds\n * ```ts\n * import { timer } from 'rxjs';\n *\n * const numbers = timer(5000);\n * numbers.subscribe(x => console.log(x));\n * ```\n * @see {@link index/interval}\n * @see {@link delay}\n *\n * @param {number|Date} [dueTime] The initial delay time specified as a Date object or as an integer denoting\n * milliseconds to wait before emitting the first value of 0`.\n * @param {number|SchedulerLike} [periodOrScheduler] The period of time between emissions of the\n * subsequent numbers.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for scheduling\n * the emission of values, and providing a notion of \"time\".\n * @return {Observable} An Observable that emits a `0` after the\n * `dueTime` and ever increasing numbers after each `period` of time\n * thereafter.\n * @static true\n * @name timer\n * @owner Observable\n */\nexport function timer(dueTime: number | Date = 0,\n periodOrScheduler?: number | SchedulerLike,\n scheduler?: SchedulerLike): Observable {\n let period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n } else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler as any;\n }\n\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n\n return new Observable(subscriber => {\n const due = isNumeric(dueTime)\n ? (dueTime as number)\n : (+dueTime - scheduler.now());\n\n return scheduler.schedule(dispatch, due, {\n index: 0, period, subscriber\n });\n });\n}\n\ninterface TimerState {\n index: number;\n period: number;\n subscriber: Subscriber;\n}\n\nfunction dispatch(this: SchedulerAction, state: TimerState) {\n const { index, period, subscriber } = state;\n subscriber.next(index);\n\n if (subscriber.closed) {\n return;\n } else if (period === -1) {\n return subscriber.complete();\n }\n\n state.index = index + 1;\n this.schedule(state, period);\n}\n","import { async } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nimport { MonoTypeOperatorFunction, SchedulerLike } from '../types';\n\n/**\n * Ignores source values for `duration` milliseconds, then emits the most recent\n * value from the source Observable, then repeats this process.\n *\n * When it sees a source value, it ignores that plus\n * the next ones for `duration` milliseconds, and then it emits the most recent\n * value from the source.\n *\n * ![](auditTime.png)\n *\n * `auditTime` is similar to `throttleTime`, but emits the last value from the\n * silenced time window, instead of the first value. `auditTime` emits the most\n * recent value from the source Observable on the output Observable as soon as\n * its internal timer becomes disabled, and ignores source values while the\n * timer is enabled. Initially, the timer is disabled. As soon as the first\n * source value arrives, the timer is enabled. After `duration` milliseconds (or\n * the time unit determined internally by the optional `scheduler`) has passed,\n * the timer is disabled, then the most recent source value is emitted on the\n * output Observable, and this process repeats for the next source value.\n * Optionally takes a {@link SchedulerLike} for managing timers.\n *\n * ## Example\n *\n * Emit clicks at a rate of at most one click per second\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { auditTime } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const result = clicks.pipe(auditTime(1000));\n * result.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link audit}\n * @see {@link debounceTime}\n * @see {@link delay}\n * @see {@link sampleTime}\n * @see {@link throttleTime}\n *\n * @param {number} duration Time to wait before emitting the most recent source\n * value, measured in milliseconds or the time unit determined internally\n * by the optional `scheduler`.\n * @param {SchedulerLike} [scheduler=async] The {@link SchedulerLike} to use for\n * managing the timers that handle the rate-limiting behavior.\n * @return {Observable} An Observable that performs rate-limiting of\n * emissions from the source Observable.\n * @method auditTime\n * @owner Observable\n */\nexport function auditTime(duration: number, scheduler: SchedulerLike = async): MonoTypeOperatorFunction {\n return audit(() => timer(duration, scheduler));\n}\n","import { Operator } from '../Operator';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { OperatorFunction } from '../types';\n\n/**\n * Groups pairs of consecutive emissions together and emits them as an array of\n * two values.\n *\n * Puts the current value and previous value together as\n * an array, and emits that.\n *\n * ![](pairwise.png)\n *\n * The Nth emission from the source Observable will cause the output Observable\n * to emit an array [(N-1)th, Nth] of the previous and the current value, as a\n * pair. For this reason, `pairwise` emits on the second and subsequent\n * emissions from the source Observable, but not on the first emission, because\n * there is no previous value in that case.\n *\n * ## Example\n * On every click (starting from the second), emit the relative distance to the previous click\n * ```ts\n * import { fromEvent } from 'rxjs';\n * import { pairwise, map } from 'rxjs/operators';\n *\n * const clicks = fromEvent(document, 'click');\n * const pairs = clicks.pipe(pairwise());\n * const distance = pairs.pipe(\n * map(pair => {\n * const x0 = pair[0].clientX;\n * const y0 = pair[0].clientY;\n * const x1 = pair[1].clientX;\n * const y1 = pair[1].clientY;\n * return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2));\n * }),\n * );\n * distance.subscribe(x => console.log(x));\n * ```\n *\n * @see {@link buffer}\n * @see {@link bufferCount}\n *\n * @return {Observable>} An Observable of pairs (as arrays) of\n * consecutive values from the source Observable.\n * @method pairwise\n * @owner Observable\n */\nexport function pairwise(): OperatorFunction {\n return (source: Observable) => source.lift(new PairwiseOperator());\n}\n\nclass PairwiseOperator implements Operator {\n call(subscriber: Subscriber<[T, T]>, source: any): any {\n return source.subscribe(new PairwiseSubscriber(subscriber));\n }\n}\n\n/**\n * We need this JSDoc comment for affecting ESDoc.\n * @ignore\n * @extends {Ignored}\n */\nclass PairwiseSubscriber extends Subscriber {\n private prev: T;\n private hasPrev: boolean = false;\n\n constructor(destination: Subscriber<[T, T]>) {\n super(destination);\n }\n\n _next(value: T): void {\n let pair: [T, T] | undefined;\n\n if (this.hasPrev) {\n pair = [this.prev, value];\n } else {\n this.hasPrev = true;\n }\n\n this.prev = value;\n\n if (pair) {\n this.destination.next(pair);\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\nimport {Observable, isObservable, of as observableOf} from 'rxjs';\nimport {DataSource} from './data-source';\n\n\n/** DataSource wrapper for a native array. */\nexport class ArrayDataSource extends DataSource {\n constructor(private _data: T[] | ReadonlyArray | Observable>) {\n super();\n }\n\n connect(): Observable> {\n return isObservable(this._data) ? this._data : observableOf(this._data);\n }\n\n disconnect() {}\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\nimport {Observable} from 'rxjs';\nimport {CollectionViewer} from './collection-viewer';\n\nexport abstract class DataSource {\n /**\n * Connects a collection viewer (such as a data-table) to this data source. Note that\n * the stream provided will be accessed during change detection and should not directly change\n * values that are bound in template views.\n * @param collectionViewer The component that exposes a view over the data provided by this\n * data source.\n * @returns Observable that emits a new value when the data changes.\n */\n abstract connect(collectionViewer: CollectionViewer): Observable>;\n\n /**\n * Disconnects a collection viewer (such as a data-table) from this data source. Can be used\n * to perform any clean-up or tear-down operations when a view is being destroyed.\n *\n * @param collectionViewer The component that exposes a view over the data provided by this\n * data source.\n */\n abstract disconnect(collectionViewer: CollectionViewer): void;\n}\n\n/** Checks whether an object is a data source. */\nexport function isDataSource(value: any): value is DataSource {\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 * @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\nimport {\n EmbeddedViewRef,\n IterableChangeRecord,\n IterableChanges,\n ViewContainerRef\n} from '@angular/core';\nimport {\n _ViewRepeater,\n _ViewRepeaterItemChanged,\n _ViewRepeaterItemContext,\n _ViewRepeaterItemContextFactory,\n _ViewRepeaterItemInsertArgs,\n _ViewRepeaterItemValueResolver,\n _ViewRepeaterOperation\n} from './view-repeater';\n\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 */\nexport class _RecycleViewRepeaterStrategy>\n implements _ViewRepeater {\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 viewCacheSize: number = 20;\n\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 private _viewCache: EmbeddedViewRef[] = [];\n\n /** Apply changes to the DOM. */\n applyChanges(changes: IterableChanges,\n viewContainerRef: ViewContainerRef,\n itemContextFactory: _ViewRepeaterItemContextFactory,\n itemValueResolver: _ViewRepeaterItemValueResolver,\n itemViewChanged?: _ViewRepeaterItemChanged) {\n // Rearrange the views to put them in the right location.\n changes.forEachOperation((record: IterableChangeRecord,\n adjustedPreviousIndex: number | null,\n currentIndex: number | null) => {\n let view: EmbeddedViewRef | undefined;\n let operation: _ViewRepeaterOperation;\n if (record.previousIndex == null) { // Item added.\n const viewArgsFactory = () => itemContextFactory(\n record, adjustedPreviousIndex, currentIndex);\n view = this._insertView(viewArgsFactory, currentIndex!, viewContainerRef,\n itemValueResolver(record));\n operation = view ? _ViewRepeaterOperation.INSERTED : _ViewRepeaterOperation.REPLACED;\n } else if (currentIndex == null) { // Item removed.\n this._detachAndCacheView(adjustedPreviousIndex!, viewContainerRef);\n operation = _ViewRepeaterOperation.REMOVED;\n } else { // Item moved.\n view = this._moveView(adjustedPreviousIndex!, currentIndex!, viewContainerRef,\n itemValueResolver(record));\n operation = _ViewRepeaterOperation.MOVED;\n }\n\n if (itemViewChanged) {\n itemViewChanged({\n context: view?.context,\n operation,\n record,\n });\n }\n });\n }\n\n detach() {\n for (const view of this._viewCache) {\n view.destroy();\n }\n }\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 private _insertView(viewArgsFactory: () => _ViewRepeaterItemInsertArgs, currentIndex: number,\n viewContainerRef: ViewContainerRef,\n value: T): EmbeddedViewRef | undefined {\n let cachedView = this._insertViewFromCache(currentIndex!, viewContainerRef);\n if (cachedView) {\n cachedView.context.$implicit = value;\n return undefined;\n }\n\n const viewArgs = viewArgsFactory();\n return viewContainerRef.createEmbeddedView(\n viewArgs.templateRef, viewArgs.context, viewArgs.index);\n }\n\n /** Detaches the view at the given index and inserts into the view cache. */\n private _detachAndCacheView(index: number, viewContainerRef: ViewContainerRef) {\n const detachedView = this._detachView(index, viewContainerRef);\n this._maybeCacheView(detachedView, viewContainerRef);\n }\n\n /** Moves view at the previous index to the current index. */\n private _moveView(adjustedPreviousIndex: number, currentIndex: number,\n viewContainerRef: ViewContainerRef, value: T): EmbeddedViewRef {\n const view = viewContainerRef.get(adjustedPreviousIndex!) as\n EmbeddedViewRef;\n viewContainerRef.move(view, currentIndex);\n view.context.$implicit = value;\n return view;\n }\n\n /**\n * Cache the given detached view. If the cache is full, the view will be\n * destroyed.\n */\n private _maybeCacheView(view: EmbeddedViewRef, viewContainerRef: ViewContainerRef) {\n if (this._viewCache.length < this.viewCacheSize) {\n this._viewCache.push(view);\n } else {\n const index = viewContainerRef.indexOf(view);\n\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 } else {\n viewContainerRef.remove(index);\n }\n }\n }\n\n /** Inserts a recycled view from the cache at the given index. */\n private _insertViewFromCache(index: number,\n viewContainerRef: ViewContainerRef): EmbeddedViewRef | null {\n const cachedView = this._viewCache.pop();\n if (cachedView) {\n viewContainerRef.insert(cachedView, index);\n }\n return cachedView || null;\n }\n\n /** Detaches the embedded view at the given index. */\n private _detachView(index: number, viewContainerRef: ViewContainerRef): EmbeddedViewRef {\n return viewContainerRef.detach(index) as EmbeddedViewRef;\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\nimport {\n InjectionToken,\n IterableChangeRecord,\n IterableChanges,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\n\n/**\n * The context for an embedded view in the repeater's view container.\n *\n * @template T The type for the embedded view's $implicit property.\n */\nexport interface _ViewRepeaterItemContext {\n $implicit?: T;\n}\n\n/**\n * The arguments needed to construct an embedded view for an item in a view\n * container.\n *\n * @template C The type for the context passed to each embedded view.\n */\nexport interface _ViewRepeaterItemInsertArgs {\n templateRef: TemplateRef;\n context?: C;\n index?: number;\n}\n\n/**\n * A factory that derives the embedded view context for an item in a view\n * container.\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 */\nexport type _ViewRepeaterItemContextFactory> =\n (record: IterableChangeRecord,\n adjustedPreviousIndex: number | null,\n currentIndex: number | null) => _ViewRepeaterItemInsertArgs;\n\n/**\n * Extracts the value of an item from an {@link IterableChangeRecord}.\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 */\nexport type _ViewRepeaterItemValueResolver =\n (record: IterableChangeRecord) => T;\n\n/** Indicates how a view was changed by a {@link _ViewRepeater}. */\nexport const enum _ViewRepeaterOperation {\n /** The content of an existing view was replaced with another item. */\n REPLACED,\n /** A new view was created with `createEmbeddedView`. */\n INSERTED,\n /** The position of a view changed, but the content remains the same. */\n MOVED,\n /** A view was detached from the view container. */\n REMOVED,\n}\n\n/**\n * Meta data describing the state of a view after it was updated by a\n * {@link _ViewRepeater}.\n *\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 */\nexport interface _ViewRepeaterItemChange {\n /** The view's context after it was changed. */\n context?: C;\n /** Indicates how the view was changed. */\n operation: _ViewRepeaterOperation;\n /** The view's corresponding change record. */\n record: IterableChangeRecord;\n}\n\n/**\n * Type for a callback to be executed after a view has changed.\n *\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 */\nexport type _ViewRepeaterItemChanged =\n (change: _ViewRepeaterItemChange) => void;\n\n/**\n * Describes a strategy for rendering items in a {@link ViewContainerRef}.\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 */\nexport interface _ViewRepeater> {\n applyChanges(\n changes: IterableChanges,\n viewContainerRef: ViewContainerRef,\n itemContextFactory: _ViewRepeaterItemContextFactory,\n itemValueResolver: _ViewRepeaterItemValueResolver,\n itemViewChanged?: _ViewRepeaterItemChanged): void;\n\n detach(): void;\n}\n\n/**\n * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only.\n * @docs-private\n */\nexport const _VIEW_REPEATER_STRATEGY = new InjectionToken<\n _ViewRepeater>>('_ViewRepeater');\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\nimport {InjectionToken} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {CdkVirtualScrollViewport} from './virtual-scroll-viewport';\n\n\n/** The injection token used to specify the virtual scrolling strategy. */\nexport const VIRTUAL_SCROLL_STRATEGY =\n new InjectionToken('VIRTUAL_SCROLL_STRATEGY');\n\n\n/** A strategy that dictates which items should be rendered in the viewport. */\nexport interface VirtualScrollStrategy {\n /** Emits when the index of the first element visible in the viewport changes. */\n scrolledIndexChange: Observable;\n\n /**\n * Attaches this scroll strategy to a viewport.\n * @param viewport The viewport to attach this strategy to.\n */\n attach(viewport: CdkVirtualScrollViewport): void;\n\n /** Detaches this scroll strategy from the currently attached viewport. */\n detach(): void;\n\n /** Called when the viewport is scrolled (debounced using requestAnimationFrame). */\n onContentScrolled(): void;\n\n /** Called when the length of the data changes. */\n onDataLengthChanged(): void;\n\n /** Called when the range of items rendered in the DOM has changed. */\n onContentRendered(): void;\n\n /** Called when the offset of the rendered items changed. */\n onRenderedOffsetChanged(): void;\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: number, behavior: ScrollBehavior): void;\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\nimport {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion';\nimport {Directive, forwardRef, Input, OnChanges} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {distinctUntilChanged} from 'rxjs/operators';\nimport {VIRTUAL_SCROLL_STRATEGY, VirtualScrollStrategy} from './virtual-scroll-strategy';\nimport {CdkVirtualScrollViewport} from './virtual-scroll-viewport';\n\n\n/** Virtual scrolling strategy for lists with items of known fixed size. */\nexport class FixedSizeVirtualScrollStrategy implements VirtualScrollStrategy {\n private _scrolledIndexChange = new Subject();\n\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n scrolledIndexChange: Observable = this._scrolledIndexChange.pipe(distinctUntilChanged());\n\n /** The attached viewport. */\n private _viewport: CdkVirtualScrollViewport | null = null;\n\n /** The size of the items in the virtually scrolling list. */\n private _itemSize: number;\n\n /** The minimum amount of buffer rendered beyond the viewport (in pixels). */\n private _minBufferPx: number;\n\n /** The number of buffer items to render beyond the edge of the viewport (in pixels). */\n private _maxBufferPx: number;\n\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: number, minBufferPx: number, maxBufferPx: number) {\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n }\n\n /**\n * Attaches this scroll strategy to a viewport.\n * @param viewport The viewport to attach this strategy to.\n */\n attach(viewport: CdkVirtualScrollViewport) {\n this._viewport = viewport;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n\n /** Detaches this scroll strategy from the currently attached viewport. */\n detach() {\n this._scrolledIndexChange.complete();\n this._viewport = null;\n }\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: number, minBufferPx: number, maxBufferPx: number) {\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\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentScrolled() {\n this._updateRenderedRange();\n }\n\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onDataLengthChanged() {\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentRendered() { /* no-op */ }\n\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onRenderedOffsetChanged() { /* 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: number, behavior: ScrollBehavior): void {\n if (this._viewport) {\n this._viewport.scrollToOffset(index * this._itemSize, behavior);\n }\n }\n\n /** Update the viewport's total content size. */\n private _updateTotalContentSize() {\n if (!this._viewport) {\n return;\n }\n\n this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);\n }\n\n /** Update the viewport's rendered range. */\n private _updateRenderedRange() {\n if (!this._viewport) {\n return;\n }\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 let firstVisibleIndex = scrollOffset / this._itemSize;\n\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,\n Math.min(firstVisibleIndex, dataLength - maxVisibleItems));\n\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\n newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));\n }\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,\n Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize));\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,\n Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize));\n }\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\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 */\nexport function _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir: CdkFixedSizeVirtualScroll) {\n return fixedSizeDir._scrollStrategy;\n}\n\n\n/** A virtual scroll strategy that supports fixed-size items. */\n@Directive({\n selector: 'cdk-virtual-scroll-viewport[itemSize]',\n providers: [{\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n }],\n})\nexport class CdkFixedSizeVirtualScroll implements OnChanges {\n /** The size of the items in the list (in pixels). */\n @Input()\n get itemSize(): number { return this._itemSize; }\n set itemSize(value: number) { this._itemSize = coerceNumberProperty(value); }\n _itemSize = 20;\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 @Input()\n get minBufferPx(): number { return this._minBufferPx; }\n set minBufferPx(value: number) { this._minBufferPx = coerceNumberProperty(value); }\n _minBufferPx = 100;\n\n /**\n * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.\n */\n @Input()\n get maxBufferPx(): number { return this._maxBufferPx; }\n set maxBufferPx(value: number) { this._maxBufferPx = coerceNumberProperty(value); }\n _maxBufferPx = 200;\n\n /** The scroll strategy used by this directive. */\n _scrollStrategy =\n new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n\n ngOnChanges() {\n this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n\n static ngAcceptInputType_itemSize: NumberInput;\n static ngAcceptInputType_minBufferPx: NumberInput;\n static ngAcceptInputType_maxBufferPx: NumberInput;\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\nimport {Platform} from '@angular/cdk/platform';\nimport {ElementRef, Injectable, NgZone, OnDestroy, Optional, Inject} from '@angular/core';\nimport {fromEvent, of as observableOf, Subject, Subscription, Observable, Observer} from 'rxjs';\nimport {auditTime, filter} from 'rxjs/operators';\nimport {CdkScrollable} from './scrollable';\nimport {DOCUMENT} from '@angular/common';\n\n/** Time in ms to throttle the scrolling events by default. */\nexport const DEFAULT_SCROLL_TIME = 20;\n\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 */\n@Injectable({providedIn: 'root'})\nexport class ScrollDispatcher implements OnDestroy {\n /** Used to reference correct document/window */\n protected _document?: Document;\n\n constructor(private _ngZone: NgZone,\n private _platform: Platform,\n /** @breaking-change 11.0.0 make document required */\n @Optional() @Inject(DOCUMENT) document?: any) {\n this._document = document;\n }\n\n /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n private _scrolled = new Subject();\n\n /** Keeps track of the global `scroll` and `resize` subscriptions. */\n _globalSubscription: Subscription | null = null;\n\n /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n private _scrolledCount = 0;\n\n /**\n * Map of all the scrollable references that are registered with the service and their\n * scroll event subscriptions.\n */\n scrollContainers: Map = new Map();\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: CdkScrollable): void {\n if (!this.scrollContainers.has(scrollable)) {\n this.scrollContainers.set(scrollable, scrollable.elementScrolled()\n .subscribe(() => this._scrolled.next(scrollable)));\n }\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: CdkScrollable): void {\n const scrollableReference = this.scrollContainers.get(scrollable);\n\n if (scrollableReference) {\n scrollableReference.unsubscribe();\n this.scrollContainers.delete(scrollable);\n }\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: number = DEFAULT_SCROLL_TIME): Observable {\n if (!this._platform.isBrowser) {\n return observableOf();\n }\n\n return new Observable((observer: Observer) => {\n if (!this._globalSubscription) {\n this._addGlobalListener();\n }\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\n this._scrolledCount++;\n\n return () => {\n subscription.unsubscribe();\n this._scrolledCount--;\n\n if (!this._scrolledCount) {\n this._removeGlobalListener();\n }\n };\n });\n }\n\n ngOnDestroy() {\n this._removeGlobalListener();\n this.scrollContainers.forEach((_, container) => this.deregister(container));\n this._scrolled.complete();\n }\n\n /**\n * Returns an observable that emits whenever any of the\n * scrollable ancestors of an element are scrolled.\n * @param elementRef Element whose ancestors to listen for.\n * @param auditTimeInMs Time to throttle the scroll events.\n */\n ancestorScrolled(elementRef: ElementRef, auditTimeInMs?: number): Observable {\n const ancestors = this.getAncestorScrollContainers(elementRef);\n\n return this.scrolled(auditTimeInMs).pipe(filter(target => {\n return !target || ancestors.indexOf(target) > -1;\n }));\n }\n\n /** Returns all registered Scrollables that contain the provided element. */\n getAncestorScrollContainers(elementRef: ElementRef): CdkScrollable[] {\n const scrollingContainers: CdkScrollable[] = [];\n\n this.scrollContainers.forEach((_subscription: Subscription, scrollable: CdkScrollable) => {\n if (this._scrollableContainsElement(scrollable, elementRef)) {\n scrollingContainers.push(scrollable);\n }\n });\n\n return scrollingContainers;\n }\n\n /** Access injected document if available or fallback to global document reference */\n private _getDocument(): Document {\n return this._document || document;\n }\n\n /** Use defaultView of injected document if available or fallback to global window reference */\n private _getWindow(): Window {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n\n /** Returns true if the element is contained within the provided Scrollable. */\n private _scrollableContainsElement(scrollable: CdkScrollable, elementRef: ElementRef): boolean {\n let element: HTMLElement | null = elementRef.nativeElement;\n let scrollableElement = scrollable.getElementRef().nativeElement;\n\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) { return true; }\n } while (element = element!.parentElement);\n\n return false;\n }\n\n /** Sets up the global scroll listeners. */\n private _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\n /** Cleans up the global scroll listener. */\n private _removeGlobalListener() {\n if (this._globalSubscription) {\n this._globalSubscription.unsubscribe();\n this._globalSubscription = 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\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n getRtlScrollAxisType,\n RtlScrollAxisType,\n supportsScrollBehavior\n} from '@angular/cdk/platform';\nimport {Directive, ElementRef, NgZone, OnDestroy, OnInit, Optional} from '@angular/core';\nimport {fromEvent, Observable, Subject, Observer} from 'rxjs';\nimport {takeUntil} from 'rxjs/operators';\nimport {ScrollDispatcher} from './scroll-dispatcher';\n\nexport type _Without = {[P in keyof T]?: never};\nexport type _XOR = (_Without & U) | (_Without & T);\nexport type _Top = {top?: number};\nexport type _Bottom = {bottom?: number};\nexport type _Left = {left?: number};\nexport type _Right = {right?: number};\nexport type _Start = {start?: number};\nexport type _End = {end?: number};\nexport type _XAxis = _XOR<_XOR<_Left, _Right>, _XOR<_Start, _End>>;\nexport type _YAxis = _XOR<_Top, _Bottom>;\n\n/**\n * An extended version of ScrollToOptions that allows expressing scroll offsets relative to the\n * top, bottom, left, right, start, or end of the viewport rather than just the top and left.\n * Please note: the top and bottom properties are mutually exclusive, as are the left, right,\n * start, and end properties.\n */\nexport type ExtendedScrollToOptions = _XAxis & _YAxis & ScrollOptions;\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 */\n@Directive({\n selector: '[cdk-scrollable], [cdkScrollable]'\n})\nexport class CdkScrollable implements OnInit, OnDestroy {\n private _destroyed = new Subject();\n\n private _elementScrolled: Observable = new Observable((observer: Observer) =>\n this.ngZone.runOutsideAngular(() =>\n fromEvent(this.elementRef.nativeElement, 'scroll').pipe(takeUntil(this._destroyed))\n .subscribe(observer)));\n\n constructor(protected elementRef: ElementRef,\n protected scrollDispatcher: ScrollDispatcher,\n protected ngZone: NgZone,\n @Optional() protected dir?: Directionality) {}\n\n ngOnInit() {\n this.scrollDispatcher.register(this);\n }\n\n ngOnDestroy() {\n this.scrollDispatcher.deregister(this);\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /** Returns observable that emits when a scroll event is fired on the host element. */\n elementScrolled(): Observable {\n return this._elementScrolled;\n }\n\n /** Gets the ElementRef for the viewport. */\n getElementRef(): ElementRef {\n return this.elementRef;\n }\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: ExtendedScrollToOptions): void {\n const el = this.elementRef.nativeElement;\n const isRtl = this.dir && this.dir.value == 'rtl';\n\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\n if (options.right == null) {\n options.right = isRtl ? options.start : options.end;\n }\n\n // Rewrite the bottom offset as a top offset.\n if (options.bottom != null) {\n (options as _Without<_Bottom> & _Top).top =\n el.scrollHeight - el.clientHeight - options.bottom;\n }\n\n // Rewrite the right offset as a left offset.\n if (isRtl && getRtlScrollAxisType() != RtlScrollAxisType.NORMAL) {\n if (options.left != null) {\n (options as _Without<_Left> & _Right).right =\n el.scrollWidth - el.clientWidth - options.left;\n }\n\n if (getRtlScrollAxisType() == RtlScrollAxisType.INVERTED) {\n options.left = options.right;\n } else if (getRtlScrollAxisType() == RtlScrollAxisType.NEGATED) {\n options.left = options.right ? -options.right : options.right;\n }\n } else {\n if (options.right != null) {\n (options as _Without<_Right> & _Left).left =\n el.scrollWidth - el.clientWidth - options.right;\n }\n }\n\n this._applyScrollToOptions(options);\n }\n\n private _applyScrollToOptions(options: ScrollToOptions): void {\n const el = this.elementRef.nativeElement;\n\n if (supportsScrollBehavior()) {\n el.scrollTo(options);\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 /**\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: 'top' | 'left' | 'right' | 'bottom' | 'start' | 'end'): number {\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\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 } else if (from == 'end') {\n from = isRtl ? LEFT : RIGHT;\n }\n\n if (isRtl && getRtlScrollAxisType() == RtlScrollAxisType.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 } else {\n return el.scrollLeft;\n }\n } else if (isRtl && getRtlScrollAxisType() == RtlScrollAxisType.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 } else {\n return -el.scrollLeft;\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 } else {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\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\nimport {Platform} from '@angular/cdk/platform';\nimport {Injectable, NgZone, OnDestroy, Optional, Inject} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\nimport {auditTime} from 'rxjs/operators';\nimport {DOCUMENT} from '@angular/common';\n\n/** Time in ms to throttle the resize events by default. */\nexport const DEFAULT_RESIZE_TIME = 20;\n\n/** Object that holds the scroll position of the viewport in each direction. */\nexport interface ViewportScrollPosition {\n top: number;\n left: number;\n}\n\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\n@Injectable({providedIn: 'root'})\nexport class ViewportRuler implements OnDestroy {\n /** Cached viewport dimensions. */\n private _viewportSize: {width: number; height: number};\n\n /** Stream of viewport change events. */\n private _change = new Subject();\n\n /** Event listener that will be used to handle the viewport change events. */\n private _changeListener = (event: Event) => {\n this._change.next(event);\n }\n\n /** Used to reference correct document/window */\n protected _document?: Document;\n\n constructor(private _platform: Platform,\n ngZone: NgZone,\n /** @breaking-change 11.0.0 make document required */\n @Optional() @Inject(DOCUMENT) document?: any) {\n this._document = document;\n\n ngZone.runOutsideAngular(() => {\n if (_platform.isBrowser) {\n const window = this._getWindow();\n\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\n // We don't need to keep track of the subscription,\n // because we complete the `change` stream on destroy.\n this.change().subscribe(() => this._updateViewportSize());\n });\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\n this._change.complete();\n }\n\n /** Returns the viewport's width and height. */\n getViewportSize(): Readonly<{width: number, height: number}> {\n if (!this._viewportSize) {\n this._updateViewportSize();\n }\n\n const output = {width: this._viewportSize.width, height: this._viewportSize.height};\n\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\n return output;\n }\n\n /** Gets a ClientRect for the viewport's bounds. */\n getViewportRect(): ClientRect {\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\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\n /** Gets the (top, left) scroll position of the viewport. */\n getViewportScrollPosition(): ViewportScrollPosition {\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\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._getDocument();\n const window = this._getWindow();\n const documentElement = document.documentElement!;\n const documentRect = documentElement.getBoundingClientRect();\n\n const top = -documentRect.top || document.body.scrollTop || window.scrollY ||\n documentElement.scrollTop || 0;\n\n const left = -documentRect.left || document.body.scrollLeft || window.scrollX ||\n documentElement.scrollLeft || 0;\n\n return {top, left};\n }\n\n /**\n * Returns a stream that emits whenever the size of the viewport changes.\n * @param throttleTime Time in milliseconds to throttle the stream.\n */\n change(throttleTime: number = DEFAULT_RESIZE_TIME): Observable {\n return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;\n }\n\n /** Access injected document if available or fallback to global document reference */\n private _getDocument(): Document {\n return this._document || document;\n }\n\n /** Use defaultView of injected document if available or fallback to global window reference */\n private _getWindow(): Window {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n\n /** Updates the cached viewport size. */\n private _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}\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\nimport {Directionality} from '@angular/cdk/bidi';\nimport {ListRange} from '@angular/cdk/collections';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n animationFrameScheduler,\n asapScheduler,\n Observable,\n Subject,\n Observer,\n Subscription,\n} from 'rxjs';\nimport {auditTime, startWith, takeUntil} from 'rxjs/operators';\nimport {ScrollDispatcher} from './scroll-dispatcher';\nimport {CdkScrollable, ExtendedScrollToOptions} from './scrollable';\nimport {VIRTUAL_SCROLL_STRATEGY, VirtualScrollStrategy} from './virtual-scroll-strategy';\nimport {ViewportRuler} from './viewport-ruler';\nimport {CdkVirtualScrollRepeater} from './virtual-scroll-repeater';\n\n/** Checks if the given ranges are equal. */\nfunction rangesEqual(r1: ListRange, r2: ListRange): boolean {\n return r1.start == r2.start && r1.end == r2.end;\n}\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 =\n typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n\n\n/** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */\n@Component({\n selector: 'cdk-virtual-scroll-viewport',\n templateUrl: 'virtual-scroll-viewport.html',\n styleUrls: ['virtual-scroll-viewport.css'],\n 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 },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{\n provide: CdkScrollable,\n useExisting: CdkVirtualScrollViewport,\n }]\n})\nexport class CdkVirtualScrollViewport extends CdkScrollable implements OnInit, OnDestroy {\n /** Emits when the viewport is detached from a CdkVirtualForOf. */\n private _detachedSubject = new Subject();\n\n /** Emits when the rendered range changes. */\n private _renderedRangeSubject = new Subject();\n\n /** The direction the viewport scrolls. */\n @Input()\n get orientation() {\n return this._orientation;\n }\n set orientation(orientation: 'horizontal' | 'vertical') {\n if (this._orientation !== orientation) {\n this._orientation = orientation;\n this._calculateSpacerSize();\n }\n }\n private _orientation: 'horizontal' | 'vertical' = 'vertical';\n\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 @Output() scrolledIndexChange: Observable =\n new Observable((observer: Observer) =>\n this._scrollStrategy.scrolledIndexChange.subscribe(index =>\n Promise.resolve().then(() => this.ngZone.run(() => observer.next(index)))));\n\n /** The element that wraps the rendered content. */\n @ViewChild('contentWrapper', {static: true}) _contentWrapper: ElementRef;\n\n /** A stream that emits whenever the rendered range changes. */\n renderedRangeStream: Observable = this._renderedRangeSubject;\n\n /**\n * The total size of all content (in pixels), including content that is not currently rendered.\n */\n private _totalContentSize = 0;\n\n /** A string representing the `style.width` property value to be used for the spacer element. */\n _totalContentWidth = '';\n\n /** A string representing the `style.height` property value to be used for the spacer element. */\n _totalContentHeight = '';\n\n /**\n * The CSS transform applied to the rendered subset of items so that they appear within the bounds\n * of the visible viewport.\n */\n private _renderedContentTransform: string;\n\n /** The currently rendered range of indices. */\n private _renderedRange: ListRange = {start: 0, end: 0};\n\n /** The length of the data bound to this viewport (in number of items). */\n private _dataLength = 0;\n\n /** The size of the viewport (in pixels). */\n private _viewportSize = 0;\n\n /** the currently attached CdkVirtualScrollRepeater. */\n private _forOf: CdkVirtualScrollRepeater | null;\n\n /** The last rendered content offset that was set. */\n private _renderedContentOffset = 0;\n\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 private _renderedContentOffsetNeedsRewrite = false;\n\n /** Whether there is a pending change detection cycle. */\n private _isChangeDetectionPending = false;\n\n /** A list of functions to run after the next change detection cycle. */\n private _runAfterChangeDetection: Function[] = [];\n\n /** Subscription to changes in the viewport size. */\n private _viewportChanges = Subscription.EMPTY;\n\n constructor(public elementRef: ElementRef,\n private _changeDetectorRef: ChangeDetectorRef,\n ngZone: NgZone,\n @Optional() @Inject(VIRTUAL_SCROLL_STRATEGY)\n private _scrollStrategy: VirtualScrollStrategy,\n @Optional() dir: Directionality,\n scrollDispatcher: ScrollDispatcher,\n /**\n * @deprecated `viewportRuler` parameter to become required.\n * @breaking-change 11.0.0\n */\n viewportRuler?: ViewportRuler) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n\n if (!_scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\n }\n\n // @breaking-change 11.0.0 Remove null check for `viewportRuler`.\n if (viewportRuler) {\n this._viewportChanges = viewportRuler.change().subscribe(() => {\n this.checkViewportSize();\n });\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n\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\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\n this._markChangeDetectionNeeded();\n }));\n }\n\n ngOnDestroy() {\n this.detach();\n this._scrollStrategy.detach();\n\n // Complete all subjects\n this._renderedRangeSubject.complete();\n this._detachedSubject.complete();\n this._viewportChanges.unsubscribe();\n\n super.ngOnDestroy();\n }\n\n /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n attach(forOf: CdkVirtualScrollRepeater) {\n if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkVirtualScrollViewport is already attached.');\n }\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\n /** Detaches the current `CdkVirtualForOf`. */\n detach() {\n this._forOf = null;\n this._detachedSubject.next();\n }\n\n /** Gets the length of the data bound to this viewport (in number of items). */\n getDataLength(): number {\n return this._dataLength;\n }\n\n /** Gets the size of the viewport (in pixels). */\n getViewportSize(): number {\n return this._viewportSize;\n }\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\n /** Get the current rendered range of items. */\n getRenderedRange(): ListRange {\n return this._renderedRange;\n }\n\n /**\n * Sets the total size of all content (in pixels), including content that is not currently\n * rendered.\n */\n setTotalContentSize(size: number) {\n if (this._totalContentSize !== size) {\n this._totalContentSize = size;\n this._calculateSpacerSize();\n this._markChangeDetectionNeeded();\n }\n }\n\n /** Sets the currently rendered range of indices. */\n setRenderedRange(range: ListRange) {\n if (!rangesEqual(this._renderedRange, range)) {\n this._renderedRangeSubject.next(this._renderedRange = range);\n this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\n }\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(): number | null {\n return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\n }\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: number, to: 'to-start' | 'to-end' = '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 } else {\n this._scrollStrategy.onRenderedOffsetChanged();\n }\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: number, behavior: ScrollBehavior = 'auto') {\n const options: ExtendedScrollToOptions = {behavior};\n if (this.orientation === 'horizontal') {\n options.start = offset;\n } else {\n options.top = offset;\n }\n this.scrollTo(options);\n }\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: number, behavior: ScrollBehavior = 'auto') {\n this._scrollStrategy.scrollToIndex(index, behavior);\n }\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?: 'top' | 'left' | 'right' | 'bottom' | 'start' | 'end'): number {\n return from ?\n super.measureScrollOffset(from) :\n super.measureScrollOffset(this.orientation === 'horizontal' ? 'start' : 'top');\n }\n\n /** Measure the combined size of all of the rendered items. */\n measureRenderedContentSize(): number {\n const contentEl = this._contentWrapper.nativeElement;\n return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;\n }\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: ListRange): number {\n if (!this._forOf) {\n return 0;\n }\n return this._forOf.measureRangeSize(range, this.orientation);\n }\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\n /** Measure the viewport size. */\n private _measureViewportSize() {\n const viewportEl = this.elementRef.nativeElement;\n this._viewportSize = this.orientation === 'horizontal' ?\n viewportEl.clientWidth : viewportEl.clientHeight;\n }\n\n /** Queue up change detection to run. */\n private _markChangeDetectionNeeded(runAfter?: Function) {\n if (runAfter) {\n this._runAfterChangeDetection.push(runAfter);\n }\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\n /** Run change detection. */\n private _doChangeDetection() {\n this._isChangeDetectionPending = false;\n\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\n const runAfterChangeDetection = this._runAfterChangeDetection;\n this._runAfterChangeDetection = [];\n for (const fn of runAfterChangeDetection) {\n fn();\n }\n }\n\n /** Calculates the `style.width` and `style.height` for the spacer element. */\n private _calculateSpacerSize() {\n this._totalContentHeight =\n this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;\n this._totalContentWidth =\n this.orientation === 'horizontal' ? `${this._totalContentSize}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\nimport {\n ArrayDataSource,\n CollectionViewer,\n DataSource,\n ListRange,\n isDataSource,\n _RecycleViewRepeaterStrategy,\n _VIEW_REPEATER_STRATEGY,\n _ViewRepeaterItemInsertArgs,\n} from '@angular/cdk/collections';\nimport {\n Directive,\n DoCheck,\n EmbeddedViewRef,\n Inject,\n Input,\n IterableChangeRecord,\n IterableChanges,\n IterableDiffer,\n IterableDiffers,\n NgIterable,\n NgZone,\n OnDestroy,\n SkipSelf,\n TemplateRef,\n TrackByFunction,\n ViewContainerRef,\n} from '@angular/core';\nimport {coerceNumberProperty, NumberInput} from '@angular/cdk/coercion';\nimport {Observable, Subject, of as observableOf, isObservable} from 'rxjs';\nimport {pairwise, shareReplay, startWith, switchMap, takeUntil} from 'rxjs/operators';\nimport {CdkVirtualScrollRepeater} from './virtual-scroll-repeater';\nimport {CdkVirtualScrollViewport} from './virtual-scroll-viewport';\n\n\n/** The context for an item rendered by `CdkVirtualForOf` */\nexport type CdkVirtualForOfContext = {\n /** The item value. */\n $implicit: T;\n /** The DataSource, Observable, or NgIterable that was passed to *cdkVirtualFor. */\n cdkVirtualForOf: DataSource | Observable | NgIterable;\n /** The index of the item in the DataSource. */\n index: number;\n /** The number of items in the DataSource. */\n count: number;\n /** Whether this is the first item in the DataSource. */\n first: boolean;\n /** Whether this is the last item in the DataSource. */\n last: boolean;\n /** Whether the index is even. */\n even: boolean;\n /** Whether the index is odd. */\n odd: boolean;\n};\n\n\n/** Helper to extract the offset of a DOM Node in a certain direction. */\nfunction getOffset(orientation: 'horizontal' | 'vertical', direction: 'start' | 'end', node: Node) {\n const el = node as Element;\n if (!el.getBoundingClientRect) {\n return 0;\n }\n const rect = el.getBoundingClientRect();\n\n if (orientation === 'horizontal') {\n return direction === 'start' ? rect.left : rect.right;\n }\n\n return direction === 'start' ? rect.top : rect.bottom;\n}\n\n/**\n * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling\n * container.\n */\n@Directive({\n selector: '[cdkVirtualFor][cdkVirtualForOf]',\n providers: [\n {provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy},\n ]\n})\nexport class CdkVirtualForOf implements\n CdkVirtualScrollRepeater, CollectionViewer, DoCheck, OnDestroy {\n /** Emits when the rendered view of the data changes. */\n viewChange = new Subject();\n\n /** Subject that emits when a new DataSource instance is given. */\n private _dataSourceChanges = new Subject>();\n\n /** The DataSource to display. */\n @Input()\n get cdkVirtualForOf(): DataSource | Observable | NgIterable | null | undefined {\n return this._cdkVirtualForOf;\n }\n set cdkVirtualForOf(value: DataSource | Observable | NgIterable | null | undefined) {\n this._cdkVirtualForOf = value;\n if (isDataSource(value)) {\n this._dataSourceChanges.next(value);\n } else {\n // Slice the value if its an NgIterable to ensure we're working with an array.\n this._dataSourceChanges.next(new ArrayDataSource(\n isObservable(value) ? value : Array.prototype.slice.call(value || [])));\n }\n }\n\n _cdkVirtualForOf: DataSource | Observable | NgIterable | null | undefined;\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 @Input()\n get cdkVirtualForTrackBy(): TrackByFunction | undefined {\n return this._cdkVirtualForTrackBy;\n }\n set cdkVirtualForTrackBy(fn: TrackByFunction | undefined) {\n this._needsUpdate = true;\n this._cdkVirtualForTrackBy = fn ?\n (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item) :\n undefined;\n }\n private _cdkVirtualForTrackBy: TrackByFunction | undefined;\n\n /** The template used to stamp out new elements. */\n @Input()\n set cdkVirtualForTemplate(value: TemplateRef>) {\n if (value) {\n this._needsUpdate = true;\n this._template = value;\n }\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 @Input()\n get cdkVirtualForTemplateCacheSize() {\n return this._viewRepeater.viewCacheSize;\n }\n set cdkVirtualForTemplateCacheSize(size: number) {\n this._viewRepeater.viewCacheSize = coerceNumberProperty(size);\n }\n\n /** Emits whenever the data in the current DataSource changes. */\n dataStream: Observable> = this._dataSourceChanges\n .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\n /** The differ used to calculate changes to the data. */\n private _differ: IterableDiffer | null = null;\n\n /** The most recent data emitted from the DataSource. */\n private _data: T[] | ReadonlyArray;\n\n /** The currently rendered items. */\n private _renderedItems: T[];\n\n /** The currently rendered range of indices. */\n private _renderedRange: ListRange;\n\n /** Whether the rendered data should be updated during the next ngDoCheck cycle. */\n private _needsUpdate = false;\n\n private _destroyed = new Subject();\n\n constructor(\n /** The view container to add items to. */\n private _viewContainerRef: ViewContainerRef,\n /** The template to use when stamping out new items. */\n private _template: TemplateRef>,\n /** The set of available differs. */\n private _differs: IterableDiffers,\n /** The strategy used to render items in the virtual scroll viewport. */\n @Inject(_VIEW_REPEATER_STRATEGY)\n private _viewRepeater: _RecycleViewRepeaterStrategy>,\n /** The virtual scrolling viewport that these items are being rendered in. */\n @SkipSelf() private _viewport: CdkVirtualScrollViewport,\n ngZone: NgZone) {\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\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: ListRange, orientation: 'horizontal' | 'vertical'): number {\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\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\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: HTMLElement | undefined;\n let lastNode: HTMLElement | undefined;\n\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) as\n EmbeddedViewRef> | null;\n if (view && view.rootNodes.length) {\n firstNode = lastNode = view.rootNodes[0];\n break;\n }\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) as\n EmbeddedViewRef> | null;\n if (view && view.rootNodes.length) {\n lastNode = view.rootNodes[view.rootNodes.length - 1];\n break;\n }\n }\n\n return firstNode && lastNode ?\n getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode) : 0;\n }\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 } else {\n this._applyChanges(changes);\n }\n this._needsUpdate = false;\n }\n }\n\n ngOnDestroy() {\n this._viewport.detach();\n\n this._dataSourceChanges.next(undefined!);\n this._dataSourceChanges.complete();\n this.viewChange.complete();\n\n this._destroyed.next();\n this._destroyed.complete();\n this._viewRepeater.detach();\n }\n\n /** React to scroll state changes in the viewport. */\n private _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 this._differ = this._differs.find(this._renderedItems).create(this.cdkVirtualForTrackBy);\n }\n this._needsUpdate = true;\n }\n\n /** Swap out one `DataSource` for another. */\n private _changeDataSource(oldDs: DataSource | null, newDs: DataSource | null):\n Observable> {\n\n if (oldDs) {\n oldDs.disconnect(this);\n }\n\n this._needsUpdate = true;\n return newDs ? newDs.connect(this) : observableOf();\n }\n\n /** Update the `CdkVirtualForOfContext` for all views. */\n private _updateContext() {\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n let view = this._viewContainerRef.get(i) as EmbeddedViewRef>;\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n view.detectChanges();\n }\n }\n\n /** Apply changes to the DOM. */\n private _applyChanges(changes: IterableChanges) {\n this._viewRepeater.applyChanges(\n changes,\n this._viewContainerRef,\n (record: IterableChangeRecord,\n adjustedPreviousIndex: number | null,\n currentIndex: number | null) => this._getEmbeddedViewArgs(record, currentIndex!),\n (record) => record.item);\n\n // Update $implicit for any items that had an identity change.\n changes.forEachIdentityChange((record: IterableChangeRecord) => {\n const view = this._viewContainerRef.get(record.currentIndex!) as\n EmbeddedViewRef>;\n view.context.$implicit = record.item;\n });\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) as EmbeddedViewRef>;\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n }\n }\n\n /** Update the computed properties on the `CdkVirtualForOfContext`. */\n private _updateComputedContextProperties(context: CdkVirtualForOfContext) {\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\n private _getEmbeddedViewArgs(record: IterableChangeRecord, index: number):\n _ViewRepeaterItemInsertArgs> {\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\n static ngAcceptInputType_cdkVirtualForTemplateCacheSize: NumberInput;\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\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {NgModule} from '@angular/core';\nimport {CdkFixedSizeVirtualScroll} from './fixed-size-virtual-scroll';\nimport {CdkScrollable} from './scrollable';\nimport {CdkVirtualForOf} from './virtual-for-of';\nimport {CdkVirtualScrollViewport} from './virtual-scroll-viewport';\n\n@NgModule({\n exports: [CdkScrollable],\n declarations: [CdkScrollable]\n})\nexport class CdkScrollableModule {}\n\n/**\n * @docs-primary-export\n */\n@NgModule({\n imports: [\n BidiModule,\n PlatformModule,\n CdkScrollableModule\n ],\n exports: [\n BidiModule,\n CdkScrollableModule,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n ],\n declarations: [\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n ],\n})\nexport class ScrollingModule {}\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 * Type describing the allowed values for a boolean input.\n * @docs-private\n */\nexport type BooleanInput = string | boolean | null | undefined;\n\n/** Coerces a data-bound value (typically a string) to a boolean. */\nexport function coerceBooleanProperty(value: any): boolean {\n return value != null && `${value}` !== 'false';\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 * Type describing the allowed values for a number input\n * @docs-private\n */\nexport type NumberInput = string | number | null | undefined;\n\n/** Coerces a data-bound value (typically a string) to a number. */\nexport function coerceNumberProperty(value: any): number;\nexport function coerceNumberProperty(value: any, fallback: D): number | D;\nexport function coerceNumberProperty(value: any, fallbackValue = 0) {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\n\n/**\n * Whether the provided value is considered a number.\n * @docs-private\n */\nexport function _isNumberValue(value: any): boolean {\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 as any)) && !isNaN(Number(value));\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/** Wraps the provided value in an array, unless the provided value is an array. */\nexport function coerceArray(value: T | T[]): T[];\nexport function coerceArray(value: T | readonly T[]): readonly T[];\nexport function coerceArray(value: T | T[]): T[] {\n return Array.isArray(value) ? value : [value];\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\nimport {ElementRef} from '@angular/core';\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 */\nexport function coerceElement(elementOrRef: ElementRef | T): T {\n return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\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\nlet _DOM: DomAdapter = null!;\n\nexport function getDOM(): DomAdapter {\n return _DOM;\n}\n\nexport function setDOM(adapter: DomAdapter) {\n _DOM = adapter;\n}\n\nexport function setRootDomAdapter(adapter: DomAdapter) {\n if (!_DOM) {\n _DOM = adapter;\n }\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 */\nexport abstract class DomAdapter {\n // Needs Domino-friendly test utility\n abstract dispatchEvent(el: any, evt: any): any;\n abstract readonly supportsDOMEvents: boolean;\n\n // Used by Meta\n abstract remove(el: any): void;\n abstract createElement(tagName: any, doc?: any): HTMLElement;\n abstract createHtmlDocument(): HTMLDocument;\n abstract getDefaultDocument(): Document;\n\n // Used by By.css\n abstract isElementNode(node: any): boolean;\n\n // Used by Testability\n abstract isShadowRoot(node: any): boolean;\n\n // Used by KeyEventsPlugin\n abstract onAndCancel(el: any, evt: any, listener: any): Function;\n\n // Used by PlatformLocation and ServerEventManagerPlugin\n abstract getGlobalEventTarget(doc: Document, target: string): any;\n\n // Used by PlatformLocation\n abstract getBaseHref(doc: Document): string|null;\n abstract resetBaseElement(): void;\n\n // TODO: remove dependency in DefaultValueAccessor\n abstract getUserAgent(): string;\n\n // Used in the legacy @angular/http package which has some usage in g3.\n abstract getCookie(name: string): string|null;\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\nimport {InjectionToken} from '@angular/core';\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 */\nexport const DOCUMENT = new InjectionToken('DocumentToken');\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\nimport {Inject, Injectable, InjectionToken, ɵɵinject} from '@angular/core';\nimport {getDOM} from '../dom_adapter';\nimport {DOCUMENT} from '../dom_tokens';\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 */\n@Injectable({\n providedIn: 'platform',\n // See #23917\n useFactory: useBrowserPlatformLocation\n})\nexport abstract class PlatformLocation {\n abstract getBaseHrefFromDOM(): string;\n abstract getState(): unknown;\n /**\n * Returns a function that, when executed, removes the `popstate` event handler.\n */\n abstract onPopState(fn: LocationChangeListener): VoidFunction;\n /**\n * Returns a function that, when executed, removes the `hashchange` event handler.\n */\n abstract onHashChange(fn: LocationChangeListener): VoidFunction;\n\n abstract get href(): string;\n abstract get protocol(): string;\n abstract get hostname(): string;\n abstract get port(): string;\n abstract get pathname(): string;\n abstract get search(): string;\n abstract get hash(): string;\n\n abstract replaceState(state: any, title: string, url: string): void;\n\n abstract pushState(state: any, title: string, url: string): void;\n\n abstract forward(): void;\n\n abstract back(): void;\n\n historyGo?(relativePosition: number): void {\n throw new Error('Not implemented');\n }\n}\n\nexport function useBrowserPlatformLocation() {\n return ɵɵinject(BrowserPlatformLocation);\n}\n\n/**\n * @description\n * Indicates when a location is initialized.\n *\n * @publicApi\n */\nexport const LOCATION_INITIALIZED = new InjectionToken>('Location Initialized');\n\n/**\n * @description\n * A serializable version of the event from `onPopState` or `onHashChange`\n *\n * @publicApi\n */\nexport interface LocationChangeEvent {\n type: string;\n state: any;\n}\n\n/**\n * @publicApi\n */\nexport interface LocationChangeListener {\n (event: LocationChangeEvent): any;\n}\n\n\n\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 */\n@Injectable({\n providedIn: 'platform',\n // See #23917\n useFactory: createBrowserPlatformLocation,\n})\nexport class BrowserPlatformLocation extends PlatformLocation {\n public readonly location!: Location;\n private _history!: History;\n\n constructor(@Inject(DOCUMENT) private _doc: any) {\n super();\n this._init();\n }\n\n // This is moved to its own method so that `MockPlatformLocationStrategy` can overwrite it\n /** @internal */\n _init() {\n (this as {location: Location}).location = window.location;\n this._history = window.history;\n }\n\n override getBaseHrefFromDOM(): string {\n return getDOM().getBaseHref(this._doc)!;\n }\n\n override onPopState(fn: LocationChangeListener): VoidFunction {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('popstate', fn, false);\n return () => window.removeEventListener('popstate', fn);\n }\n\n override onHashChange(fn: LocationChangeListener): VoidFunction {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('hashchange', fn, false);\n return () => window.removeEventListener('hashchange', fn);\n }\n\n override get href(): string {\n return this.location.href;\n }\n override get protocol(): string {\n return this.location.protocol;\n }\n override get hostname(): string {\n return this.location.hostname;\n }\n override get port(): string {\n return this.location.port;\n }\n override get pathname(): string {\n return this.location.pathname;\n }\n override get search(): string {\n return this.location.search;\n }\n override get hash(): string {\n return this.location.hash;\n }\n override set pathname(newPath: string) {\n this.location.pathname = newPath;\n }\n\n override pushState(state: any, title: string, url: string): void {\n if (supportsState()) {\n this._history.pushState(state, title, url);\n } else {\n this.location.hash = url;\n }\n }\n\n override replaceState(state: any, title: string, url: string): void {\n if (supportsState()) {\n this._history.replaceState(state, title, url);\n } else {\n this.location.hash = url;\n }\n }\n\n override forward(): void {\n this._history.forward();\n }\n\n override back(): void {\n this._history.back();\n }\n\n override historyGo(relativePosition: number = 0): void {\n this._history.go(relativePosition);\n }\n\n override getState(): unknown {\n return this._history.state;\n }\n}\n\nexport function supportsState(): boolean {\n return !!window.history.pushState;\n}\nexport function createBrowserPlatformLocation() {\n return new BrowserPlatformLocation(ɵɵinject(DOCUMENT));\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/**\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 */\nexport function joinWithSlash(start: string, end: string): string {\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/**\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 */\nexport function stripTrailingSlash(url: string): string {\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/**\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 */\nexport function normalizeQueryParams(params: string): string {\n return params && params[0] !== '?' ? '?' + params : params;\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\nimport {Inject, Injectable, InjectionToken, OnDestroy, Optional, ɵɵinject} from '@angular/core';\nimport {DOCUMENT} from '../dom_tokens';\nimport {LocationChangeListener, PlatformLocation} from './platform_location';\nimport {joinWithSlash, normalizeQueryParams} from './util';\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 */\n@Injectable({providedIn: 'root', useFactory: provideLocationStrategy})\nexport abstract class LocationStrategy {\n abstract path(includeHash?: boolean): string;\n abstract prepareExternalUrl(internal: string): string;\n abstract pushState(state: any, title: string, url: string, queryParams: string): void;\n abstract replaceState(state: any, title: string, url: string, queryParams: string): void;\n abstract forward(): void;\n abstract back(): void;\n historyGo?(relativePosition: number): void {\n throw new Error('Not implemented');\n }\n abstract onPopState(fn: LocationChangeListener): void;\n abstract getBaseHref(): string;\n}\n\nexport function provideLocationStrategy(platformLocation: PlatformLocation) {\n // See #23917\n const location = ɵɵinject(DOCUMENT).location;\n return new PathLocationStrategy(\n ɵɵinject(PlatformLocation as any), location && location.origin || '');\n}\n\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 */\nexport const APP_BASE_HREF = new InjectionToken('appBaseHref');\n\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 */\n@Injectable()\nexport class PathLocationStrategy extends LocationStrategy implements OnDestroy {\n private _baseHref: string;\n private _removeListenerFns: (() => void)[] = [];\n\n constructor(\n private _platformLocation: PlatformLocation,\n @Optional() @Inject(APP_BASE_HREF) href?: string) {\n super();\n\n if (href == null) {\n href = this._platformLocation.getBaseHrefFromDOM();\n }\n\n if (href == null) {\n throw new Error(\n `No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.`);\n }\n\n this._baseHref = href;\n }\n\n ngOnDestroy(): void {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()!();\n }\n }\n\n override onPopState(fn: LocationChangeListener): void {\n this._removeListenerFns.push(\n this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n\n override getBaseHref(): string {\n return this._baseHref;\n }\n\n override prepareExternalUrl(internal: string): string {\n return joinWithSlash(this._baseHref, internal);\n }\n\n override path(includeHash: boolean = false): string {\n const pathname =\n this._platformLocation.pathname + normalizeQueryParams(this._platformLocation.search);\n const hash = this._platformLocation.hash;\n return hash && includeHash ? `${pathname}${hash}` : pathname;\n }\n\n override pushState(state: any, title: string, url: string, queryParams: string) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.pushState(state, title, externalUrl);\n }\n\n override replaceState(state: any, title: string, url: string, queryParams: string) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.replaceState(state, title, externalUrl);\n }\n\n override forward(): void {\n this._platformLocation.forward();\n }\n\n override back(): void {\n this._platformLocation.back();\n }\n\n override historyGo(relativePosition: number = 0): void {\n this._platformLocation.historyGo?.(relativePosition);\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\nimport {Inject, Injectable, OnDestroy, Optional} from '@angular/core';\n\nimport {APP_BASE_HREF, LocationStrategy} from './location_strategy';\nimport {LocationChangeListener, PlatformLocation} from './platform_location';\nimport {joinWithSlash, normalizeQueryParams} from './util';\n\n\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 */\n@Injectable()\nexport class HashLocationStrategy extends LocationStrategy implements OnDestroy {\n private _baseHref: string = '';\n private _removeListenerFns: (() => void)[] = [];\n\n constructor(\n private _platformLocation: PlatformLocation,\n @Optional() @Inject(APP_BASE_HREF) _baseHref?: string) {\n super();\n if (_baseHref != null) {\n this._baseHref = _baseHref;\n }\n }\n\n ngOnDestroy(): void {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()!();\n }\n }\n\n override onPopState(fn: LocationChangeListener): void {\n this._removeListenerFns.push(\n this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n\n override getBaseHref(): string {\n return this._baseHref;\n }\n\n override path(includeHash: boolean = false): string {\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) path = '#';\n\n return path.length > 0 ? path.substring(1) : path;\n }\n\n override prepareExternalUrl(internal: string): string {\n const url = joinWithSlash(this._baseHref, internal);\n return url.length > 0 ? ('#' + url) : url;\n }\n\n override pushState(state: any, title: string, path: string, queryParams: string) {\n let url: string|null = 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\n override replaceState(state: any, title: string, path: string, queryParams: string) {\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\n override forward(): void {\n this._platformLocation.forward();\n }\n\n override back(): void {\n this._platformLocation.back();\n }\n\n override historyGo(relativePosition: number = 0): void {\n this._platformLocation.historyGo?.(relativePosition);\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\nimport {EventEmitter, Injectable, ɵɵinject} from '@angular/core';\nimport {SubscriptionLike} from 'rxjs';\nimport {LocationStrategy} from './location_strategy';\nimport {PlatformLocation} from './platform_location';\nimport {joinWithSlash, normalizeQueryParams, stripTrailingSlash} from './util';\n\n/** @publicApi */\nexport interface PopStateEvent {\n pop?: boolean;\n state?: any;\n type?: string;\n url?: string;\n}\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 */\n@Injectable({\n providedIn: 'root',\n // See #23917\n useFactory: createLocation,\n})\nexport class Location {\n /** @internal */\n _subject: EventEmitter = new EventEmitter();\n /** @internal */\n _baseHref: string;\n /** @internal */\n _platformStrategy: LocationStrategy;\n /** @internal */\n _platformLocation: PlatformLocation;\n /** @internal */\n _urlChangeListeners: ((url: string, state: unknown) => void)[] = [];\n /** @internal */\n _urlChangeSubscription?: SubscriptionLike;\n\n constructor(platformStrategy: LocationStrategy, platformLocation: PlatformLocation) {\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 /**\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: boolean = false): string {\n return this.normalize(this._platformStrategy.path(includeHash));\n }\n\n /**\n * Reports the current state of the location history.\n * @returns The current value of the `history.state` object.\n */\n getState(): unknown {\n return this._platformLocation.getState();\n }\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: string, query: string = ''): boolean {\n return this.path() == this.normalize(path + normalizeQueryParams(query));\n }\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: string): string {\n return Location.stripTrailingSlash(_stripBaseHref(this._baseHref, _stripIndexHtml(url)));\n }\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: string): string {\n if (url && url[0] !== '/') {\n url = '/' + url;\n }\n return this._platformStrategy.prepareExternalUrl(url);\n }\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: string, query: string = '', state: any = null): void {\n this._platformStrategy.pushState(state, '', path, query);\n this._notifyUrlChangeListeners(\n this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\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: string, query: string = '', state: any = null): void {\n this._platformStrategy.replaceState(state, '', path, query);\n this._notifyUrlChangeListeners(\n this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n\n /**\n * Navigates forward in the platform's history.\n */\n forward(): void {\n this._platformStrategy.forward();\n }\n\n /**\n * Navigates back in the platform's history.\n */\n back(): void {\n this._platformStrategy.back();\n }\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: number = 0): void {\n this._platformStrategy.historyGo?.(relativePosition);\n }\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: (url: string, state: unknown) => void) {\n this._urlChangeListeners.push(fn);\n\n if (!this._urlChangeSubscription) {\n this._urlChangeSubscription = this.subscribe(v => {\n this._notifyUrlChangeListeners(v.url, v.state);\n });\n }\n }\n\n /** @internal */\n _notifyUrlChangeListeners(url: string = '', state: unknown) {\n this._urlChangeListeners.forEach(fn => fn(url, state));\n }\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(\n onNext: (value: PopStateEvent) => void, onThrow?: ((exception: any) => void)|null,\n onReturn?: (() => void)|null): SubscriptionLike {\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 */\n public static normalizeQueryParams: (params: string) => string = normalizeQueryParams;\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 */\n public static joinWithSlash: (start: string, end: string) => string = joinWithSlash;\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 */\n public static stripTrailingSlash: (url: string) => string = stripTrailingSlash;\n}\n\nexport function createLocation() {\n return new Location(ɵɵinject(LocationStrategy as any), ɵɵinject(PlatformLocation as any));\n}\n\nfunction _stripBaseHref(baseHref: string, url: string): string {\n return baseHref && url.startsWith(baseHref) ? url.substring(baseHref.length) : url;\n}\n\nfunction _stripIndexHtml(url: string): string {\n return url.replace(/\\/index.html$/, '');\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\nimport {ɵCurrencyIndex, ɵExtraLocaleDataIndex, ɵfindLocaleData, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, ɵLocaleDataIndex} from '@angular/core';\n\nimport {CURRENCIES_EN, CurrenciesSymbols} from './currencies';\n\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)\n *\n * @publicApi\n */\nexport enum NumberFormatStyle {\n Decimal,\n Percent,\n Currency,\n Scientific\n}\n\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)\n *\n * @publicApi\n */\nexport enum Plural {\n Zero = 0,\n One = 1,\n Two = 2,\n Few = 3,\n Many = 4,\n Other = 5,\n}\n\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)\n *\n * @publicApi\n */\nexport enum FormStyle {\n Format,\n Standalone\n}\n\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 */\nexport enum TranslationWidth {\n /** 1 character for `en-US`. For example: 'S' */\n Narrow,\n /** 3 characters for `en-US`. For example: 'Sun' */\n Abbreviated,\n /** Full length for `en-US`. For example: \"Sunday\" */\n Wide,\n /** 2 characters for `en-US`, For example: \"Su\" */\n Short\n}\n\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)\n * @publicApi\n */\nexport enum FormatWidth {\n /**\n * For `en-US`, 'M/d/yy, h:mm a'`\n * (Example: `6/15/15, 9:03 AM`)\n */\n Short,\n /**\n * For `en-US`, `'MMM d, y, h:mm:ss a'`\n * (Example: `Jun 15, 2015, 9:03:01 AM`)\n */\n 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 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 Full\n}\n\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)\n *\n * @publicApi\n */\nexport enum NumberSymbol {\n /**\n * Decimal separator.\n * For `en-US`, the dot character.\n * Example: 2,345`.`67\n */\n Decimal,\n /**\n * Grouping separator, typically for thousands.\n * For `en-US`, the comma character.\n * Example: 2`,`345.67\n */\n Group,\n /**\n * List-item separator.\n * Example: \"one, two, and three\"\n */\n List,\n /**\n * Sign for percentage (out of 100).\n * Example: 23.4%\n */\n PercentSign,\n /**\n * Sign for positive numbers.\n * Example: +23\n */\n PlusSign,\n /**\n * Sign for negative numbers.\n * Example: -23\n */\n MinusSign,\n /**\n * Computer notation for exponential value (n times a power of 10).\n * Example: 1.2E3\n */\n Exponential,\n /**\n * Human-readable format of exponential.\n * Example: 1.2x103\n */\n SuperscriptingExponent,\n /**\n * Sign for permille (out of 1000).\n * Example: 23.4‰\n */\n PerMille,\n /**\n * Infinity, can be used with plus and minus.\n * Example: ∞, +∞, -∞\n */\n Infinity,\n /**\n * Not a number.\n * Example: NaN\n */\n NaN,\n /**\n * Symbol used between time units.\n * Example: 10:52\n */\n TimeSeparator,\n /**\n * Decimal separator for currency values (fallback to `Decimal`).\n * Example: $2,345.67\n */\n CurrencyDecimal,\n /**\n * Group separator for currency values (fallback to `Group`).\n * Example: $2,345.67\n */\n CurrencyGroup\n}\n\n/**\n * The value for each day of the week, based on the `en-US` locale\n *\n * @publicApi\n */\nexport enum WeekDay {\n Sunday = 0,\n Monday,\n Tuesday,\n Wednesday,\n Thursday,\n Friday,\n Saturday\n}\n\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)\n *\n * @publicApi\n */\nexport function getLocaleId(locale: string): string {\n return ɵfindLocaleData(locale)[ɵLocaleDataIndex.LocaleId];\n}\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)\n *\n * @publicApi\n */\nexport function getLocaleDayPeriods(\n locale: string, formStyle: FormStyle, width: TranslationWidth): Readonly<[string, string]> {\n const data = ɵfindLocaleData(locale);\n const amPmData = <[string, string][][]>[\n data[ɵLocaleDataIndex.DayPeriodsFormat], data[ɵLocaleDataIndex.DayPeriodsStandalone]\n ];\n const amPm = getLastDefinedValue(amPmData, formStyle);\n return getLastDefinedValue(amPm, width);\n}\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)\n *\n * @publicApi\n */\nexport function getLocaleDayNames(\n locale: string, formStyle: FormStyle, width: TranslationWidth): ReadonlyArray {\n const data = ɵfindLocaleData(locale);\n const daysData =\n [data[ɵLocaleDataIndex.DaysFormat], data[ɵLocaleDataIndex.DaysStandalone]];\n const days = getLastDefinedValue(daysData, formStyle);\n return getLastDefinedValue(days, width);\n}\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)\n *\n * @publicApi\n */\nexport function getLocaleMonthNames(\n locale: string, formStyle: FormStyle, width: TranslationWidth): ReadonlyArray {\n const data = ɵfindLocaleData(locale);\n const monthsData =\n [data[ɵLocaleDataIndex.MonthsFormat], data[ɵLocaleDataIndex.MonthsStandalone]];\n const months = getLastDefinedValue(monthsData, formStyle);\n return getLastDefinedValue(months, width);\n}\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)\n *\n * @publicApi\n */\nexport function getLocaleEraNames(\n locale: string, width: TranslationWidth): Readonly<[string, string]> {\n const data = ɵfindLocaleData(locale);\n const erasData = <[string, string][]>data[ɵLocaleDataIndex.Eras];\n return getLastDefinedValue(erasData, width);\n}\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)\n *\n * @publicApi\n */\nexport function getLocaleFirstDayOfWeek(locale: string): WeekDay {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.FirstDayOfWeek];\n}\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)\n *\n * @publicApi\n */\nexport function getLocaleWeekEndRange(locale: string): [WeekDay, WeekDay] {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.WeekendRange];\n}\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)\n *\n * @publicApi\n */\nexport function getLocaleDateFormat(locale: string, width: FormatWidth): string {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.DateFormat], width);\n}\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)\n\n * @publicApi\n */\nexport function getLocaleTimeFormat(locale: string, width: FormatWidth): string {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.TimeFormat], width);\n}\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)\n *\n * @publicApi\n */\nexport function getLocaleDateTimeFormat(locale: string, width: FormatWidth): string {\n const data = ɵfindLocaleData(locale);\n const dateTimeFormatData = data[ɵLocaleDataIndex.DateTimeFormat];\n return getLastDefinedValue(dateTimeFormatData, width);\n}\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)\n *\n * @publicApi\n */\nexport function getLocaleNumberSymbol(locale: string, symbol: NumberSymbol): string {\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 } else if (symbol === NumberSymbol.CurrencyGroup) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Group];\n }\n }\n return res;\n}\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)\n *\n * @publicApi\n */\nexport function getLocaleNumberFormat(locale: string, type: NumberFormatStyle): string {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.NumberFormats][type];\n}\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)\n *\n * @publicApi\n */\nexport function getLocaleCurrencySymbol(locale: string): string|null {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencySymbol] || null;\n}\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)\n *\n * @publicApi\n */\nexport function getLocaleCurrencyName(locale: string): string|null {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencyName] || null;\n}\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 */\nexport function getLocaleCurrencyCode(locale: string): string|null {\n return ɵgetLocaleCurrencyCode(locale);\n}\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)\n */\nfunction getLocaleCurrencies(locale: string): {[code: string]: CurrenciesSymbols} {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Currencies];\n}\n\n/**\n * @alias core/ɵgetLocalePluralCase\n * @publicApi\n */\nexport const getLocalePluralCase: (locale: string) => ((value: number) => Plural) =\n ɵgetLocalePluralCase;\n\nfunction checkFullData(data: any) {\n if (!data[ɵLocaleDataIndex.ExtraData]) {\n throw new Error(`Missing extra locale data for the locale \"${\n data[ɵLocaleDataIndex\n .LocaleId]}\". Use \"registerLocaleData\" to load new data. See the \"I18n guide\" on angular.io to know more.`);\n }\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#i18n-pipes).\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)\n *\n * @publicApi\n */\nexport function getLocaleExtraDayPeriodRules(locale: string): (Time|[Time, Time])[] {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const rules = data[ɵLocaleDataIndex.ExtraData][ɵExtraLocaleDataIndex.ExtraDayPeriodsRules] || [];\n return rules.map((rule: string|[string, string]) => {\n if (typeof rule === 'string') {\n return extractTime(rule);\n }\n return [extractTime(rule[0]), extractTime(rule[1])];\n });\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#i18n-pipes).\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)\n *\n * @publicApi\n */\nexport function getLocaleExtraDayPeriods(\n locale: string, formStyle: FormStyle, width: TranslationWidth): string[] {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const dayPeriodsData = [\n data[ɵLocaleDataIndex.ExtraData][ɵExtraLocaleDataIndex.ExtraDayPeriodFormats],\n data[ɵLocaleDataIndex.ExtraData][ɵExtraLocaleDataIndex.ExtraDayPeriodStandalone]\n ];\n const dayPeriods = getLastDefinedValue(dayPeriodsData, formStyle) || [];\n return getLastDefinedValue(dayPeriods, width) || [];\n}\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)\n */\nexport function getLocaleDirection(locale: string): 'ltr'|'rtl' {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Directionality];\n}\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)\n *\n * @publicApi\n */\nfunction getLastDefinedValue(data: T[], index: number): T {\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/**\n * Represents a time value with hours and minutes.\n *\n * @publicApi\n */\nexport type Time = {\n hours: number,\n minutes: number\n};\n\n/**\n * Extracts the hours and minutes from a string like \"15:45\"\n */\nfunction extractTime(time: string): Time {\n const [h, m] = time.split(':');\n return {hours: +h, minutes: +m};\n}\n\n\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)\n *\n * @publicApi\n */\nexport function getCurrencySymbol(code: string, format: 'wide'|'narrow', locale = 'en'): string {\n const currency = getLocaleCurrencies(locale)[code] || CURRENCIES_EN[code] || [];\n const symbolNarrow = currency[ɵCurrencyIndex.SymbolNarrow];\n\n if (format === 'narrow' && typeof symbolNarrow === 'string') {\n return symbolNarrow;\n }\n\n return currency[ɵCurrencyIndex.Symbol] || code;\n}\n\n// Most currencies have cents, that's why the default is 2\nconst DEFAULT_NB_OF_CURRENCY_DIGITS = 2;\n\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)\n *\n * @publicApi\n */\nexport function getNumberOfCurrencyDigits(code: string): number {\n let digits;\n const currency = CURRENCIES_EN[code];\n if (currency) {\n digits = currency[ɵCurrencyIndex.NbOfDigits];\n }\n return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS;\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\nimport {FormatWidth, FormStyle, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleId, getLocaleMonthNames, getLocaleNumberSymbol, getLocaleTimeFormat, NumberSymbol, Time, TranslationWidth} from './locale_data_api';\n\nexport const ISO8601_DATE_REGEX =\n /^(\\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: {[localeId: string]: {[format: string]: string}} = {};\nconst DATE_FORMATS_SPLIT =\n /((?:[^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]*)/;\n\nenum ZoneWidth {\n Short,\n ShortGMT,\n Long,\n Extended\n}\n\nenum DateType {\n FullYear,\n Month,\n Date,\n Hours,\n Minutes,\n Seconds,\n FractionalSeconds,\n Day\n}\n\nenum TranslationType {\n DayPeriods,\n Days,\n Months,\n Eras\n}\n\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)\n *\n * @publicApi\n */\nexport function formatDate(\n value: string|number|Date, format: string, locale: string, timezone?: string): string {\n let date = toDate(value);\n const namedFormat = getNamedFormat(locale, format);\n format = namedFormat || format;\n\n let parts: string[] = [];\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 } else {\n parts.push(format);\n break;\n }\n }\n\n let dateTimezoneOffset = date.getTimezoneOffset();\n if (timezone) {\n dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n date = convertTimezoneToLocal(date, timezone, true);\n }\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\n return text;\n}\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: number, month: number, date: number): 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\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\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\n return newDate;\n}\n\nfunction getNamedFormat(locale: string, format: string): string {\n const localeId = getLocaleId(locale);\n NAMED_FORMATS[localeId] = NAMED_FORMATS[localeId] || {};\n\n if (NAMED_FORMATS[localeId][format]) {\n return NAMED_FORMATS[localeId][format];\n }\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(\n 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(\n 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}\n\nfunction formatDateTime(str: string, opt_values: string[]) {\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}\n\nfunction padNumber(\n num: number, digits: number, minusSign = '-', trim?: boolean, negWrap?: boolean): string {\n let neg = '';\n if (num < 0 || (negWrap && num <= 0)) {\n if (negWrap) {\n num = -num + 1;\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}\n\nfunction formatFractionalSeconds(milliseconds: number, digits: number): string {\n const strMs = padNumber(milliseconds, 3);\n return strMs.substr(0, digits);\n}\n\n/**\n * Returns a date formatter that transforms a date into its locale digit representation\n */\nfunction dateGetter(\n name: DateType, size: number, offset: number = 0, trim = false,\n negWrap = false): DateFormatter {\n return function(date: Date, locale: string): string {\n let part = getDatePart(name, date);\n if (offset > 0 || part > -offset) {\n part += offset;\n }\n\n if (name === DateType.Hours) {\n if (part === 0 && offset === -12) {\n part = 12;\n }\n } else if (name === DateType.FractionalSeconds) {\n return formatFractionalSeconds(part, size);\n }\n\n const localeMinus = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n return padNumber(part, size, localeMinus, trim, negWrap);\n };\n}\n\nfunction getDatePart(part: DateType, date: Date): number {\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/**\n * Returns a date formatter that transforms a date into its locale string representation\n */\nfunction dateStrGetter(\n name: TranslationType, width: TranslationWidth, form: FormStyle = FormStyle.Format,\n extended = false): DateFormatter {\n return function(date: Date, locale: string): string {\n return getDateTranslation(date, locale, name, width, form, extended);\n };\n}\n\n/**\n * Returns the locale translation of a date for a given form, type and width\n */\nfunction getDateTranslation(\n date: Date, locale: string, name: TranslationType, width: TranslationWidth, form: FormStyle,\n extended: boolean) {\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 =\n (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 } else if (afterFrom || beforeTo) {\n return true;\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: never = name;\n throw new Error(`unexpected translation type ${unexpected}`);\n }\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: ZoneWidth): DateFormatter {\n return function(date: Date, locale: string, offset: number) {\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 } 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}\n\nconst JANUARY = 0;\nconst THURSDAY = 4;\nfunction getFirstThursdayOfYear(year: number) {\n const firstDayOfYear = createDate(year, JANUARY, 1).getDay();\n return createDate(\n year, 0, 1 + ((firstDayOfYear <= THURSDAY) ? THURSDAY : THURSDAY + 7) - firstDayOfYear);\n}\n\nfunction getThursdayThisWeek(datetime: Date) {\n return createDate(\n datetime.getFullYear(), datetime.getMonth(),\n datetime.getDate() + (THURSDAY - datetime.getDay()));\n}\n\nfunction weekGetter(size: number, monthBased = false): DateFormatter {\n return function(date: Date, locale: string) {\n let result;\n if (monthBased) {\n const nbDaysBefore1stDayOfMonth =\n new Date(date.getFullYear(), date.getMonth(), 1).getDay() - 1;\n const today = date.getDate();\n result = 1 + Math.floor((today + nbDaysBefore1stDayOfMonth) / 7);\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\n return padNumber(result, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n };\n}\n\n/**\n * Returns a date formatter that provides the week-numbering year for the input date.\n */\nfunction weekNumberingYearGetter(size: number, trim = false): DateFormatter {\n return function(date: Date, locale: string) {\n const thisThurs = getThursdayThisWeek(date);\n const weekNumberingYear = thisThurs.getFullYear();\n return padNumber(\n weekNumberingYear, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign), trim);\n };\n}\n\ntype DateFormatter = (date: Date, locale: string, offset: number) => string;\n\nconst DATE_FORMATS: {[format: string]: DateFormatter} = {};\n\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: string): DateFormatter|null {\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\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\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\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\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\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\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\n // Week of the month (1, ...)\n case 'W':\n formatter = weekGetter(1, true);\n break;\n\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\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\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\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\n // Extended period of the day (midnight, at night, ...), standalone\n case 'b':\n case 'bb':\n case 'bbb':\n formatter = dateStrGetter(\n TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Standalone, true);\n break;\n case 'bbbb':\n formatter = dateStrGetter(\n TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Standalone, true);\n break;\n case 'bbbbb':\n formatter = dateStrGetter(\n TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Standalone, true);\n break;\n\n // Extended period of the day (midnight, night, ...), standalone\n case 'B':\n case 'BB':\n case 'BBB':\n formatter = dateStrGetter(\n 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(\n TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Format, true);\n break;\n\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\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\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\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\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\n\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\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}\n\nfunction timezoneToOffset(timezone: string, fallback: number): number {\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}\n\nfunction addDateMinutes(date: Date, minutes: number) {\n date = new Date(date.getTime());\n date.setMinutes(date.getMinutes() + minutes);\n return date;\n}\n\nfunction convertTimezoneToLocal(date: Date, timezone: string, reverse: boolean): Date {\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/**\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 */\nexport function toDate(value: string|number|Date): Date {\n if (isDate(value)) {\n return value;\n }\n\n if (typeof value === 'number' && !isNaN(value)) {\n return new Date(value);\n }\n\n if (typeof value === 'string') {\n value = value.trim();\n\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: string) => +val);\n return createDate(y, m - 1, d);\n }\n\n const parsedNb = parseFloat(value);\n\n // any string that only contains numbers, like \"1234\" but not like \"1234hello\"\n if (!isNaN(value as any - parsedNb)) {\n return new Date(parsedNb);\n }\n\n let match: RegExpMatchArray|null;\n if (match = value.match(ISO8601_DATE_REGEX)) {\n return isoStringToDate(match);\n }\n }\n\n const date = new Date(value as any);\n if (!isDate(date)) {\n throw new Error(`Unable to convert \"${value}\" into a date`);\n }\n return date;\n}\n\n/**\n * Converts a date in ISO8601 to a Date.\n * Used instead of `Date.parse` because of browser discrepancies.\n */\nexport function isoStringToDate(match: RegExpMatchArray): Date {\n const date = new Date(0);\n let tzHour = 0;\n let tzMin = 0;\n\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\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}\n\nexport function isDate(value: any): value is Date {\n return value instanceof Date && !isNaN(value.valueOf());\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\nimport {Inject, Injectable, LOCALE_ID} from '@angular/core';\n\nimport {getLocalePluralCase, Plural} from './locale_data_api';\n\n\n/**\n * @publicApi\n */\nexport abstract class NgLocalization {\n abstract getPluralCategory(value: any, locale?: string): string;\n}\n\n\n/**\n * Returns the plural category for a given value.\n * - \"=value\" when the case exists,\n * - the plural category otherwise\n */\nexport function getPluralCategory(\n value: number, cases: string[], ngLocalization: NgLocalization, locale?: string): string {\n let key = `=${value}`;\n\n if (cases.indexOf(key) > -1) {\n return key;\n }\n\n key = ngLocalization.getPluralCategory(value, locale);\n\n if (cases.indexOf(key) > -1) {\n return key;\n }\n\n if (cases.indexOf('other') > -1) {\n return 'other';\n }\n\n throw new Error(`No plural message found for value \"${value}\"`);\n}\n\n/**\n * Returns the plural case based on the locale\n *\n * @publicApi\n */\n@Injectable()\nexport class NgLocaleLocalization extends NgLocalization {\n constructor(@Inject(LOCALE_ID) protected locale: string) {\n super();\n }\n\n override getPluralCategory(value: any, locale?: string): string {\n const plural = getLocalePluralCase(locale || this.locale)(value);\n\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}\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 function parseCookieValue(cookieStr: string, name: string): string|null {\n name = encodeURIComponent(name);\n for (const cookie of cookieStr.split(';')) {\n const eqIndex = cookie.indexOf('=');\n const [cookieName, cookieValue]: string[] =\n 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 * @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 */\nimport {Directive, DoCheck, ElementRef, Input, IterableChanges, IterableDiffer, IterableDiffers, KeyValueChanges, KeyValueDiffer, KeyValueDiffers, Renderer2, ɵisListLikeIterable as isListLikeIterable, ɵstringify as stringify} from '@angular/core';\n\ntype NgClassSupportedTypes = string[]|Set|{[klass: string]: any}|null|undefined;\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 */\n@Directive({selector: '[ngClass]'})\nexport class NgClass implements DoCheck {\n private _iterableDiffer: IterableDiffer|null = null;\n private _keyValueDiffer: KeyValueDiffer|null = null;\n private _initialClasses: string[] = [];\n private _rawClass: NgClassSupportedTypes = null;\n\n constructor(\n private _iterableDiffers: IterableDiffers, private _keyValueDiffers: KeyValueDiffers,\n private _ngEl: ElementRef, private _renderer: Renderer2) {}\n\n\n @Input('class')\n set klass(value: string) {\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\n @Input('ngClass')\n set ngClass(value: string|string[]|Set|{[klass: string]: any}) {\n this._removeClasses(this._rawClass);\n this._applyClasses(this._initialClasses);\n\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n\n this._rawClass = typeof value === 'string' ? value.split(/\\s+/) : value;\n\n if (this._rawClass) {\n if (isListLikeIterable(this._rawClass)) {\n this._iterableDiffer = this._iterableDiffers.find(this._rawClass).create();\n } else {\n this._keyValueDiffer = this._keyValueDiffers.find(this._rawClass).create();\n }\n }\n }\n\n ngDoCheck() {\n if (this._iterableDiffer) {\n const iterableChanges = this._iterableDiffer.diff(this._rawClass as string[]);\n if (iterableChanges) {\n this._applyIterableChanges(iterableChanges);\n }\n } else if (this._keyValueDiffer) {\n const keyValueChanges = this._keyValueDiffer.diff(this._rawClass as {[k: string]: any});\n if (keyValueChanges) {\n this._applyKeyValueChanges(keyValueChanges);\n }\n }\n }\n\n private _applyKeyValueChanges(changes: KeyValueChanges): void {\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\n private _applyIterableChanges(changes: IterableChanges): void {\n changes.forEachAddedItem((record) => {\n if (typeof record.item === 'string') {\n this._toggleClass(record.item, true);\n } else {\n throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${\n stringify(record.item)}`);\n }\n });\n\n changes.forEachRemovedItem((record) => this._toggleClass(record.item, false));\n }\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 private _applyClasses(rawClassVal: NgClassSupportedTypes) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n (rawClassVal).forEach((klass: string) => this._toggleClass(klass, true));\n } else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, !!rawClassVal[klass]));\n }\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 private _removeClasses(rawClassVal: NgClassSupportedTypes) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n (rawClassVal).forEach((klass: string) => this._toggleClass(klass, false));\n } else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, false));\n }\n }\n }\n\n private _toggleClass(klass: string, enabled: boolean): void {\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 } else {\n this._renderer.removeClass(this._ngEl.nativeElement, klass);\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\nimport {Directive, DoCheck, EmbeddedViewRef, Input, IterableChangeRecord, IterableChanges, IterableDiffer, IterableDiffers, NgIterable, TemplateRef, TrackByFunction, ViewContainerRef} from '@angular/core';\n\n/**\n * @publicApi\n */\nexport class NgForOfContext = NgIterable> {\n constructor(public $implicit: T, public ngForOf: U, public index: number, public count: number) {}\n\n get first(): boolean {\n return this.index === 0;\n }\n\n get last(): boolean {\n return this.index === this.count - 1;\n }\n\n get even(): boolean {\n return this.index % 2 === 0;\n }\n\n get odd(): boolean {\n return !this.even;\n }\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 */\n@Directive({selector: '[ngFor][ngForOf]'})\nexport class NgForOf = NgIterable> implements DoCheck {\n /**\n * The value of the iterable expression, which can be used as a\n * [template input variable](guide/structural-directives#shorthand).\n */\n @Input()\n set ngForOf(ngForOf: U&NgIterable|undefined|null) {\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 @Input()\n set ngForTrackBy(fn: TrackByFunction) {\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(\n `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\n get ngForTrackBy(): TrackByFunction {\n return this._trackByFn;\n }\n\n private _ngForOf: U|undefined|null = null;\n private _ngForOfDirty: boolean = true;\n private _differ: IterableDiffer|null = null;\n // TODO(issue/24571): remove '!'.\n private _trackByFn!: TrackByFunction;\n\n constructor(\n private _viewContainer: ViewContainerRef,\n private _template: TemplateRef>, private _differs: IterableDiffers) {}\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 @Input()\n set ngForTemplate(value: TemplateRef>) {\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 /**\n * Applies the changes when needed.\n */\n ngDoCheck(): void {\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 } catch {\n throw new Error(`Cannot find a differ supporting object '${value}' of type '${\n 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) this._applyChanges(changes);\n }\n }\n\n private _applyChanges(changes: IterableChanges) {\n const insertTuples: RecordViewTuple[] = [];\n changes.forEachOperation(\n (item: IterableChangeRecord, adjustedPreviousIndex: number|null,\n currentIndex: number|null) => {\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(\n this._template, new NgForOfContext(null!, this._ngForOf!, -1, -1),\n currentIndex === null ? undefined : currentIndex);\n const tuple = new RecordViewTuple(item, view);\n insertTuples.push(tuple);\n } else if (currentIndex == null) {\n this._viewContainer.remove(\n adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex);\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\n for (let i = 0; i < insertTuples.length; i++) {\n this._perViewChange(insertTuples[i].view, insertTuples[i].record);\n }\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\n changes.forEachIdentityChange((record: any) => {\n const viewRef =\n >>this._viewContainer.get(record.currentIndex);\n viewRef.context.$implicit = record.item;\n });\n }\n\n private _perViewChange(\n view: EmbeddedViewRef>, record: IterableChangeRecord) {\n view.context.$implicit = record.item;\n }\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: NgForOf, ctx: any):\n ctx is NgForOfContext {\n return true;\n }\n}\n\nclass RecordViewTuple> {\n constructor(public record: any, public view: EmbeddedViewRef>) {}\n}\n\nfunction getTypeName(type: any): string {\n return type['name'] || typeof type;\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\nimport {Directive, EmbeddedViewRef, Input, TemplateRef, ViewContainerRef, ɵstringify as stringify} from '@angular/core';\n\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 */\n@Directive({selector: '[ngIf]'})\nexport class NgIf {\n private _context: NgIfContext = new NgIfContext();\n private _thenTemplateRef: TemplateRef>|null = null;\n private _elseTemplateRef: TemplateRef>|null = null;\n private _thenViewRef: EmbeddedViewRef>|null = null;\n private _elseViewRef: EmbeddedViewRef>|null = null;\n\n constructor(private _viewContainer: ViewContainerRef, templateRef: TemplateRef>) {\n this._thenTemplateRef = templateRef;\n }\n\n /**\n * The Boolean expression to evaluate as the condition for showing a template.\n */\n @Input()\n set ngIf(condition: T) {\n this._context.$implicit = this._context.ngIf = condition;\n this._updateView();\n }\n\n /**\n * A template to show if the condition expression evaluates to true.\n */\n @Input()\n set ngIfThen(templateRef: TemplateRef>|null) {\n assertTemplate('ngIfThen', templateRef);\n this._thenTemplateRef = templateRef;\n this._thenViewRef = null; // clear previous view if any.\n this._updateView();\n }\n\n /**\n * A template to show if the condition expression evaluates to false.\n */\n @Input()\n set ngIfElse(templateRef: TemplateRef>|null) {\n assertTemplate('ngIfElse', templateRef);\n this._elseTemplateRef = templateRef;\n this._elseViewRef = null; // clear previous view if any.\n this._updateView();\n }\n\n private _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 } 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 /** @internal */\n public static ngIfUseIfTypeGuard: void;\n\n /**\n * Assert the correct type of the expression bound to the `ngIf` input within the template.\n *\n * The presence of this static field is a signal to the Ivy template type check compiler that\n * when the `NgIf` structural directive renders its template, the type of the expression bound\n * to `ngIf` should be narrowed in some way. For `NgIf`, the binding expression itself is used to\n * narrow its type, which allows the strictNullChecks feature of TypeScript to work with `NgIf`.\n */\n static ngTemplateGuard_ngIf: 'binding';\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: NgIf, ctx: any):\n ctx is NgIfContext> {\n return true;\n }\n}\n\n/**\n * @publicApi\n */\nexport class NgIfContext {\n public $implicit: T = null!;\n public ngIf: T = null!;\n}\n\nfunction assertTemplate(property: string, templateRef: TemplateRef|null): void {\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 * @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\nimport {Directive, DoCheck, Host, Input, Optional, TemplateRef, ViewContainerRef, ɵRuntimeError as RuntimeError, ɵRuntimeErrorCode as RuntimeErrorCode} from '@angular/core';\n\nexport class SwitchView {\n private _created = false;\n\n constructor(\n private _viewContainerRef: ViewContainerRef, private _templateRef: TemplateRef) {}\n\n create(): void {\n this._created = true;\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n\n destroy(): void {\n this._created = false;\n this._viewContainerRef.clear();\n }\n\n enforceState(created: boolean) {\n if (created && !this._created) {\n this.create();\n } else if (!created && this._created) {\n this.destroy();\n }\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 */\n@Directive({selector: '[ngSwitch]'})\nexport class NgSwitch {\n // TODO(issue/24571): remove '!'.\n private _defaultViews!: SwitchView[];\n private _defaultUsed = false;\n private _caseCount = 0;\n private _lastCaseCheckIndex = 0;\n private _lastCasesMatched = false;\n private _ngSwitch: any;\n\n @Input()\n set ngSwitch(newValue: any) {\n this._ngSwitch = newValue;\n if (this._caseCount === 0) {\n this._updateDefaultCases(true);\n }\n }\n\n /** @internal */\n _addCase(): number {\n return this._caseCount++;\n }\n\n /** @internal */\n _addDefault(view: SwitchView) {\n if (!this._defaultViews) {\n this._defaultViews = [];\n }\n this._defaultViews.push(view);\n }\n\n /** @internal */\n _matchCase(value: any): boolean {\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\n private _updateDefaultCases(useDefault: boolean) {\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}\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 */\n@Directive({selector: '[ngSwitchCase]'})\nexport class NgSwitchCase implements DoCheck {\n private _view: SwitchView;\n /**\n * Stores the HTML template to be selected on match.\n */\n @Input() ngSwitchCase: any;\n\n constructor(\n viewContainer: ViewContainerRef, templateRef: TemplateRef,\n @Optional() @Host() private ngSwitch: NgSwitch) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchCase', 'NgSwitchCase');\n }\n\n ngSwitch._addCase();\n this._view = new SwitchView(viewContainer, templateRef);\n }\n\n /**\n * Performs case matching. For internal use only.\n */\n ngDoCheck() {\n this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));\n }\n}\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 */\n@Directive({selector: '[ngSwitchDefault]'})\nexport class NgSwitchDefault {\n constructor(\n viewContainer: ViewContainerRef, templateRef: TemplateRef,\n @Optional() @Host() ngSwitch: NgSwitch) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchDefault', 'NgSwitchDefault');\n }\n\n ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));\n }\n}\n\nfunction throwNgSwitchProviderNotFoundError(attrName: string, directiveName: string): never {\n throw new RuntimeError(\n RuntimeErrorCode.TEMPLATE_STRUCTURE_ERROR,\n `An element with the \"${attrName}\" attribute ` +\n `(matching the \"${\n directiveName}\" directive) must be located inside an element with the \"ngSwitch\" attribute ` +\n `(matching \"NgSwitch\" directive)`);\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 */\nimport {Directive, DoCheck, ElementRef, Input, KeyValueChanges, KeyValueDiffer, KeyValueDiffers, Renderer2} from '@angular/core';\n\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 */\n@Directive({selector: '[ngStyle]'})\nexport class NgStyle implements DoCheck {\n private _ngStyle: {[key: string]: string}|null = null;\n private _differ: KeyValueDiffer|null = null;\n\n constructor(\n private _ngEl: ElementRef, private _differs: KeyValueDiffers, private _renderer: Renderer2) {}\n\n @Input('ngStyle')\n set ngStyle(values: {[klass: string]: any}|null) {\n this._ngStyle = values;\n if (!this._differ && values) {\n this._differ = this._differs.find(values).create();\n }\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\n private _setStyle(nameAndUnit: string, value: string|number|null|undefined): void {\n const [name, unit] = nameAndUnit.split('.');\n value = value != null && unit ? `${value}${unit}` : value;\n\n if (value != null) {\n this._renderer.setStyle(this._ngEl.nativeElement, name, value as string);\n } else {\n this._renderer.removeStyle(this._ngEl.nativeElement, name);\n }\n }\n\n private _applyChanges(changes: KeyValueChanges): void {\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}\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\nimport {Directive, EmbeddedViewRef, Input, OnChanges, SimpleChange, SimpleChanges, TemplateRef, ViewContainerRef} from '@angular/core';\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 */\n@Directive({selector: '[ngTemplateOutlet]'})\nexport class NgTemplateOutlet implements OnChanges {\n private _viewRef: EmbeddedViewRef|null = null;\n\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 @Input() public ngTemplateOutletContext: Object|null = null;\n\n /**\n * A string defining the template reference and optionally the context object for the template.\n */\n @Input() public ngTemplateOutlet: TemplateRef|null = null;\n\n constructor(private _viewContainerRef: ViewContainerRef) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['ngTemplateOutlet']) {\n const viewContainerRef = this._viewContainerRef;\n\n if (this._viewRef) {\n viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef));\n }\n\n this._viewRef = this.ngTemplateOutlet ?\n viewContainerRef.createEmbeddedView(this.ngTemplateOutlet, this.ngTemplateOutletContext) :\n null;\n } else if (\n this._viewRef && changes['ngTemplateOutletContext'] && this.ngTemplateOutletContext) {\n this._viewRef.context = this.ngTemplateOutletContext;\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\nimport {Inject, LOCALE_ID, Pipe, PipeTransform} from '@angular/core';\nimport {formatDate} from '../i18n/format_date';\nimport {invalidPipeArgumentError} from './invalid_pipe_argument_error';\n\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#i18n-pipes) for more information.\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\n@Pipe({name: 'date', pure: true})\nexport class DatePipe implements PipeTransform {\n constructor(@Inject(LOCALE_ID) private locale: string) {}\n\n /**\n * @param value The date expression: a `Date` object, a number\n * (milliseconds since UTC epoch), or an ISO string (https://www.w3.org/TR/NOTE-datetime).\n * @param format The date/time components to include, using predefined options or a\n * custom format string.\n * @param timezone A timezone offset (such as `'+0430'`), or a standard\n * UTC/GMT or continental US timezone abbreviation.\n * When not supplied, uses the end-user's local system timezone.\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#setting-up-the-locale-of-your-app).\n * @returns A date string in the desired format.\n */\n transform(value: Date|string|number, format?: string, timezone?: string, locale?: string): string\n |null;\n transform(value: null|undefined, format?: string, timezone?: string, locale?: string): null;\n transform(\n value: Date|string|number|null|undefined, format?: string, timezone?: string,\n locale?: string): string|null;\n transform(\n value: Date|string|number|null|undefined, format = 'mediumDate', timezone?: string,\n locale?: string): string|null {\n if (value == null || value === '' || value !== value) return null;\n\n try {\n return formatDate(value, format, locale || this.locale, timezone);\n } catch (error) {\n throw invalidPipeArgumentError(DatePipe, error.message);\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\nimport {Type, ɵstringify as stringify} from '@angular/core';\n\nexport function invalidPipeArgumentError(type: Type, value: Object) {\n return Error(`InvalidPipeArgument: '${value}' for pipe '${stringify(type)}'`);\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\nimport {NgModule} from '@angular/core';\nimport {COMMON_DIRECTIVES} from './directives/index';\nimport {NgLocaleLocalization, NgLocalization} from './i18n/localization';\nimport {COMMON_PIPES} from './pipes/index';\n\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 */\n@NgModule({\n declarations: [COMMON_DIRECTIVES, COMMON_PIPES],\n exports: [COMMON_DIRECTIVES, COMMON_PIPES],\n providers: [\n {provide: NgLocalization, useClass: NgLocaleLocalization},\n ],\n})\nexport class CommonModule {\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 const PLATFORM_BROWSER_ID = 'browser';\nexport const PLATFORM_SERVER_ID = 'server';\nexport const PLATFORM_WORKER_APP_ID = 'browserWorkerApp';\nexport const PLATFORM_WORKER_UI_ID = 'browserWorkerUi';\n\n/**\n * Returns whether a platform id represents a browser platform.\n * @publicApi\n */\nexport function isPlatformBrowser(platformId: Object): boolean {\n return platformId === PLATFORM_BROWSER_ID;\n}\n\n/**\n * Returns whether a platform id represents a server platform.\n * @publicApi\n */\nexport function isPlatformServer(platformId: Object): boolean {\n return platformId === PLATFORM_SERVER_ID;\n}\n\n/**\n * Returns whether a platform id represents a web worker app platform.\n * @publicApi\n */\nexport function isPlatformWorkerApp(platformId: Object): boolean {\n return platformId === PLATFORM_WORKER_APP_ID;\n}\n\n/**\n * Returns whether a platform id represents a web worker UI platform.\n * @publicApi\n */\nexport function isPlatformWorkerUi(platformId: Object): boolean {\n return platformId === PLATFORM_WORKER_UI_ID;\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\nimport {ɵɵdefineInjectable, ɵɵinject} from '@angular/core';\n\nimport {DOCUMENT} from './dom_tokens';\n\n\n\n/**\n * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.\n *\n * @publicApi\n */\nexport abstract class ViewportScroller {\n // De-sugared tree-shakable injection\n // See #23917\n /** @nocollapse */\n static ɵprov = /** @pureOrBreakMyCode */ ɵɵdefineInjectable({\n token: ViewportScroller,\n providedIn: 'root',\n factory: () => new BrowserViewportScroller(ɵɵinject(DOCUMENT), window)\n });\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 abstract setOffset(offset: [number, number]|(() => [number, number])): void;\n\n /**\n * Retrieves the current scroll position.\n * @returns A position in screen coordinates (a tuple with x and y values).\n */\n abstract getScrollPosition(): [number, number];\n\n /**\n * Scrolls to a specified position.\n * @param position A position in screen coordinates (a tuple with x and y values).\n */\n abstract scrollToPosition(position: [number, number]): void;\n\n /**\n * Scrolls to an anchor element.\n * @param anchor The ID of the anchor element.\n */\n abstract scrollToAnchor(anchor: string): void;\n\n /**\n * Disables automatic scroll restoration provided by the browser.\n * See also [window.history.scrollRestoration\n * info](https://developers.google.com/web/updates/2015/09/history-api-scroll-restoration).\n */\n abstract setHistoryScrollRestoration(scrollRestoration: 'auto'|'manual'): void;\n}\n\n/**\n * Manages the scroll position for a browser window.\n */\nexport class BrowserViewportScroller implements ViewportScroller {\n private offset: () => [number, number] = () => [0, 0];\n\n constructor(private document: Document, private window: Window) {}\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: [number, number]|(() => [number, number])): void {\n if (Array.isArray(offset)) {\n this.offset = () => offset;\n } else {\n this.offset = offset;\n }\n }\n\n /**\n * Retrieves the current scroll position.\n * @returns The position in screen coordinates.\n */\n getScrollPosition(): [number, number] {\n if (this.supportsScrolling()) {\n return [this.window.pageXOffset, this.window.pageYOffset];\n } else {\n return [0, 0];\n }\n }\n\n /**\n * Sets the scroll position.\n * @param position The new position in screen coordinates.\n */\n scrollToPosition(position: [number, number]): void {\n if (this.supportsScrolling()) {\n this.window.scrollTo(position[0], position[1]);\n }\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: string): void {\n if (!this.supportsScrolling()) {\n return;\n }\n\n const elSelected = findAnchorFromDocument(this.document, target);\n\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 /**\n * Disables automatic scroll restoration provided by the browser.\n */\n setHistoryScrollRestoration(scrollRestoration: 'auto'|'manual'): void {\n if (this.supportScrollRestoration()) {\n const history = this.window.history;\n if (history && history.scrollRestoration) {\n history.scrollRestoration = scrollRestoration;\n }\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 private scrollToElement(el: HTMLElement): void {\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 /**\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 private attemptFocus(focusTarget: HTMLElement): boolean {\n focusTarget.focus();\n return this.document.activeElement === focusTarget;\n }\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 private supportScrollRestoration(): boolean {\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 } catch {\n return false;\n }\n }\n\n private supportsScrolling(): boolean {\n try {\n return !!this.window && !!this.window.scrollTo && 'pageXOffset' in this.window;\n } catch {\n return false;\n }\n }\n}\n\nfunction getScrollRestorationProperty(obj: any): PropertyDescriptor|undefined {\n return Object.getOwnPropertyDescriptor(obj, 'scrollRestoration');\n}\n\nfunction findAnchorFromDocument(document: Document, target: string): HTMLElement|null {\n const documentResult = document.getElementById(target) || document.getElementsByName(target)[0];\n\n if (documentResult) {\n return documentResult;\n }\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 as any).createShadowRoot || document.body.attachShadow)) {\n const treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);\n let currentNode = treeWalker.currentNode as HTMLElement | null;\n\n while (currentNode) {\n const shadowRoot = currentNode.shadowRoot;\n\n if (shadowRoot) {\n // Note that `ShadowRoot` doesn't support `getElementsByName`\n // so we have to fall back to `querySelector`.\n const result =\n shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name=\"${target}\"]`);\n if (result) {\n return result;\n }\n }\n\n currentNode = treeWalker.nextNode() as HTMLElement | null;\n }\n }\n\n return null;\n}\n\n/**\n * Provides an empty implementation of the viewport scroller.\n */\nexport class NullViewportScroller implements ViewportScroller {\n /**\n * Empty implementation\n */\n setOffset(offset: [number, number]|(() => [number, number])): void {}\n\n /**\n * Empty implementation\n */\n getScrollPosition(): [number, number] {\n return [0, 0];\n }\n\n /**\n * Empty implementation\n */\n scrollToPosition(position: [number, number]): void {}\n\n /**\n * Empty implementation\n */\n scrollToAnchor(anchor: string): void {}\n\n /**\n * Empty implementation\n */\n setHistoryScrollRestoration(scrollRestoration: 'auto'|'manual'): void {}\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 * A wrapper around the `XMLHttpRequest` constructor.\n *\n * @publicApi\n */\nexport abstract class XhrFactory {\n abstract build(): XMLHttpRequest;\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\nimport {Observable} from 'rxjs';\nimport {HttpRequest} from './request';\nimport {HttpEvent} from './response';\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 */\nexport abstract class HttpHandler {\n abstract handle(req: HttpRequest): Observable>;\n}\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 */\nexport abstract class HttpBackend implements HttpHandler {\n abstract handle(req: HttpRequest): Observable>;\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\ninterface Update {\n name: string;\n value?: string|string[];\n op: 'a'|'s'|'d';\n}\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 */\nexport class HttpHeaders {\n /**\n * Internal map of lowercase header names to values.\n */\n // TODO(issue/24571): remove '!'.\n private headers!: Map;\n\n\n /**\n * Internal map of lowercased header names to the normalized\n * form of the name (the form seen first).\n */\n private normalizedNames: Map = new Map();\n\n /**\n * Complete the lazy initialization of this object (needed before reading).\n */\n private lazyInit!: HttpHeaders|Function|null;\n\n /**\n * Queued updates to be materialized the next initialization.\n */\n private lazyUpdate: Update[]|null = null;\n\n /** Constructs a new HTTP header object with the given values.*/\n\n constructor(headers?: string|{[name: string]: string | string[]}) {\n if (!headers) {\n this.headers = new Map();\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 } else {\n this.headers.set(key, [value]);\n }\n }\n });\n };\n } else {\n this.lazyInit = () => {\n this.headers = new Map();\n Object.keys(headers).forEach(name => {\n let values: string|string[] = 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 /**\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: string): boolean {\n this.init();\n\n return this.headers.has(name.toLowerCase());\n }\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: string): string|null {\n this.init();\n\n const values = this.headers.get(name.toLowerCase());\n return values && values.length > 0 ? values[0] : null;\n }\n\n /**\n * Retrieves the names of the headers.\n *\n * @returns A list of header names.\n */\n keys(): string[] {\n this.init();\n\n return Array.from(this.normalizedNames.values());\n }\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: string): string[]|null {\n this.init();\n\n return this.headers.get(name.toLowerCase()) || null;\n }\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\n append(name: string, value: string|string[]): HttpHeaders {\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: string, value: string|string[]): HttpHeaders {\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: string, value?: string|string[]): HttpHeaders {\n return this.clone({name, value, op: 'd'});\n }\n\n private maybeSetNormalizedName(name: string, lcName: string): void {\n if (!this.normalizedNames.has(lcName)) {\n this.normalizedNames.set(lcName, name);\n }\n }\n\n private init(): void {\n if (!!this.lazyInit) {\n if (this.lazyInit instanceof HttpHeaders) {\n this.copyFrom(this.lazyInit);\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\n private copyFrom(other: HttpHeaders) {\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\n private clone(update: Update): HttpHeaders {\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\n private applyUpdate(update: Update): void {\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 as string | undefined;\n if (!toDelete) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\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 } else {\n this.headers.set(key, existing);\n }\n }\n break;\n }\n }\n\n /**\n * @internal\n */\n forEach(fn: (name: string, values: string[]) => void) {\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 * @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 * A codec for encoding and decoding parameters in URLs.\n *\n * Used by `HttpParams`.\n *\n * @publicApi\n **/\nexport interface HttpParameterCodec {\n encodeKey(key: string): string;\n encodeValue(value: string): string;\n\n decodeKey(key: string): string;\n decodeValue(value: string): string;\n}\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 */\nexport class HttpUrlEncodingCodec implements HttpParameterCodec {\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: string): string {\n return standardEncoding(key);\n }\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: string): string {\n return standardEncoding(value);\n }\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: string): string {\n return decodeURIComponent(key);\n }\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: string) {\n return decodeURIComponent(value);\n }\n}\n\n\nfunction paramParser(rawParams: string, codec: HttpParameterCodec): Map {\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: string[] = rawParams.replace(/^\\?/, '').split('&');\n params.forEach((param: string) => {\n const eqIdx = param.indexOf('=');\n const [key, val]: string[] = 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/**\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: {[x: string]: string} = {\n '40': '@',\n '3A': ':',\n '24': '$',\n '2C': ',',\n '3B': ';',\n '2B': '+',\n '3D': '=',\n '3F': '?',\n '2F': '/',\n};\n\nfunction standardEncoding(v: string): string {\n return encodeURIComponent(v).replace(\n STANDARD_ENCODING_REGEX, (s, t) => STANDARD_ENCODING_REPLACEMENTS[t] ?? s);\n}\n\nfunction valueToString(value: string|number|boolean): string {\n return `${value}`;\n}\n\ninterface Update {\n param: string;\n value?: string|number|boolean;\n op: 'a'|'d'|'s';\n}\n\n/**\n * Options used to construct an `HttpParams` instance.\n *\n * @publicApi\n */\nexport interface HttpParamsOptions {\n /**\n * String representation of the HTTP parameters in URL-query-string format.\n * Mutually exclusive with `fromObject`.\n */\n fromString?: string;\n\n /** Object map of the HTTP parameters. Mutually exclusive with `fromString`. */\n fromObject?: {[param: string]: string|number|boolean|ReadonlyArray};\n\n /** Encoding codec used to parse and serialize the parameters. */\n encoder?: HttpParameterCodec;\n}\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 */\nexport class HttpParams {\n private map: Map|null;\n private encoder: HttpParameterCodec;\n private updates: Update[]|null = null;\n private cloneFrom: HttpParams|null = null;\n\n constructor(options: HttpParamsOptions = {} as HttpParamsOptions) {\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 } else if (!!options.fromObject) {\n this.map = new Map();\n Object.keys(options.fromObject).forEach(key => {\n const value = (options.fromObject as any)[key];\n this.map!.set(key, Array.isArray(value) ? value : [value]);\n });\n } else {\n this.map = null;\n }\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: string): boolean {\n this.init();\n return this.map!.has(param);\n }\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: string): string|null {\n this.init();\n const res = this.map!.get(param);\n return !!res ? res[0] : null;\n }\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: string): string[]|null {\n this.init();\n return this.map!.get(param) || null;\n }\n\n /**\n * Retrieves all the parameters for this body.\n * @returns The parameter names in a string array.\n */\n keys(): string[] {\n this.init();\n return Array.from(this.map!.keys());\n }\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: string, value: string|number|boolean): HttpParams {\n return this.clone({param, value, op: 'a'});\n }\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: {[param: string]: string|number|boolean|ReadonlyArray}):\n HttpParams {\n const updates: Update[] = [];\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 } else {\n updates.push({param, value: value as (string | number | boolean), op: 'a'});\n }\n });\n return this.clone(updates);\n }\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: string, value: string|number|boolean): HttpParams {\n return this.clone({param, value, op: 's'});\n }\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: string, value?: string|number|boolean): HttpParams {\n return this.clone({param, value, op: 'd'});\n }\n\n /**\n * Serializes the body to an encoded string, where key-value pairs (separated by `=`) are\n * separated by `&`s.\n */\n toString(): string {\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\n private clone(update: Update|Update[]): HttpParams {\n const clone = new HttpParams({encoder: this.encoder} as HttpParamsOptions);\n clone.cloneFrom = this.cloneFrom || this;\n clone.updates = (this.updates || []).concat(update);\n return clone;\n }\n\n private 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 } else {\n this.map!.delete(update.param);\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 * @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 * A token used to manipulate and access values stored in `HttpContext`.\n *\n * @publicApi\n */\nexport class HttpContextToken {\n constructor(public readonly defaultValue: () => T) {}\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 */\nexport class HttpContext {\n private readonly map = new Map, unknown>();\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: HttpContextToken, value: T): HttpContext {\n this.map.set(token, value);\n return this;\n }\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: HttpContextToken): T {\n if (!this.map.has(token)) {\n this.map.set(token, token.defaultValue());\n }\n return this.map.get(token) as T;\n }\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: HttpContextToken): HttpContext {\n this.map.delete(token);\n return this;\n }\n\n /**\n * @returns a list of tokens currently stored in the context.\n */\n keys(): IterableIterator> {\n return this.map.keys();\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\nimport {HttpContext} from './context';\nimport {HttpHeaders} from './headers';\nimport {HttpParams} from './params';\n\n\n/**\n * Construction interface for `HttpRequest`s.\n *\n * All values are optional and will override default values if provided.\n */\ninterface HttpRequestInit {\n headers?: HttpHeaders;\n context?: HttpContext;\n reportProgress?: boolean;\n params?: HttpParams;\n responseType?: 'arraybuffer'|'blob'|'json'|'text';\n withCredentials?: boolean;\n}\n\n/**\n * Determine whether the given HTTP method may include a body.\n */\nfunction mightHaveBody(method: string): boolean {\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/**\n * Safely assert whether the given value is an ArrayBuffer.\n *\n * In some execution environments ArrayBuffer is not defined.\n */\nfunction isArrayBuffer(value: any): value is ArrayBuffer {\n return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;\n}\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: any): value is Blob {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\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: any): value is FormData {\n return typeof FormData !== 'undefined' && value instanceof FormData;\n}\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: any): value is URLSearchParams {\n return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams;\n}\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 */\nexport class HttpRequest {\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 readonly body: T|null = null;\n\n /**\n * Outgoing headers for this request.\n */\n // TODO(issue/24571): remove '!'.\n readonly headers!: HttpHeaders;\n\n /**\n * Shared and mutable context that can be used by interceptors\n */\n readonly context!: HttpContext;\n\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 readonly reportProgress: boolean = false;\n\n /**\n * Whether this request should be sent with outgoing credentials (cookies).\n */\n readonly withCredentials: boolean = false;\n\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 readonly responseType: 'arraybuffer'|'blob'|'json'|'text' = 'json';\n\n /**\n * The outgoing HTTP request method.\n */\n readonly method: string;\n\n /**\n * Outgoing URL parameters.\n *\n * To pass a string representation of HTTP parameters in the URL-query-string format,\n * the `HttpParamsOptions`' `fromString` may be used. For example:\n *\n * ```\n * new HttpParams({fromString: 'angular=awesome'})\n * ```\n */\n // TODO(issue/24571): remove '!'.\n readonly params!: HttpParams;\n\n /**\n * The outgoing URL with all URL parameters set.\n */\n readonly urlWithParams: string;\n\n constructor(method: 'DELETE'|'GET'|'HEAD'|'JSONP'|'OPTIONS', url: string, init?: {\n headers?: HttpHeaders,\n context?: HttpContext,\n reportProgress?: boolean,\n params?: HttpParams,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n });\n constructor(method: 'POST'|'PUT'|'PATCH', url: string, body: T|null, init?: {\n headers?: HttpHeaders,\n context?: HttpContext,\n reportProgress?: boolean,\n params?: HttpParams,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n });\n constructor(method: string, url: string, body: T|null, init?: {\n headers?: HttpHeaders,\n context?: HttpContext,\n reportProgress?: boolean,\n params?: HttpParams,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n });\n constructor(\n method: string, readonly url: string, third?: T|{\n headers?: HttpHeaders,\n context?: HttpContext,\n reportProgress?: boolean,\n params?: HttpParams,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n }|null,\n fourth?: {\n headers?: HttpHeaders,\n context?: HttpContext,\n reportProgress?: boolean,\n params?: HttpParams,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n }) {\n this.method = method.toUpperCase();\n // Next, need to figure out which argument holds the HttpRequestInit\n // options, if any.\n let options: HttpRequestInit|undefined;\n\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 as T : null;\n options = fourth;\n } else {\n // No body required, options are the third argument. The body stays null.\n options = third as HttpRequestInit;\n }\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\n // Override default response type of 'json' if one is provided.\n if (!!options.responseType) {\n this.responseType = options.responseType;\n }\n\n // Override headers if they're provided.\n if (!!options.headers) {\n this.headers = options.headers;\n }\n\n if (!!options.context) {\n this.context = options.context;\n }\n\n if (!!options.params) {\n this.params = options.params;\n }\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\n // If no context have been passed in, construct a new HttpContext instance.\n if (!this.context) {\n this.context = new HttpContext();\n }\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 } 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 } 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: string = qIdx === -1 ? '?' : (qIdx < url.length - 1 ? '&' : '');\n this.urlWithParams = url + sep + params;\n }\n }\n }\n\n /**\n * Transform the free-form body into a serialized format suitable for\n * transmission to the server.\n */\n serializeBody(): ArrayBuffer|Blob|FormData|string|null {\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 as any).toString();\n }\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(): string|null {\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\n clone(): HttpRequest;\n clone(update: {\n headers?: HttpHeaders,\n context?: HttpContext,\n reportProgress?: boolean,\n params?: HttpParams,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n body?: T|null,\n method?: string,\n url?: string,\n setHeaders?: {[name: string]: string|string[]},\n setParams?: {[param: string]: string},\n }): HttpRequest;\n clone(update: {\n headers?: HttpHeaders,\n context?: HttpContext,\n reportProgress?: boolean,\n params?: HttpParams,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n body?: V|null,\n method?: string,\n url?: string,\n setHeaders?: {[name: string]: string|string[]},\n setParams?: {[param: string]: string},\n }): HttpRequest;\n clone(update: {\n headers?: HttpHeaders,\n context?: HttpContext,\n reportProgress?: boolean,\n params?: HttpParams,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n body?: any|null,\n method?: string,\n url?: string,\n setHeaders?: {[name: string]: string|string[]},\n setParams?: {[param: string]: string};\n } = {}): HttpRequest {\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\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\n // Carefully handle the boolean options to differentiate between\n // `false` and `undefined` in the update args.\n const withCredentials =\n (update.withCredentials !== undefined) ? update.withCredentials : this.withCredentials;\n const reportProgress =\n (update.reportProgress !== undefined) ? update.reportProgress : this.reportProgress;\n\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\n // Pass on context if needed\n const context = update.context ?? this.context;\n\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\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\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 * @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\nimport {HttpHeaders} from './headers';\n\n/**\n * Type enumeration for the different kinds of `HttpEvent`.\n *\n * @publicApi\n */\nexport enum HttpEventType {\n /**\n * The request was sent out over the wire.\n */\n Sent,\n\n /**\n * An upload progress event was received.\n */\n UploadProgress,\n\n /**\n * The response status code and headers were received.\n */\n ResponseHeader,\n\n /**\n * A download progress event was received.\n */\n DownloadProgress,\n\n /**\n * The full response including the body was received.\n */\n Response,\n\n /**\n * A custom event from an interceptor or a backend.\n */\n User,\n}\n\n/**\n * Base interface for progress events.\n *\n * @publicApi\n */\nexport interface HttpProgressEvent {\n /**\n * Progress event type is either upload or download.\n */\n type: HttpEventType.DownloadProgress|HttpEventType.UploadProgress;\n\n /**\n * Number of bytes uploaded or downloaded.\n */\n loaded: number;\n\n /**\n * Total number of bytes to upload or download. Depending on the request or\n * response, this may not be computable and thus may not be present.\n */\n total?: number;\n}\n\n/**\n * A download progress event.\n *\n * @publicApi\n */\nexport interface HttpDownloadProgressEvent extends HttpProgressEvent {\n type: HttpEventType.DownloadProgress;\n\n /**\n * The partial response body as downloaded so far.\n *\n * Only present if the responseType was `text`.\n */\n partialText?: string;\n}\n\n/**\n * An upload progress event.\n *\n * @publicApi\n */\nexport interface HttpUploadProgressEvent extends HttpProgressEvent {\n type: HttpEventType.UploadProgress;\n}\n\n/**\n * An event indicating that the request was sent to the server. Useful\n * when a request may be retried multiple times, to distinguish between\n * retries on the final event stream.\n *\n * @publicApi\n */\nexport interface HttpSentEvent {\n type: HttpEventType.Sent;\n}\n\n/**\n * A user-defined event.\n *\n * Grouping all custom events under this type ensures they will be handled\n * and forwarded by all implementations of interceptors.\n *\n * @publicApi\n */\nexport interface HttpUserEvent {\n type: HttpEventType.User;\n}\n\n/**\n * An error that represents a failed attempt to JSON.parse text coming back\n * from the server.\n *\n * It bundles the Error object with the actual response body that failed to parse.\n *\n *\n */\nexport interface HttpJsonParseError {\n error: Error;\n text: string;\n}\n\n/**\n * Union type for all possible events on the response stream.\n *\n * Typed according to the expected type of the response.\n *\n * @publicApi\n */\nexport type HttpEvent =\n HttpSentEvent|HttpHeaderResponse|HttpResponse|HttpProgressEvent|HttpUserEvent;\n\n/**\n * Base class for both `HttpResponse` and `HttpHeaderResponse`.\n *\n * @publicApi\n */\nexport abstract class HttpResponseBase {\n /**\n * All response headers.\n */\n readonly headers: HttpHeaders;\n\n /**\n * Response status code.\n */\n readonly status: number;\n\n /**\n * Textual description of response status code, defaults to OK.\n *\n * Do not depend on this.\n */\n readonly statusText: string;\n\n /**\n * URL of the resource retrieved, or null if not available.\n */\n readonly url: string|null;\n\n /**\n * Whether the status code falls in the 2xx range.\n */\n readonly ok: boolean;\n\n /**\n * Type of the response, narrowed to either the full response or the header.\n */\n // TODO(issue/24571): remove '!'.\n readonly type!: HttpEventType.Response|HttpEventType.ResponseHeader;\n\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(\n init: {\n headers?: HttpHeaders,\n status?: number,\n statusText?: string,\n url?: string,\n },\n defaultStatus: number = HttpStatusCode.Ok, defaultStatusText: string = '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\n // Cache the ok value to avoid defining a getter.\n this.ok = this.status >= 200 && this.status < 300;\n }\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 */\nexport class HttpHeaderResponse extends HttpResponseBase {\n /**\n * Create a new `HttpHeaderResponse` with the given parameters.\n */\n constructor(init: {\n headers?: HttpHeaders,\n status?: number,\n statusText?: string,\n url?: string,\n } = {}) {\n super(init);\n }\n\n override readonly type: HttpEventType.ResponseHeader = HttpEventType.ResponseHeader;\n\n /**\n * Copy this `HttpHeaderResponse`, overriding its contents with the\n * given parameter hash.\n */\n clone(update: {headers?: HttpHeaders; status?: number; statusText?: string; url?: string;} = {}):\n HttpHeaderResponse {\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/**\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 */\nexport class HttpResponse extends HttpResponseBase {\n /**\n * The response body, or `null` if one was not returned.\n */\n readonly body: T|null;\n\n /**\n * Construct a new `HttpResponse`.\n */\n constructor(init: {\n body?: T|null,\n headers?: HttpHeaders;\n status?: number;\n statusText?: string;\n url?: string;\n } = {}) {\n super(init);\n this.body = init.body !== undefined ? init.body : null;\n }\n\n override readonly type: HttpEventType.Response = HttpEventType.Response;\n\n clone(): HttpResponse;\n clone(update: {headers?: HttpHeaders; status?: number; statusText?: string; url?: string;}):\n HttpResponse;\n clone(update: {\n body?: V|null,\n headers?: HttpHeaders;\n status?: number;\n statusText?: string;\n url?: string;\n }): HttpResponse;\n clone(update: {\n body?: any|null;\n headers?: HttpHeaders;\n status?: number;\n statusText?: string;\n url?: string;\n } = {}): HttpResponse {\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/**\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 */\nexport class HttpErrorResponse extends HttpResponseBase implements Error {\n readonly name = 'HttpErrorResponse';\n readonly message: string;\n readonly error: any|null;\n\n /**\n * Errors are never okay, even when the status code is in the 2xx success range.\n */\n override readonly ok = false;\n\n constructor(init: {\n error?: any;\n headers?: HttpHeaders;\n status?: number;\n statusText?: string;\n url?: string;\n }) {\n // Initialize with a default status of 0 / Unknown Error.\n super(init, 0, 'Unknown Error');\n\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 } else {\n this.message = `Http failure response for ${init.url || '(unknown url)'}: ${init.status} ${\n init.statusText}`;\n }\n this.error = init.error || null;\n }\n}\n\n/**\n * Http status codes.\n * As per https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml\n * @publicApi\n */\nexport const enum HttpStatusCode {\n Continue = 100,\n SwitchingProtocols = 101,\n Processing = 102,\n EarlyHints = 103,\n\n Ok = 200,\n Created = 201,\n Accepted = 202,\n NonAuthoritativeInformation = 203,\n NoContent = 204,\n ResetContent = 205,\n PartialContent = 206,\n MultiStatus = 207,\n AlreadyReported = 208,\n ImUsed = 226,\n\n MultipleChoices = 300,\n MovedPermanently = 301,\n Found = 302,\n SeeOther = 303,\n NotModified = 304,\n UseProxy = 305,\n Unused = 306,\n TemporaryRedirect = 307,\n PermanentRedirect = 308,\n\n BadRequest = 400,\n Unauthorized = 401,\n PaymentRequired = 402,\n Forbidden = 403,\n NotFound = 404,\n MethodNotAllowed = 405,\n NotAcceptable = 406,\n ProxyAuthenticationRequired = 407,\n RequestTimeout = 408,\n Conflict = 409,\n Gone = 410,\n LengthRequired = 411,\n PreconditionFailed = 412,\n PayloadTooLarge = 413,\n UriTooLong = 414,\n UnsupportedMediaType = 415,\n RangeNotSatisfiable = 416,\n ExpectationFailed = 417,\n ImATeapot = 418,\n MisdirectedRequest = 421,\n UnprocessableEntity = 422,\n Locked = 423,\n FailedDependency = 424,\n TooEarly = 425,\n UpgradeRequired = 426,\n PreconditionRequired = 428,\n TooManyRequests = 429,\n RequestHeaderFieldsTooLarge = 431,\n UnavailableForLegalReasons = 451,\n\n InternalServerError = 500,\n NotImplemented = 501,\n BadGateway = 502,\n ServiceUnavailable = 503,\n GatewayTimeout = 504,\n HttpVersionNotSupported = 505,\n VariantAlsoNegotiates = 506,\n InsufficientStorage = 507,\n LoopDetected = 508,\n NotExtended = 510,\n NetworkAuthenticationRequired = 511\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\nimport {Injectable} from '@angular/core';\nimport {Observable, of} from 'rxjs';\nimport {concatMap, filter, map} from 'rxjs/operators';\n\nimport {HttpHandler} from './backend';\nimport {HttpContext} from './context';\nimport {HttpHeaders} from './headers';\nimport {HttpParams, HttpParamsOptions} from './params';\nimport {HttpRequest} from './request';\nimport {HttpEvent, HttpResponse} from './response';\n\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(\n options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body'|'events'|'response',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n },\n body: T|null): any {\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/**\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 */\n@Injectable()\nexport class HttpClient {\n constructor(private handler: HttpHandler) {}\n\n /**\n * Sends an `HttpRequest` and returns a stream of `HttpEvent`s.\n *\n * @return An `Observable` of the response, with the response body as a stream of `HttpEvent`s.\n */\n request(req: HttpRequest): Observable>;\n\n /**\n * Constructs a request that interprets the body as an `ArrayBuffer` and returns the response in\n * an `ArrayBuffer`.\n *\n * @param method The HTTP method.\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n *\n * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.\n */\n request(method: string, url: string, options: {\n body?: any,\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a request that interprets the body as a blob and returns\n * the response as a blob.\n *\n * @param method The HTTP method.\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response, with the response body of type `Blob`.\n */\n request(method: string, url: string, options: {\n body?: any,\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a request that interprets the body as a text string and\n * returns a string value.\n *\n * @param method The HTTP method.\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response, with the response body of type string.\n */\n request(method: string, url: string, options: {\n body?: any,\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a request that interprets the body as an `ArrayBuffer` and returns the\n * the full event stream.\n *\n * @param method The HTTP method.\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response, with the response body as an array of `HttpEvent`s for\n * the request.\n */\n request(method: string, url: string, options: {\n body?: any,\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n observe: 'events',\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a request that interprets the body as a `Blob` and returns\n * the full event stream.\n *\n * @param method The HTTP method.\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of all `HttpEvent`s for the request,\n * with the response body of type `Blob`.\n */\n request(method: string, url: string, options: {\n body?: any,\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a request which interprets the body as a text string and returns the full event\n * stream.\n *\n * @param method The HTTP method.\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of all `HttpEvent`s for the request,\n * with the response body of type string.\n */\n request(method: string, url: string, options: {\n body?: any,\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a request which interprets the body as a JSON object and returns the full event\n * stream.\n *\n * @param method The HTTP method.\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of all `HttpEvent`s for the request,\n * with the response body of type `Object`.\n */\n request(method: string, url: string, options: {\n body?: any,\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n reportProgress?: boolean, observe: 'events',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a request which interprets the body as a JSON object and returns the full event\n * stream.\n *\n * @param method The HTTP method.\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of all `HttpEvent`s for the request,\n * with the response body of type `R`.\n */\n request(method: string, url: string, options: {\n body?: any,\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n reportProgress?: boolean, observe: 'events',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a request which interprets the body as an `ArrayBuffer`\n * and returns the full `HttpResponse`.\n *\n * @param method The HTTP method.\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse`, with the response body as an `ArrayBuffer`.\n */\n request(method: string, url: string, options: {\n body?: any,\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a request which interprets the body as a `Blob` and returns the full `HttpResponse`.\n *\n * @param method The HTTP method.\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse`, with the response body of type `Blob`.\n */\n request(method: string, url: string, options: {\n body?: any,\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a request which interprets the body as a text stream and returns the full\n * `HttpResponse`.\n *\n * @param method The HTTP method.\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the HTTP response, with the response body of type string.\n */\n request(method: string, url: string, options: {\n body?: any,\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a request which interprets the body as a JSON object and returns the full\n * `HttpResponse`.\n *\n * @param method The HTTP method.\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the full `HttpResponse`,\n * with the response body of type `Object`.\n */\n request(method: string, url: string, options: {\n body?: any,\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n reportProgress?: boolean, observe: 'response',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a request which interprets the body as a JSON object and returns\n * the full `HttpResponse` with the response body in the requested type.\n *\n * @param method The HTTP method.\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the full `HttpResponse`, with the response body of type `R`.\n */\n request(method: string, url: string, options: {\n body?: any,\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n reportProgress?: boolean, observe: 'response',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a request which interprets the body as a JSON object and returns the full\n * `HttpResponse` as a JSON object.\n *\n * @param method The HTTP method.\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse`, with the response body of type `Object`.\n */\n request(method: string, url: string, options?: {\n body?: any,\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n responseType?: 'json',\n reportProgress?: boolean,\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a request which interprets the body as a JSON object\n * with the response body of the requested type.\n *\n * @param method The HTTP method.\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse`, with the response body of type `R`.\n */\n request(method: string, url: string, options?: {\n body?: any,\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n responseType?: 'json',\n reportProgress?: boolean,\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a request where response type and requested observable are not known statically.\n *\n * @param method The HTTP method.\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the requested response, with body of type `any`.\n */\n request(method: string, url: string, options?: {\n body?: any,\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n observe?: 'body'|'events'|'response',\n reportProgress?: boolean,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n }): Observable;\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: string|HttpRequest, url?: string, options: {\n body?: any,\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body'|'events'|'response',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n } = {}): Observable {\n let req: HttpRequest;\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 } 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\n // Figure out the headers.\n let headers: HttpHeaders|undefined = undefined;\n if (options.headers instanceof HttpHeaders) {\n headers = options.headers;\n } else {\n headers = new HttpHeaders(options.headers);\n }\n\n // Sort out parameters.\n let params: HttpParams|undefined = undefined;\n if (!!options.params) {\n if (options.params instanceof HttpParams) {\n params = options.params;\n } else {\n params = new HttpParams({fromObject: options.params} as HttpParamsOptions);\n }\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\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$: Observable> =\n of(req).pipe(concatMap((req: HttpRequest) => this.handler.handle(req)));\n\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\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$: Observable> = >>events$.pipe(\n filter((event: HttpEvent) => event instanceof HttpResponse));\n\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: HttpResponse) => {\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: HttpResponse) => {\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: HttpResponse) => {\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: HttpResponse) => 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 /**\n * Constructs a `DELETE` request that interprets the body as an `ArrayBuffer`\n * and returns the response as an `ArrayBuffer`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response body as an `ArrayBuffer`.\n */\n delete(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n body?: any|null,\n }): Observable;\n\n\n /**\n * Constructs a `DELETE` request that interprets the body as a `Blob` and returns\n * the response as a `Blob`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response body as a `Blob`.\n */\n delete(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n body?: any|null,\n }): Observable;\n\n /**\n * Constructs a `DELETE` request that interprets the body as a text string and returns\n * a string.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response, with the response body of type string.\n */\n delete(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n body?: any|null,\n }): Observable;\n\n /**\n * Constructs a `DELETE` request that interprets the body as an `ArrayBuffer`\n * and returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of all `HttpEvent`s for the request,\n * with response body as an `ArrayBuffer`.\n */\n delete(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n body?: any|null\n }): Observable>;\n\n /**\n * Constructs a `DELETE` request that interprets the body as a `Blob`\n * and returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of all the `HttpEvent`s for the request, with the response body as a\n * `Blob`.\n */\n delete(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n body?: any|null,\n }): Observable>;\n\n /**\n * Constructs a `DELETE` request that interprets the body as a text string\n * and returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of all `HttpEvent`s for the request, with the response\n * body of type string.\n */\n delete(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n body?: any|null,\n }): Observable>;\n\n /**\n * Constructs a `DELETE` request that interprets the body as a JSON object\n * and returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of all `HttpEvent`s for the request, with response body of\n * type `Object`.\n */\n delete(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n body?: any|null,\n }): Observable>;\n\n /**\n * Constructs a `DELETE`request that interprets the body as a JSON object\n * and returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of all the `HttpEvent`s for the request, with a response\n * body in the requested type.\n */\n delete(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | (string | number | boolean)[]},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n body?: any|null,\n }): Observable>;\n\n /**\n * Constructs a `DELETE` request that interprets the body as an `ArrayBuffer` and returns\n * the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the full `HttpResponse`, with the response body as an `ArrayBuffer`.\n */\n delete(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n body?: any|null,\n }): Observable>;\n\n /**\n * Constructs a `DELETE` request that interprets the body as a `Blob` and returns the full\n * `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse`, with the response body of type `Blob`.\n */\n delete(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n body?: any|null,\n }): Observable>;\n\n /**\n * Constructs a `DELETE` request that interprets the body as a text stream and\n * returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the full `HttpResponse`, with the response body of type string.\n */\n delete(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n body?: any|null,\n }): Observable>;\n\n /**\n * Constructs a `DELETE` request the interprets the body as a JSON object and returns\n * the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse`, with the response body of type `Object`.\n *\n */\n delete(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n body?: any|null,\n }): Observable>;\n\n /**\n * Constructs a `DELETE` request that interprets the body as a JSON object\n * and returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse`, with the response body of the requested type.\n */\n delete(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n body?: any|null,\n }): Observable>;\n\n /**\n * Constructs a `DELETE` request that interprets the body as a JSON object and\n * returns the response body as a JSON object.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response, with the response body of type `Object`.\n */\n delete(url: string, options?: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n body?: any|null,\n }): Observable;\n\n /**\n * Constructs a DELETE request that interprets the body as a JSON object and returns\n * the response in a given type.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse`, with response body in the requested type.\n */\n delete(url: string, options?: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n body?: any|null,\n }): Observable;\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: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body'|'events'|'response',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n body?: any|null,\n } = {}): Observable {\n return this.request('DELETE', url, options as any);\n }\n\n\n /**\n * Constructs a `GET` request that interprets the body as an `ArrayBuffer` and returns the\n * response in an `ArrayBuffer`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.\n */\n get(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `GET` request that interprets the body as a `Blob`\n * and returns the response as a `Blob`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response, with the response body as a `Blob`.\n */\n get(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `GET` request that interprets the body as a text string\n * and returns the response as a string value.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response, with the response body of type string.\n */\n get(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `GET` request that interprets the body as an `ArrayBuffer` and returns\n * the full event stream.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of all `HttpEvent`s for the request, with the response\n * body as an `ArrayBuffer`.\n */\n get(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `GET` request that interprets the body as a `Blob` and\n * returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response, with the response body as a `Blob`.\n */\n get(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `GET` request that interprets the body as a text string and returns\n * the full event stream.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response, with the response body of type string.\n */\n get(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `GET` request that interprets the body as a JSON object\n * and returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response, with the response body of type `Object`.\n */\n get(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `GET` request that interprets the body as a JSON object and returns the full event\n * stream.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response, with a response body in the requested type.\n */\n get(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `GET` request that interprets the body as an `ArrayBuffer` and\n * returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with the response body as an `ArrayBuffer`.\n */\n get(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `GET` request that interprets the body as a `Blob` and\n * returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with the response body as a `Blob`.\n */\n get(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `GET` request that interprets the body as a text stream and\n * returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with the response body of type string.\n */\n get(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `GET` request that interprets the body as a JSON object and\n * returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the full `HttpResponse`,\n * with the response body of type `Object`.\n */\n get(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `GET` request that interprets the body as a JSON object and\n * returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the full `HttpResponse` for the request,\n * with a response body in the requested type.\n */\n get(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `GET` request that interprets the body as a JSON object and\n * returns the response body as a JSON object.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n *\n * @return An `Observable` of the response body as a JSON object.\n */\n get(url: string, options?: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `GET` request that interprets the body as a JSON object and returns\n * the response body in a given type.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse`, with a response body in the requested type.\n */\n get(url: string, options?: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable;\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: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body'|'events'|'response',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n } = {}): Observable {\n return this.request('GET', url, options as any);\n }\n\n\n /**\n * Constructs a `HEAD` request that interprets the body as an `ArrayBuffer` and\n * returns the response as an `ArrayBuffer`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.\n */\n head(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `HEAD` request that interprets the body as a `Blob` and returns\n * the response as a `Blob`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response, with the response body as a `Blob`.\n */\n\n head(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `HEAD` request that interprets the body as a text string and returns the response\n * as a string value.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response, with the response body of type string.\n */\n head(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `HEAD` request that interprets the body as an `ArrayBuffer`\n * and returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of all `HttpEvent`s for the request,\n * with the response body as an `ArrayBuffer`.\n */\n head(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `HEAD` request that interprets the body as a `Blob` and\n * returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of all `HttpEvent`s for the request,\n * with the response body as a `Blob`.\n */\n head(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `HEAD` request that interprets the body as a text string\n * and returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of all `HttpEvent`s for the request, with the response body of type\n * string.\n */\n head(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `HEAD` request that interprets the body as a JSON object\n * and returns the full HTTP event stream.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of all `HttpEvent`s for the request, with a response body of\n * type `Object`.\n */\n head(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `HEAD` request that interprets the body as a JSON object and\n * returns the full event stream.\n *\n * @return An `Observable` of all the `HttpEvent`s for the request,\n * with a response body in the requested type.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n */\n head(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `HEAD` request that interprets the body as an `ArrayBuffer`\n * and returns the full HTTP response.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with the response body as an `ArrayBuffer`.\n */\n head(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `HEAD` request that interprets the body as a `Blob` and returns\n * the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with the response body as a blob.\n */\n head(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `HEAD` request that interprets the body as text stream\n * and returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with the response body of type string.\n */\n head(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `HEAD` request that interprets the body as a JSON object and\n * returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with the response body of type `Object`.\n */\n head(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `HEAD` request that interprets the body as a JSON object\n * and returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with a response body of the requested type.\n */\n head(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `HEAD` request that interprets the body as a JSON object and\n * returns the response body as a JSON object.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the response, with the response body as a JSON object.\n */\n head(url: string, options?: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `HEAD` request that interprets the body as a JSON object and returns\n * the response in a given type.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with a response body of the given type.\n */\n head(url: string, options?: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable;\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: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body'|'events'|'response',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n } = {}): Observable {\n return this.request('HEAD', url, options as any);\n }\n\n /**\n * Constructs a `JSONP` request for the given URL and name of the callback parameter.\n *\n * @param url The resource URL.\n * @param callbackParam The callback function name.\n *\n * @return An `Observable` of the response object, with response body as an object.\n */\n jsonp(url: string, callbackParam: string): Observable;\n\n /**\n * Constructs a `JSONP` request for the given URL and name of the callback parameter.\n *\n * @param url The resource URL.\n * @param callbackParam The callback function name.\n *\n * You must install a suitable interceptor, such as one provided by `HttpClientJsonpModule`.\n * If no such interceptor is reached,\n * then the `JSONP` request can be rejected by the configured backend.\n *\n * @return An `Observable` of the response object, with response body in the requested type.\n */\n jsonp(url: string, callbackParam: string): Observable;\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: string, callbackParam: string): Observable {\n return this.request('JSONP', url, {\n params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),\n observe: 'body',\n responseType: 'json',\n });\n }\n\n /**\n * Constructs an `OPTIONS` request that interprets the body as an\n * `ArrayBuffer` and returns the response as an `ArrayBuffer`.\n *\n * @param url The endpoint URL.\n * @param options HTTP options.\n *\n * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.\n */\n options(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs an `OPTIONS` request that interprets the body as a `Blob` and returns\n * the response as a `Blob`.\n *\n * @param url The endpoint URL.\n * @param options HTTP options.\n *\n * @return An `Observable` of the response, with the response body as a `Blob`.\n */\n options(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs an `OPTIONS` request that interprets the body as a text string and\n * returns a string value.\n *\n * @param url The endpoint URL.\n * @param options HTTP options.\n *\n * @return An `Observable` of the response, with the response body of type string.\n */\n options(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs an `OPTIONS` request that interprets the body as an `ArrayBuffer`\n * and returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param options HTTP options.\n *\n * @return An `Observable` of all `HttpEvent`s for the request,\n * with the response body as an `ArrayBuffer`.\n */\n options(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs an `OPTIONS` request that interprets the body as a `Blob` and\n * returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param options HTTP options.\n *\n * @return An `Observable` of all `HttpEvent`s for the request,\n * with the response body as a `Blob`.\n */\n options(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs an `OPTIONS` request that interprets the body as a text string\n * and returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param options HTTP options.\n *\n * @return An `Observable` of all the `HttpEvent`s for the request,\n * with the response body of type string.\n */\n options(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs an `OPTIONS` request that interprets the body as a JSON object\n * and returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param options HTTP options.\n *\n * @return An `Observable` of all the `HttpEvent`s for the request with the response\n * body of type `Object`.\n */\n options(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs an `OPTIONS` request that interprets the body as a JSON object and\n * returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param options HTTP options.\n *\n * @return An `Observable` of all the `HttpEvent`s for the request,\n * with a response body in the requested type.\n */\n options(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs an `OPTIONS` request that interprets the body as an `ArrayBuffer`\n * and returns the full HTTP response.\n *\n * @param url The endpoint URL.\n * @param options HTTP options.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with the response body as an `ArrayBuffer`.\n */\n options(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs an `OPTIONS` request that interprets the body as a `Blob`\n * and returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options HTTP options.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with the response body as a `Blob`.\n */\n options(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs an `OPTIONS` request that interprets the body as text stream\n * and returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options HTTP options.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with the response body of type string.\n */\n options(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs an `OPTIONS` request that interprets the body as a JSON object\n * and returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options HTTP options.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with the response body of type `Object`.\n */\n options(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs an `OPTIONS` request that interprets the body as a JSON object and\n * returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param options HTTP options.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with a response body in the requested type.\n */\n options(url: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs an `OPTIONS` request that interprets the body as a JSON object and returns the\n * response body as a JSON object.\n *\n * @param url The endpoint URL.\n * @param options HTTP options.\n *\n * @return An `Observable` of the response, with the response body as a JSON object.\n */\n options(url: string, options?: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs an `OPTIONS` request that interprets the body as a JSON object and returns the\n * response in a given type.\n *\n * @param url The endpoint URL.\n * @param options HTTP options.\n *\n * @return An `Observable` of the `HttpResponse`, with a response body of the given type.\n */\n options(url: string, options?: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable;\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: string, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body'|'events'|'response',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n } = {}): Observable {\n return this.request('OPTIONS', url, options as any);\n }\n\n /**\n * Constructs a `PATCH` request that interprets the body as an `ArrayBuffer` and returns\n * the response as an `ArrayBuffer`.\n *\n * @param url The endpoint URL.\n * @param body The resources to edit.\n * @param options HTTP options.\n *\n * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.\n */\n patch(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `PATCH` request that interprets the body as a `Blob` and returns the response\n * as a `Blob`.\n *\n * @param url The endpoint URL.\n * @param body The resources to edit.\n * @param options HTTP options.\n *\n * @return An `Observable` of the response, with the response body as a `Blob`.\n */\n patch(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `PATCH` request that interprets the body as a text string and\n * returns the response as a string value.\n *\n * @param url The endpoint URL.\n * @param body The resources to edit.\n * @param options HTTP options.\n *\n * @return An `Observable` of the response, with a response body of type string.\n */\n patch(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `PATCH` request that interprets the body as an `ArrayBuffer` and\n * returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param body The resources to edit.\n * @param options HTTP options.\n *\n * @return An `Observable` of all the `HttpEvent`s for the request,\n * with the response body as an `ArrayBuffer`.\n */\n\n patch(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PATCH` request that interprets the body as a `Blob`\n * and returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param body The resources to edit.\n * @param options HTTP options.\n *\n * @return An `Observable` of all the `HttpEvent`s for the request, with the\n * response body as `Blob`.\n */\n patch(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PATCH` request that interprets the body as a text string and\n * returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param body The resources to edit.\n * @param options HTTP options.\n *\n * @return An `Observable` of all the `HttpEvent`s for the request, with a\n * response body of type string.\n */\n patch(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PATCH` request that interprets the body as a JSON object\n * and returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param body The resources to edit.\n * @param options HTTP options.\n *\n * @return An `Observable` of all the `HttpEvent`s for the request,\n * with a response body of type `Object`.\n */\n patch(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PATCH` request that interprets the body as a JSON object\n * and returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param body The resources to edit.\n * @param options HTTP options.\n *\n * @return An `Observable` of all the `HttpEvent`s for the request,\n * with a response body in the requested type.\n */\n patch(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PATCH` request that interprets the body as an `ArrayBuffer`\n * and returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param body The resources to edit.\n * @param options HTTP options.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with the response body as an `ArrayBuffer`.\n */\n patch(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PATCH` request that interprets the body as a `Blob` and returns the full\n * `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param body The resources to edit.\n * @param options HTTP options.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with the response body as a `Blob`.\n */\n patch(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PATCH` request that interprets the body as a text stream and returns the\n * full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param body The resources to edit.\n * @param options HTTP options.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with a response body of type string.\n */\n patch(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PATCH` request that interprets the body as a JSON object\n * and returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param body The resources to edit.\n * @param options HTTP options.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with a response body in the requested type.\n */\n patch(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PATCH` request that interprets the body as a JSON object\n * and returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param body The resources to edit.\n * @param options HTTP options.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with a response body in the given type.\n */\n patch(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PATCH` request that interprets the body as a JSON object and\n * returns the response body as a JSON object.\n *\n * @param url The endpoint URL.\n * @param body The resources to edit.\n * @param options HTTP options.\n *\n * @return An `Observable` of the response, with the response body as a JSON object.\n */\n patch(url: string, body: any|null, options?: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `PATCH` request that interprets the body as a JSON object\n * and returns the response in a given type.\n *\n * @param url The endpoint URL.\n * @param body The resources to edit.\n * @param options HTTP options.\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with a response body in the given type.\n */\n patch(url: string, body: any|null, options?: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable;\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: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body'|'events'|'response',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n } = {}): Observable {\n return this.request('PATCH', url, addBody(options, body));\n }\n\n /**\n * Constructs a `POST` request that interprets the body as an `ArrayBuffer` and returns\n * an `ArrayBuffer`.\n *\n * @param url The endpoint URL.\n * @param body The content to replace with.\n * @param options HTTP options.\n *\n * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.\n */\n post(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `POST` request that interprets the body as a `Blob` and returns the\n * response as a `Blob`.\n *\n * @param url The endpoint URL.\n * @param body The content to replace with.\n * @param options HTTP options\n *\n * @return An `Observable` of the response, with the response body as a `Blob`.\n */\n post(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `POST` request that interprets the body as a text string and\n * returns the response as a string value.\n *\n * @param url The endpoint URL.\n * @param body The content to replace with.\n * @param options HTTP options\n *\n * @return An `Observable` of the response, with a response body of type string.\n */\n post(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `POST` request that interprets the body as an `ArrayBuffer` and\n * returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param body The content to replace with.\n * @param options HTTP options\n *\n * @return An `Observable` of all `HttpEvent`s for the request,\n * with the response body as an `ArrayBuffer`.\n */\n post(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `POST` request that interprets the body as a `Blob`\n * and returns the response in an observable of the full event stream.\n *\n * @param url The endpoint URL.\n * @param body The content to replace with.\n * @param options HTTP options\n *\n * @return An `Observable` of all `HttpEvent`s for the request, with the response body as `Blob`.\n */\n post(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `POST` request that interprets the body as a text string and returns the full\n * event stream.\n *\n * @param url The endpoint URL.\n * @param body The content to replace with.\n * @param options HTTP options\n *\n * @return An `Observable` of all `HttpEvent`s for the request,\n * with a response body of type string.\n */\n post(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a POST request that interprets the body as a JSON object and returns the full event\n * stream.\n *\n * @param url The endpoint URL.\n * @param body The content to replace with.\n * @param options HTTP options\n *\n * @return An `Observable` of all `HttpEvent`s for the request,\n * with a response body of type `Object`.\n */\n post(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a POST request that interprets the body as a JSON object and returns the full event\n * stream.\n *\n * @param url The endpoint URL.\n * @param body The content to replace with.\n * @param options HTTP options\n *\n * @return An `Observable` of all `HttpEvent`s for the request,\n * with a response body in the requested type.\n */\n post(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a POST request that interprets the body as an `ArrayBuffer`\n * and returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param body The content to replace with.\n * @param options HTTP options\n *\n * @return An `Observable` of the `HttpResponse` for the request, with the response body as an\n * `ArrayBuffer`.\n */\n post(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `POST` request that interprets the body as a `Blob` and returns the full\n * `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param body The content to replace with.\n * @param options HTTP options\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with the response body as a `Blob`.\n */\n post(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `POST` request that interprets the body as a text stream and returns\n * the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param body The content to replace with.\n * @param options HTTP options\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with a response body of type string.\n */\n post(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `POST` request that interprets the body as a JSON object\n * and returns the full `HttpResponse`.\n *\n * @param url The endpoint URL.\n * @param body The content to replace with.\n * @param options HTTP options\n *\n * @return An `Observable` of the `HttpResponse` for the request, with a response body of type\n * `Object`.\n */\n post(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `POST` request that interprets the body as a JSON object and returns the full\n * `HttpResponse`.\n *\n *\n * @param url The endpoint URL.\n * @param body The content to replace with.\n * @param options HTTP options\n *\n * @return An `Observable` of the `HttpResponse` for the request, with a response body in the\n * requested type.\n */\n post(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `POST` request that interprets the body as a\n * JSON object and returns the response body as a JSON object.\n *\n * @param url The endpoint URL.\n * @param body The content to replace with.\n * @param options HTTP options\n *\n * @return An `Observable` of the response, with the response body as a JSON object.\n */\n post(url: string, body: any|null, options?: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `POST` request that interprets the body as a JSON object\n * and returns an observable of the response.\n *\n * @param url The endpoint URL.\n * @param body The content to replace with.\n * @param options HTTP options\n *\n * @return An `Observable` of the `HttpResponse` for the request, with a response body in the\n * requested type.\n */\n post(url: string, body: any|null, options?: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable;\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: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body'|'events'|'response',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n } = {}): Observable {\n return this.request('POST', url, addBody(options, body));\n }\n\n /**\n * Constructs a `PUT` request that interprets the body as an `ArrayBuffer` and returns the\n * response as an `ArrayBuffer`.\n *\n * @param url The endpoint URL.\n * @param body The resources to add/update.\n * @param options HTTP options\n *\n * @return An `Observable` of the response, with the response body as an `ArrayBuffer`.\n */\n put(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `PUT` request that interprets the body as a `Blob` and returns\n * the response as a `Blob`.\n *\n * @param url The endpoint URL.\n * @param body The resources to add/update.\n * @param options HTTP options\n *\n * @return An `Observable` of the response, with the response body as a `Blob`.\n */\n put(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `PUT` request that interprets the body as a text string and\n * returns the response as a string value.\n *\n * @param url The endpoint URL.\n * @param body The resources to add/update.\n * @param options HTTP options\n *\n * @return An `Observable` of the response, with a response body of type string.\n */\n put(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `PUT` request that interprets the body as an `ArrayBuffer` and\n * returns the full event stream.\n *\n * @param url The endpoint URL.\n * @param body The resources to add/update.\n * @param options HTTP options\n *\n * @return An `Observable` of all `HttpEvent`s for the request,\n * with the response body as an `ArrayBuffer`.\n */\n put(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PUT` request that interprets the body as a `Blob` and returns the full event\n * stream.\n *\n * @param url The endpoint URL.\n * @param body The resources to add/update.\n * @param options HTTP options\n *\n * @return An `Observable` of all `HttpEvent`s for the request,\n * with the response body as a `Blob`.\n */\n put(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PUT` request that interprets the body as a text string and returns the full event\n * stream.\n *\n * @param url The endpoint URL.\n * @param body The resources to add/update.\n * @param options HTTP options\n *\n * @return An `Observable` of all `HttpEvent`s for the request, with a response body\n * of type string.\n */\n put(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PUT` request that interprets the body as a JSON object and returns the full event\n * stream.\n *\n * @param url The endpoint URL.\n * @param body The resources to add/update.\n * @param options HTTP options\n *\n * @return An `Observable` of all `HttpEvent`s for the request, with a response body of\n * type `Object`.\n */\n put(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PUT` request that interprets the body as a JSON object and returns the\n * full event stream.\n *\n * @param url The endpoint URL.\n * @param body The resources to add/update.\n * @param options HTTP options\n *\n * @return An `Observable` of all `HttpEvent`s for the request,\n * with a response body in the requested type.\n */\n put(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'events',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PUT` request that interprets the body as an\n * `ArrayBuffer` and returns an observable of the full HTTP response.\n *\n * @param url The endpoint URL.\n * @param body The resources to add/update.\n * @param options HTTP options\n *\n * @return An `Observable` of the `HttpResponse` for the request, with the response body as an\n * `ArrayBuffer`.\n */\n put(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'arraybuffer',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PUT` request that interprets the body as a `Blob` and returns the\n * full HTTP response.\n *\n * @param url The endpoint URL.\n * @param body The resources to add/update.\n * @param options HTTP options\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with the response body as a `Blob`.\n */\n put(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'blob',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PUT` request that interprets the body as a text stream and returns the\n * full HTTP response.\n *\n * @param url The endpoint URL.\n * @param body The resources to add/update.\n * @param options HTTP options\n *\n * @return An `Observable` of the `HttpResponse` for the request, with a response body of type\n * string.\n */\n put(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean, responseType: 'text',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PUT` request that interprets the body as a JSON object and returns the full HTTP\n * response.\n *\n * @param url The endpoint URL.\n * @param body The resources to add/update.\n * @param options HTTP options\n *\n * @return An `Observable` of the `HttpResponse` for the request, with a response body\n * of type 'Object`.\n */\n put(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PUT` request that interprets the body as an instance of the requested type and\n * returns the full HTTP response.\n *\n * @param url The endpoint URL.\n * @param body The resources to add/update.\n * @param options HTTP options\n *\n * @return An `Observable` of the `HttpResponse` for the request,\n * with a response body in the requested type.\n */\n put(url: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]}, observe: 'response',\n context?: HttpContext,\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable>;\n\n /**\n * Constructs a `PUT` request that interprets the body as a JSON object\n * and returns an observable of JSON object.\n *\n * @param url The endpoint URL.\n * @param body The resources to add/update.\n * @param options HTTP options\n *\n * @return An `Observable` of the response as a JSON object.\n */\n put(url: string, body: any|null, options?: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable;\n\n /**\n * Constructs a `PUT` request that interprets the body as an instance of the requested type\n * and returns an observable of the requested type.\n *\n * @param url The endpoint URL.\n * @param body The resources to add/update.\n * @param options HTTP options\n *\n * @return An `Observable` of the requested type.\n */\n put(url: string, body: any|null, options?: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'json',\n withCredentials?: boolean,\n }): Observable;\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: string, body: any|null, options: {\n headers?: HttpHeaders|{[header: string]: string | string[]},\n context?: HttpContext,\n observe?: 'body'|'events'|'response',\n params?: HttpParams|\n {[param: string]: string | number | boolean | ReadonlyArray},\n reportProgress?: boolean,\n responseType?: 'arraybuffer'|'blob'|'json'|'text',\n withCredentials?: boolean,\n } = {}): Observable {\n return this.request('PUT', url, addBody(options, body));\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\nimport {Injectable, InjectionToken} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nimport {HttpHandler} from './backend';\nimport {HttpRequest} from './request';\nimport {HttpEvent} from './response';\n\n/**\n * Intercepts and handles an `HttpRequest` or `HttpResponse`.\n *\n * Most interceptors transform the outgoing request before passing it to the\n * next interceptor in the chain, by calling `next.handle(transformedReq)`.\n * An interceptor may transform the\n * response event stream as well, by applying additional RxJS operators on the stream\n * returned by `next.handle()`.\n *\n * More rarely, an interceptor may handle the request entirely,\n * and compose a new event stream instead of invoking `next.handle()`. This is an\n * acceptable behavior, but keep in mind that further interceptors will be skipped entirely.\n *\n * It is also rare but valid for an interceptor to return multiple responses on the\n * event stream for a single request.\n *\n * @publicApi\n *\n * @see [HTTP Guide](guide/http#intercepting-requests-and-responses)\n *\n * @usageNotes\n *\n * To use the same instance of `HttpInterceptors` for the entire app, import the `HttpClientModule`\n * only in your `AppModule`, and add the interceptors to the root application injector .\n * If you import `HttpClientModule` multiple times across different modules (for example, in lazy\n * loading modules), each import creates a new copy of the `HttpClientModule`, which overwrites the\n * interceptors provided in the root module.\n *\n */\nexport interface HttpInterceptor {\n /**\n * Identifies and handles a given HTTP request.\n * @param req The outgoing request object to handle.\n * @param next The next interceptor in the chain, or the backend\n * if no interceptors remain in the chain.\n * @returns An observable of the event stream.\n */\n intercept(req: HttpRequest, next: HttpHandler): Observable>;\n}\n\n/**\n * `HttpHandler` which applies an `HttpInterceptor` to an `HttpRequest`.\n *\n *\n */\nexport class HttpInterceptorHandler implements HttpHandler {\n constructor(private next: HttpHandler, private interceptor: HttpInterceptor) {}\n\n handle(req: HttpRequest): Observable> {\n return this.interceptor.intercept(req, this.next);\n }\n}\n\n/**\n * A multi-provider token that represents the array of registered\n * `HttpInterceptor` objects.\n *\n * @publicApi\n */\nexport const HTTP_INTERCEPTORS = new InjectionToken('HTTP_INTERCEPTORS');\n\n@Injectable()\nexport class NoopInterceptor implements HttpInterceptor {\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n return next.handle(req);\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\nimport {XhrFactory} from '@angular/common';\nimport {Injectable} from '@angular/core';\nimport {Observable, Observer} from 'rxjs';\n\nimport {HttpBackend} from './backend';\nimport {HttpHeaders} from './headers';\nimport {HttpRequest} from './request';\nimport {HttpDownloadProgressEvent, HttpErrorResponse, HttpEvent, HttpEventType, HttpHeaderResponse, HttpJsonParseError, HttpResponse, HttpStatusCode, HttpUploadProgressEvent} from './response';\n\n\nconst XSSI_PREFIX = /^\\)\\]\\}',?\\n/;\n\n/**\n * Determine an appropriate URL for the response, by checking either\n * XMLHttpRequest.responseURL or the X-Request-URL header.\n */\nfunction getResponseUrl(xhr: any): string|null {\n if ('responseURL' in xhr && xhr.responseURL) {\n return xhr.responseURL;\n }\n if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) {\n return xhr.getResponseHeader('X-Request-URL');\n }\n return null;\n}\n\n/**\n * Uses `XMLHttpRequest` to send requests to a backend server.\n * @see `HttpHandler`\n * @see `JsonpClientBackend`\n *\n * @publicApi\n */\n@Injectable()\nexport class HttpXhrBackend implements HttpBackend {\n constructor(private xhrFactory: XhrFactory) {}\n\n /**\n * Processes a request and returns a stream of response events.\n * @param req The request object.\n * @returns An observable of the response events.\n */\n handle(req: HttpRequest): Observable> {\n // Quick check to give a better error message when a user attempts to use\n // HttpClient.jsonp() without installing the HttpClientJsonpModule\n if (req.method === 'JSONP') {\n throw new Error(\n `Attempted to construct Jsonp request without HttpClientJsonpModule installed.`);\n }\n\n // Everything happens on Observable subscription.\n return new Observable((observer: Observer>) => {\n // Start by setting up the XHR object with request method, URL, and withCredentials flag.\n const xhr = this.xhrFactory.build();\n xhr.open(req.method, req.urlWithParams);\n if (!!req.withCredentials) {\n xhr.withCredentials = true;\n }\n\n // Add all the requested headers.\n req.headers.forEach((name, values) => xhr.setRequestHeader(name, values.join(',')));\n\n // Add an Accept header if one isn't present already.\n if (!req.headers.has('Accept')) {\n xhr.setRequestHeader('Accept', 'application/json, text/plain, */*');\n }\n\n // Auto-detect the Content-Type header if one isn't present already.\n if (!req.headers.has('Content-Type')) {\n const detectedType = req.detectContentTypeHeader();\n // Sometimes Content-Type detection fails.\n if (detectedType !== null) {\n xhr.setRequestHeader('Content-Type', detectedType);\n }\n }\n\n // Set the responseType if one was requested.\n if (req.responseType) {\n const responseType = req.responseType.toLowerCase();\n\n // JSON responses need to be processed as text. This is because if the server\n // returns an XSSI-prefixed JSON response, the browser will fail to parse it,\n // xhr.response will be null, and xhr.responseText cannot be accessed to\n // retrieve the prefixed JSON data in order to strip the prefix. Thus, all JSON\n // is parsed by first requesting text and then applying JSON.parse.\n xhr.responseType = ((responseType !== 'json') ? responseType : 'text') as any;\n }\n\n // Serialize the request body if one is present. If not, this will be set to null.\n const reqBody = req.serializeBody();\n\n // If progress events are enabled, response headers will be delivered\n // in two events - the HttpHeaderResponse event and the full HttpResponse\n // event. However, since response headers don't change in between these\n // two events, it doesn't make sense to parse them twice. So headerResponse\n // caches the data extracted from the response whenever it's first parsed,\n // to ensure parsing isn't duplicated.\n let headerResponse: HttpHeaderResponse|null = null;\n\n // partialFromXhr extracts the HttpHeaderResponse from the current XMLHttpRequest\n // state, and memoizes it into headerResponse.\n const partialFromXhr = (): HttpHeaderResponse => {\n if (headerResponse !== null) {\n return headerResponse;\n }\n\n // Read status and normalize an IE9 bug (https://bugs.jquery.com/ticket/1450).\n const status: number = xhr.status === 1223 ? HttpStatusCode.NoContent : xhr.status;\n const statusText = xhr.statusText || 'OK';\n\n // Parse headers from XMLHttpRequest - this step is lazy.\n const headers = new HttpHeaders(xhr.getAllResponseHeaders());\n\n // Read the response URL from the XMLHttpResponse instance and fall back on the\n // request URL.\n const url = getResponseUrl(xhr) || req.url;\n\n // Construct the HttpHeaderResponse and memoize it.\n headerResponse = new HttpHeaderResponse({headers, status, statusText, url});\n return headerResponse;\n };\n\n // Next, a few closures are defined for the various events which XMLHttpRequest can\n // emit. This allows them to be unregistered as event listeners later.\n\n // First up is the load event, which represents a response being fully available.\n const onLoad = () => {\n // Read response state from the memoized partial data.\n let {headers, status, statusText, url} = partialFromXhr();\n\n // The body will be read out if present.\n let body: any|null = null;\n\n if (status !== HttpStatusCode.NoContent) {\n // Use XMLHttpRequest.response if set, responseText otherwise.\n body = (typeof xhr.response === 'undefined') ? xhr.responseText : xhr.response;\n }\n\n // Normalize another potential bug (this one comes from CORS).\n if (status === 0) {\n status = !!body ? HttpStatusCode.Ok : 0;\n }\n\n // ok determines whether the response will be transmitted on the event or\n // error channel. Unsuccessful status codes (not 2xx) will always be errors,\n // but a successful status code can still result in an error if the user\n // asked for JSON data and the body cannot be parsed as such.\n let ok = status >= 200 && status < 300;\n\n // Check whether the body needs to be parsed as JSON (in many cases the browser\n // will have done that already).\n if (req.responseType === 'json' && typeof body === 'string') {\n // Save the original body, before attempting XSSI prefix stripping.\n const originalBody = body;\n body = body.replace(XSSI_PREFIX, '');\n try {\n // Attempt the parse. If it fails, a parse error should be delivered to the user.\n body = body !== '' ? JSON.parse(body) : null;\n } catch (error) {\n // Since the JSON.parse failed, it's reasonable to assume this might not have been a\n // JSON response. Restore the original body (including any XSSI prefix) to deliver\n // a better error response.\n body = originalBody;\n\n // If this was an error request to begin with, leave it as a string, it probably\n // just isn't JSON. Otherwise, deliver the parsing error to the user.\n if (ok) {\n // Even though the response status was 2xx, this is still an error.\n ok = false;\n // The parse error contains the text of the body that failed to parse.\n body = {error, text: body} as HttpJsonParseError;\n }\n }\n }\n\n if (ok) {\n // A successful response is delivered on the event stream.\n observer.next(new HttpResponse({\n body,\n headers,\n status,\n statusText,\n url: url || undefined,\n }));\n // The full body has been received and delivered, no further events\n // are possible. This request is complete.\n observer.complete();\n } else {\n // An unsuccessful request is delivered on the error channel.\n observer.error(new HttpErrorResponse({\n // The error in this case is the response body (error from the server).\n error: body,\n headers,\n status,\n statusText,\n url: url || undefined,\n }));\n }\n };\n\n // The onError callback is called when something goes wrong at the network level.\n // Connection timeout, DNS error, offline, etc. These are actual errors, and are\n // transmitted on the error channel.\n const onError = (error: ProgressEvent) => {\n const {url} = partialFromXhr();\n const res = new HttpErrorResponse({\n error,\n status: xhr.status || 0,\n statusText: xhr.statusText || 'Unknown Error',\n url: url || undefined,\n });\n observer.error(res);\n };\n\n // The sentHeaders flag tracks whether the HttpResponseHeaders event\n // has been sent on the stream. This is necessary to track if progress\n // is enabled since the event will be sent on only the first download\n // progerss event.\n let sentHeaders = false;\n\n // The download progress event handler, which is only registered if\n // progress events are enabled.\n const onDownProgress = (event: ProgressEvent) => {\n // Send the HttpResponseHeaders event if it hasn't been sent already.\n if (!sentHeaders) {\n observer.next(partialFromXhr());\n sentHeaders = true;\n }\n\n // Start building the download progress event to deliver on the response\n // event stream.\n let progressEvent: HttpDownloadProgressEvent = {\n type: HttpEventType.DownloadProgress,\n loaded: event.loaded,\n };\n\n // Set the total number of bytes in the event if it's available.\n if (event.lengthComputable) {\n progressEvent.total = event.total;\n }\n\n // If the request was for text content and a partial response is\n // available on XMLHttpRequest, include it in the progress event\n // to allow for streaming reads.\n if (req.responseType === 'text' && !!xhr.responseText) {\n progressEvent.partialText = xhr.responseText;\n }\n\n // Finally, fire the event.\n observer.next(progressEvent);\n };\n\n // The upload progress event handler, which is only registered if\n // progress events are enabled.\n const onUpProgress = (event: ProgressEvent) => {\n // Upload progress events are simpler. Begin building the progress\n // event.\n let progress: HttpUploadProgressEvent = {\n type: HttpEventType.UploadProgress,\n loaded: event.loaded,\n };\n\n // If the total number of bytes being uploaded is available, include\n // it.\n if (event.lengthComputable) {\n progress.total = event.total;\n }\n\n // Send the event.\n observer.next(progress);\n };\n\n // By default, register for load and error events.\n xhr.addEventListener('load', onLoad);\n xhr.addEventListener('error', onError);\n xhr.addEventListener('timeout', onError);\n xhr.addEventListener('abort', onError);\n\n // Progress events are only enabled if requested.\n if (req.reportProgress) {\n // Download progress is always enabled if requested.\n xhr.addEventListener('progress', onDownProgress);\n\n // Upload progress depends on whether there is a body to upload.\n if (reqBody !== null && xhr.upload) {\n xhr.upload.addEventListener('progress', onUpProgress);\n }\n }\n\n // Fire the request, and notify the event stream that it was fired.\n xhr.send(reqBody!);\n observer.next({type: HttpEventType.Sent});\n\n // This is the return from the Observable function, which is the\n // request cancellation handler.\n return () => {\n // On a cancellation, remove all registered event listeners.\n xhr.removeEventListener('error', onError);\n xhr.removeEventListener('abort', onError);\n xhr.removeEventListener('load', onLoad);\n xhr.removeEventListener('timeout', onError);\n if (req.reportProgress) {\n xhr.removeEventListener('progress', onDownProgress);\n if (reqBody !== null && xhr.upload) {\n xhr.upload.removeEventListener('progress', onUpProgress);\n }\n }\n\n // Finally, abort the in-flight request.\n if (xhr.readyState !== xhr.DONE) {\n xhr.abort();\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\nimport {DOCUMENT, ɵparseCookieValue as parseCookieValue} from '@angular/common';\nimport {Inject, Injectable, InjectionToken, PLATFORM_ID} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nimport {HttpHandler} from './backend';\nimport {HttpInterceptor} from './interceptor';\nimport {HttpRequest} from './request';\nimport {HttpEvent} from './response';\n\nexport const XSRF_COOKIE_NAME = new InjectionToken('XSRF_COOKIE_NAME');\nexport const XSRF_HEADER_NAME = new InjectionToken('XSRF_HEADER_NAME');\n\n/**\n * Retrieves the current XSRF token to use with the next outgoing request.\n *\n * @publicApi\n */\nexport abstract class HttpXsrfTokenExtractor {\n /**\n * Get the XSRF token to use with an outgoing request.\n *\n * Will be called for every request, so the token may change between requests.\n */\n abstract getToken(): string|null;\n}\n\n/**\n * `HttpXsrfTokenExtractor` which retrieves the token from a cookie.\n */\n@Injectable()\nexport class HttpXsrfCookieExtractor implements HttpXsrfTokenExtractor {\n private lastCookieString: string = '';\n private lastToken: string|null = null;\n\n /**\n * @internal for testing\n */\n parseCount: number = 0;\n\n constructor(\n @Inject(DOCUMENT) private doc: any, @Inject(PLATFORM_ID) private platform: string,\n @Inject(XSRF_COOKIE_NAME) private cookieName: string) {}\n\n getToken(): string|null {\n if (this.platform === 'server') {\n return null;\n }\n const cookieString = this.doc.cookie || '';\n if (cookieString !== this.lastCookieString) {\n this.parseCount++;\n this.lastToken = parseCookieValue(cookieString, this.cookieName);\n this.lastCookieString = cookieString;\n }\n return this.lastToken;\n }\n}\n\n/**\n * `HttpInterceptor` which adds an XSRF token to eligible outgoing requests.\n */\n@Injectable()\nexport class HttpXsrfInterceptor implements HttpInterceptor {\n constructor(\n private tokenService: HttpXsrfTokenExtractor,\n @Inject(XSRF_HEADER_NAME) private headerName: string) {}\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n const lcUrl = req.url.toLowerCase();\n // Skip both non-mutating requests and absolute URLs.\n // Non-mutating requests don't require a token, and absolute URLs require special handling\n // anyway as the cookie set\n // on our origin is not the same as the token expected by another origin.\n if (req.method === 'GET' || req.method === 'HEAD' || lcUrl.startsWith('http://') ||\n lcUrl.startsWith('https://')) {\n return next.handle(req);\n }\n const token = this.tokenService.getToken();\n\n // Be careful not to overwrite an existing header of the same name.\n if (token !== null && !req.headers.has(this.headerName)) {\n req = req.clone({headers: req.headers.set(this.headerName, token)});\n }\n return next.handle(req);\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\nimport {Injectable, Injector, ModuleWithProviders, NgModule} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nimport {HttpBackend, HttpHandler} from './backend';\nimport {HttpClient} from './client';\nimport {HTTP_INTERCEPTORS, HttpInterceptor, HttpInterceptorHandler, NoopInterceptor} from './interceptor';\nimport {JsonpCallbackContext, JsonpClientBackend, JsonpInterceptor} from './jsonp';\nimport {HttpRequest} from './request';\nimport {HttpEvent} from './response';\nimport {HttpXhrBackend} from './xhr';\nimport {HttpXsrfCookieExtractor, HttpXsrfInterceptor, HttpXsrfTokenExtractor, XSRF_COOKIE_NAME, XSRF_HEADER_NAME} from './xsrf';\n\n/**\n * An injectable `HttpHandler` that applies multiple interceptors\n * to a request before passing it to the given `HttpBackend`.\n *\n * The interceptors are loaded lazily from the injector, to allow\n * interceptors to themselves inject classes depending indirectly\n * on `HttpInterceptingHandler` itself.\n * @see `HttpInterceptor`\n */\n@Injectable()\nexport class HttpInterceptingHandler implements HttpHandler {\n private chain: HttpHandler|null = null;\n\n constructor(private backend: HttpBackend, private injector: Injector) {}\n\n handle(req: HttpRequest): Observable> {\n if (this.chain === null) {\n const interceptors = this.injector.get(HTTP_INTERCEPTORS, []);\n this.chain = interceptors.reduceRight(\n (next, interceptor) => new HttpInterceptorHandler(next, interceptor), this.backend);\n }\n return this.chain.handle(req);\n }\n}\n\n/**\n * Constructs an `HttpHandler` that applies interceptors\n * to a request before passing it to the given `HttpBackend`.\n *\n * Use as a factory function within `HttpClientModule`.\n *\n *\n */\nexport function interceptingHandler(\n backend: HttpBackend, interceptors: HttpInterceptor[]|null = []): HttpHandler {\n if (!interceptors) {\n return backend;\n }\n return interceptors.reduceRight(\n (next, interceptor) => new HttpInterceptorHandler(next, interceptor), backend);\n}\n\n/**\n * Factory function that determines where to store JSONP callbacks.\n *\n * Ordinarily JSONP callbacks are stored on the `window` object, but this may not exist\n * in test environments. In that case, callbacks are stored on an anonymous object instead.\n *\n *\n */\nexport function jsonpCallbackContext(): Object {\n if (typeof window === 'object') {\n return window;\n }\n return {};\n}\n\n/**\n * Configures XSRF protection support for outgoing requests.\n *\n * For a server that supports a cookie-based XSRF protection system,\n * use directly to configure XSRF protection with the correct\n * cookie and header names.\n *\n * If no names are supplied, the default cookie name is `XSRF-TOKEN`\n * and the default header name is `X-XSRF-TOKEN`.\n *\n * @publicApi\n */\n@NgModule({\n providers: [\n HttpXsrfInterceptor,\n {provide: HTTP_INTERCEPTORS, useExisting: HttpXsrfInterceptor, multi: true},\n {provide: HttpXsrfTokenExtractor, useClass: HttpXsrfCookieExtractor},\n {provide: XSRF_COOKIE_NAME, useValue: 'XSRF-TOKEN'},\n {provide: XSRF_HEADER_NAME, useValue: 'X-XSRF-TOKEN'},\n ],\n})\nexport class HttpClientXsrfModule {\n /**\n * Disable the default XSRF protection.\n */\n static disable(): ModuleWithProviders {\n return {\n ngModule: HttpClientXsrfModule,\n providers: [\n {provide: HttpXsrfInterceptor, useClass: NoopInterceptor},\n ],\n };\n }\n\n /**\n * Configure XSRF protection.\n * @param options An object that can specify either or both\n * cookie name or header name.\n * - Cookie name default is `XSRF-TOKEN`.\n * - Header name default is `X-XSRF-TOKEN`.\n *\n */\n static withOptions(options: {\n cookieName?: string,\n headerName?: string,\n } = {}): ModuleWithProviders {\n return {\n ngModule: HttpClientXsrfModule,\n providers: [\n options.cookieName ? {provide: XSRF_COOKIE_NAME, useValue: options.cookieName} : [],\n options.headerName ? {provide: XSRF_HEADER_NAME, useValue: options.headerName} : [],\n ],\n };\n }\n}\n\n/**\n * Configures the [dependency injector](guide/glossary#injector) for `HttpClient`\n * with supporting services for XSRF. Automatically imported by `HttpClientModule`.\n *\n * You can add interceptors to the chain behind `HttpClient` by binding them to the\n * multiprovider for built-in [DI token](guide/glossary#di-token) `HTTP_INTERCEPTORS`.\n *\n * @publicApi\n */\n@NgModule({\n /**\n * Optional configuration for XSRF protection.\n */\n imports: [\n HttpClientXsrfModule.withOptions({\n cookieName: 'XSRF-TOKEN',\n headerName: 'X-XSRF-TOKEN',\n }),\n ],\n /**\n * Configures the [dependency injector](guide/glossary#injector) where it is imported\n * with supporting services for HTTP communications.\n */\n providers: [\n HttpClient,\n {provide: HttpHandler, useClass: HttpInterceptingHandler},\n HttpXhrBackend,\n {provide: HttpBackend, useExisting: HttpXhrBackend},\n ],\n})\nexport class HttpClientModule {\n}\n\n/**\n * Configures the [dependency injector](guide/glossary#injector) for `HttpClient`\n * with supporting services for JSONP.\n * Without this module, Jsonp requests reach the backend\n * with method JSONP, where they are rejected.\n *\n * You can add interceptors to the chain behind `HttpClient` by binding them to the\n * multiprovider for built-in [DI token](guide/glossary#di-token) `HTTP_INTERCEPTORS`.\n *\n * @publicApi\n */\n@NgModule({\n providers: [\n JsonpClientBackend,\n {provide: JsonpCallbackContext, useFactory: jsonpCallbackContext},\n {provide: HTTP_INTERCEPTORS, useClass: JsonpInterceptor, multi: true},\n ],\n})\nexport class HttpClientJsonpModule {\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 function getClosureSafeProperty(objWithPropertyToExtract: T): string {\n for (let key in objWithPropertyToExtract) {\n if (objWithPropertyToExtract[key] === getClosureSafeProperty as any) {\n return key;\n }\n }\n throw Error('Could not find renamed property on target object.');\n}\n\n/**\n * Sets properties on a target object from a source object, but only if\n * the property doesn't already exist on the target object.\n * @param target The target to set properties on\n * @param source The source of the property keys and values to set\n */\nexport function fillProperties(target: {[key: string]: string}, source: {[key: string]: string}) {\n for (const key in source) {\n if (source.hasOwnProperty(key) && !target.hasOwnProperty(key)) {\n target[key] = source[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\nexport function stringify(token: any): string {\n if (typeof token === 'string') {\n return token;\n }\n\n if (Array.isArray(token)) {\n return '[' + token.map(stringify).join(', ') + ']';\n }\n\n if (token == null) {\n return '' + token;\n }\n\n if (token.overriddenName) {\n return `${token.overriddenName}`;\n }\n\n if (token.name) {\n return `${token.name}`;\n }\n\n const res = token.toString();\n\n if (res == null) {\n return '' + res;\n }\n\n const newLineIndex = res.indexOf('\\n');\n return newLineIndex === -1 ? res : res.substring(0, newLineIndex);\n}\n\n/**\n * Concatenates two strings with separator, allocating new strings only when necessary.\n *\n * @param before before string.\n * @param separator separator string.\n * @param after after string.\n * @returns concatenated string.\n */\nexport function concatStringsWithSpace(before: string|null, after: string|null): string {\n return (before == null || before === '') ?\n (after === null ? '' : after) :\n ((after == null || after === '') ? before : before + ' ' + after);\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\nimport {Type} from '../interface/type';\nimport {getClosureSafeProperty} from '../util/property';\nimport {stringify} from '../util/stringify';\n\n\n\n/**\n * An interface that a function passed into {@link forwardRef} has to implement.\n *\n * @usageNotes\n * ### Example\n *\n * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref_fn'}\n * @publicApi\n */\nexport interface ForwardRefFn {\n (): any;\n}\n\nconst __forward_ref__ = getClosureSafeProperty({__forward_ref__: getClosureSafeProperty});\n\n/**\n * Allows to refer to references which are not yet defined.\n *\n * For instance, `forwardRef` is used when the `token` which we need to refer to for the purposes of\n * DI is declared, but not yet defined. It is also used when the `token` which we use when creating\n * a query is not yet defined.\n *\n * @usageNotes\n * ### Example\n * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='forward_ref'}\n * @publicApi\n */\nexport function forwardRef(forwardRefFn: ForwardRefFn): Type {\n (forwardRefFn).__forward_ref__ = forwardRef;\n (forwardRefFn).toString = function() {\n return stringify(this());\n };\n return (>forwardRefFn);\n}\n\n/**\n * Lazily retrieves the reference value from a forwardRef.\n *\n * Acts as the identity function when given a non-forward-ref value.\n *\n * @usageNotes\n * ### Example\n *\n * {@example core/di/ts/forward_ref/forward_ref_spec.ts region='resolve_forward_ref'}\n *\n * @see `forwardRef`\n * @publicApi\n */\nexport function resolveForwardRef(type: T): T {\n return isForwardRef(type) ? type() : type;\n}\n\n/** Checks whether a function is wrapped by a `forwardRef`. */\nexport function isForwardRef(fn: any): fn is() => any {\n return typeof fn === 'function' && fn.hasOwnProperty(__forward_ref__) &&\n fn.__forward_ref__ === forwardRef;\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// Base URL for the error details page.\n// Keep this value in sync with a similar const in\n// `packages/compiler-cli/src/ngtsc/diagnostics/src/error_code.ts`.\nconst ERROR_DETAILS_PAGE_BASE_URL = 'https://angular.io/errors';\n\nexport const enum RuntimeErrorCode {\n // Internal Errors\n\n // Change Detection Errors\n EXPRESSION_CHANGED_AFTER_CHECKED = '100',\n\n // Dependency Injection Errors\n CYCLIC_DI_DEPENDENCY = '200',\n PROVIDER_NOT_FOUND = '201',\n\n // Template Errors\n MULTIPLE_COMPONENTS_MATCH = '300',\n EXPORT_NOT_FOUND = '301',\n PIPE_NOT_FOUND = '302',\n UNKNOWN_BINDING = '303',\n UNKNOWN_ELEMENT = '304',\n TEMPLATE_STRUCTURE_ERROR = '305'\n\n // Styling Errors\n\n // Declarations Errors\n\n // i18n Errors\n\n // Compilation Errors\n}\n\nexport class RuntimeError extends Error {\n constructor(public code: RuntimeErrorCode, message: string) {\n super(formatRuntimeError(code, message));\n }\n}\n\n// Contains a set of error messages that have details guides at angular.io.\n// Full list of available error guides can be found at https://angular.io/errors\n/* tslint:disable:no-toplevel-property-access */\nexport const RUNTIME_ERRORS_WITH_GUIDES = new Set([\n RuntimeErrorCode.EXPRESSION_CHANGED_AFTER_CHECKED,\n RuntimeErrorCode.CYCLIC_DI_DEPENDENCY,\n RuntimeErrorCode.PROVIDER_NOT_FOUND,\n RuntimeErrorCode.MULTIPLE_COMPONENTS_MATCH,\n RuntimeErrorCode.EXPORT_NOT_FOUND,\n RuntimeErrorCode.PIPE_NOT_FOUND,\n]);\n/* tslint:enable:no-toplevel-property-access */\n\n/** Called to format a runtime error */\nexport function formatRuntimeError(code: RuntimeErrorCode, message: string): string {\n const fullCode = code ? `NG0${code}: ` : '';\n\n let errorMessage = `${fullCode}${message}`;\n\n // Some runtime errors are still thrown without `ngDevMode` (for example\n // `throwProviderNotFoundError`), so we add `ngDevMode` check here to avoid pulling\n // `RUNTIME_ERRORS_WITH_GUIDES` symbol into prod bundles.\n // TODO: revisit all instances where `RuntimeError` is thrown and see if `ngDevMode` can be added\n // there instead to tree-shake more devmode-only code (and eventually remove `ngDevMode` check\n // from this code).\n if (ngDevMode && RUNTIME_ERRORS_WITH_GUIDES.has(code)) {\n errorMessage = `${errorMessage}. Find more at ${ERROR_DETAILS_PAGE_BASE_URL}/NG0${code}`;\n }\n return errorMessage;\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 * Used for stringify render output in Ivy.\n * Important! This function is very performance-sensitive and we should\n * be extra careful not to introduce megamorphic reads in it.\n * Check `core/test/render3/perf/render_stringify` for benchmarks and alternate implementations.\n */\nexport function renderStringify(value: any): string {\n if (typeof value === 'string') return value;\n if (value == null) return '';\n // Use `String` so that it invokes the `toString` method of the value. Note that this\n // appears to be faster than calling `value.toString` (see `render_stringify` benchmark).\n return String(value);\n}\n\n\n/**\n * Used to stringify a value so that it can be displayed in an error message.\n * Important! This function contains a megamorphic read and should only be\n * used for error messages.\n */\nexport function stringifyForError(value: any): string {\n if (typeof value === 'function') return value.name || value.toString();\n if (typeof value === 'object' && value != null && typeof value.type === 'function') {\n return value.type.name || value.type.toString();\n }\n\n return renderStringify(value);\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 */\nimport {InjectorType} from '../di/interface/defs';\nimport {stringify} from '../util/stringify';\nimport {RuntimeError, RuntimeErrorCode} from './error_code';\nimport {stringifyForError} from './util/stringify_utils';\n\n\n/** Called when directives inject each other (creating a circular dependency) */\nexport function throwCyclicDependencyError(token: string, path?: string[]): never {\n const depPath = path ? `. Dependency path: ${path.join(' > ')} > ${token}` : '';\n throw new RuntimeError(\n RuntimeErrorCode.CYCLIC_DI_DEPENDENCY,\n `Circular dependency in DI detected for ${token}${depPath}`);\n}\n\nexport function throwMixedMultiProviderError() {\n throw new Error(`Cannot mix multi providers and regular providers`);\n}\n\nexport function throwInvalidProviderError(\n ngModuleType?: InjectorType, providers?: any[], provider?: any) {\n let ngModuleDetail = '';\n if (ngModuleType && providers) {\n const providerDetail = providers.map(v => v == provider ? '?' + provider + '?' : '...');\n ngModuleDetail =\n ` - only instances of Provider and Type are allowed, got: [${providerDetail.join(', ')}]`;\n }\n\n throw new Error(\n `Invalid provider for the NgModule '${stringify(ngModuleType)}'` + ngModuleDetail);\n}\n\n\n/** Throws an error when a token is not found in DI. */\nexport function throwProviderNotFoundError(token: any, injectorName?: string): never {\n const injectorDetails = injectorName ? ` in ${injectorName}` : '';\n throw new RuntimeError(\n RuntimeErrorCode.PROVIDER_NOT_FOUND,\n `No provider for ${stringifyForError(token)} found${injectorDetails}`);\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 functions in this file verify that the assumptions we are making\n// about state in an instruction are correct before implementing any logic.\n// They are meant only to be called in dev mode as sanity checks.\n\nimport {stringify} from './stringify';\n\nexport function assertNumber(actual: any, msg: string): asserts actual is number {\n if (!(typeof actual === 'number')) {\n throwError(msg, typeof actual, 'number', '===');\n }\n}\n\nexport function assertNumberInRange(\n actual: any, minInclusive: number, maxInclusive: number): asserts actual is number {\n assertNumber(actual, 'Expected a number');\n assertLessThanOrEqual(actual, maxInclusive, 'Expected number to be less than or equal to');\n assertGreaterThanOrEqual(actual, minInclusive, 'Expected number to be greater than or equal to');\n}\n\nexport function assertString(actual: any, msg: string): asserts actual is string {\n if (!(typeof actual === 'string')) {\n throwError(msg, actual === null ? 'null' : typeof actual, 'string', '===');\n }\n}\n\nexport function assertFunction(actual: any, msg: string): asserts actual is Function {\n if (!(typeof actual === 'function')) {\n throwError(msg, actual === null ? 'null' : typeof actual, 'function', '===');\n }\n}\n\nexport function assertEqual(actual: T, expected: T, msg: string) {\n if (!(actual == expected)) {\n throwError(msg, actual, expected, '==');\n }\n}\n\nexport function assertNotEqual(actual: T, expected: T, msg: string): asserts actual is T {\n if (!(actual != expected)) {\n throwError(msg, actual, expected, '!=');\n }\n}\n\nexport function assertSame(actual: T, expected: T, msg: string): asserts actual is T {\n if (!(actual === expected)) {\n throwError(msg, actual, expected, '===');\n }\n}\n\nexport function assertNotSame(actual: T, expected: T, msg: string) {\n if (!(actual !== expected)) {\n throwError(msg, actual, expected, '!==');\n }\n}\n\nexport function assertLessThan(actual: T, expected: T, msg: string): asserts actual is T {\n if (!(actual < expected)) {\n throwError(msg, actual, expected, '<');\n }\n}\n\nexport function assertLessThanOrEqual(actual: T, expected: T, msg: string): asserts actual is T {\n if (!(actual <= expected)) {\n throwError(msg, actual, expected, '<=');\n }\n}\n\nexport function assertGreaterThan(actual: T, expected: T, msg: string): asserts actual is T {\n if (!(actual > expected)) {\n throwError(msg, actual, expected, '>');\n }\n}\n\nexport function assertGreaterThanOrEqual(\n actual: T, expected: T, msg: string): asserts actual is T {\n if (!(actual >= expected)) {\n throwError(msg, actual, expected, '>=');\n }\n}\n\nexport function assertNotDefined(actual: T, msg: string) {\n if (actual != null) {\n throwError(msg, actual, null, '==');\n }\n}\n\nexport function assertDefined(actual: T|null|undefined, msg: string): asserts actual is T {\n if (actual == null) {\n throwError(msg, actual, null, '!=');\n }\n}\n\nexport function throwError(msg: string): never;\nexport function throwError(msg: string, actual: any, expected: any, comparison: string): never;\nexport function throwError(msg: string, actual?: any, expected?: any, comparison?: string): never {\n throw new Error(\n `ASSERTION ERROR: ${msg}` +\n (comparison == null ? '' : ` [Expected=> ${expected} ${comparison} ${actual} <=Actual]`));\n}\n\nexport function assertDomNode(node: any): asserts node is Node {\n // If we're in a worker, `Node` will not be defined.\n if (!(typeof Node !== 'undefined' && node instanceof Node) &&\n !(typeof node === 'object' && node != null &&\n node.constructor.name === 'WebWorkerRenderNode')) {\n throwError(`The provided value must be an instance of a DOM Node but got ${stringify(node)}`);\n }\n}\n\n\nexport function assertIndexInRange(arr: any[], index: number) {\n assertDefined(arr, 'Array must be defined.');\n const maxLen = arr.length;\n if (index < 0 || index >= maxLen) {\n throwError(`Index expected to be less than ${maxLen} but got ${index}`);\n }\n}\n\n\nexport function assertOneOf(value: any, ...validValues: any[]) {\n if (validValues.indexOf(value) !== -1) return true;\n throwError(`Expected value to be one of ${JSON.stringify(validValues)} but was ${\n JSON.stringify(value)}.`);\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\nimport {Type} from '../../interface/type';\nimport {getClosureSafeProperty} from '../../util/property';\nimport {ClassProvider, ConstructorProvider, ExistingProvider, FactoryProvider, StaticClassProvider, ValueProvider} from './provider';\n\n\n\n/**\n * Information about how a type or `InjectionToken` interfaces with the DI system.\n *\n * At a minimum, this includes a `factory` which defines how to create the given type `T`, possibly\n * requesting injection of other types if necessary.\n *\n * Optionally, a `providedIn` parameter specifies that the given type belongs to a particular\n * `Injector`, `NgModule`, or a special scope (e.g. `'root'`). A value of `null` indicates\n * that the injectable does not belong to any scope.\n *\n * @codeGenApi\n * @publicApi The ViewEngine compiler emits code with this type for injectables. This code is\n * deployed to npm, and should be treated as public api.\n\n */\nexport interface ɵɵInjectableDeclaration {\n /**\n * Specifies that the given type belongs to a particular injector:\n * - `InjectorType` such as `NgModule`,\n * - `'root'` the root injector\n * - `'any'` all injectors.\n * - `null`, does not belong to any injector. Must be explicitly listed in the injector\n * `providers`.\n */\n providedIn: InjectorType|'root'|'platform'|'any'|null;\n\n /**\n * The token to which this definition belongs.\n *\n * Note that this may not be the same as the type that the `factory` will create.\n */\n token: unknown;\n\n /**\n * Factory method to execute to create an instance of the injectable.\n */\n factory: (t?: Type) => T;\n\n /**\n * In a case of no explicit injector, a location where the instance of the injectable is stored.\n */\n value: T|undefined;\n}\n\n/**\n * Information about the providers to be included in an `Injector` as well as how the given type\n * which carries the information should be created by the DI system.\n *\n * An `InjectorDef` can import other types which have `InjectorDefs`, forming a deep nested\n * structure of providers with a defined priority (identically to how `NgModule`s also have\n * an import/dependency structure).\n *\n * NOTE: This is a private type and should not be exported\n *\n * @codeGenApi\n */\nexport interface ɵɵInjectorDef {\n // TODO(alxhub): Narrow down the type here once decorators properly change the return type of the\n // class they are decorating (to add the ɵprov property for example).\n providers: (Type|ValueProvider|ExistingProvider|FactoryProvider|ConstructorProvider|\n StaticClassProvider|ClassProvider|any[])[];\n\n imports: (InjectorType|InjectorTypeWithProviders)[];\n}\n\n/**\n * A `Type` which has a `ɵprov: ɵɵInjectableDeclaration` static field.\n *\n * `InjectableType`s contain their own Dependency Injection metadata and are usable in an\n * `InjectorDef`-based `StaticInjector.\n *\n * @publicApi\n */\nexport interface InjectableType extends Type {\n /**\n * Opaque type whose structure is highly version dependent. Do not rely on any properties.\n */\n ɵprov: unknown;\n}\n\n/**\n * A type which has an `InjectorDef` static field.\n *\n * `InjectorTypes` can be used to configure a `StaticInjector`.\n *\n * This is an opaque type whose structure is highly version dependent. Do not rely on any\n * properties.\n *\n * @publicApi\n */\nexport interface InjectorType extends Type {\n ɵfac?: unknown;\n ɵinj: unknown;\n}\n\n/**\n * Describes the `InjectorDef` equivalent of a `ModuleWithProviders`, an `InjectorType` with an\n * associated array of providers.\n *\n * Objects of this type can be listed in the imports section of an `InjectorDef`.\n *\n * NOTE: This is a private type and should not be exported\n */\nexport interface InjectorTypeWithProviders {\n ngModule: InjectorType;\n providers?: (Type|ValueProvider|ExistingProvider|FactoryProvider|ConstructorProvider|\n StaticClassProvider|ClassProvider|any[])[];\n}\n\n\n/**\n * Construct an injectable definition which defines how a token will be constructed by the DI\n * system, and in which injectors (if any) it will be available.\n *\n * This should be assigned to a static `ɵprov` field on a type, which will then be an\n * `InjectableType`.\n *\n * Options:\n * * `providedIn` determines which injectors will include the injectable, by either associating it\n * with an `@NgModule` or other `InjectorType`, or by specifying that this injectable should be\n * provided in the `'root'` injector, which will be the application-level injector in most apps.\n * * `factory` gives the zero argument function which will create an instance of the injectable.\n * The factory can call `inject` to access the `Injector` and request injection of dependencies.\n *\n * @codeGenApi\n * @publicApi This instruction has been emitted by ViewEngine for some time and is deployed to npm.\n */\nexport function ɵɵdefineInjectable(opts: {\n token: unknown,\n providedIn?: Type|'root'|'platform'|'any'|null, factory: () => T,\n}): unknown {\n return {\n token: opts.token,\n providedIn: opts.providedIn as any || null,\n factory: opts.factory,\n value: undefined,\n } as ɵɵInjectableDeclaration;\n}\n\n/**\n * @deprecated in v8, delete after v10. This API should be used only by generated code, and that\n * code should now use ɵɵdefineInjectable instead.\n * @publicApi\n */\nexport const defineInjectable = ɵɵdefineInjectable;\n\n/**\n * Construct an `InjectorDef` which configures an injector.\n *\n * This should be assigned to a static injector def (`ɵinj`) field on a type, which will then be an\n * `InjectorType`.\n *\n * Options:\n *\n * * `providers`: an optional array of providers to add to the injector. Each provider must\n * either have a factory or point to a type which has a `ɵprov` static property (the\n * type must be an `InjectableType`).\n * * `imports`: an optional array of imports of other `InjectorType`s or `InjectorTypeWithModule`s\n * whose providers will also be added to the injector. Locally provided types will override\n * providers from imports.\n *\n * @codeGenApi\n */\nexport function ɵɵdefineInjector(options: {providers?: any[], imports?: any[]}): unknown {\n return {providers: options.providers || [], imports: options.imports || []};\n}\n\n/**\n * Read the injectable def (`ɵprov`) for `type` in a way which is immune to accidentally reading\n * inherited value.\n *\n * @param type A type which may have its own (non-inherited) `ɵprov`.\n */\nexport function getInjectableDef(type: any): ɵɵInjectableDeclaration|null {\n return getOwnDefinition(type, NG_PROV_DEF) || getOwnDefinition(type, NG_INJECTABLE_DEF);\n}\n\n/**\n * Return definition only if it is defined directly on `type` and is not inherited from a base\n * class of `type`.\n */\nfunction getOwnDefinition(type: any, field: string): ɵɵInjectableDeclaration|null {\n return type.hasOwnProperty(field) ? type[field] : null;\n}\n\n/**\n * Read the injectable def (`ɵprov`) for `type` or read the `ɵprov` from one of its ancestors.\n *\n * @param type A type which may have `ɵprov`, via inheritance.\n *\n * @deprecated Will be removed in a future version of Angular, where an error will occur in the\n * scenario if we find the `ɵprov` on an ancestor only.\n */\nexport function getInheritedInjectableDef(type: any): ɵɵInjectableDeclaration|null {\n const def = type && (type[NG_PROV_DEF] || type[NG_INJECTABLE_DEF]);\n\n if (def) {\n const typeName = getTypeName(type);\n // TODO(FW-1307): Re-add ngDevMode when closure can handle it\n // ngDevMode &&\n console.warn(\n `DEPRECATED: DI is instantiating a token \"${\n typeName}\" that inherits its @Injectable decorator but does not provide one itself.\\n` +\n `This will become an error in a future version of Angular. Please add @Injectable() to the \"${\n typeName}\" class.`);\n return def;\n } else {\n return null;\n }\n}\n\n/** Gets the name of a type, accounting for some cross-browser differences. */\nfunction getTypeName(type: any): string {\n // `Function.prototype.name` behaves differently between IE and other browsers. In most browsers\n // it'll always return the name of the function itself, no matter how many other functions it\n // inherits from. On IE the function doesn't have its own `name` property, but it takes it from\n // the lowest level in the prototype chain. E.g. if we have `class Foo extends Parent` most\n // browsers will evaluate `Foo.name` to `Foo` while IE will return `Parent`. We work around\n // the issue by converting the function to a string and parsing its name out that way via a regex.\n if (type.hasOwnProperty('name')) {\n return type.name;\n }\n\n const match = ('' + type).match(/^function\\s*([^\\s(]+)/);\n return match === null ? '' : match[1];\n}\n\n/**\n * Read the injector def type in a way which is immune to accidentally reading inherited value.\n *\n * @param type type which may have an injector def (`ɵinj`)\n */\nexport function getInjectorDef(type: any): ɵɵInjectorDef|null {\n return type && (type.hasOwnProperty(NG_INJ_DEF) || type.hasOwnProperty(NG_INJECTOR_DEF)) ?\n (type as any)[NG_INJ_DEF] :\n null;\n}\n\nexport const NG_PROV_DEF = getClosureSafeProperty({ɵprov: getClosureSafeProperty});\nexport const NG_INJ_DEF = getClosureSafeProperty({ɵinj: getClosureSafeProperty});\n\n// We need to keep these around so we can read off old defs if new defs are unavailable\nexport const NG_INJECTABLE_DEF = getClosureSafeProperty({ngInjectableDef: getClosureSafeProperty});\nexport const NG_INJECTOR_DEF = getClosureSafeProperty({ngInjectorDef: getClosureSafeProperty});\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/**\n * Special flag indicating that a decorator is of type `Inject`. It's used to make `Inject`\n * decorator tree-shakable (so we don't have to rely on the `instanceof` checks).\n * Note: this flag is not included into the `InjectFlags` since it's an internal-only API.\n */\nexport const enum DecoratorFlags {\n Inject = -1\n}\n\n/**\n * Injection flags for DI.\n *\n * @publicApi\n */\nexport enum InjectFlags {\n // TODO(alxhub): make this 'const' (and remove `InternalInjectFlags` enum) when ngc no longer\n // writes exports of it into ngfactory files.\n\n /** Check self and check parent injector if needed */\n Default = 0b0000,\n\n /**\n * Specifies that an injector should retrieve a dependency from any injector until reaching the\n * host element of the current component. (Only used with Element Injector)\n */\n Host = 0b0001,\n\n /** Don't ascend to ancestors of the node requesting injection. */\n Self = 0b0010,\n\n /** Skip the node that is requesting injection. */\n SkipSelf = 0b0100,\n\n /** Inject `defaultValue` instead if token not found. */\n Optional = 0b1000,\n}\n\n/**\n * This enum is an exact copy of the `InjectFlags` enum above, but the difference is that this is a\n * const enum, so actual enum values would be inlined in generated code. The `InjectFlags` enum can\n * be turned into a const enum when ViewEngine is removed (see TODO at the `InjectFlags` enum\n * above). The benefit of inlining is that we can use these flags at the top level without affecting\n * tree-shaking (see \"no-toplevel-property-access\" tslint rule for more info).\n * Keep this enum in sync with `InjectFlags` enum above.\n */\nexport const enum InternalInjectFlags {\n /** Check self and check parent injector if needed */\n Default = 0b0000,\n\n /**\n * Specifies that an injector should retrieve a dependency from any injector until reaching the\n * host element of the current component. (Only used with Element Injector)\n */\n Host = 0b0001,\n\n /** Don't ascend to ancestors of the node requesting injection. */\n Self = 0b0010,\n\n /** Skip the node that is requesting injection. */\n SkipSelf = 0b0100,\n\n /** Inject `defaultValue` instead if token not found. */\n Optional = 0b1000,\n\n /**\n * This token is being injected into a pipe.\n *\n * This flag is intentionally not in the public facing `InjectFlags` because it is only added by\n * the compiler and is not a developer applicable flag.\n */\n ForPipe = 0b10000,\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\nimport {throwProviderNotFoundError} from '../render3/errors_di';\nimport {assertNotEqual} from '../util/assert';\nimport {stringify} from '../util/stringify';\n\nimport {getInjectableDef, ɵɵInjectableDeclaration} from './interface/defs';\nimport {InjectFlags} from './interface/injector';\nimport {ProviderToken} from './provider_token';\n\n\n/**\n * Current implementation of inject.\n *\n * By default, it is `injectInjectorOnly`, which makes it `Injector`-only aware. It can be changed\n * to `directiveInject`, which brings in the `NodeInjector` system of ivy. It is designed this\n * way for two reasons:\n * 1. `Injector` should not depend on ivy logic.\n * 2. To maintain tree shake-ability we don't want to bring in unnecessary code.\n */\nlet _injectImplementation: ((token: ProviderToken, flags?: InjectFlags) => T | null)|\n undefined;\nexport function getInjectImplementation() {\n return _injectImplementation;\n}\n\n\n/**\n * Sets the current inject implementation.\n */\nexport function setInjectImplementation(\n impl: ((token: ProviderToken, flags?: InjectFlags) => T | null)|\n undefined): ((token: ProviderToken, flags?: InjectFlags) => T | null)|undefined {\n const previous = _injectImplementation;\n _injectImplementation = impl;\n return previous;\n}\n\n\n/**\n * Injects `root` tokens in limp mode.\n *\n * If no injector exists, we can still inject tree-shakable providers which have `providedIn` set to\n * `\"root\"`. This is known as the limp mode injection. In such case the value is stored in the\n * injectable definition.\n */\nexport function injectRootLimpMode(\n token: ProviderToken, notFoundValue: T|undefined, flags: InjectFlags): T|null {\n const injectableDef: ɵɵInjectableDeclaration|null = getInjectableDef(token);\n if (injectableDef && injectableDef.providedIn == 'root') {\n return injectableDef.value === undefined ? injectableDef.value = injectableDef.factory() :\n injectableDef.value;\n }\n if (flags & InjectFlags.Optional) return null;\n if (notFoundValue !== undefined) return notFoundValue;\n throwProviderNotFoundError(stringify(token), 'Injector');\n}\n\n\n/**\n * Assert that `_injectImplementation` is not `fn`.\n *\n * This is useful, to prevent infinite recursion.\n *\n * @param fn Function which it should not equal to\n */\nexport function assertInjectImplementationNotEqual(\n fn: ((token: ProviderToken, flags?: InjectFlags) => T | null)) {\n ngDevMode &&\n assertNotEqual(_injectImplementation, fn, 'Calling ɵɵinject would cause infinite recursion');\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 * Convince closure compiler that the wrapped function has no side-effects.\n *\n * Closure compiler always assumes that `toString` has no side-effects. We use this quirk to\n * allow us to execute a function but have closure compiler mark the call as no-side-effects.\n * It is important that the return value for the `noSideEffects` function be assigned\n * to something which is retained otherwise the call to `noSideEffects` will be removed by closure\n * compiler.\n */\nexport function noSideEffects(fn: () => T): T {\n return {toString: fn}.toString() as unknown as T;\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/**\n * The strategy that the default change detector uses to detect changes.\n * When set, takes effect the next time change detection is triggered.\n *\n * @see {@link ChangeDetectorRef#usage-notes Change detection usage}\n *\n * @publicApi\n */\nexport enum ChangeDetectionStrategy {\n /**\n * Use the `CheckOnce` strategy, meaning that automatic change detection is deactivated\n * until reactivated by setting the strategy to `Default` (`CheckAlways`).\n * Change detection can still be explicitly invoked.\n * This strategy applies to all child directives and cannot be overridden.\n */\n OnPush = 0,\n\n /**\n * Use the default `CheckAlways` strategy, in which change detection is automatic until\n * explicitly deactivated.\n */\n Default = 1,\n}\n\n/**\n * Defines the possible states of the default change detector.\n * @see `ChangeDetectorRef`\n */\nexport enum ChangeDetectorStatus {\n /**\n * A state in which, after calling `detectChanges()`, the change detector\n * state becomes `Checked`, and must be explicitly invoked or reactivated.\n */\n CheckOnce,\n\n /**\n * A state in which change detection is skipped until the change detector mode\n * becomes `CheckOnce`.\n */\n Checked,\n\n /**\n * A state in which change detection continues automatically until explicitly\n * deactivated.\n */\n CheckAlways,\n\n /**\n * A state in which a change detector sub tree is not a part of the main tree and\n * should be skipped.\n */\n Detached,\n\n /**\n * Indicates that the change detector encountered an error checking a binding\n * or calling a directive lifecycle method and is now in an inconsistent state. Change\n * detectors in this state do not detect changes.\n */\n Errored,\n\n /**\n * Indicates that the change detector has been destroyed.\n */\n Destroyed,\n}\n\n/**\n * Reports whether a given strategy is currently the default for change detection.\n * @param changeDetectionStrategy The strategy to check.\n * @returns True if the given strategy is the current default, false otherwise.\n * @see `ChangeDetectorStatus`\n * @see `ChangeDetectorRef`\n */\nexport function isDefaultChangeDetectionStrategy(changeDetectionStrategy: ChangeDetectionStrategy):\n boolean {\n return changeDetectionStrategy == null ||\n changeDetectionStrategy === ChangeDetectionStrategy.Default;\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 * Defines template and style encapsulation options available for Component's {@link Component}.\n *\n * See {@link Component#encapsulation encapsulation}.\n *\n * @usageNotes\n * ### Example\n *\n * {@example core/ts/metadata/encapsulation.ts region='longform'}\n *\n * @publicApi\n */\nexport enum ViewEncapsulation {\n /**\n * Emulate `Native` scoping of styles by adding an attribute containing surrogate id to the Host\n * Element and pre-processing the style rules provided via {@link Component#styles styles} or\n * {@link Component#styleUrls styleUrls}, and adding the new Host Element attribute to all\n * selectors.\n *\n * This is the default option.\n */\n Emulated = 0,\n\n // Historically the 1 value was for `Native` encapsulation which has been removed as of v11.\n\n /**\n * Don't provide any template or style encapsulation.\n */\n None = 2,\n\n /**\n * Use Shadow DOM to encapsulate styles.\n *\n * For the DOM this means using modern [Shadow\n * DOM](https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM) and\n * creating a ShadowRoot for Component's Host Element.\n */\n ShadowDom = 3\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// TODO(jteplitz602): Load WorkerGlobalScope from lib.webworker.d.ts file #3492\ndeclare var WorkerGlobalScope: any /** TODO #9100 */;\n// CommonJS / Node have global context exposed as \"global\" variable.\n// We don't want to include the whole node.d.ts this this compilation unit so we'll just fake\n// the global \"global\" var for now.\ndeclare var global: any /** TODO #9100 */;\n\nconst __globalThis = typeof globalThis !== 'undefined' && globalThis;\nconst __window = typeof window !== 'undefined' && window;\nconst __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&\n self instanceof WorkerGlobalScope && self;\nconst __global = typeof global !== 'undefined' && global;\n\n// Always use __globalThis if available, which is the spec-defined global variable across all\n// environments, then fallback to __global first, because in Node tests both __global and\n// __window may be defined and _global should be __global in that case.\nconst _global = __globalThis || __global || __window || __self;\n\n/**\n * Attention: whenever providing a new value, be sure to add an\n * entry into the corresponding `....externs.js` file,\n * so that closure won't use that global for its purposes.\n */\nexport {_global as global};\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 */\nimport {initNgDevMode} from './ng_dev_mode';\n\n/**\n * This file contains reuseable \"empty\" symbols that can be used as default return values\n * in different parts of the rendering code. Because the same symbols are returned, this\n * allows for identity checks against these values to be consistently used by the framework\n * code.\n */\n\nexport const EMPTY_OBJ: {} = {};\nexport const EMPTY_ARRAY: any[] = [];\n\n// freezing the values prevents any code from accidentally inserting new values in\nif ((typeof ngDevMode === 'undefined' || ngDevMode) && initNgDevMode()) {\n // These property accesses can be ignored because ngDevMode will be set to false\n // when optimizing code and the whole if statement will be dropped.\n // tslint:disable-next-line:no-toplevel-property-access\n Object.freeze(EMPTY_OBJ);\n // tslint:disable-next-line:no-toplevel-property-access\n Object.freeze(EMPTY_ARRAY);\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\nimport {getClosureSafeProperty} from '../util/property';\n\nexport const NG_COMP_DEF = getClosureSafeProperty({ɵcmp: getClosureSafeProperty});\nexport const NG_DIR_DEF = getClosureSafeProperty({ɵdir: getClosureSafeProperty});\nexport const NG_PIPE_DEF = getClosureSafeProperty({ɵpipe: getClosureSafeProperty});\nexport const NG_MOD_DEF = getClosureSafeProperty({ɵmod: getClosureSafeProperty});\nexport const NG_LOC_ID_DEF = getClosureSafeProperty({ɵloc: getClosureSafeProperty});\nexport const NG_FACTORY_DEF = getClosureSafeProperty({ɵfac: getClosureSafeProperty});\n\n/**\n * If a directive is diPublic, bloomAdd sets a property on the type with this constant as\n * the key and the directive's unique ID as the value. This allows us to map directives to their\n * bloom filter bit for DI.\n */\n// TODO(misko): This is wrong. The NG_ELEMENT_ID should never be minified.\nexport const NG_ELEMENT_ID = getClosureSafeProperty({__NG_ELEMENT_ID__: getClosureSafeProperty});\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\nimport {ChangeDetectionStrategy} from '../change_detection/constants';\nimport {Mutable, Type} from '../interface/type';\nimport {NgModuleDef, NgModuleType} from '../metadata/ng_module_def';\nimport {SchemaMetadata} from '../metadata/schema';\nimport {ViewEncapsulation} from '../metadata/view';\nimport {noSideEffects} from '../util/closure';\nimport {EMPTY_ARRAY, EMPTY_OBJ} from '../util/empty';\nimport {initNgDevMode} from '../util/ng_dev_mode';\nimport {stringify} from '../util/stringify';\nimport {NG_COMP_DEF, NG_DIR_DEF, NG_LOC_ID_DEF, NG_MOD_DEF, NG_PIPE_DEF} from './fields';\nimport {ComponentDef, ComponentDefFeature, ComponentTemplate, ComponentType, ContentQueriesFunction, DirectiveDef, DirectiveDefFeature, DirectiveTypesOrFactory, HostBindingsFunction, PipeDef, PipeTypesOrFactory, ViewQueriesFunction} from './interfaces/definition';\nimport {TAttributes, TConstantsOrFactory} from './interfaces/node';\nimport {CssSelectorList} from './interfaces/projection';\n\n\nlet _renderCompCount = 0;\n\n\n/**\n * Create a component definition object.\n *\n *\n * # Example\n * ```\n * class MyDirective {\n * // Generated by Angular Template Compiler\n * // [Symbol] syntax will not be supported by TypeScript until v2.7\n * static ɵcmp = defineComponent({\n * ...\n * });\n * }\n * ```\n * @codeGenApi\n */\nexport function ɵɵdefineComponent(componentDefinition: {\n /**\n * Directive type, needed to configure the injector.\n */\n type: Type;\n\n /** The selectors that will be used to match nodes to this component. */\n selectors?: CssSelectorList;\n\n /**\n * The number of nodes, local refs, and pipes in this component template.\n *\n * Used to calculate the length of this component's LView array, so we\n * can pre-fill the array and set the binding start index.\n */\n // TODO(kara): remove queries from this count\n decls: number;\n\n /**\n * The number of bindings in this component template (including pure fn bindings).\n *\n * Used to calculate the length of this component's LView array, so we\n * can pre-fill the array and set the host binding start index.\n */\n vars: number;\n\n /**\n * A map of input names.\n *\n * The format is in: `{[actualPropertyName: string]:(string|[string, string])}`.\n *\n * Given:\n * ```\n * class MyComponent {\n * @Input()\n * publicInput1: string;\n *\n * @Input('publicInput2')\n * declaredInput2: string;\n * }\n * ```\n *\n * is described as:\n * ```\n * {\n * publicInput1: 'publicInput1',\n * declaredInput2: ['publicInput2', 'declaredInput2'],\n * }\n * ```\n *\n * Which the minifier may translate to:\n * ```\n * {\n * minifiedPublicInput1: 'publicInput1',\n * minifiedDeclaredInput2: ['publicInput2', 'declaredInput2'],\n * }\n * ```\n *\n * This allows the render to re-construct the minified, public, and declared names\n * of properties.\n *\n * NOTE:\n * - Because declared and public name are usually same we only generate the array\n * `['public', 'declared']` format when they differ.\n * - The reason why this API and `outputs` API is not the same is that `NgOnChanges` has\n * inconsistent behavior in that it uses declared names rather than minified or public. For\n * this reason `NgOnChanges` will be deprecated and removed in future version and this\n * API will be simplified to be consistent with `output`.\n */\n inputs?: {[P in keyof T]?: string | [string, string]};\n\n /**\n * A map of output names.\n *\n * The format is in: `{[actualPropertyName: string]:string}`.\n *\n * Which the minifier may translate to: `{[minifiedPropertyName: string]:string}`.\n *\n * This allows the render to re-construct the minified and non-minified names\n * of properties.\n */\n outputs?: {[P in keyof T]?: string};\n\n /**\n * Function executed by the parent template to allow child directive to apply host bindings.\n */\n hostBindings?: HostBindingsFunction;\n\n /**\n * The number of bindings in this directive `hostBindings` (including pure fn bindings).\n *\n * Used to calculate the length of the component's LView array, so we\n * can pre-fill the array and set the host binding start index.\n */\n hostVars?: number;\n\n /**\n * Assign static attribute values to a host element.\n *\n * This property will assign static attribute values as well as class and style\n * values to a host element. Since attribute values can consist of different types of values, the\n * `hostAttrs` array must include the values in the following format:\n *\n * attrs = [\n * // static attributes (like `title`, `name`, `id`...)\n * attr1, value1, attr2, value,\n *\n * // a single namespace value (like `x:id`)\n * NAMESPACE_MARKER, namespaceUri1, name1, value1,\n *\n * // another single namespace value (like `x:name`)\n * NAMESPACE_MARKER, namespaceUri2, name2, value2,\n *\n * // a series of CSS classes that will be applied to the element (no spaces)\n * CLASSES_MARKER, class1, class2, class3,\n *\n * // a series of CSS styles (property + value) that will be applied to the element\n * STYLES_MARKER, prop1, value1, prop2, value2\n * ]\n *\n * All non-class and non-style attributes must be defined at the start of the list\n * first before all class and style values are set. When there is a change in value\n * type (like when classes and styles are introduced) a marker must be used to separate\n * the entries. The marker values themselves are set via entries found in the\n * [AttributeMarker] enum.\n */\n hostAttrs?: TAttributes;\n\n /**\n * Function to create instances of content queries associated with a given directive.\n */\n contentQueries?: ContentQueriesFunction;\n\n /**\n * Defines the name that can be used in the template to assign this directive to a variable.\n *\n * See: {@link Directive.exportAs}\n */\n exportAs?: string[];\n\n /**\n * Template function use for rendering DOM.\n *\n * This function has following structure.\n *\n * ```\n * function Template(ctx:T, creationMode: boolean) {\n * if (creationMode) {\n * // Contains creation mode instructions.\n * }\n * // Contains binding update instructions\n * }\n * ```\n *\n * Common instructions are:\n * Creation mode instructions:\n * - `elementStart`, `elementEnd`\n * - `text`\n * - `container`\n * - `listener`\n *\n * Binding update instructions:\n * - `bind`\n * - `elementAttribute`\n * - `elementProperty`\n * - `elementClass`\n * - `elementStyle`\n *\n */\n template: ComponentTemplate;\n\n /**\n * Constants for the nodes in the component's view.\n * Includes attribute arrays, local definition arrays etc.\n */\n consts?: TConstantsOrFactory;\n\n /**\n * An array of `ngContent[selector]` values that were found in the template.\n */\n ngContentSelectors?: string[];\n\n /**\n * Additional set of instructions specific to view query processing. This could be seen as a\n * set of instruction to be inserted into the template function.\n *\n * Query-related instructions need to be pulled out to a specific function as a timing of\n * execution is different as compared to all other instructions (after change detection hooks but\n * before view hooks).\n */\n viewQuery?: ViewQueriesFunction| null;\n\n /**\n * A list of optional features to apply.\n *\n * See: {@link NgOnChangesFeature}, {@link ProvidersFeature}\n */\n features?: ComponentDefFeature[];\n\n /**\n * Defines template and style encapsulation options available for Component's {@link Component}.\n */\n encapsulation?: ViewEncapsulation;\n\n /**\n * Defines arbitrary developer-defined data to be stored on a renderer instance.\n * This is useful for renderers that delegate to other renderers.\n *\n * see: animation\n */\n data?: {[kind: string]: any};\n\n /**\n * A set of styles that the component needs to be present for component to render correctly.\n */\n styles?: string[];\n\n /**\n * The strategy that the default change detector uses to detect changes.\n * When set, takes effect the next time change detection is triggered.\n */\n changeDetection?: ChangeDetectionStrategy;\n\n /**\n * Registry of directives and components that may be found in this component's view.\n *\n * The property is either an array of `DirectiveDef`s or a function which returns the array of\n * `DirectiveDef`s. The function is necessary to be able to support forward declarations.\n */\n directives?: DirectiveTypesOrFactory | null;\n\n /**\n * Registry of pipes that may be found in this component's view.\n *\n * The property is either an array of `PipeDefs`s or a function which returns the array of\n * `PipeDefs`s. The function is necessary to be able to support forward declarations.\n */\n pipes?: PipeTypesOrFactory | null;\n\n /**\n * The set of schemas that declare elements to be allowed in the component's template.\n */\n schemas?: SchemaMetadata[] | null;\n}): unknown {\n return noSideEffects(() => {\n // Initialize ngDevMode. This must be the first statement in ɵɵdefineComponent.\n // See the `initNgDevMode` docstring for more information.\n (typeof ngDevMode === 'undefined' || ngDevMode) && initNgDevMode();\n\n const type = componentDefinition.type;\n const declaredInputs: {[key: string]: string} = {} as any;\n const def: Mutable, keyof ComponentDef> = {\n type: type,\n providersResolver: null,\n decls: componentDefinition.decls,\n vars: componentDefinition.vars,\n factory: null,\n template: componentDefinition.template || null!,\n consts: componentDefinition.consts || null,\n ngContentSelectors: componentDefinition.ngContentSelectors,\n hostBindings: componentDefinition.hostBindings || null,\n hostVars: componentDefinition.hostVars || 0,\n hostAttrs: componentDefinition.hostAttrs || null,\n contentQueries: componentDefinition.contentQueries || null,\n declaredInputs: declaredInputs,\n inputs: null!, // assigned in noSideEffects\n outputs: null!, // assigned in noSideEffects\n exportAs: componentDefinition.exportAs || null,\n onPush: componentDefinition.changeDetection === ChangeDetectionStrategy.OnPush,\n directiveDefs: null!, // assigned in noSideEffects\n pipeDefs: null!, // assigned in noSideEffects\n selectors: componentDefinition.selectors || EMPTY_ARRAY,\n viewQuery: componentDefinition.viewQuery || null,\n features: componentDefinition.features as DirectiveDefFeature[] || null,\n data: componentDefinition.data || {},\n // TODO(misko): convert ViewEncapsulation into const enum so that it can be used\n // directly in the next line. Also `None` should be 0 not 2.\n encapsulation: componentDefinition.encapsulation || ViewEncapsulation.Emulated,\n id: 'c',\n styles: componentDefinition.styles || EMPTY_ARRAY,\n _: null,\n setInput: null,\n schemas: componentDefinition.schemas || null,\n tView: null,\n };\n const directiveTypes = componentDefinition.directives!;\n const feature = componentDefinition.features;\n const pipeTypes = componentDefinition.pipes!;\n def.id += _renderCompCount++;\n def.inputs = invertObject(componentDefinition.inputs, declaredInputs),\n def.outputs = invertObject(componentDefinition.outputs),\n feature && feature.forEach((fn) => fn(def));\n def.directiveDefs = directiveTypes ?\n () => (typeof directiveTypes === 'function' ? directiveTypes() : directiveTypes)\n .map(extractDirectiveDef) :\n null;\n def.pipeDefs = pipeTypes ?\n () => (typeof pipeTypes === 'function' ? pipeTypes() : pipeTypes).map(extractPipeDef) :\n null;\n\n return def;\n });\n}\n\n/**\n * Generated next to NgModules to monkey-patch directive and pipe references onto a component's\n * definition, when generating a direct reference in the component file would otherwise create an\n * import cycle.\n *\n * See [this explanation](https://hackmd.io/Odw80D0pR6yfsOjg_7XCJg?view) for more details.\n *\n * @codeGenApi\n */\nexport function ɵɵsetComponentScope(\n type: ComponentType, directives: Type[], pipes: Type[]): void {\n const def = (type.ɵcmp as ComponentDef);\n def.directiveDefs = () => directives.map(extractDirectiveDef);\n def.pipeDefs = () => pipes.map(extractPipeDef);\n}\n\nexport function extractDirectiveDef(type: Type): DirectiveDef|ComponentDef {\n const def = getComponentDef(type) || getDirectiveDef(type);\n if (ngDevMode && !def) {\n throw new Error(`'${type.name}' is neither 'ComponentType' or 'DirectiveType'.`);\n }\n return def!;\n}\n\nexport function extractPipeDef(type: Type): PipeDef {\n const def = getPipeDef(type);\n if (ngDevMode && !def) {\n throw new Error(`'${type.name}' is not a 'PipeType'.`);\n }\n return def!;\n}\n\nexport const autoRegisterModuleById: {[id: string]: NgModuleType} = {};\n\n/**\n * @codeGenApi\n */\nexport function ɵɵdefineNgModule(def: {\n /** Token representing the module. Used by DI. */\n type: T;\n\n /** List of components to bootstrap. */\n bootstrap?: Type[] | (() => Type[]);\n\n /** List of components, directives, and pipes declared by this module. */\n declarations?: Type[] | (() => Type[]);\n\n /** List of modules or `ModuleWithProviders` imported by this module. */\n imports?: Type[] | (() => Type[]);\n\n /**\n * List of modules, `ModuleWithProviders`, components, directives, or pipes exported by this\n * module.\n */\n exports?: Type[] | (() => Type[]);\n\n /** The set of schemas that declare elements to be allowed in the NgModule. */\n schemas?: SchemaMetadata[] | null;\n\n /** Unique ID for the module that is used with `getModuleFactory`. */\n id?: string | null;\n}): unknown {\n return noSideEffects(() => {\n const res: NgModuleDef = {\n type: def.type,\n bootstrap: def.bootstrap || EMPTY_ARRAY,\n declarations: def.declarations || EMPTY_ARRAY,\n imports: def.imports || EMPTY_ARRAY,\n exports: def.exports || EMPTY_ARRAY,\n transitiveCompileScopes: null,\n schemas: def.schemas || null,\n id: def.id || null,\n };\n if (def.id != null) {\n autoRegisterModuleById[def.id!] = def.type as unknown as NgModuleType;\n }\n return res;\n });\n}\n\n/**\n * Adds the module metadata that is necessary to compute the module's transitive scope to an\n * existing module definition.\n *\n * Scope metadata of modules is not used in production builds, so calls to this function can be\n * marked pure to tree-shake it from the bundle, allowing for all referenced declarations\n * to become eligible for tree-shaking as well.\n *\n * @codeGenApi\n */\nexport function ɵɵsetNgModuleScope(type: any, scope: {\n /** List of components, directives, and pipes declared by this module. */\n declarations?: Type[]|(() => Type[]);\n\n /** List of modules or `ModuleWithProviders` imported by this module. */\n imports?: Type[] | (() => Type[]);\n\n /**\n * List of modules, `ModuleWithProviders`, components, directives, or pipes exported by this\n * module.\n */\n exports?: Type[] | (() => Type[]);\n}): unknown {\n return noSideEffects(() => {\n const ngModuleDef = getNgModuleDef(type, true);\n ngModuleDef.declarations = scope.declarations || EMPTY_ARRAY;\n ngModuleDef.imports = scope.imports || EMPTY_ARRAY;\n ngModuleDef.exports = scope.exports || EMPTY_ARRAY;\n });\n}\n\n/**\n * Inverts an inputs or outputs lookup such that the keys, which were the\n * minified keys, are part of the values, and the values are parsed so that\n * the publicName of the property is the new key\n *\n * e.g. for\n *\n * ```\n * class Comp {\n * @Input()\n * propName1: string;\n *\n * @Input('publicName2')\n * declaredPropName2: number;\n * }\n * ```\n *\n * will be serialized as\n *\n * ```\n * {\n * propName1: 'propName1',\n * declaredPropName2: ['publicName2', 'declaredPropName2'],\n * }\n * ```\n *\n * which is than translated by the minifier as:\n *\n * ```\n * {\n * minifiedPropName1: 'propName1',\n * minifiedPropName2: ['publicName2', 'declaredPropName2'],\n * }\n * ```\n *\n * becomes: (public name => minifiedName)\n *\n * ```\n * {\n * 'propName1': 'minifiedPropName1',\n * 'publicName2': 'minifiedPropName2',\n * }\n * ```\n *\n * Optionally the function can take `secondary` which will result in: (public name => declared name)\n *\n * ```\n * {\n * 'propName1': 'propName1',\n * 'publicName2': 'declaredPropName2',\n * }\n * ```\n *\n\n */\nfunction invertObject(\n obj?: {[P in keyof T]?: string|[string, string]},\n secondary?: {[key: string]: string}): {[P in keyof T]: string} {\n if (obj == null) return EMPTY_OBJ as any;\n const newLookup: any = {};\n for (const minifiedKey in obj) {\n if (obj.hasOwnProperty(minifiedKey)) {\n let publicName: string|[string, string] = obj[minifiedKey]!;\n let declaredName = publicName;\n if (Array.isArray(publicName)) {\n declaredName = publicName[1];\n publicName = publicName[0];\n }\n newLookup[publicName] = minifiedKey;\n if (secondary) {\n (secondary[publicName] = declaredName as string);\n }\n }\n }\n return newLookup;\n}\n\n/**\n * Create a directive definition object.\n *\n * # Example\n * ```ts\n * class MyDirective {\n * // Generated by Angular Template Compiler\n * // [Symbol] syntax will not be supported by TypeScript until v2.7\n * static ɵdir = ɵɵdefineDirective({\n * ...\n * });\n * }\n * ```\n *\n * @codeGenApi\n */\nexport const ɵɵdefineDirective =\n ɵɵdefineComponent as any as(directiveDefinition: {\n /**\n * Directive type, needed to configure the injector.\n */\n type: Type;\n\n /** The selectors that will be used to match nodes to this directive. */\n selectors?: CssSelectorList;\n\n /**\n * A map of input names.\n *\n * The format is in: `{[actualPropertyName: string]:(string|[string, string])}`.\n *\n * Given:\n * ```\n * class MyComponent {\n * @Input()\n * publicInput1: string;\n *\n * @Input('publicInput2')\n * declaredInput2: string;\n * }\n * ```\n *\n * is described as:\n * ```\n * {\n * publicInput1: 'publicInput1',\n * declaredInput2: ['declaredInput2', 'publicInput2'],\n * }\n * ```\n *\n * Which the minifier may translate to:\n * ```\n * {\n * minifiedPublicInput1: 'publicInput1',\n * minifiedDeclaredInput2: [ 'publicInput2', 'declaredInput2'],\n * }\n * ```\n *\n * This allows the render to re-construct the minified, public, and declared names\n * of properties.\n *\n * NOTE:\n * - Because declared and public name are usually same we only generate the array\n * `['declared', 'public']` format when they differ.\n * - The reason why this API and `outputs` API is not the same is that `NgOnChanges` has\n * inconsistent behavior in that it uses declared names rather than minified or public. For\n * this reason `NgOnChanges` will be deprecated and removed in future version and this\n * API will be simplified to be consistent with `output`.\n */\n inputs?: {[P in keyof T]?: string | [string, string]};\n\n /**\n * A map of output names.\n *\n * The format is in: `{[actualPropertyName: string]:string}`.\n *\n * Which the minifier may translate to: `{[minifiedPropertyName: string]:string}`.\n *\n * This allows the render to re-construct the minified and non-minified names\n * of properties.\n */\n outputs?: {[P in keyof T]?: string};\n\n /**\n * A list of optional features to apply.\n *\n * See: {@link NgOnChangesFeature}, {@link ProvidersFeature}, {@link InheritDefinitionFeature}\n */\n features?: DirectiveDefFeature[];\n\n /**\n * Function executed by the parent template to allow child directive to apply host bindings.\n */\n hostBindings?: HostBindingsFunction;\n\n /**\n * The number of bindings in this directive `hostBindings` (including pure fn bindings).\n *\n * Used to calculate the length of the component's LView array, so we\n * can pre-fill the array and set the host binding start index.\n */\n hostVars?: number;\n\n /**\n * Assign static attribute values to a host element.\n *\n * This property will assign static attribute values as well as class and style\n * values to a host element. Since attribute values can consist of different types of values,\n * the `hostAttrs` array must include the values in the following format:\n *\n * attrs = [\n * // static attributes (like `title`, `name`, `id`...)\n * attr1, value1, attr2, value,\n *\n * // a single namespace value (like `x:id`)\n * NAMESPACE_MARKER, namespaceUri1, name1, value1,\n *\n * // another single namespace value (like `x:name`)\n * NAMESPACE_MARKER, namespaceUri2, name2, value2,\n *\n * // a series of CSS classes that will be applied to the element (no spaces)\n * CLASSES_MARKER, class1, class2, class3,\n *\n * // a series of CSS styles (property + value) that will be applied to the element\n * STYLES_MARKER, prop1, value1, prop2, value2\n * ]\n *\n * All non-class and non-style attributes must be defined at the start of the list\n * first before all class and style values are set. When there is a change in value\n * type (like when classes and styles are introduced) a marker must be used to separate\n * the entries. The marker values themselves are set via entries found in the\n * [AttributeMarker] enum.\n */\n hostAttrs?: TAttributes;\n\n /**\n * Function to create instances of content queries associated with a given directive.\n */\n contentQueries?: ContentQueriesFunction;\n\n /**\n * Additional set of instructions specific to view query processing. This could be seen as a\n * set of instructions to be inserted into the template function.\n */\n viewQuery?: ViewQueriesFunction| null;\n\n /**\n * Defines the name that can be used in the template to assign this directive to a variable.\n *\n * See: {@link Directive.exportAs}\n */\n exportAs?: string[];\n }) => never;\n\n/**\n * Create a pipe definition object.\n *\n * # Example\n * ```\n * class MyPipe implements PipeTransform {\n * // Generated by Angular Template Compiler\n * static ɵpipe = definePipe({\n * ...\n * });\n * }\n * ```\n * @param pipeDef Pipe definition generated by the compiler\n *\n * @codeGenApi\n */\nexport function ɵɵdefinePipe(pipeDef: {\n /** Name of the pipe. Used for matching pipes in template to pipe defs. */\n name: string,\n\n /** Pipe class reference. Needed to extract pipe lifecycle hooks. */\n type: Type,\n\n /** Whether the pipe is pure. */\n pure?: boolean\n}): unknown {\n return (>{\n type: pipeDef.type,\n name: pipeDef.name,\n factory: null,\n pure: pipeDef.pure !== false,\n onDestroy: pipeDef.type.prototype.ngOnDestroy || null\n });\n}\n\n/**\n * The following getter methods retrieve the definition from the type. Currently the retrieval\n * honors inheritance, but in the future we may change the rule to require that definitions are\n * explicit. This would require some sort of migration strategy.\n */\n\nexport function getComponentDef(type: any): ComponentDef|null {\n return type[NG_COMP_DEF] || null;\n}\n\nexport function getDirectiveDef(type: any): DirectiveDef|null {\n return type[NG_DIR_DEF] || null;\n}\n\nexport function getPipeDef(type: any): PipeDef|null {\n return type[NG_PIPE_DEF] || null;\n}\n\nexport function getNgModuleDef(type: any, throwNotFound: true): NgModuleDef;\nexport function getNgModuleDef(type: any): NgModuleDef|null;\nexport function getNgModuleDef(type: any, throwNotFound?: boolean): NgModuleDef|null {\n const ngModuleDef = type[NG_MOD_DEF] || null;\n if (!ngModuleDef && throwNotFound === true) {\n throw new Error(`Type ${stringify(type)} does not have 'ɵmod' property.`);\n }\n return ngModuleDef;\n}\n\nexport function getNgLocaleIdDef(type: any): string|null {\n return (type as any)[NG_LOC_ID_DEF] || null;\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\nimport {LContainer, TYPE} from './container';\nimport {ComponentDef, DirectiveDef} from './definition';\nimport {TNode, TNodeFlags} from './node';\nimport {RNode} from './renderer_dom';\nimport {FLAGS, LView, LViewFlags} from './view';\n\n\n/**\n * True if `value` is `LView`.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nexport function isLView(value: RNode|LView|LContainer|{}|null): value is LView {\n return Array.isArray(value) && typeof value[TYPE] === 'object';\n}\n\n/**\n * True if `value` is `LContainer`.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nexport function isLContainer(value: RNode|LView|LContainer|{}|null): value is LContainer {\n return Array.isArray(value) && value[TYPE] === true;\n}\n\nexport function isContentQueryHost(tNode: TNode): boolean {\n return (tNode.flags & TNodeFlags.hasContentQuery) !== 0;\n}\n\nexport function isComponentHost(tNode: TNode): boolean {\n return (tNode.flags & TNodeFlags.isComponentHost) === TNodeFlags.isComponentHost;\n}\n\nexport function isDirectiveHost(tNode: TNode): boolean {\n return (tNode.flags & TNodeFlags.isDirectiveHost) === TNodeFlags.isDirectiveHost;\n}\n\nexport function isComponentDef(def: DirectiveDef): def is ComponentDef {\n return (def as ComponentDef).template !== null;\n}\n\nexport function isRootView(target: LView): boolean {\n return (target[FLAGS] & LViewFlags.IsRoot) !== 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\nimport {TNode} from './node';\nimport {RComment, RElement} from './renderer_dom';\nimport {HOST, LView, NEXT, PARENT, T_HOST, TRANSPLANTED_VIEWS_TO_REFRESH} from './view';\n\n\n\n/**\n * Special location which allows easy identification of type. If we have an array which was\n * retrieved from the `LView` and that array has `true` at `TYPE` location, we know it is\n * `LContainer`.\n */\nexport const TYPE = 1;\n\n/**\n * Below are constants for LContainer indices to help us look up LContainer members\n * without having to remember the specific indices.\n * Uglify will inline these when minifying so there shouldn't be a cost.\n */\n\n/**\n * Flag to signify that this `LContainer` may have transplanted views which need to be change\n * detected. (see: `LView[DECLARATION_COMPONENT_VIEW])`.\n *\n * This flag, once set, is never unset for the `LContainer`. This means that when unset we can skip\n * a lot of work in `refreshEmbeddedViews`. But when set we still need to verify\n * that the `MOVED_VIEWS` are transplanted and on-push.\n */\nexport const HAS_TRANSPLANTED_VIEWS = 2;\n\n// PARENT, NEXT, TRANSPLANTED_VIEWS_TO_REFRESH are indices 3, 4, and 5\n// As we already have these constants in LView, we don't need to re-create them.\n\n// T_HOST is index 6\n// We already have this constants in LView, we don't need to re-create it.\n\nexport const NATIVE = 7;\nexport const VIEW_REFS = 8;\nexport const MOVED_VIEWS = 9;\n\n\n/**\n * Size of LContainer's header. Represents the index after which all views in the\n * container will be inserted. We need to keep a record of current views so we know\n * which views are already in the DOM (and don't need to be re-added) and so we can\n * remove views from the DOM when they are no longer required.\n */\nexport const CONTAINER_HEADER_OFFSET = 10;\n\n/**\n * The state associated with a container.\n *\n * This is an array so that its structure is closer to LView. This helps\n * when traversing the view tree (which is a mix of containers and component\n * views), so we can jump to viewOrContainer[NEXT] in the same way regardless\n * of type.\n */\nexport interface LContainer extends Array {\n /**\n * The host element of this LContainer.\n *\n * The host could be an LView if this container is on a component node.\n * In that case, the component LView is its HOST.\n */\n readonly[HOST]: RElement|RComment|LView;\n\n /**\n * This is a type field which allows us to differentiate `LContainer` from `StylingContext` in an\n * efficient way. The value is always set to `true`\n */\n [TYPE]: true;\n\n /**\n * Flag to signify that this `LContainer` may have transplanted views which need to be change\n * detected. (see: `LView[DECLARATION_COMPONENT_VIEW])`.\n *\n * This flag, once set, is never unset for the `LContainer`.\n */\n [HAS_TRANSPLANTED_VIEWS]: boolean;\n\n /**\n * Access to the parent view is necessary so we can propagate back\n * up from inside a container to parent[NEXT].\n */\n [PARENT]: LView;\n\n /**\n * This allows us to jump from a container to a sibling container or component\n * view with the same parent, so we can remove listeners efficiently.\n */\n [NEXT]: LView|LContainer|null;\n\n /**\n * The number of direct transplanted views which need a refresh or have descendants themselves\n * that need a refresh but have not marked their ancestors as Dirty. This tells us that during\n * change detection we should still descend to find those children to refresh, even if the parents\n * are not `Dirty`/`CheckAlways`.\n */\n [TRANSPLANTED_VIEWS_TO_REFRESH]: number;\n\n /**\n * A collection of views created based on the underlying `` element but inserted into\n * a different `LContainer`. We need to track views created from a given declaration point since\n * queries collect matches from the embedded view declaration point and _not_ the insertion point.\n */\n [MOVED_VIEWS]: LView[]|null;\n\n /**\n * Pointer to the `TNode` which represents the host of the container.\n */\n [T_HOST]: TNode;\n\n /** The comment element that serves as an anchor for this LContainer. */\n readonly[NATIVE]:\n RComment; // TODO(misko): remove as this value can be gotten by unwrapping `[HOST]`\n\n /**\n * Array of `ViewRef`s used by any `ViewContainerRef`s that point to this container.\n *\n * This is lazily initialized by `ViewContainerRef` when the first view is inserted.\n *\n * NOTE: This is stored as `any[]` because render3 should really not be aware of `ViewRef` and\n * doing so creates circular dependency.\n */\n [VIEW_REFS]: unknown[]|null;\n}\n\n// Note: This hack is necessary so we don't erroneously get a circular dependency\n// failure based on types.\nexport const unusedValueExportToPlacateAjd = 1;\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\nimport {Injector} from '../../di/injector';\nimport {ProviderToken} from '../../di/provider_token';\nimport {Type} from '../../interface/type';\nimport {SchemaMetadata} from '../../metadata/schema';\nimport {Sanitizer} from '../../sanitization/sanitizer';\nimport {LContainer} from './container';\nimport {ComponentDef, ComponentTemplate, DirectiveDef, DirectiveDefList, HostBindingsFunction, PipeDef, PipeDefList, ViewQueriesFunction} from './definition';\nimport {I18nUpdateOpCodes, TI18n, TIcu} from './i18n';\nimport {TConstants, TNode} from './node';\nimport {PlayerHandler} from './player';\nimport {LQueries, TQueries} from './query';\nimport {Renderer3, RendererFactory3} from './renderer';\nimport {RComment, RElement} from './renderer_dom';\nimport {TStylingKey, TStylingRange} from './styling';\n\n\n\n// Below are constants for LView indices to help us look up LView members\n// without having to remember the specific indices.\n// Uglify will inline these when minifying so there shouldn't be a cost.\nexport const HOST = 0;\nexport const TVIEW = 1;\nexport const FLAGS = 2;\nexport const PARENT = 3;\nexport const NEXT = 4;\nexport const TRANSPLANTED_VIEWS_TO_REFRESH = 5;\nexport const T_HOST = 6;\nexport const CLEANUP = 7;\nexport const CONTEXT = 8;\nexport const INJECTOR = 9;\nexport const RENDERER_FACTORY = 10;\nexport const RENDERER = 11;\nexport const SANITIZER = 12;\nexport const CHILD_HEAD = 13;\nexport const CHILD_TAIL = 14;\n// FIXME(misko): Investigate if the three declarations aren't all same thing.\nexport const DECLARATION_VIEW = 15;\nexport const DECLARATION_COMPONENT_VIEW = 16;\nexport const DECLARATION_LCONTAINER = 17;\nexport const PREORDER_HOOK_FLAGS = 18;\nexport const QUERIES = 19;\n/**\n * Size of LView's header. Necessary to adjust for it when setting slots.\n *\n * IMPORTANT: `HEADER_OFFSET` should only be referred to the in the `ɵɵ*` instructions to translate\n * instruction index into `LView` index. All other indexes should be in the `LView` index space and\n * there should be no need to refer to `HEADER_OFFSET` anywhere else.\n */\nexport const HEADER_OFFSET = 20;\n\n\n// This interface replaces the real LView interface if it is an arg or a\n// return value of a public instruction. This ensures we don't need to expose\n// the actual interface, which should be kept private.\nexport interface OpaqueViewState {\n '__brand__': 'Brand for OpaqueViewState that nothing will match';\n}\n\n\n/**\n * `LView` stores all of the information needed to process the instructions as\n * they are invoked from the template. Each embedded view and component view has its\n * own `LView`. When processing a particular view, we set the `viewData` to that\n * `LView`. When that view is done processing, the `viewData` is set back to\n * whatever the original `viewData` was before (the parent `LView`).\n *\n * Keeping separate state for each view facilities view insertion / deletion, so we\n * don't have to edit the data array based on which views are present.\n */\nexport interface LView extends Array {\n /**\n * Human readable representation of the `LView`.\n *\n * NOTE: This property only exists if `ngDevMode` is set to `true` and it is not present in\n * production. Its presence is purely to help debug issue in development, and should not be relied\n * on in production application.\n */\n debug?: LViewDebug;\n\n /**\n * The node into which this `LView` is inserted.\n */\n [HOST]: RElement|null;\n\n /**\n * The static data for this view. We need a reference to this so we can easily walk up the\n * node tree in DI and get the TView.data array associated with a node (where the\n * directive defs are stored).\n */\n readonly[TVIEW]: TView;\n\n /** Flags for this view. See LViewFlags for more info. */\n [FLAGS]: LViewFlags;\n\n /**\n * This may store an {@link LView} or {@link LContainer}.\n *\n * `LView` - The parent view. This is needed when we exit the view and must restore the previous\n * LView. Without this, the render method would have to keep a stack of\n * views as it is recursively rendering templates.\n *\n * `LContainer` - The current view is part of a container, and is an embedded view.\n */\n [PARENT]: LView|LContainer|null;\n\n /**\n *\n * The next sibling LView or LContainer.\n *\n * Allows us to propagate between sibling view states that aren't in the same\n * container. Embedded views already have a node.next, but it is only set for\n * views in the same container. We need a way to link component views and views\n * across containers as well.\n */\n [NEXT]: LView|LContainer|null;\n\n /** Queries active for this view - nodes from a view are reported to those queries. */\n [QUERIES]: LQueries|null;\n\n /**\n * Store the `TNode` of the location where the current `LView` is inserted into.\n *\n * Given:\n * ```\n *
    \n * \n *
    \n * ```\n *\n * We end up with two `TView`s.\n * - `parent` `TView` which contains `
    `\n * - `child` `TView` which contains ``\n *\n * Typically the `child` is inserted into the declaration location of the `parent`, but it can be\n * inserted anywhere. Because it can be inserted anywhere it is not possible to store the\n * insertion information in the `TView` and instead we must store it in the `LView[T_HOST]`.\n *\n * So to determine where is our insertion parent we would execute:\n * ```\n * const parentLView = lView[PARENT];\n * const parentTNode = lView[T_HOST];\n * const insertionParent = parentLView[parentTNode.index];\n * ```\n *\n *\n * If `null`, this is the root view of an application (root component is in this view) and it has\n * no parents.\n */\n [T_HOST]: TNode|null;\n\n /**\n * When a view is destroyed, listeners need to be released and outputs need to be\n * unsubscribed. This context array stores both listener functions wrapped with\n * their context and output subscription instances for a particular view.\n *\n * These change per LView instance, so they cannot be stored on TView. Instead,\n * TView.cleanup saves an index to the necessary context in this array.\n *\n * After `LView` is created it is possible to attach additional instance specific functions at the\n * end of the `lView[CLENUP]` because we know that no more `T` level cleanup functions will be\n * addeded here.\n */\n [CLEANUP]: any[]|null;\n\n /**\n * - For dynamic views, this is the context with which to render the template (e.g.\n * `NgForContext`), or `{}` if not defined explicitly.\n * - For root view of the root component the context contains change detection data.\n * - For non-root components, the context is the component instance,\n * - For inline views, the context is null.\n */\n [CONTEXT]: {}|RootContext|null;\n\n /** An optional Module Injector to be used as fall back after Element Injectors are consulted. */\n readonly[INJECTOR]: Injector|null;\n\n /** Factory to be used for creating Renderer. */\n [RENDERER_FACTORY]: RendererFactory3;\n\n /** Renderer to be used for this view. */\n [RENDERER]: Renderer3;\n\n /** An optional custom sanitizer. */\n [SANITIZER]: Sanitizer|null;\n\n /**\n * Reference to the first LView or LContainer beneath this LView in\n * the hierarchy.\n *\n * Necessary to store this so views can traverse through their nested views\n * to remove listeners and call onDestroy callbacks.\n */\n [CHILD_HEAD]: LView|LContainer|null;\n\n /**\n * The last LView or LContainer beneath this LView in the hierarchy.\n *\n * The tail allows us to quickly add a new state to the end of the view list\n * without having to propagate starting from the first child.\n */\n [CHILD_TAIL]: LView|LContainer|null;\n\n /**\n * View where this view's template was declared.\n *\n * The template for a dynamically created view may be declared in a different view than\n * it is inserted. We already track the \"insertion view\" (view where the template was\n * inserted) in LView[PARENT], but we also need access to the \"declaration view\"\n * (view where the template was declared). Otherwise, we wouldn't be able to call the\n * view's template function with the proper contexts. Context should be inherited from\n * the declaration view tree, not the insertion view tree.\n *\n * Example (AppComponent template):\n *\n * <-- declared here -->\n * <-- inserted inside this component -->\n *\n * The above is declared in the AppComponent template, but it will be passed into\n * SomeComp and inserted there. In this case, the declaration view would be the AppComponent,\n * but the insertion view would be SomeComp. When we are removing views, we would want to\n * traverse through the insertion view to clean up listeners. When we are calling the\n * template function during change detection, we need the declaration view to get inherited\n * context.\n */\n [DECLARATION_VIEW]: LView|null;\n\n\n /**\n * Points to the declaration component view, used to track transplanted `LView`s.\n *\n * See: `DECLARATION_VIEW` which points to the actual `LView` where it was declared, whereas\n * `DECLARATION_COMPONENT_VIEW` points to the component which may not be same as\n * `DECLARATION_VIEW`.\n *\n * Example:\n * ```\n * <#VIEW #myComp>\n *
    \n * ...\n *
    \n * \n * ```\n * In the above case `DECLARATION_VIEW` for `myTmpl` points to the `LView` of `ngIf` whereas\n * `DECLARATION_COMPONENT_VIEW` points to `LView` of the `myComp` which owns the template.\n *\n * The reason for this is that all embedded views are always check-always whereas the component\n * view can be check-always or on-push. When we have a transplanted view it is important to\n * determine if we have transplanted a view from check-always declaration to on-push insertion\n * point. In such a case the transplanted view needs to be added to the `LContainer` in the\n * declared `LView` and CD during the declared view CD (in addition to the CD at the insertion\n * point.) (Any transplanted views which are intra Component are of no interest because the CD\n * strategy of declaration and insertion will always be the same, because it is the same\n * component.)\n *\n * Queries already track moved views in `LView[DECLARATION_LCONTAINER]` and\n * `LContainer[MOVED_VIEWS]`. However the queries also track `LView`s which moved within the same\n * component `LView`. Transplanted views are a subset of moved views, and we use\n * `DECLARATION_COMPONENT_VIEW` to differentiate them. As in this example.\n *\n * Example showing intra component `LView` movement.\n * ```\n * <#VIEW #myComp>\n *
    \n * Content to render when condition is true.\n * Content to render when condition is false.\n * \n * ```\n * The `thenBlock` and `elseBlock` is moved but not transplanted.\n *\n * Example showing inter component `LView` movement (transplanted view).\n * ```\n * <#VIEW #myComp>\n * ...\n * \n * \n * ```\n * In the above example `myTmpl` is passed into a different component. If `insertion-component`\n * instantiates `myTmpl` and `insertion-component` is on-push then the `LContainer` needs to be\n * marked as containing transplanted views and those views need to be CD as part of the\n * declaration CD.\n *\n *\n * When change detection runs, it iterates over `[MOVED_VIEWS]` and CDs any child `LView`s where\n * the `DECLARATION_COMPONENT_VIEW` of the current component and the child `LView` does not match\n * (it has been transplanted across components.)\n *\n * Note: `[DECLARATION_COMPONENT_VIEW]` points to itself if the LView is a component view (the\n * simplest / most common case).\n *\n * see also:\n * - https://hackmd.io/@mhevery/rJUJsvv9H write up of the problem\n * - `LContainer[HAS_TRANSPLANTED_VIEWS]` which marks which `LContainer` has transplanted views.\n * - `LContainer[TRANSPLANT_HEAD]` and `LContainer[TRANSPLANT_TAIL]` storage for transplanted\n * - `LView[DECLARATION_LCONTAINER]` similar problem for queries\n * - `LContainer[MOVED_VIEWS]` similar problem for queries\n */\n [DECLARATION_COMPONENT_VIEW]: LView;\n\n /**\n * A declaration point of embedded views (ones instantiated based on the content of a\n * ), null for other types of views.\n *\n * We need to track all embedded views created from a given declaration point so we can prepare\n * query matches in a proper order (query matches are ordered based on their declaration point and\n * _not_ the insertion point).\n */\n [DECLARATION_LCONTAINER]: LContainer|null;\n\n /**\n * More flags for this view. See PreOrderHookFlags for more info.\n */\n [PREORDER_HOOK_FLAGS]: PreOrderHookFlags;\n\n /**\n * The number of direct transplanted views which need a refresh or have descendants themselves\n * that need a refresh but have not marked their ancestors as Dirty. This tells us that during\n * change detection we should still descend to find those children to refresh, even if the parents\n * are not `Dirty`/`CheckAlways`.\n */\n [TRANSPLANTED_VIEWS_TO_REFRESH]: number;\n}\n\n/** Flags associated with an LView (saved in LView[FLAGS]) */\nexport const enum LViewFlags {\n /** The state of the init phase on the first 2 bits */\n InitPhaseStateIncrementer = 0b00000000001,\n InitPhaseStateMask = 0b00000000011,\n\n /**\n * Whether or not the view is in creationMode.\n *\n * This must be stored in the view rather than using `data` as a marker so that\n * we can properly support embedded views. Otherwise, when exiting a child view\n * back into the parent view, `data` will be defined and `creationMode` will be\n * improperly reported as false.\n */\n CreationMode = 0b00000000100,\n\n /**\n * Whether or not this LView instance is on its first processing pass.\n *\n * An LView instance is considered to be on its \"first pass\" until it\n * has completed one creation mode run and one update mode run. At this\n * time, the flag is turned off.\n */\n FirstLViewPass = 0b00000001000,\n\n /** Whether this view has default change detection strategy (checks always) or onPush */\n CheckAlways = 0b00000010000,\n\n /**\n * Whether or not manual change detection is turned on for onPush components.\n *\n * This is a special mode that only marks components dirty in two cases:\n * 1) There has been a change to an @Input property\n * 2) `markDirty()` has been called manually by the user\n *\n * Note that in this mode, the firing of events does NOT mark components\n * dirty automatically.\n *\n * Manual mode is turned off by default for backwards compatibility, as events\n * automatically mark OnPush components dirty in View Engine.\n *\n * TODO: Add a public API to ChangeDetectionStrategy to turn this mode on\n */\n ManualOnPush = 0b00000100000,\n\n /** Whether or not this view is currently dirty (needing check) */\n Dirty = 0b000001000000,\n\n /** Whether or not this view is currently attached to change detection tree. */\n Attached = 0b000010000000,\n\n /** Whether or not this view is destroyed. */\n Destroyed = 0b000100000000,\n\n /** Whether or not this view is the root view */\n IsRoot = 0b001000000000,\n\n /**\n * Whether this moved LView was needs to be refreshed at the insertion location because the\n * declaration was dirty.\n */\n RefreshTransplantedView = 0b0010000000000,\n\n /**\n * Index of the current init phase on last 21 bits\n */\n IndexWithinInitPhaseIncrementer = 0b0100000000000,\n IndexWithinInitPhaseShift = 11,\n IndexWithinInitPhaseReset = 0b0011111111111,\n}\n\n/**\n * Possible states of the init phase:\n * - 00: OnInit hooks to be run.\n * - 01: AfterContentInit hooks to be run\n * - 10: AfterViewInit hooks to be run\n * - 11: All init hooks have been run\n */\nexport const enum InitPhaseState {\n OnInitHooksToBeRun = 0b00,\n AfterContentInitHooksToBeRun = 0b01,\n AfterViewInitHooksToBeRun = 0b10,\n InitPhaseCompleted = 0b11,\n}\n\n/** More flags associated with an LView (saved in LView[PREORDER_HOOK_FLAGS]) */\nexport const enum PreOrderHookFlags {\n /**\n The index of the next pre-order hook to be called in the hooks array, on the first 16\n bits\n */\n IndexOfTheNextPreOrderHookMaskMask = 0b01111111111111111,\n\n /**\n * The number of init hooks that have already been called, on the last 16 bits\n */\n NumberOfInitHooksCalledIncrementer = 0b010000000000000000,\n NumberOfInitHooksCalledShift = 16,\n NumberOfInitHooksCalledMask = 0b11111111111111110000000000000000,\n}\n\n/**\n * Stores a set of OpCodes to process `HostBindingsFunction` associated with a current view.\n *\n * In order to invoke `HostBindingsFunction` we need:\n * 1. 'elementIdx`: Index to the element associated with the `HostBindingsFunction`.\n * 2. 'directiveIdx`: Index to the directive associated with the `HostBindingsFunction`. (This will\n * become the context for the `HostBindingsFunction` invocation.)\n * 3. `bindingRootIdx`: Location where the bindings for the `HostBindingsFunction` start. Internally\n * `HostBindingsFunction` binding indexes start from `0` so we need to add `bindingRootIdx` to\n * it.\n * 4. `HostBindingsFunction`: A host binding function to execute.\n *\n * The above information needs to be encoded into the `HostBindingOpCodes` in an efficient manner.\n *\n * 1. `elementIdx` is encoded into the `HostBindingOpCodes` as `~elementIdx` (so a negative number);\n * 2. `directiveIdx`\n * 3. `bindingRootIdx`\n * 4. `HostBindingsFunction` is passed in as is.\n *\n * The `HostBindingOpCodes` array contains:\n * - negative number to select the element index.\n * - followed by 1 or more of:\n * - a number to select the directive index\n * - a number to select the bindingRoot index\n * - and a function to invoke.\n *\n * ## Example\n *\n * ```\n * const hostBindingOpCodes = [\n * ~30, // Select element 30\n * 40, 45, MyDir.ɵdir.hostBindings // Invoke host bindings on MyDir on element 30;\n * // directiveIdx = 40; bindingRootIdx = 45;\n * 50, 55, OtherDir.ɵdir.hostBindings // Invoke host bindings on OtherDire on element 30\n * // directiveIdx = 50; bindingRootIdx = 55;\n * ]\n * ```\n *\n * ## Pseudocode\n * ```\n * const hostBindingOpCodes = tView.hostBindingOpCodes;\n * if (hostBindingOpCodes === null) return;\n * for (let i = 0; i < hostBindingOpCodes.length; i++) {\n * const opCode = hostBindingOpCodes[i] as number;\n * if (opCode < 0) {\n * // Negative numbers are element indexes.\n * setSelectedIndex(~opCode);\n * } else {\n * // Positive numbers are NumberTuple which store bindingRootIndex and directiveIndex.\n * const directiveIdx = opCode;\n * const bindingRootIndx = hostBindingOpCodes[++i] as number;\n * const hostBindingFn = hostBindingOpCodes[++i] as HostBindingsFunction;\n * setBindingRootForHostBindings(bindingRootIndx, directiveIdx);\n * const context = lView[directiveIdx];\n * hostBindingFn(RenderFlags.Update, context);\n * }\n * }\n * ```\n *\n */\nexport interface HostBindingOpCodes extends Array> {\n __brand__: 'HostBindingOpCodes';\n debug?: string[];\n}\n\n/**\n * Explicitly marks `TView` as a specific type in `ngDevMode`\n *\n * It is useful to know conceptually what time of `TView` we are dealing with when\n * debugging an application (even if the runtime does not need it.) For this reason\n * we store this information in the `ngDevMode` `TView` and than use it for\n * better debugging experience.\n */\nexport const enum TViewType {\n /**\n * Root `TView` is the used to bootstrap components into. It is used in conjunction with\n * `LView` which takes an existing DOM node not owned by Angular and wraps it in `TView`/`LView`\n * so that other components can be loaded into it.\n */\n Root = 0,\n\n /**\n * `TView` associated with a Component. This would be the `TView` directly associated with the\n * component view (as opposed an `Embedded` `TView` which would be a child of `Component` `TView`)\n */\n Component = 1,\n\n /**\n * `TView` associated with a template. Such as `*ngIf`, `` etc... A `Component`\n * can have zero or more `Embedede` `TView`s.\n */\n Embedded = 2,\n}\n\n/**\n * Converts `TViewType` into human readable text.\n * Make sure this matches with `TViewType`\n */\nexport const TViewTypeAsString = [\n 'Root', // 0\n 'Component', // 1\n 'Embedded', // 2\n] as const;\n\n\n/**\n * The static data for an LView (shared between all templates of a\n * given type).\n *\n * Stored on the `ComponentDef.tView`.\n */\nexport interface TView {\n /**\n * Type of `TView` (`Root`|`Component`|`Embedded`).\n */\n type: TViewType;\n\n /**\n * This is a blueprint used to generate LView instances for this TView. Copying this\n * blueprint is faster than creating a new LView from scratch.\n */\n blueprint: LView;\n\n /**\n * The template function used to refresh the view of dynamically created views\n * and components. Will be null for inline views.\n */\n template: ComponentTemplate<{}>|null;\n\n /**\n * A function containing query-related instructions.\n */\n viewQuery: ViewQueriesFunction<{}>|null;\n\n /**\n * A `TNode` representing the declaration location of this `TView` (not part of this TView).\n */\n declTNode: TNode|null;\n\n // FIXME(misko): Why does `TView` not have `declarationTView` property?\n\n /** Whether or not this template has been processed in creation mode. */\n firstCreatePass: boolean;\n\n /**\n * Whether or not this template has been processed in update mode (e.g. change detected)\n *\n * `firstUpdatePass` is used by styling to set up `TData` to contain metadata about the styling\n * instructions. (Mainly to build up a linked list of styling priority order.)\n *\n * Typically this function gets cleared after first execution. If exception is thrown then this\n * flag can remain turned un until there is first successful (no exception) pass. This means that\n * individual styling instructions keep track of if they have already been added to the linked\n * list to prevent double adding.\n */\n firstUpdatePass: boolean;\n\n /** Static data equivalent of LView.data[]. Contains TNodes, PipeDefInternal or TI18n. */\n data: TData;\n\n /**\n * The binding start index is the index at which the data array\n * starts to store bindings only. Saving this value ensures that we\n * will begin reading bindings at the correct point in the array when\n * we are in update mode.\n *\n * -1 means that it has not been initialized.\n */\n bindingStartIndex: number;\n\n /**\n * The index where the \"expando\" section of `LView` begins. The expando\n * section contains injectors, directive instances, and host binding values.\n * Unlike the \"decls\" and \"vars\" sections of `LView`, the length of this\n * section cannot be calculated at compile-time because directives are matched\n * at runtime to preserve locality.\n *\n * We store this start index so we know where to start checking host bindings\n * in `setHostBindings`.\n */\n expandoStartIndex: number;\n\n /**\n * Whether or not there are any static view queries tracked on this view.\n *\n * We store this so we know whether or not we should do a view query\n * refresh after creation mode to collect static query results.\n */\n staticViewQueries: boolean;\n\n /**\n * Whether or not there are any static content queries tracked on this view.\n *\n * We store this so we know whether or not we should do a content query\n * refresh after creation mode to collect static query results.\n */\n staticContentQueries: boolean;\n\n /**\n * A reference to the first child node located in the view.\n */\n firstChild: TNode|null;\n\n /**\n * Stores the OpCodes to be replayed during change-detection to process the `HostBindings`\n *\n * See `HostBindingOpCodes` for encoding details.\n */\n hostBindingOpCodes: HostBindingOpCodes|null;\n\n /**\n * Full registry of directives and components that may be found in this view.\n *\n * It's necessary to keep a copy of the full def list on the TView so it's possible\n * to render template functions without a host component.\n */\n directiveRegistry: DirectiveDefList|null;\n\n /**\n * Full registry of pipes that may be found in this view.\n *\n * The property is either an array of `PipeDefs`s or a function which returns the array of\n * `PipeDefs`s. The function is necessary to be able to support forward declarations.\n *\n * It's necessary to keep a copy of the full def list on the TView so it's possible\n * to render template functions without a host component.\n */\n pipeRegistry: PipeDefList|null;\n\n /**\n * Array of ngOnInit, ngOnChanges and ngDoCheck hooks that should be executed for this view in\n * creation mode.\n *\n * This array has a flat structure and contains TNode indices, directive indices (where an\n * instance can be found in `LView`) and hook functions. TNode index is followed by the directive\n * index and a hook function. If there are multiple hooks for a given TNode, the TNode index is\n * not repeated and the next lifecycle hook information is stored right after the previous hook\n * function. This is done so that at runtime the system can efficiently iterate over all of the\n * functions to invoke without having to make any decisions/lookups.\n */\n preOrderHooks: HookData|null;\n\n /**\n * Array of ngOnChanges and ngDoCheck hooks that should be executed for this view in update mode.\n *\n * This array has the same structure as the `preOrderHooks` one.\n */\n preOrderCheckHooks: HookData|null;\n\n /**\n * Array of ngAfterContentInit and ngAfterContentChecked hooks that should be executed\n * for this view in creation mode.\n *\n * Even indices: Directive index\n * Odd indices: Hook function\n */\n contentHooks: HookData|null;\n\n /**\n * Array of ngAfterContentChecked hooks that should be executed for this view in update\n * mode.\n *\n * Even indices: Directive index\n * Odd indices: Hook function\n */\n contentCheckHooks: HookData|null;\n\n /**\n * Array of ngAfterViewInit and ngAfterViewChecked hooks that should be executed for\n * this view in creation mode.\n *\n * Even indices: Directive index\n * Odd indices: Hook function\n */\n viewHooks: HookData|null;\n\n /**\n * Array of ngAfterViewChecked hooks that should be executed for this view in\n * update mode.\n *\n * Even indices: Directive index\n * Odd indices: Hook function\n */\n viewCheckHooks: HookData|null;\n\n /**\n * Array of ngOnDestroy hooks that should be executed when this view is destroyed.\n *\n * Even indices: Directive index\n * Odd indices: Hook function\n */\n destroyHooks: DestroyHookData|null;\n\n /**\n * When a view is destroyed, listeners need to be released and outputs need to be\n * unsubscribed. This cleanup array stores both listener data (in chunks of 4)\n * and output data (in chunks of 2) for a particular view. Combining the arrays\n * saves on memory (70 bytes per array) and on a few bytes of code size (for two\n * separate for loops).\n *\n * If it's a native DOM listener or output subscription being stored:\n * 1st index is: event name `name = tView.cleanup[i+0]`\n * 2nd index is: index of native element or a function that retrieves global target (window,\n * document or body) reference based on the native element:\n * `typeof idxOrTargetGetter === 'function'`: global target getter function\n * `typeof idxOrTargetGetter === 'number'`: index of native element\n *\n * 3rd index is: index of listener function `listener = lView[CLEANUP][tView.cleanup[i+2]]`\n * 4th index is: `useCaptureOrIndx = tView.cleanup[i+3]`\n * `typeof useCaptureOrIndx == 'boolean' : useCapture boolean\n * `typeof useCaptureOrIndx == 'number':\n * `useCaptureOrIndx >= 0` `removeListener = LView[CLEANUP][useCaptureOrIndx]`\n * `useCaptureOrIndx < 0` `subscription = LView[CLEANUP][-useCaptureOrIndx]`\n *\n * If it's an output subscription or query list destroy hook:\n * 1st index is: output unsubscribe function / query list destroy function\n * 2nd index is: index of function context in LView.cleanupInstances[]\n * `tView.cleanup[i+0].call(lView[CLEANUP][tView.cleanup[i+1]])`\n */\n cleanup: any[]|null;\n\n /**\n * A list of element indices for child components that will need to be\n * refreshed when the current view has finished its check. These indices have\n * already been adjusted for the HEADER_OFFSET.\n *\n */\n components: number[]|null;\n\n /**\n * A collection of queries tracked in a given view.\n */\n queries: TQueries|null;\n\n /**\n * An array of indices pointing to directives with content queries alongside with the\n * corresponding query index. Each entry in this array is a tuple of:\n * - index of the first content query index declared by a given directive;\n * - index of a directive.\n *\n * We are storing those indexes so we can refresh content queries as part of a view refresh\n * process.\n */\n contentQueries: number[]|null;\n\n /**\n * Set of schemas that declare elements to be allowed inside the view.\n */\n schemas: SchemaMetadata[]|null;\n\n /**\n * Array of constants for the view. Includes attribute arrays, local definition arrays etc.\n * Used for directive matching, attribute bindings, local definitions and more.\n */\n consts: TConstants|null;\n\n /**\n * Indicates that there was an error before we managed to complete the first create pass of the\n * view. This means that the view is likely corrupted and we should try to recover it.\n */\n incompleteFirstPass: boolean;\n}\n\nexport const enum RootContextFlags {\n Empty = 0b00,\n DetectChanges = 0b01,\n FlushPlayers = 0b10\n}\n\n\n/**\n * RootContext contains information which is shared for all components which\n * were bootstrapped with {@link renderComponent}.\n */\nexport interface RootContext {\n /**\n * A function used for scheduling change detection in the future. Usually\n * this is `requestAnimationFrame`.\n */\n scheduler: (workFn: () => void) => void;\n\n /**\n * A promise which is resolved when all components are considered clean (not dirty).\n *\n * This promise is overwritten every time a first call to {@link markDirty} is invoked.\n */\n clean: Promise;\n\n /**\n * RootComponents - The components that were instantiated by the call to\n * {@link renderComponent}.\n */\n components: {}[];\n\n /**\n * The player flushing handler to kick off all animations\n */\n playerHandler: PlayerHandler|null;\n\n /**\n * What render-related operations to run once a scheduler has been set\n */\n flags: RootContextFlags;\n}\n\n/** Single hook callback function. */\nexport type HookFn = () => void;\n\n/**\n * Information necessary to call a hook. E.g. the callback that\n * needs to invoked and the index at which to find its context.\n */\nexport type HookEntry = number|HookFn;\n\n/**\n * Array of hooks that should be executed for a view and their directive indices.\n *\n * For each node of the view, the following data is stored:\n * 1) Node index (optional)\n * 2) A series of number/function pairs where:\n * - even indices are directive indices\n * - odd indices are hook functions\n *\n * Special cases:\n * - a negative directive index flags an init hook (ngOnInit, ngAfterContentInit, ngAfterViewInit)\n */\nexport type HookData = HookEntry[];\n\n/**\n * Array of destroy hooks that should be executed for a view and their directive indices.\n *\n * The array is set up as a series of number/function or number/(number|function)[]:\n * - Even indices represent the context with which hooks should be called.\n * - Odd indices are the hook functions themselves. If a value at an odd index is an array,\n * it represents the destroy hooks of a `multi` provider where:\n * - Even indices represent the index of the provider for which we've registered a destroy hook,\n * inside of the `multi` provider array.\n * - Odd indices are the destroy hook functions.\n * For example:\n * LView: `[0, 1, 2, AService, 4, [BService, CService, DService]]`\n * destroyHooks: `[3, AService.ngOnDestroy, 5, [0, BService.ngOnDestroy, 2, DService.ngOnDestroy]]`\n *\n * In the example above `AService` is a type provider with an `ngOnDestroy`, whereas `BService`,\n * `CService` and `DService` are part of a `multi` provider where only `BService` and `DService`\n * have an `ngOnDestroy` hook.\n */\nexport type DestroyHookData = (HookEntry|HookData)[];\n\n/**\n * Static data that corresponds to the instance-specific data array on an LView.\n *\n * Each node's static data is stored in tData at the same index that it's stored\n * in the data array. Any nodes that do not have static data store a null value in\n * tData to avoid a sparse array.\n *\n * Each pipe's definition is stored here at the same index as its pipe instance in\n * the data array.\n *\n * Each host property's name is stored here at the same index as its value in the\n * data array.\n *\n * Each property binding name is stored here at the same index as its value in\n * the data array. If the binding is an interpolation, the static string values\n * are stored parallel to the dynamic values. Example:\n *\n * id=\"prefix {{ v0 }} a {{ v1 }} b {{ v2 }} suffix\"\n *\n * LView | TView.data\n *------------------------\n * v0 value | 'a'\n * v1 value | 'b'\n * v2 value | id � prefix � suffix\n *\n * Injector bloom filters are also stored here.\n */\nexport type TData = (TNode|PipeDef|DirectiveDef|ComponentDef|number|TStylingRange|\n TStylingKey|ProviderToken|TI18n|I18nUpdateOpCodes|TIcu|null|string)[];\n\n// Note: This hack is necessary so we don't erroneously get a circular dependency\n// failure based on types.\nexport const unusedValueExportToPlacateAjd = 1;\n\n/**\n * Human readable version of the `LView`.\n *\n * `LView` is a data structure used internally to keep track of views. The `LView` is designed for\n * efficiency and so at times it is difficult to read or write tests which assert on its values. For\n * this reason when `ngDevMode` is true we patch a `LView.debug` property which points to\n * `LViewDebug` for easier debugging and test writing. It is the intent of `LViewDebug` to be used\n * in tests.\n */\nexport interface LViewDebug {\n /**\n * Flags associated with the `LView` unpacked into a more readable state.\n *\n * See `LViewFlags` for the flag meanings.\n */\n readonly flags: {\n initPhaseState: number,\n creationMode: boolean,\n firstViewPass: boolean,\n checkAlways: boolean,\n dirty: boolean,\n attached: boolean,\n destroyed: boolean,\n isRoot: boolean,\n indexWithinInitPhase: number,\n };\n\n /**\n * Associated TView\n */\n readonly tView: TView;\n\n /**\n * Parent view (or container)\n */\n readonly parent: LViewDebug|LContainerDebug|null;\n\n /**\n * Next sibling to the `LView`.\n */\n readonly next: LViewDebug|LContainerDebug|null;\n\n /**\n * The context used for evaluation of the `LView`\n *\n * (Usually the component)\n */\n readonly context: {}|null;\n\n /**\n * Hierarchical tree of nodes.\n */\n readonly nodes: DebugNode[];\n\n /**\n * Template structure (no instance data).\n * (Shows how TNodes are connected)\n */\n readonly template: string;\n\n /**\n * HTML representation of the `LView`.\n *\n * This is only approximate to actual HTML as child `LView`s are removed.\n */\n readonly html: string;\n\n /**\n * The host element to which this `LView` is attached.\n */\n readonly hostHTML: string|null;\n\n /**\n * Child `LView`s\n */\n readonly childViews: Array;\n\n /**\n * Sub range of `LView` containing decls (DOM elements).\n */\n readonly decls: LViewDebugRange;\n\n /**\n * Sub range of `LView` containing vars (bindings).\n */\n readonly vars: LViewDebugRange;\n\n /**\n * Sub range of `LView` containing expando (used by DI).\n */\n readonly expando: LViewDebugRange;\n}\n\n/**\n * Human readable version of the `LContainer`\n *\n * `LContainer` is a data structure used internally to keep track of child views. The `LContainer`\n * is designed for efficiency and so at times it is difficult to read or write tests which assert on\n * its values. For this reason when `ngDevMode` is true we patch a `LContainer.debug` property which\n * points to `LContainerDebug` for easier debugging and test writing. It is the intent of\n * `LContainerDebug` to be used in tests.\n */\nexport interface LContainerDebug {\n readonly native: RComment;\n /**\n * Child `LView`s.\n */\n readonly views: LViewDebug[];\n readonly parent: LViewDebug|null;\n readonly movedViews: LView[]|null;\n readonly host: RElement|RComment|LView;\n readonly next: LViewDebug|LContainerDebug|null;\n readonly hasTransplantedViews: boolean;\n}\n\n\n\n/**\n * `LView` is subdivided to ranges where the actual data is stored. Some of these ranges such as\n * `decls` and `vars` are known at compile time. Other such as `i18n` and `expando` are runtime only\n * concepts.\n */\nexport interface LViewDebugRange {\n /**\n * The starting index in `LView` where the range begins. (Inclusive)\n */\n start: number;\n\n /**\n * The ending index in `LView` where the range ends. (Exclusive)\n */\n end: number;\n\n /**\n * The length of the range\n */\n length: number;\n\n /**\n * The merged content of the range. `t` contains data from `TView.data` and `l` contains `LView`\n * data at an index.\n */\n content: LViewDebugRangeContent[];\n}\n\n/**\n * For convenience the static and instance portions of `TView` and `LView` are merged into a single\n * object in `LViewRange`.\n */\nexport interface LViewDebugRangeContent {\n /**\n * Index into original `LView` or `TView.data`.\n */\n index: number;\n\n /**\n * Value from the `TView.data[index]` location.\n */\n t: any;\n\n /**\n * Value from the `LView[index]` location.\n */\n l: any;\n}\n\n\n/**\n * A logical node which comprise into `LView`s.\n *\n */\nexport interface DebugNode {\n /**\n * HTML representation of the node.\n */\n html: string|null;\n\n /**\n * Associated `TNode`\n */\n tNode: TNode;\n\n /**\n * Human readable node type.\n */\n type: string;\n\n /**\n * DOM native node.\n */\n native: Node;\n\n /**\n * Child nodes\n */\n children: DebugNode[];\n\n /**\n * A list of Component/Directive types which need to be instantiated an this location.\n */\n factories: Type[];\n\n /**\n * A list of Component/Directive instances which were instantiated an this location.\n */\n instances: unknown[];\n\n /**\n * NodeInjector information.\n */\n injector: NodeInjectorDebug;\n\n /**\n * Injector resolution path.\n */\n injectorResolutionPath: any;\n}\n\nexport interface NodeInjectorDebug {\n /**\n * Instance bloom. Does the current injector have a provider with a given bloom mask.\n */\n bloom: string;\n\n\n /**\n * Cumulative bloom. Do any of the above injectors have a provider with a given bloom mask.\n */\n cumulativeBloom: string;\n\n /**\n * A list of providers associated with this injector.\n */\n providers: (Type|DirectiveDef|ComponentDef)[];\n\n /**\n * A list of providers associated with this injector visible to the view of the component only.\n */\n viewProviders: Type[];\n\n\n /**\n * Location of the parent `TNode`.\n */\n parentInjectorIndex: number;\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\nimport {Type} from '../interface/type';\nimport {stringify} from '../util/stringify';\nimport {NG_FACTORY_DEF} from './fields';\n\n\n/**\n * Definition of what a factory function should look like.\n */\nexport type FactoryFn = {\n /**\n * Subclasses without an explicit constructor call through to the factory of their base\n * definition, providing it with their own constructor to instantiate.\n */\n (t?: Type): U;\n\n /**\n * If no constructor to instantiate is provided, an instance of type T itself is created.\n */\n (t?: undefined): T;\n};\n\n\nexport function getFactoryDef(type: any, throwNotFound: true): FactoryFn;\nexport function getFactoryDef(type: any): FactoryFn|null;\nexport function getFactoryDef(type: any, throwNotFound?: boolean): FactoryFn|null {\n const hasFactoryDef = type.hasOwnProperty(NG_FACTORY_DEF);\n if (!hasFactoryDef && throwNotFound === true && ngDevMode) {\n throw new Error(`Type ${stringify(type)} does not have 'ɵfac' property.`);\n }\n return hasFactoryDef ? type[NG_FACTORY_DEF] : null;\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 * Represents a basic change from a previous to a new value for a single\n * property on a directive instance. Passed as a value in a\n * {@link SimpleChanges} object to the `ngOnChanges` hook.\n *\n * @see `OnChanges`\n *\n * @publicApi\n */\nexport class SimpleChange {\n constructor(public previousValue: any, public currentValue: any, public firstChange: boolean) {}\n /**\n * Check whether the new value is the first value assigned.\n */\n isFirstChange(): boolean {\n return this.firstChange;\n }\n}\n\n/**\n * A hashtable of changes represented by {@link SimpleChange} objects stored\n * at the declared property name they belong to on a Directive or Component. This is\n * the type passed to the `ngOnChanges` hook.\n *\n * @see `OnChanges`\n *\n * @publicApi\n */\nexport interface SimpleChanges {\n [propName: string]: SimpleChange;\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\nimport {OnChanges} from '../../interface/lifecycle_hooks';\nimport {SimpleChange, SimpleChanges} from '../../interface/simple_change';\nimport {EMPTY_OBJ} from '../../util/empty';\nimport {DirectiveDef, DirectiveDefFeature} from '../interfaces/definition';\n\n/**\n * The NgOnChangesFeature decorates a component with support for the ngOnChanges\n * lifecycle hook, so it should be included in any component that implements\n * that hook.\n *\n * If the component or directive uses inheritance, the NgOnChangesFeature MUST\n * be included as a feature AFTER {@link InheritDefinitionFeature}, otherwise\n * inherited properties will not be propagated to the ngOnChanges lifecycle\n * hook.\n *\n * Example usage:\n *\n * ```\n * static ɵcmp = defineComponent({\n * ...\n * inputs: {name: 'publicName'},\n * features: [NgOnChangesFeature]\n * });\n * ```\n *\n * @codeGenApi\n */\nexport function ɵɵNgOnChangesFeature(): DirectiveDefFeature {\n return NgOnChangesFeatureImpl;\n}\n\nexport function NgOnChangesFeatureImpl(definition: DirectiveDef) {\n if (definition.type.prototype.ngOnChanges) {\n definition.setInput = ngOnChangesSetInput;\n }\n return rememberChangeHistoryAndInvokeOnChangesHook;\n}\n\n// This option ensures that the ngOnChanges lifecycle hook will be inherited\n// from superclasses (in InheritDefinitionFeature).\n/** @nocollapse */\n// tslint:disable-next-line:no-toplevel-property-access\n(ɵɵNgOnChangesFeature as DirectiveDefFeature).ngInherit = true;\n\n/**\n * This is a synthetic lifecycle hook which gets inserted into `TView.preOrderHooks` to simulate\n * `ngOnChanges`.\n *\n * The hook reads the `NgSimpleChangesStore` data from the component instance and if changes are\n * found it invokes `ngOnChanges` on the component instance.\n *\n * @param this Component instance. Because this function gets inserted into `TView.preOrderHooks`,\n * it is guaranteed to be called with component instance.\n */\nfunction rememberChangeHistoryAndInvokeOnChangesHook(this: OnChanges) {\n const simpleChangesStore = getSimpleChangesStore(this);\n const current = simpleChangesStore?.current;\n\n if (current) {\n const previous = simpleChangesStore!.previous;\n if (previous === EMPTY_OBJ) {\n simpleChangesStore!.previous = current;\n } else {\n // New changes are copied to the previous store, so that we don't lose history for inputs\n // which were not changed this time\n for (let key in current) {\n previous[key] = current[key];\n }\n }\n simpleChangesStore!.current = null;\n this.ngOnChanges(current);\n }\n}\n\n\nfunction ngOnChangesSetInput(\n this: DirectiveDef, instance: T, value: any, publicName: string, privateName: string): void {\n const simpleChangesStore = getSimpleChangesStore(instance) ||\n setSimpleChangesStore(instance, {previous: EMPTY_OBJ, current: null});\n const current = simpleChangesStore.current || (simpleChangesStore.current = {});\n const previous = simpleChangesStore.previous;\n\n const declaredName = (this.declaredInputs as {[key: string]: string})[publicName];\n const previousChange = previous[declaredName];\n current[declaredName] = new SimpleChange(\n previousChange && previousChange.currentValue, value, previous === EMPTY_OBJ);\n\n (instance as any)[privateName] = value;\n}\n\nconst SIMPLE_CHANGES_STORE = '__ngSimpleChanges__';\n\nfunction getSimpleChangesStore(instance: any): null|NgSimpleChangesStore {\n return instance[SIMPLE_CHANGES_STORE] || null;\n}\n\nfunction setSimpleChangesStore(instance: any, store: NgSimpleChangesStore): NgSimpleChangesStore {\n return instance[SIMPLE_CHANGES_STORE] = store;\n}\n\n/**\n * Data structure which is monkey-patched on the component instance and used by `ngOnChanges`\n * life-cycle hook to track previous input values.\n */\ninterface NgSimpleChangesStore {\n previous: SimpleChanges;\n current: SimpleChanges|null;\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 * Profiler events is an enum used by the profiler to distinguish between different calls of user\n * code invoked throughout the application lifecycle.\n */\nexport const enum ProfilerEvent {\n /**\n * Corresponds to the point in time before the runtime has called the template function of a\n * component with `RenderFlags.Create`.\n */\n TemplateCreateStart,\n\n /**\n * Corresponds to the point in time after the runtime has called the template function of a\n * component with `RenderFlags.Create`.\n */\n TemplateCreateEnd,\n\n /**\n * Corresponds to the point in time before the runtime has called the template function of a\n * component with `RenderFlags.Update`.\n */\n TemplateUpdateStart,\n\n /**\n * Corresponds to the point in time after the runtime has called the template function of a\n * component with `RenderFlags.Update`.\n */\n TemplateUpdateEnd,\n\n /**\n * Corresponds to the point in time before the runtime has called a lifecycle hook of a component\n * or directive.\n */\n LifecycleHookStart,\n\n /**\n * Corresponds to the point in time after the runtime has called a lifecycle hook of a component\n * or directive.\n */\n LifecycleHookEnd,\n\n /**\n * Corresponds to the point in time before the runtime has evaluated an expression associated with\n * an event or an output.\n */\n OutputStart,\n\n /**\n * Corresponds to the point in time after the runtime has evaluated an expression associated with\n * an event or an output.\n */\n OutputEnd,\n}\n\n/**\n * Profiler function which the runtime will invoke before and after user code.\n */\nexport interface Profiler {\n (event: ProfilerEvent, instance: {}|null, hookOrListener?: (e?: any) => any): void;\n}\n\n\nlet profilerCallback: Profiler|null = null;\n\n/**\n * Sets the callback function which will be invoked before and after performing certain actions at\n * runtime (for example, before and after running change detection).\n *\n * Warning: this function is *INTERNAL* and should not be relied upon in application's code.\n * The contract of the function might be changed in any release and/or the function can be removed\n * completely.\n *\n * @param profiler function provided by the caller or null value to disable profiling.\n */\nexport const setProfiler = (profiler: Profiler|null) => {\n profilerCallback = profiler;\n};\n\n/**\n * Profiler function which wraps user code executed by the runtime.\n *\n * @param event ProfilerEvent corresponding to the execution context\n * @param instance component instance\n * @param hookOrListener lifecycle hook function or output listener. The value depends on the\n * execution context\n * @returns\n */\nexport const profiler: Profiler = function(\n event: ProfilerEvent, instance: {}|null, hookOrListener?: (e?: any) => any) {\n if (profilerCallback != null /* both `null` and `undefined` */) {\n profilerCallback(event, instance, hookOrListener);\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 const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nexport const MATH_ML_NAMESPACE = 'http://www.w3.org/1998/MathML/';\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 * Most of the use of `document` in Angular is from within the DI system so it is possible to simply\n * inject the `DOCUMENT` token and are done.\n *\n * Ivy is special because it does not rely upon the DI and must get hold of the document some other\n * way.\n *\n * The solution is to define `getDocument()` and `setDocument()` top-level functions for ivy.\n * Wherever ivy needs the global document, it calls `getDocument()` instead.\n *\n * When running ivy outside of a browser environment, it is necessary to call `setDocument()` to\n * tell ivy what the global `document` is.\n *\n * Angular does this for us in each of the standard platforms (`Browser`, `Server`, and `WebWorker`)\n * by calling `setDocument()` when providing the `DOCUMENT` token.\n */\nlet DOCUMENT: Document|undefined = undefined;\n\n/**\n * Tell ivy what the `document` is for this platform.\n *\n * It is only necessary to call this if the current platform is not a browser.\n *\n * @param document The object representing the global `document` in this environment.\n */\nexport function setDocument(document: Document|undefined): void {\n DOCUMENT = document;\n}\n\n/**\n * Access the object that represents the `document` for this platform.\n *\n * Ivy calls this whenever it needs to access the `document` object.\n * For example to create the renderer or to do sanitization.\n */\nexport function getDocument(): Document {\n if (DOCUMENT !== undefined) {\n return DOCUMENT;\n } else if (typeof document !== 'undefined') {\n return document;\n }\n // No \"document\" can be found. This should only happen if we are running ivy outside Angular and\n // the current platform is not a browser. Since this is not a supported scenario at the moment\n // this should not happen in Angular apps.\n // Once we support running ivy outside of Angular we will need to publish `setDocument()` as a\n // public API. Meanwhile we just return `undefined` and let the application fail.\n return undefined!;\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 * The goal here is to make sure that the browser DOM API is the Renderer.\n * We do this by defining a subset of DOM API to be the renderer and then\n * use that at runtime for rendering.\n *\n * At runtime we can then use the DOM api directly, in server or web-worker\n * it will be easy to implement such API.\n */\n\nimport {RendererStyleFlags2, RendererType2} from '../../render/api_flags';\nimport {TrustedHTML, TrustedScript, TrustedScriptURL} from '../../util/security/trusted_type_defs';\nimport {getDocument} from './document';\nimport {RComment, RElement, RNode, RText} from './renderer_dom';\n\n// TODO: cleanup once the code is merged in angular/angular\nexport enum RendererStyleFlags3 {\n Important = 1 << 0,\n DashCase = 1 << 1\n}\n\nexport type Renderer3 = ObjectOrientedRenderer3|ProceduralRenderer3;\n\nexport type GlobalTargetName = 'document'|'window'|'body';\n\nexport type GlobalTargetResolver = (element: any) => EventTarget;\n\n/**\n * Object Oriented style of API needed to create elements and text nodes.\n *\n * This is the native browser API style, e.g. operations are methods on individual objects\n * like HTMLElement. With this style, no additional code is needed as a facade\n * (reducing payload size).\n * */\nexport interface ObjectOrientedRenderer3 {\n createComment(data: string): RComment;\n createElement(tagName: string): RElement;\n createElementNS(namespace: string, tagName: string): RElement;\n createTextNode(data: string): RText;\n\n querySelector(selectors: string): RElement|null;\n}\n\n/** Returns whether the `renderer` is a `ProceduralRenderer3` */\nexport function isProceduralRenderer(renderer: ProceduralRenderer3|\n ObjectOrientedRenderer3): renderer is ProceduralRenderer3 {\n return !!((renderer as any).listen);\n}\n\n/**\n * Procedural style of API needed to create elements and text nodes.\n *\n * In non-native browser environments (e.g. platforms such as web-workers), this is the\n * facade that enables element manipulation. This also facilitates backwards compatibility\n * with Renderer2.\n */\nexport interface ProceduralRenderer3 {\n destroy(): void;\n createComment(value: string): RComment;\n createElement(name: string, namespace?: string|null): RElement;\n createText(value: string): RText;\n /**\n * This property is allowed to be null / undefined,\n * in which case the view engine won't call it.\n * This is used as a performance optimization for production mode.\n */\n destroyNode?: ((node: RNode) => void)|null;\n appendChild(parent: RElement, newChild: RNode): void;\n insertBefore(parent: RNode, newChild: RNode, refChild: RNode|null, isMove?: boolean): void;\n removeChild(parent: RElement, oldChild: RNode, isHostElement?: boolean): void;\n selectRootElement(selectorOrNode: string|any, preserveContent?: boolean): RElement;\n\n parentNode(node: RNode): RElement|null;\n nextSibling(node: RNode): RNode|null;\n\n setAttribute(\n el: RElement, name: string, value: string|TrustedHTML|TrustedScript|TrustedScriptURL,\n namespace?: string|null): void;\n removeAttribute(el: RElement, name: string, namespace?: string|null): void;\n addClass(el: RElement, name: string): void;\n removeClass(el: RElement, name: string): void;\n setStyle(\n el: RElement, style: string, value: any,\n flags?: RendererStyleFlags2|RendererStyleFlags3): void;\n removeStyle(el: RElement, style: string, flags?: RendererStyleFlags2|RendererStyleFlags3): void;\n setProperty(el: RElement, name: string, value: any): void;\n setValue(node: RText|RComment, value: string): void;\n\n // TODO(misko): Deprecate in favor of addEventListener/removeEventListener\n listen(\n target: GlobalTargetName|RNode, eventName: string,\n callback: (event: any) => boolean | void): () => void;\n}\n\nexport interface RendererFactory3 {\n createRenderer(hostElement: RElement|null, rendererType: RendererType2|null): Renderer3;\n begin?(): void;\n end?(): void;\n}\n\nexport const domRendererFactory3: RendererFactory3 = {\n createRenderer: (hostElement: RElement|null, rendererType: RendererType2|null): Renderer3 => {\n return getDocument();\n }\n};\n\n\n// Note: This hack is necessary so we don't erroneously get a circular dependency\n// failure based on types.\nexport const unusedValueExportToPlacateAjd = 1;\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\nimport {assertDomNode, assertGreaterThan, assertGreaterThanOrEqual, assertIndexInRange, assertLessThan} from '../../util/assert';\nimport {assertTNode, assertTNodeForLView} from '../assert';\nimport {LContainer, TYPE} from '../interfaces/container';\nimport {TConstants, TNode} from '../interfaces/node';\nimport {isProceduralRenderer} from '../interfaces/renderer';\nimport {RNode} from '../interfaces/renderer_dom';\nimport {isLContainer, isLView} from '../interfaces/type_checks';\nimport {FLAGS, HEADER_OFFSET, HOST, LView, LViewFlags, PARENT, PREORDER_HOOK_FLAGS, RENDERER, TData, TRANSPLANTED_VIEWS_TO_REFRESH, TView} from '../interfaces/view';\n\n\n\n/**\n * For efficiency reasons we often put several different data types (`RNode`, `LView`, `LContainer`)\n * in same location in `LView`. This is because we don't want to pre-allocate space for it\n * because the storage is sparse. This file contains utilities for dealing with such data types.\n *\n * How do we know what is stored at a given location in `LView`.\n * - `Array.isArray(value) === false` => `RNode` (The normal storage value)\n * - `Array.isArray(value) === true` => then the `value[0]` represents the wrapped value.\n * - `typeof value[TYPE] === 'object'` => `LView`\n * - This happens when we have a component at a given location\n * - `typeof value[TYPE] === true` => `LContainer`\n * - This happens when we have `LContainer` binding at a given location.\n *\n *\n * NOTE: it is assumed that `Array.isArray` and `typeof` operations are very efficient.\n */\n\n/**\n * Returns `RNode`.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nexport function unwrapRNode(value: RNode|LView|LContainer): RNode {\n while (Array.isArray(value)) {\n value = value[HOST] as any;\n }\n return value as RNode;\n}\n\n/**\n * Returns `LView` or `null` if not found.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nexport function unwrapLView(value: RNode|LView|LContainer): LView|null {\n while (Array.isArray(value)) {\n // This check is same as `isLView()` but we don't call at as we don't want to call\n // `Array.isArray()` twice and give JITer more work for inlining.\n if (typeof value[TYPE] === 'object') return value as LView;\n value = value[HOST] as any;\n }\n return null;\n}\n\n/**\n * Returns `LContainer` or `null` if not found.\n * @param value wrapped value of `RNode`, `LView`, `LContainer`\n */\nexport function unwrapLContainer(value: RNode|LView|LContainer): LContainer|null {\n while (Array.isArray(value)) {\n // This check is same as `isLContainer()` but we don't call at as we don't want to call\n // `Array.isArray()` twice and give JITer more work for inlining.\n if (value[TYPE] === true) return value as LContainer;\n value = value[HOST] as any;\n }\n return null;\n}\n\n/**\n * Retrieves an element value from the provided `viewData`, by unwrapping\n * from any containers, component views, or style contexts.\n */\nexport function getNativeByIndex(index: number, lView: LView): RNode {\n ngDevMode && assertIndexInRange(lView, index);\n ngDevMode && assertGreaterThanOrEqual(index, HEADER_OFFSET, 'Expected to be past HEADER_OFFSET');\n return unwrapRNode(lView[index]);\n}\n\n/**\n * Retrieve an `RNode` for a given `TNode` and `LView`.\n *\n * This function guarantees in dev mode to retrieve a non-null `RNode`.\n *\n * @param tNode\n * @param lView\n */\nexport function getNativeByTNode(tNode: TNode, lView: LView): RNode {\n ngDevMode && assertTNodeForLView(tNode, lView);\n ngDevMode && assertIndexInRange(lView, tNode.index);\n const node: RNode = unwrapRNode(lView[tNode.index]);\n ngDevMode && !isProceduralRenderer(lView[RENDERER]) && assertDomNode(node);\n return node;\n}\n\n/**\n * Retrieve an `RNode` or `null` for a given `TNode` and `LView`.\n *\n * Some `TNode`s don't have associated `RNode`s. For example `Projection`\n *\n * @param tNode\n * @param lView\n */\nexport function getNativeByTNodeOrNull(tNode: TNode|null, lView: LView): RNode|null {\n const index = tNode === null ? -1 : tNode.index;\n if (index !== -1) {\n ngDevMode && assertTNodeForLView(tNode!, lView);\n const node: RNode|null = unwrapRNode(lView[index]);\n ngDevMode && node !== null && !isProceduralRenderer(lView[RENDERER]) && assertDomNode(node);\n return node;\n }\n return null;\n}\n\n\n// fixme(misko): The return Type should be `TNode|null`\nexport function getTNode(tView: TView, index: number): TNode {\n ngDevMode && assertGreaterThan(index, -1, 'wrong index for TNode');\n ngDevMode && assertLessThan(index, tView.data.length, 'wrong index for TNode');\n const tNode = tView.data[index] as TNode;\n ngDevMode && tNode !== null && assertTNode(tNode);\n return tNode;\n}\n\n/** Retrieves a value from any `LView` or `TData`. */\nexport function load(view: LView|TData, index: number): T {\n ngDevMode && assertIndexInRange(view, index);\n return view[index];\n}\n\nexport function getComponentLViewByIndex(nodeIndex: number, hostView: LView): LView {\n // Could be an LView or an LContainer. If LContainer, unwrap to find LView.\n ngDevMode && assertIndexInRange(hostView, nodeIndex);\n const slotValue = hostView[nodeIndex];\n const lView = isLView(slotValue) ? slotValue : slotValue[HOST];\n return lView;\n}\n\n/** Checks whether a given view is in creation mode */\nexport function isCreationMode(view: LView): boolean {\n return (view[FLAGS] & LViewFlags.CreationMode) === LViewFlags.CreationMode;\n}\n\n/**\n * Returns a boolean for whether the view is attached to the change detection tree.\n *\n * Note: This determines whether a view should be checked, not whether it's inserted\n * into a container. For that, you'll want `viewAttachedToContainer` below.\n */\nexport function viewAttachedToChangeDetector(view: LView): boolean {\n return (view[FLAGS] & LViewFlags.Attached) === LViewFlags.Attached;\n}\n\n/** Returns a boolean for whether the view is attached to a container. */\nexport function viewAttachedToContainer(view: LView): boolean {\n return isLContainer(view[PARENT]);\n}\n\n/** Returns a constant from `TConstants` instance. */\nexport function getConstant(consts: TConstants|null, index: null|undefined): null;\nexport function getConstant(consts: TConstants, index: number): T|null;\nexport function getConstant(consts: TConstants|null, index: number|null|undefined): T|null;\nexport function getConstant(consts: TConstants|null, index: number|null|undefined): T|null {\n if (index === null || index === undefined) return null;\n ngDevMode && assertIndexInRange(consts!, index);\n return consts![index] as unknown as T;\n}\n\n/**\n * Resets the pre-order hook flags of the view.\n * @param lView the LView on which the flags are reset\n */\nexport function resetPreOrderHookFlags(lView: LView) {\n lView[PREORDER_HOOK_FLAGS] = 0;\n}\n\n/**\n * Updates the `TRANSPLANTED_VIEWS_TO_REFRESH` counter on the `LContainer` as well as the parents\n * whose\n * 1. counter goes from 0 to 1, indicating that there is a new child that has a view to refresh\n * or\n * 2. counter goes from 1 to 0, indicating there are no more descendant views to refresh\n */\nexport function updateTransplantedViewCount(lContainer: LContainer, amount: 1|- 1) {\n lContainer[TRANSPLANTED_VIEWS_TO_REFRESH] += amount;\n let viewOrContainer: LView|LContainer = lContainer;\n let parent: LView|LContainer|null = lContainer[PARENT];\n while (parent !== null &&\n ((amount === 1 && viewOrContainer[TRANSPLANTED_VIEWS_TO_REFRESH] === 1) ||\n (amount === -1 && viewOrContainer[TRANSPLANTED_VIEWS_TO_REFRESH] === 0))) {\n parent[TRANSPLANTED_VIEWS_TO_REFRESH] += amount;\n viewOrContainer = parent;\n parent = parent[PARENT];\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\nimport {InjectFlags} from '../di/interface/injector';\nimport {assertDefined, assertEqual, assertGreaterThanOrEqual, assertLessThan, assertNotEqual} from '../util/assert';\nimport {assertLViewOrUndefined, assertTNodeForLView, assertTNodeForTView} from './assert';\nimport {DirectiveDef} from './interfaces/definition';\nimport {TNode, TNodeType} from './interfaces/node';\nimport {CONTEXT, DECLARATION_VIEW, HEADER_OFFSET, LView, OpaqueViewState, T_HOST, TData, TVIEW, TView, TViewType} from './interfaces/view';\nimport {MATH_ML_NAMESPACE, SVG_NAMESPACE} from './namespaces';\nimport {getTNode} from './util/view_utils';\n\n\n/**\n *\n */\ninterface LFrame {\n /**\n * Parent LFrame.\n *\n * This is needed when `leaveView` is called to restore the previous state.\n */\n parent: LFrame;\n\n /**\n * Child LFrame.\n *\n * This is used to cache existing LFrames to relieve the memory pressure.\n */\n child: LFrame|null;\n\n /**\n * State of the current view being processed.\n *\n * An array of nodes (text, element, container, etc), pipes, their bindings, and\n * any local variables that need to be stored between invocations.\n */\n lView: LView;\n\n /**\n * Current `TView` associated with the `LFrame.lView`.\n *\n * One can get `TView` from `lFrame[TVIEW]` however because it is so common it makes sense to\n * store it in `LFrame` for perf reasons.\n */\n tView: TView;\n\n /**\n * Used to set the parent property when nodes are created and track query results.\n *\n * This is used in conjunction with `isParent`.\n */\n currentTNode: TNode|null;\n\n /**\n * If `isParent` is:\n * - `true`: then `currentTNode` points to a parent node.\n * - `false`: then `currentTNode` points to previous node (sibling).\n */\n isParent: boolean;\n\n /**\n * Index of currently selected element in LView.\n *\n * Used by binding instructions. Updated as part of advance instruction.\n */\n selectedIndex: number;\n\n /**\n * Current pointer to the binding index.\n */\n bindingIndex: number;\n\n /**\n * The last viewData retrieved by nextContext().\n * Allows building nextContext() and reference() calls.\n *\n * e.g. const inner = x().$implicit; const outer = x().$implicit;\n */\n contextLView: LView;\n\n /**\n * Store the element depth count. This is used to identify the root elements of the template\n * so that we can then attach patch data `LView` to only those elements. We know that those\n * are the only places where the patch data could change, this way we will save on number\n * of places where tha patching occurs.\n */\n elementDepthCount: number;\n\n /**\n * Current namespace to be used when creating elements\n */\n currentNamespace: string|null;\n\n\n /**\n * The root index from which pure function instructions should calculate their binding\n * indices. In component views, this is TView.bindingStartIndex. In a host binding\n * context, this is the TView.expandoStartIndex + any dirs/hostVars before the given dir.\n */\n bindingRootIndex: number;\n\n /**\n * Current index of a View or Content Query which needs to be processed next.\n * We iterate over the list of Queries and increment current query index at every step.\n */\n currentQueryIndex: number;\n\n /**\n * When host binding is executing this points to the directive index.\n * `TView.data[currentDirectiveIndex]` is `DirectiveDef`\n * `LView[currentDirectiveIndex]` is directive instance.\n */\n currentDirectiveIndex: number;\n\n /**\n * Are we currently in i18n block as denoted by `ɵɵelementStart` and `ɵɵelementEnd`.\n *\n * This information is needed because while we are in i18n block all elements must be pre-declared\n * in the translation. (i.e. `Hello �#2�World�/#2�!` pre-declares element at `�#2�` location.)\n * This allocates `TNodeType.Placeholder` element at location `2`. If translator removes `�#2�`\n * from translation than the runtime must also ensure tha element at `2` does not get inserted\n * into the DOM. The translation does not carry information about deleted elements. Therefor the\n * only way to know that an element is deleted is that it was not pre-declared in the translation.\n *\n * This flag works by ensuring that elements which are created without pre-declaration\n * (`TNodeType.Placeholder`) are not inserted into the DOM render tree. (It does mean that the\n * element still gets instantiated along with all of its behavior [directives])\n */\n inI18n: boolean;\n}\n\n/**\n * All implicit instruction state is stored here.\n *\n * It is useful to have a single object where all of the state is stored as a mental model\n * (rather it being spread across many different variables.)\n *\n * PERF NOTE: Turns out that writing to a true global variable is slower than\n * having an intermediate object with properties.\n */\ninterface InstructionState {\n /**\n * Current `LFrame`\n *\n * `null` if we have not called `enterView`\n */\n lFrame: LFrame;\n\n /**\n * Stores whether directives should be matched to elements.\n *\n * When template contains `ngNonBindable` then we need to prevent the runtime from matching\n * directives on children of that element.\n *\n * Example:\n * ```\n * \n * Should match component / directive.\n * \n *
    \n * \n * Should not match component / directive because we are in ngNonBindable.\n * \n *
    \n * ```\n */\n bindingsEnabled: boolean;\n\n /**\n * In this mode, any changes in bindings will throw an ExpressionChangedAfterChecked error.\n *\n * Necessary to support ChangeDetectorRef.checkNoChanges().\n *\n * checkNoChanges Runs only in devmode=true and verifies that no unintended changes exist in\n * the change detector or its children.\n */\n isInCheckNoChangesMode: boolean;\n}\n\nconst instructionState: InstructionState = {\n lFrame: createLFrame(null),\n bindingsEnabled: true,\n isInCheckNoChangesMode: false,\n};\n\n/**\n * Returns true if the instruction state stack is empty.\n *\n * Intended to be called from tests only (tree shaken otherwise).\n */\nexport function specOnlyIsInstructionStateEmpty(): boolean {\n return instructionState.lFrame.parent === null;\n}\n\n\nexport function getElementDepthCount() {\n return instructionState.lFrame.elementDepthCount;\n}\n\nexport function increaseElementDepthCount() {\n instructionState.lFrame.elementDepthCount++;\n}\n\nexport function decreaseElementDepthCount() {\n instructionState.lFrame.elementDepthCount--;\n}\n\nexport function getBindingsEnabled(): boolean {\n return instructionState.bindingsEnabled;\n}\n\n\n/**\n * Enables directive matching on elements.\n *\n * * Example:\n * ```\n * \n * Should match component / directive.\n * \n *
    \n * \n * \n * Should not match component / directive because we are in ngNonBindable.\n * \n * \n *
    \n * ```\n *\n * @codeGenApi\n */\nexport function ɵɵenableBindings(): void {\n instructionState.bindingsEnabled = true;\n}\n\n/**\n * Disables directive matching on element.\n *\n * * Example:\n * ```\n * \n * Should match component / directive.\n * \n *
    \n * \n * \n * Should not match component / directive because we are in ngNonBindable.\n * \n * \n *
    \n * ```\n *\n * @codeGenApi\n */\nexport function ɵɵdisableBindings(): void {\n instructionState.bindingsEnabled = false;\n}\n\n/**\n * Return the current `LView`.\n */\nexport function getLView(): LView {\n return instructionState.lFrame.lView;\n}\n\n/**\n * Return the current `TView`.\n */\nexport function getTView(): TView {\n return instructionState.lFrame.tView;\n}\n\n/**\n * Restores `contextViewData` to the given OpaqueViewState instance.\n *\n * Used in conjunction with the getCurrentView() instruction to save a snapshot\n * of the current view and restore it when listeners are invoked. This allows\n * walking the declaration view tree in listeners to get vars from parent views.\n *\n * @param viewToRestore The OpaqueViewState instance to restore.\n * @returns Context of the restored OpaqueViewState instance.\n *\n * @codeGenApi\n */\nexport function ɵɵrestoreView(viewToRestore: OpaqueViewState): T {\n instructionState.lFrame.contextLView = viewToRestore as any as LView;\n return (viewToRestore as any as LView)[CONTEXT] as T;\n}\n\n\nexport function getCurrentTNode(): TNode|null {\n let currentTNode = getCurrentTNodePlaceholderOk();\n while (currentTNode !== null && currentTNode.type === TNodeType.Placeholder) {\n currentTNode = currentTNode.parent;\n }\n return currentTNode;\n}\n\nexport function getCurrentTNodePlaceholderOk(): TNode|null {\n return instructionState.lFrame.currentTNode;\n}\n\nexport function getCurrentParentTNode(): TNode|null {\n const lFrame = instructionState.lFrame;\n const currentTNode = lFrame.currentTNode;\n return lFrame.isParent ? currentTNode : currentTNode!.parent;\n}\n\nexport function setCurrentTNode(tNode: TNode|null, isParent: boolean) {\n ngDevMode && tNode && assertTNodeForTView(tNode, instructionState.lFrame.tView);\n const lFrame = instructionState.lFrame;\n lFrame.currentTNode = tNode;\n lFrame.isParent = isParent;\n}\n\nexport function isCurrentTNodeParent(): boolean {\n return instructionState.lFrame.isParent;\n}\n\nexport function setCurrentTNodeAsNotParent(): void {\n instructionState.lFrame.isParent = false;\n}\nexport function setCurrentTNodeAsParent(): void {\n instructionState.lFrame.isParent = true;\n}\n\nexport function getContextLView(): LView {\n return instructionState.lFrame.contextLView;\n}\n\nexport function isInCheckNoChangesMode(): boolean {\n // TODO(misko): remove this from the LView since it is ngDevMode=true mode only.\n return instructionState.isInCheckNoChangesMode;\n}\n\nexport function setIsInCheckNoChangesMode(mode: boolean): void {\n instructionState.isInCheckNoChangesMode = mode;\n}\n\n// top level variables should not be exported for performance reasons (PERF_NOTES.md)\nexport function getBindingRoot() {\n const lFrame = instructionState.lFrame;\n let index = lFrame.bindingRootIndex;\n if (index === -1) {\n index = lFrame.bindingRootIndex = lFrame.tView.bindingStartIndex;\n }\n return index;\n}\n\nexport function getBindingIndex(): number {\n return instructionState.lFrame.bindingIndex;\n}\n\nexport function setBindingIndex(value: number): number {\n return instructionState.lFrame.bindingIndex = value;\n}\n\nexport function nextBindingIndex(): number {\n return instructionState.lFrame.bindingIndex++;\n}\n\nexport function incrementBindingIndex(count: number): number {\n const lFrame = instructionState.lFrame;\n const index = lFrame.bindingIndex;\n lFrame.bindingIndex = lFrame.bindingIndex + count;\n return index;\n}\n\nexport function isInI18nBlock() {\n return instructionState.lFrame.inI18n;\n}\n\nexport function setInI18nBlock(isInI18nBlock: boolean): void {\n instructionState.lFrame.inI18n = isInI18nBlock;\n}\n\n/**\n * Set a new binding root index so that host template functions can execute.\n *\n * Bindings inside the host template are 0 index. But because we don't know ahead of time\n * how many host bindings we have we can't pre-compute them. For this reason they are all\n * 0 index and we just shift the root so that they match next available location in the LView.\n *\n * @param bindingRootIndex Root index for `hostBindings`\n * @param currentDirectiveIndex `TData[currentDirectiveIndex]` will point to the current directive\n * whose `hostBindings` are being processed.\n */\nexport function setBindingRootForHostBindings(\n bindingRootIndex: number, currentDirectiveIndex: number) {\n const lFrame = instructionState.lFrame;\n lFrame.bindingIndex = lFrame.bindingRootIndex = bindingRootIndex;\n setCurrentDirectiveIndex(currentDirectiveIndex);\n}\n\n/**\n * When host binding is executing this points to the directive index.\n * `TView.data[getCurrentDirectiveIndex()]` is `DirectiveDef`\n * `LView[getCurrentDirectiveIndex()]` is directive instance.\n */\nexport function getCurrentDirectiveIndex(): number {\n return instructionState.lFrame.currentDirectiveIndex;\n}\n\n/**\n * Sets an index of a directive whose `hostBindings` are being processed.\n *\n * @param currentDirectiveIndex `TData` index where current directive instance can be found.\n */\nexport function setCurrentDirectiveIndex(currentDirectiveIndex: number): void {\n instructionState.lFrame.currentDirectiveIndex = currentDirectiveIndex;\n}\n\n/**\n * Retrieve the current `DirectiveDef` which is active when `hostBindings` instruction is being\n * executed.\n *\n * @param tData Current `TData` where the `DirectiveDef` will be looked up at.\n */\nexport function getCurrentDirectiveDef(tData: TData): DirectiveDef|null {\n const currentDirectiveIndex = instructionState.lFrame.currentDirectiveIndex;\n return currentDirectiveIndex === -1 ? null : tData[currentDirectiveIndex] as DirectiveDef;\n}\n\nexport function getCurrentQueryIndex(): number {\n return instructionState.lFrame.currentQueryIndex;\n}\n\nexport function setCurrentQueryIndex(value: number): void {\n instructionState.lFrame.currentQueryIndex = value;\n}\n\n/**\n * Returns a `TNode` of the location where the current `LView` is declared at.\n *\n * @param lView an `LView` that we want to find parent `TNode` for.\n */\nfunction getDeclarationTNode(lView: LView): TNode|null {\n const tView = lView[TVIEW];\n\n // Return the declaration parent for embedded views\n if (tView.type === TViewType.Embedded) {\n ngDevMode && assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');\n return tView.declTNode;\n }\n\n // Components don't have `TView.declTNode` because each instance of component could be\n // inserted in different location, hence `TView.declTNode` is meaningless.\n // Falling back to `T_HOST` in case we cross component boundary.\n if (tView.type === TViewType.Component) {\n return lView[T_HOST];\n }\n\n // Remaining TNode type is `TViewType.Root` which doesn't have a parent TNode.\n return null;\n}\n\n/**\n * This is a light weight version of the `enterView` which is needed by the DI system.\n *\n * @param lView `LView` location of the DI context.\n * @param tNode `TNode` for DI context\n * @param flags DI context flags. if `SkipSelf` flag is set than we walk up the declaration\n * tree from `tNode` until we find parent declared `TElementNode`.\n * @returns `true` if we have successfully entered DI associated with `tNode` (or with declared\n * `TNode` if `flags` has `SkipSelf`). Failing to enter DI implies that no associated\n * `NodeInjector` can be found and we should instead use `ModuleInjector`.\n * - If `true` than this call must be fallowed by `leaveDI`\n * - If `false` than this call failed and we should NOT call `leaveDI`\n */\nexport function enterDI(lView: LView, tNode: TNode, flags: InjectFlags) {\n ngDevMode && assertLViewOrUndefined(lView);\n\n if (flags & InjectFlags.SkipSelf) {\n ngDevMode && assertTNodeForTView(tNode, lView[TVIEW]);\n\n let parentTNode = tNode as TNode | null;\n let parentLView = lView;\n\n while (true) {\n ngDevMode && assertDefined(parentTNode, 'Parent TNode should be defined');\n parentTNode = parentTNode!.parent as TNode | null;\n if (parentTNode === null && !(flags & InjectFlags.Host)) {\n parentTNode = getDeclarationTNode(parentLView);\n if (parentTNode === null) break;\n\n // In this case, a parent exists and is definitely an element. So it will definitely\n // have an existing lView as the declaration view, which is why we can assume it's defined.\n ngDevMode && assertDefined(parentLView, 'Parent LView should be defined');\n parentLView = parentLView[DECLARATION_VIEW]!;\n\n // In Ivy there are Comment nodes that correspond to ngIf and NgFor embedded directives\n // We want to skip those and look only at Elements and ElementContainers to ensure\n // we're looking at true parent nodes, and not content or other types.\n if (parentTNode.type & (TNodeType.Element | TNodeType.ElementContainer)) {\n break;\n }\n } else {\n break;\n }\n }\n if (parentTNode === null) {\n // If we failed to find a parent TNode this means that we should use module injector.\n return false;\n } else {\n tNode = parentTNode;\n lView = parentLView;\n }\n }\n\n ngDevMode && assertTNodeForLView(tNode, lView);\n const lFrame = instructionState.lFrame = allocLFrame();\n lFrame.currentTNode = tNode;\n lFrame.lView = lView;\n\n return true;\n}\n\n/**\n * Swap the current lView with a new lView.\n *\n * For performance reasons we store the lView in the top level of the module.\n * This way we minimize the number of properties to read. Whenever a new view\n * is entered we have to store the lView for later, and when the view is\n * exited the state has to be restored\n *\n * @param newView New lView to become active\n * @returns the previously active lView;\n */\nexport function enterView(newView: LView): void {\n ngDevMode && assertNotEqual(newView[0], newView[1] as any, '????');\n ngDevMode && assertLViewOrUndefined(newView);\n const newLFrame = allocLFrame();\n if (ngDevMode) {\n assertEqual(newLFrame.isParent, true, 'Expected clean LFrame');\n assertEqual(newLFrame.lView, null, 'Expected clean LFrame');\n assertEqual(newLFrame.tView, null, 'Expected clean LFrame');\n assertEqual(newLFrame.selectedIndex, -1, 'Expected clean LFrame');\n assertEqual(newLFrame.elementDepthCount, 0, 'Expected clean LFrame');\n assertEqual(newLFrame.currentDirectiveIndex, -1, 'Expected clean LFrame');\n assertEqual(newLFrame.currentNamespace, null, 'Expected clean LFrame');\n assertEqual(newLFrame.bindingRootIndex, -1, 'Expected clean LFrame');\n assertEqual(newLFrame.currentQueryIndex, 0, 'Expected clean LFrame');\n }\n const tView = newView[TVIEW];\n instructionState.lFrame = newLFrame;\n ngDevMode && tView.firstChild && assertTNodeForTView(tView.firstChild, tView);\n newLFrame.currentTNode = tView.firstChild!;\n newLFrame.lView = newView;\n newLFrame.tView = tView;\n newLFrame.contextLView = newView!;\n newLFrame.bindingIndex = tView.bindingStartIndex;\n newLFrame.inI18n = false;\n}\n\n/**\n * Allocates next free LFrame. This function tries to reuse the `LFrame`s to lower memory pressure.\n */\nfunction allocLFrame() {\n const currentLFrame = instructionState.lFrame;\n const childLFrame = currentLFrame === null ? null : currentLFrame.child;\n const newLFrame = childLFrame === null ? createLFrame(currentLFrame) : childLFrame;\n return newLFrame;\n}\n\nfunction createLFrame(parent: LFrame|null): LFrame {\n const lFrame: LFrame = {\n currentTNode: null,\n isParent: true,\n lView: null!,\n tView: null!,\n selectedIndex: -1,\n contextLView: null!,\n elementDepthCount: 0,\n currentNamespace: null,\n currentDirectiveIndex: -1,\n bindingRootIndex: -1,\n bindingIndex: -1,\n currentQueryIndex: 0,\n parent: parent!,\n child: null,\n inI18n: false,\n };\n parent !== null && (parent.child = lFrame); // link the new LFrame for reuse.\n return lFrame;\n}\n\n/**\n * A lightweight version of leave which is used with DI.\n *\n * This function only resets `currentTNode` and `LView` as those are the only properties\n * used with DI (`enterDI()`).\n *\n * NOTE: This function is reexported as `leaveDI`. However `leaveDI` has return type of `void` where\n * as `leaveViewLight` has `LFrame`. This is so that `leaveViewLight` can be used in `leaveView`.\n */\nfunction leaveViewLight(): LFrame {\n const oldLFrame = instructionState.lFrame;\n instructionState.lFrame = oldLFrame.parent;\n oldLFrame.currentTNode = null!;\n oldLFrame.lView = null!;\n return oldLFrame;\n}\n\n/**\n * This is a lightweight version of the `leaveView` which is needed by the DI system.\n *\n * NOTE: this function is an alias so that we can change the type of the function to have `void`\n * return type.\n */\nexport const leaveDI: () => void = leaveViewLight;\n\n/**\n * Leave the current `LView`\n *\n * This pops the `LFrame` with the associated `LView` from the stack.\n *\n * IMPORTANT: We must zero out the `LFrame` values here otherwise they will be retained. This is\n * because for performance reasons we don't release `LFrame` but rather keep it for next use.\n */\nexport function leaveView() {\n const oldLFrame = leaveViewLight();\n oldLFrame.isParent = true;\n oldLFrame.tView = null!;\n oldLFrame.selectedIndex = -1;\n oldLFrame.contextLView = null!;\n oldLFrame.elementDepthCount = 0;\n oldLFrame.currentDirectiveIndex = -1;\n oldLFrame.currentNamespace = null;\n oldLFrame.bindingRootIndex = -1;\n oldLFrame.bindingIndex = -1;\n oldLFrame.currentQueryIndex = 0;\n}\n\nexport function nextContextImpl(level: number): T {\n const contextLView = instructionState.lFrame.contextLView =\n walkUpViews(level, instructionState.lFrame.contextLView!);\n return contextLView[CONTEXT] as T;\n}\n\nfunction walkUpViews(nestingLevel: number, currentView: LView): LView {\n while (nestingLevel > 0) {\n ngDevMode &&\n assertDefined(\n currentView[DECLARATION_VIEW],\n 'Declaration view should be defined if nesting level is greater than 0.');\n currentView = currentView[DECLARATION_VIEW]!;\n nestingLevel--;\n }\n return currentView;\n}\n\n/**\n * Gets the currently selected element index.\n *\n * Used with {@link property} instruction (and more in the future) to identify the index in the\n * current `LView` to act on.\n */\nexport function getSelectedIndex() {\n return instructionState.lFrame.selectedIndex;\n}\n\n/**\n * Sets the most recent index passed to {@link select}\n *\n * Used with {@link property} instruction (and more in the future) to identify the index in the\n * current `LView` to act on.\n *\n * (Note that if an \"exit function\" was set earlier (via `setElementExitFn()`) then that will be\n * run if and when the provided `index` value is different from the current selected index value.)\n */\nexport function setSelectedIndex(index: number) {\n ngDevMode && index !== -1 &&\n assertGreaterThanOrEqual(index, HEADER_OFFSET, 'Index must be past HEADER_OFFSET (or -1).');\n ngDevMode &&\n assertLessThan(\n index, instructionState.lFrame.lView.length, 'Can\\'t set index passed end of LView');\n instructionState.lFrame.selectedIndex = index;\n}\n\n/**\n * Gets the `tNode` that represents currently selected element.\n */\nexport function getSelectedTNode() {\n const lFrame = instructionState.lFrame;\n return getTNode(lFrame.tView, lFrame.selectedIndex);\n}\n\n/**\n * Sets the namespace used to create elements to `'http://www.w3.org/2000/svg'` in global state.\n *\n * @codeGenApi\n */\nexport function ɵɵnamespaceSVG() {\n instructionState.lFrame.currentNamespace = SVG_NAMESPACE;\n}\n\n/**\n * Sets the namespace used to create elements to `'http://www.w3.org/1998/MathML/'` in global state.\n *\n * @codeGenApi\n */\nexport function ɵɵnamespaceMathML() {\n instructionState.lFrame.currentNamespace = MATH_ML_NAMESPACE;\n}\n\n/**\n * Sets the namespace used to create elements to `null`, which forces element creation to use\n * `createElement` rather than `createElementNS`.\n *\n * @codeGenApi\n */\nexport function ɵɵnamespaceHTML() {\n namespaceHTMLInternal();\n}\n\n/**\n * Sets the namespace used to create elements to `null`, which forces element creation to use\n * `createElement` rather than `createElementNS`.\n */\nexport function namespaceHTMLInternal() {\n instructionState.lFrame.currentNamespace = null;\n}\n\nexport function getNamespace(): string|null {\n return instructionState.lFrame.currentNamespace;\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\nimport {AfterContentChecked, AfterContentInit, AfterViewChecked, AfterViewInit, DoCheck, OnChanges, OnDestroy, OnInit} from '../interface/lifecycle_hooks';\nimport {assertDefined, assertEqual, assertNotEqual} from '../util/assert';\nimport {assertFirstCreatePass} from './assert';\nimport {NgOnChangesFeatureImpl} from './features/ng_onchanges_feature';\nimport {DirectiveDef} from './interfaces/definition';\nimport {TNode} from './interfaces/node';\nimport {FLAGS, HookData, InitPhaseState, LView, LViewFlags, PREORDER_HOOK_FLAGS, PreOrderHookFlags, TView} from './interfaces/view';\nimport {profiler, ProfilerEvent} from './profiler';\nimport {isInCheckNoChangesMode} from './state';\n\n\n\n/**\n * Adds all directive lifecycle hooks from the given `DirectiveDef` to the given `TView`.\n *\n * Must be run *only* on the first template pass.\n *\n * Sets up the pre-order hooks on the provided `tView`,\n * see {@link HookData} for details about the data structure.\n *\n * @param directiveIndex The index of the directive in LView\n * @param directiveDef The definition containing the hooks to setup in tView\n * @param tView The current TView\n */\nexport function registerPreOrderHooks(\n directiveIndex: number, directiveDef: DirectiveDef, tView: TView): void {\n ngDevMode && assertFirstCreatePass(tView);\n const {ngOnChanges, ngOnInit, ngDoCheck} =\n directiveDef.type.prototype as OnChanges & OnInit & DoCheck;\n\n if (ngOnChanges as Function | undefined) {\n const wrappedOnChanges = NgOnChangesFeatureImpl(directiveDef);\n (tView.preOrderHooks || (tView.preOrderHooks = [])).push(directiveIndex, wrappedOnChanges);\n (tView.preOrderCheckHooks || (tView.preOrderCheckHooks = []))\n .push(directiveIndex, wrappedOnChanges);\n }\n\n if (ngOnInit) {\n (tView.preOrderHooks || (tView.preOrderHooks = [])).push(0 - directiveIndex, ngOnInit);\n }\n\n if (ngDoCheck) {\n (tView.preOrderHooks || (tView.preOrderHooks = [])).push(directiveIndex, ngDoCheck);\n (tView.preOrderCheckHooks || (tView.preOrderCheckHooks = [])).push(directiveIndex, ngDoCheck);\n }\n}\n\n/**\n *\n * Loops through the directives on the provided `tNode` and queues hooks to be\n * run that are not initialization hooks.\n *\n * Should be executed during `elementEnd()` and similar to\n * preserve hook execution order. Content, view, and destroy hooks for projected\n * components and directives must be called *before* their hosts.\n *\n * Sets up the content, view, and destroy hooks on the provided `tView`,\n * see {@link HookData} for details about the data structure.\n *\n * NOTE: This does not set up `onChanges`, `onInit` or `doCheck`, those are set up\n * separately at `elementStart`.\n *\n * @param tView The current TView\n * @param tNode The TNode whose directives are to be searched for hooks to queue\n */\nexport function registerPostOrderHooks(tView: TView, tNode: TNode): void {\n ngDevMode && assertFirstCreatePass(tView);\n // It's necessary to loop through the directives at elementEnd() (rather than processing in\n // directiveCreate) so we can preserve the current hook order. Content, view, and destroy\n // hooks for projected components and directives must be called *before* their hosts.\n for (let i = tNode.directiveStart, end = tNode.directiveEnd; i < end; i++) {\n const directiveDef = tView.data[i] as DirectiveDef;\n ngDevMode && assertDefined(directiveDef, 'Expecting DirectiveDef');\n const lifecycleHooks: AfterContentInit&AfterContentChecked&AfterViewInit&AfterViewChecked&\n OnDestroy = directiveDef.type.prototype;\n const {\n ngAfterContentInit,\n ngAfterContentChecked,\n ngAfterViewInit,\n ngAfterViewChecked,\n ngOnDestroy\n } = lifecycleHooks;\n\n if (ngAfterContentInit) {\n (tView.contentHooks || (tView.contentHooks = [])).push(-i, ngAfterContentInit);\n }\n\n if (ngAfterContentChecked) {\n (tView.contentHooks || (tView.contentHooks = [])).push(i, ngAfterContentChecked);\n (tView.contentCheckHooks || (tView.contentCheckHooks = [])).push(i, ngAfterContentChecked);\n }\n\n if (ngAfterViewInit) {\n (tView.viewHooks || (tView.viewHooks = [])).push(-i, ngAfterViewInit);\n }\n\n if (ngAfterViewChecked) {\n (tView.viewHooks || (tView.viewHooks = [])).push(i, ngAfterViewChecked);\n (tView.viewCheckHooks || (tView.viewCheckHooks = [])).push(i, ngAfterViewChecked);\n }\n\n if (ngOnDestroy != null) {\n (tView.destroyHooks || (tView.destroyHooks = [])).push(i, ngOnDestroy);\n }\n }\n}\n\n/**\n * Executing hooks requires complex logic as we need to deal with 2 constraints.\n *\n * 1. Init hooks (ngOnInit, ngAfterContentInit, ngAfterViewInit) must all be executed once and only\n * once, across many change detection cycles. This must be true even if some hooks throw, or if\n * some recursively trigger a change detection cycle.\n * To solve that, it is required to track the state of the execution of these init hooks.\n * This is done by storing and maintaining flags in the view: the {@link InitPhaseState},\n * and the index within that phase. They can be seen as a cursor in the following structure:\n * [[onInit1, onInit2], [afterContentInit1], [afterViewInit1, afterViewInit2, afterViewInit3]]\n * They are are stored as flags in LView[FLAGS].\n *\n * 2. Pre-order hooks can be executed in batches, because of the select instruction.\n * To be able to pause and resume their execution, we also need some state about the hook's array\n * that is being processed:\n * - the index of the next hook to be executed\n * - the number of init hooks already found in the processed part of the array\n * They are are stored as flags in LView[PREORDER_HOOK_FLAGS].\n */\n\n\n/**\n * Executes pre-order check hooks ( OnChanges, DoChanges) given a view where all the init hooks were\n * executed once. This is a light version of executeInitAndCheckPreOrderHooks where we can skip read\n * / write of the init-hooks related flags.\n * @param lView The LView where hooks are defined\n * @param hooks Hooks to be run\n * @param nodeIndex 3 cases depending on the value:\n * - undefined: all hooks from the array should be executed (post-order case)\n * - null: execute hooks only from the saved index until the end of the array (pre-order case, when\n * flushing the remaining hooks)\n * - number: execute hooks only from the saved index until that node index exclusive (pre-order\n * case, when executing select(number))\n */\nexport function executeCheckHooks(lView: LView, hooks: HookData, nodeIndex?: number|null) {\n callHooks(lView, hooks, InitPhaseState.InitPhaseCompleted, nodeIndex);\n}\n\n/**\n * Executes post-order init and check hooks (one of AfterContentInit, AfterContentChecked,\n * AfterViewInit, AfterViewChecked) given a view where there are pending init hooks to be executed.\n * @param lView The LView where hooks are defined\n * @param hooks Hooks to be run\n * @param initPhase A phase for which hooks should be run\n * @param nodeIndex 3 cases depending on the value:\n * - undefined: all hooks from the array should be executed (post-order case)\n * - null: execute hooks only from the saved index until the end of the array (pre-order case, when\n * flushing the remaining hooks)\n * - number: execute hooks only from the saved index until that node index exclusive (pre-order\n * case, when executing select(number))\n */\nexport function executeInitAndCheckHooks(\n lView: LView, hooks: HookData, initPhase: InitPhaseState, nodeIndex?: number|null) {\n ngDevMode &&\n assertNotEqual(\n initPhase, InitPhaseState.InitPhaseCompleted,\n 'Init pre-order hooks should not be called more than once');\n if ((lView[FLAGS] & LViewFlags.InitPhaseStateMask) === initPhase) {\n callHooks(lView, hooks, initPhase, nodeIndex);\n }\n}\n\nexport function incrementInitPhaseFlags(lView: LView, initPhase: InitPhaseState): void {\n ngDevMode &&\n assertNotEqual(\n initPhase, InitPhaseState.InitPhaseCompleted,\n 'Init hooks phase should not be incremented after all init hooks have been run.');\n let flags = lView[FLAGS];\n if ((flags & LViewFlags.InitPhaseStateMask) === initPhase) {\n flags &= LViewFlags.IndexWithinInitPhaseReset;\n flags += LViewFlags.InitPhaseStateIncrementer;\n lView[FLAGS] = flags;\n }\n}\n\n/**\n * Calls lifecycle hooks with their contexts, skipping init hooks if it's not\n * the first LView pass\n *\n * @param currentView The current view\n * @param arr The array in which the hooks are found\n * @param initPhaseState the current state of the init phase\n * @param currentNodeIndex 3 cases depending on the value:\n * - undefined: all hooks from the array should be executed (post-order case)\n * - null: execute hooks only from the saved index until the end of the array (pre-order case, when\n * flushing the remaining hooks)\n * - number: execute hooks only from the saved index until that node index exclusive (pre-order\n * case, when executing select(number))\n */\nfunction callHooks(\n currentView: LView, arr: HookData, initPhase: InitPhaseState,\n currentNodeIndex: number|null|undefined): void {\n ngDevMode &&\n assertEqual(\n isInCheckNoChangesMode(), false,\n 'Hooks should never be run when in check no changes mode.');\n const startIndex = currentNodeIndex !== undefined ?\n (currentView[PREORDER_HOOK_FLAGS] & PreOrderHookFlags.IndexOfTheNextPreOrderHookMaskMask) :\n 0;\n const nodeIndexLimit = currentNodeIndex != null ? currentNodeIndex : -1;\n const max = arr.length - 1; // Stop the loop at length - 1, because we look for the hook at i + 1\n let lastNodeIndexFound = 0;\n for (let i = startIndex; i < max; i++) {\n const hook = arr[i + 1] as number | (() => void);\n if (typeof hook === 'number') {\n lastNodeIndexFound = arr[i] as number;\n if (currentNodeIndex != null && lastNodeIndexFound >= currentNodeIndex) {\n break;\n }\n } else {\n const isInitHook = arr[i] < 0;\n if (isInitHook)\n currentView[PREORDER_HOOK_FLAGS] += PreOrderHookFlags.NumberOfInitHooksCalledIncrementer;\n if (lastNodeIndexFound < nodeIndexLimit || nodeIndexLimit == -1) {\n callHook(currentView, initPhase, arr, i);\n currentView[PREORDER_HOOK_FLAGS] =\n (currentView[PREORDER_HOOK_FLAGS] & PreOrderHookFlags.NumberOfInitHooksCalledMask) + i +\n 2;\n }\n i++;\n }\n }\n}\n\n/**\n * Execute one hook against the current `LView`.\n *\n * @param currentView The current view\n * @param initPhaseState the current state of the init phase\n * @param arr The array in which the hooks are found\n * @param i The current index within the hook data array\n */\nfunction callHook(currentView: LView, initPhase: InitPhaseState, arr: HookData, i: number) {\n const isInitHook = arr[i] < 0;\n const hook = arr[i + 1] as () => void;\n const directiveIndex = isInitHook ? -arr[i] : arr[i] as number;\n const directive = currentView[directiveIndex];\n if (isInitHook) {\n const indexWithintInitPhase = currentView[FLAGS] >> LViewFlags.IndexWithinInitPhaseShift;\n // The init phase state must be always checked here as it may have been recursively updated.\n if (indexWithintInitPhase <\n (currentView[PREORDER_HOOK_FLAGS] >> PreOrderHookFlags.NumberOfInitHooksCalledShift) &&\n (currentView[FLAGS] & LViewFlags.InitPhaseStateMask) === initPhase) {\n currentView[FLAGS] += LViewFlags.IndexWithinInitPhaseIncrementer;\n profiler(ProfilerEvent.LifecycleHookStart, directive, hook);\n try {\n hook.call(directive);\n } finally {\n profiler(ProfilerEvent.LifecycleHookEnd, directive, hook);\n }\n }\n } else {\n profiler(ProfilerEvent.LifecycleHookStart, directive, hook);\n try {\n hook.call(directive);\n } finally {\n profiler(ProfilerEvent.LifecycleHookEnd, directive, hook);\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\nimport {InjectFlags} from '../../di/interface/injector';\nimport {ProviderToken} from '../../di/provider_token';\nimport {assertDefined, assertEqual} from '../../util/assert';\n\nimport {TDirectiveHostNode} from './node';\nimport {LView, TData} from './view';\n\n/**\n * Offsets of the `NodeInjector` data structure in the expando.\n *\n * `NodeInjector` is stored in both `LView` as well as `TView.data`. All storage requires 9 words.\n * First 8 are reserved for bloom filter and the 9th is reserved for the associated `TNode` as well\n * as parent `NodeInjector` pointer. All indexes are starting with `index` and have an offset as\n * shown.\n *\n * `LView` layout:\n * ```\n * index + 0: cumulative bloom filter\n * index + 1: cumulative bloom filter\n * index + 2: cumulative bloom filter\n * index + 3: cumulative bloom filter\n * index + 4: cumulative bloom filter\n * index + 5: cumulative bloom filter\n * index + 6: cumulative bloom filter\n * index + 7: cumulative bloom filter\n * index + 8: cumulative bloom filter\n * index + PARENT: Index to the parent injector. See `RelativeInjectorLocation`\n * `const parent = lView[index + NodeInjectorOffset.PARENT]`\n * ```\n *\n * `TViewData` layout:\n * ```\n * index + 0: cumulative bloom filter\n * index + 1: cumulative bloom filter\n * index + 2: cumulative bloom filter\n * index + 3: cumulative bloom filter\n * index + 4: cumulative bloom filter\n * index + 5: cumulative bloom filter\n * index + 6: cumulative bloom filter\n * index + 7: cumulative bloom filter\n * index + 8: cumulative bloom filter\n * index + TNODE: TNode associated with this `NodeInjector`\n * `canst tNode = tView.data[index + NodeInjectorOffset.TNODE]`\n * ```\n */\nexport const enum NodeInjectorOffset {\n TNODE = 8,\n PARENT = 8,\n BLOOM_SIZE = 8,\n SIZE = 9,\n}\n\n/**\n * Represents a relative location of parent injector.\n *\n * The interfaces encodes number of parents `LView`s to traverse and index in the `LView`\n * pointing to the parent injector.\n */\nexport interface RelativeInjectorLocation {\n __brand__: 'RelativeInjectorLocationFlags';\n}\n\nexport const enum RelativeInjectorLocationFlags {\n InjectorIndexMask = 0b111111111111111,\n ViewOffsetShift = 16,\n NO_PARENT = -1,\n}\n\nexport const NO_PARENT_INJECTOR: RelativeInjectorLocation = -1 as any;\n\n/**\n * Each injector is saved in 9 contiguous slots in `LView` and 9 contiguous slots in\n * `TView.data`. This allows us to store information about the current node's tokens (which\n * can be shared in `TView`) as well as the tokens of its ancestor nodes (which cannot be\n * shared, so they live in `LView`).\n *\n * Each of these slots (aside from the last slot) contains a bloom filter. This bloom filter\n * determines whether a directive is available on the associated node or not. This prevents us\n * from searching the directives array at this level unless it's probable the directive is in it.\n *\n * See: https://en.wikipedia.org/wiki/Bloom_filter for more about bloom filters.\n *\n * Because all injectors have been flattened into `LView` and `TViewData`, they cannot typed\n * using interfaces as they were previously. The start index of each `LInjector` and `TInjector`\n * will differ based on where it is flattened into the main array, so it's not possible to know\n * the indices ahead of time and save their types here. The interfaces are still included here\n * for documentation purposes.\n *\n * export interface LInjector extends Array {\n *\n * // Cumulative bloom for directive IDs 0-31 (IDs are % BLOOM_SIZE)\n * [0]: number;\n *\n * // Cumulative bloom for directive IDs 32-63\n * [1]: number;\n *\n * // Cumulative bloom for directive IDs 64-95\n * [2]: number;\n *\n * // Cumulative bloom for directive IDs 96-127\n * [3]: number;\n *\n * // Cumulative bloom for directive IDs 128-159\n * [4]: number;\n *\n * // Cumulative bloom for directive IDs 160 - 191\n * [5]: number;\n *\n * // Cumulative bloom for directive IDs 192 - 223\n * [6]: number;\n *\n * // Cumulative bloom for directive IDs 224 - 255\n * [7]: number;\n *\n * // We need to store a reference to the injector's parent so DI can keep looking up\n * // the injector tree until it finds the dependency it's looking for.\n * [PARENT_INJECTOR]: number;\n * }\n *\n * export interface TInjector extends Array {\n *\n * // Shared node bloom for directive IDs 0-31 (IDs are % BLOOM_SIZE)\n * [0]: number;\n *\n * // Shared node bloom for directive IDs 32-63\n * [1]: number;\n *\n * // Shared node bloom for directive IDs 64-95\n * [2]: number;\n *\n * // Shared node bloom for directive IDs 96-127\n * [3]: number;\n *\n * // Shared node bloom for directive IDs 128-159\n * [4]: number;\n *\n * // Shared node bloom for directive IDs 160 - 191\n * [5]: number;\n *\n * // Shared node bloom for directive IDs 192 - 223\n * [6]: number;\n *\n * // Shared node bloom for directive IDs 224 - 255\n * [7]: number;\n *\n * // Necessary to find directive indices for a particular node.\n * [TNODE]: TElementNode|TElementContainerNode|TContainerNode;\n * }\n */\n\n/**\n * Factory for creating instances of injectors in the NodeInjector.\n *\n * This factory is complicated by the fact that it can resolve `multi` factories as well.\n *\n * NOTE: Some of the fields are optional which means that this class has two hidden classes.\n * - One without `multi` support (most common)\n * - One with `multi` values, (rare).\n *\n * Since VMs can cache up to 4 inline hidden classes this is OK.\n *\n * - Single factory: Only `resolving` and `factory` is defined.\n * - `providers` factory: `componentProviders` is a number and `index = -1`.\n * - `viewProviders` factory: `componentProviders` is a number and `index` points to `providers`.\n */\nexport class NodeInjectorFactory {\n /**\n * The inject implementation to be activated when using the factory.\n */\n injectImpl: null|((token: ProviderToken, flags?: InjectFlags) => T);\n\n /**\n * Marker set to true during factory invocation to see if we get into recursive loop.\n * Recursive loop causes an error to be displayed.\n */\n resolving = false;\n\n /**\n * Marks that the token can see other Tokens declared in `viewProviders` on the same node.\n */\n canSeeViewProviders: boolean;\n\n /**\n * An array of factories to use in case of `multi` provider.\n */\n multi?: Array<() => any>;\n\n /**\n * Number of `multi`-providers which belong to the component.\n *\n * This is needed because when multiple components and directives declare the `multi` provider\n * they have to be concatenated in the correct order.\n *\n * Example:\n *\n * If we have a component and directive active an a single element as declared here\n * ```\n * component:\n * provides: [ {provide: String, useValue: 'component', multi: true} ],\n * viewProvides: [ {provide: String, useValue: 'componentView', multi: true} ],\n *\n * directive:\n * provides: [ {provide: String, useValue: 'directive', multi: true} ],\n * ```\n *\n * Then the expected results are:\n *\n * ```\n * providers: ['component', 'directive']\n * viewProviders: ['component', 'componentView', 'directive']\n * ```\n *\n * The way to think about it is that the `viewProviders` have been inserted after the component\n * but before the directives, which is why we need to know how many `multi`s have been declared by\n * the component.\n */\n componentProviders?: number;\n\n /**\n * Current index of the Factory in the `data`. Needed for `viewProviders` and `providers` merging.\n * See `providerFactory`.\n */\n index?: number;\n\n /**\n * Because the same `multi` provider can be declared in `provides` and `viewProvides` it is\n * possible for `viewProvides` to shadow the `provides`. For this reason we store the\n * `provideFactory` of the `providers` so that `providers` can be extended with `viewProviders`.\n *\n * Example:\n *\n * Given:\n * ```\n * provides: [ {provide: String, useValue: 'all', multi: true} ],\n * viewProvides: [ {provide: String, useValue: 'viewOnly', multi: true} ],\n * ```\n *\n * We have to return `['all']` in case of content injection, but `['all', 'viewOnly']` in case\n * of view injection. We further have to make sure that the shared instances (in our case\n * `all`) are the exact same instance in both the content as well as the view injection. (We\n * have to make sure that we don't double instantiate.) For this reason the `viewProvides`\n * `Factory` has a pointer to the shadowed `provides` factory so that it can instantiate the\n * `providers` (`['all']`) and then extend it with `viewProviders` (`['all'] + ['viewOnly'] =\n * ['all', 'viewOnly']`).\n */\n providerFactory?: NodeInjectorFactory|null;\n\n\n constructor(\n /**\n * Factory to invoke in order to create a new instance.\n */\n public factory:\n (this: NodeInjectorFactory, _: undefined,\n /**\n * array where injectables tokens are stored. This is used in\n * case of an error reporting to produce friendlier errors.\n */\n tData: TData,\n /**\n * array where existing instances of injectables are stored. This is used in case\n * of multi shadow is needed. See `multi` field documentation.\n */\n lView: LView,\n /**\n * The TNode of the same element injector.\n */\n tNode: TDirectiveHostNode) => any,\n /**\n * Set to `true` if the token is declared in `viewProviders` (or if it is component).\n */\n isViewProvider: boolean,\n injectImplementation: null|((token: ProviderToken, flags?: InjectFlags) => T)) {\n ngDevMode && assertDefined(factory, 'Factory not specified');\n ngDevMode && assertEqual(typeof factory, 'function', 'Expected factory function.');\n this.canSeeViewProviders = isViewProvider;\n this.injectImpl = injectImplementation;\n }\n}\n\nexport function isFactory(obj: any): obj is NodeInjectorFactory {\n return obj instanceof NodeInjectorFactory;\n}\n\n// Note: This hack is necessary so we don't erroneously get a circular dependency\n// failure based on types.\nexport const unusedValueExportToPlacateAjd = 1;\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 */\nimport {CharCode} from '../../util/char_code';\nimport {AttributeMarker, TAttributes} from '../interfaces/node';\nimport {CssSelector} from '../interfaces/projection';\nimport {isProceduralRenderer, ProceduralRenderer3, Renderer3} from '../interfaces/renderer';\nimport {RElement} from '../interfaces/renderer_dom';\n\n\n\n/**\n * Assigns all attribute values to the provided element via the inferred renderer.\n *\n * This function accepts two forms of attribute entries:\n *\n * default: (key, value):\n * attrs = [key1, value1, key2, value2]\n *\n * namespaced: (NAMESPACE_MARKER, uri, name, value)\n * attrs = [NAMESPACE_MARKER, uri, name, value, NAMESPACE_MARKER, uri, name, value]\n *\n * The `attrs` array can contain a mix of both the default and namespaced entries.\n * The \"default\" values are set without a marker, but if the function comes across\n * a marker value then it will attempt to set a namespaced value. If the marker is\n * not of a namespaced value then the function will quit and return the index value\n * where it stopped during the iteration of the attrs array.\n *\n * See [AttributeMarker] to understand what the namespace marker value is.\n *\n * Note that this instruction does not support assigning style and class values to\n * an element. See `elementStart` and `elementHostAttrs` to learn how styling values\n * are applied to an element.\n * @param renderer The renderer to be used\n * @param native The element that the attributes will be assigned to\n * @param attrs The attribute array of values that will be assigned to the element\n * @returns the index value that was last accessed in the attributes array\n */\nexport function setUpAttributes(renderer: Renderer3, native: RElement, attrs: TAttributes): number {\n const isProc = isProceduralRenderer(renderer);\n\n let i = 0;\n while (i < attrs.length) {\n const value = attrs[i];\n if (typeof value === 'number') {\n // only namespaces are supported. Other value types (such as style/class\n // entries) are not supported in this function.\n if (value !== AttributeMarker.NamespaceURI) {\n break;\n }\n\n // we just landed on the marker value ... therefore\n // we should skip to the next entry\n i++;\n\n const namespaceURI = attrs[i++] as string;\n const attrName = attrs[i++] as string;\n const attrVal = attrs[i++] as string;\n ngDevMode && ngDevMode.rendererSetAttribute++;\n isProc ?\n (renderer as ProceduralRenderer3).setAttribute(native, attrName, attrVal, namespaceURI) :\n native.setAttributeNS(namespaceURI, attrName, attrVal);\n } else {\n // attrName is string;\n const attrName = value as string;\n const attrVal = attrs[++i];\n // Standard attributes\n ngDevMode && ngDevMode.rendererSetAttribute++;\n if (isAnimationProp(attrName)) {\n if (isProc) {\n (renderer as ProceduralRenderer3).setProperty(native, attrName, attrVal);\n }\n } else {\n isProc ?\n (renderer as ProceduralRenderer3).setAttribute(native, attrName, attrVal as string) :\n native.setAttribute(attrName, attrVal as string);\n }\n i++;\n }\n }\n\n // another piece of code may iterate over the same attributes array. Therefore\n // it may be helpful to return the exact spot where the attributes array exited\n // whether by running into an unsupported marker or if all the static values were\n // iterated over.\n return i;\n}\n\n/**\n * Test whether the given value is a marker that indicates that the following\n * attribute values in a `TAttributes` array are only the names of attributes,\n * and not name-value pairs.\n * @param marker The attribute marker to test.\n * @returns true if the marker is a \"name-only\" marker (e.g. `Bindings`, `Template` or `I18n`).\n */\nexport function isNameOnlyAttributeMarker(marker: string|AttributeMarker|CssSelector) {\n return marker === AttributeMarker.Bindings || marker === AttributeMarker.Template ||\n marker === AttributeMarker.I18n;\n}\n\nexport function isAnimationProp(name: string): boolean {\n // Perf note: accessing charCodeAt to check for the first character of a string is faster as\n // compared to accessing a character at index 0 (ex. name[0]). The main reason for this is that\n // charCodeAt doesn't allocate memory to return a substring.\n return name.charCodeAt(0) === CharCode.AT_SIGN;\n}\n\n/**\n * Merges `src` `TAttributes` into `dst` `TAttributes` removing any duplicates in the process.\n *\n * This merge function keeps the order of attrs same.\n *\n * @param dst Location of where the merged `TAttributes` should end up.\n * @param src `TAttributes` which should be appended to `dst`\n */\nexport function mergeHostAttrs(dst: TAttributes|null, src: TAttributes|null): TAttributes|null {\n if (src === null || src.length === 0) {\n // do nothing\n } else if (dst === null || dst.length === 0) {\n // We have source, but dst is empty, just make a copy.\n dst = src.slice();\n } else {\n let srcMarker: AttributeMarker = AttributeMarker.ImplicitAttributes;\n for (let i = 0; i < src.length; i++) {\n const item = src[i];\n if (typeof item === 'number') {\n srcMarker = item;\n } else {\n if (srcMarker === AttributeMarker.NamespaceURI) {\n // Case where we need to consume `key1`, `key2`, `value` items.\n } else if (\n srcMarker === AttributeMarker.ImplicitAttributes ||\n srcMarker === AttributeMarker.Styles) {\n // Case where we have to consume `key1` and `value` only.\n mergeHostAttribute(dst, srcMarker, item as string, null, src[++i] as string);\n } else {\n // Case where we have to consume `key1` only.\n mergeHostAttribute(dst, srcMarker, item as string, null, null);\n }\n }\n }\n }\n return dst;\n}\n\n/**\n * Append `key`/`value` to existing `TAttributes` taking region marker and duplicates into account.\n *\n * @param dst `TAttributes` to append to.\n * @param marker Region where the `key`/`value` should be added.\n * @param key1 Key to add to `TAttributes`\n * @param key2 Key to add to `TAttributes` (in case of `AttributeMarker.NamespaceURI`)\n * @param value Value to add or to overwrite to `TAttributes` Only used if `marker` is not Class.\n */\nexport function mergeHostAttribute(\n dst: TAttributes, marker: AttributeMarker, key1: string, key2: string|null,\n value: string|null): void {\n let i = 0;\n // Assume that new markers will be inserted at the end.\n let markerInsertPosition = dst.length;\n // scan until correct type.\n if (marker === AttributeMarker.ImplicitAttributes) {\n markerInsertPosition = -1;\n } else {\n while (i < dst.length) {\n const dstValue = dst[i++];\n if (typeof dstValue === 'number') {\n if (dstValue === marker) {\n markerInsertPosition = -1;\n break;\n } else if (dstValue > marker) {\n // We need to save this as we want the markers to be inserted in specific order.\n markerInsertPosition = i - 1;\n break;\n }\n }\n }\n }\n\n // search until you find place of insertion\n while (i < dst.length) {\n const item = dst[i];\n if (typeof item === 'number') {\n // since `i` started as the index after the marker, we did not find it if we are at the next\n // marker\n break;\n } else if (item === key1) {\n // We already have same token\n if (key2 === null) {\n if (value !== null) {\n dst[i + 1] = value;\n }\n return;\n } else if (key2 === dst[i + 1]) {\n dst[i + 2] = value!;\n return;\n }\n }\n // Increment counter.\n i++;\n if (key2 !== null) i++;\n if (value !== null) i++;\n }\n\n // insert at location.\n if (markerInsertPosition !== -1) {\n dst.splice(markerInsertPosition, 0, marker);\n i = markerInsertPosition + 1;\n }\n dst.splice(i++, 0, key1);\n if (key2 !== null) {\n dst.splice(i++, 0, key2);\n }\n if (value !== null) {\n dst.splice(i++, 0, 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\nimport {assertGreaterThan, assertNotEqual, assertNumber} from '../../util/assert';\nimport {NO_PARENT_INJECTOR, RelativeInjectorLocation, RelativeInjectorLocationFlags} from '../interfaces/injector';\nimport {DECLARATION_VIEW, HEADER_OFFSET, LView} from '../interfaces/view';\n\n\n/// Parent Injector Utils ///////////////////////////////////////////////////////////////\nexport function hasParentInjector(parentLocation: RelativeInjectorLocation): boolean {\n return parentLocation !== NO_PARENT_INJECTOR;\n}\n\nexport function getParentInjectorIndex(parentLocation: RelativeInjectorLocation): number {\n ngDevMode && assertNumber(parentLocation, 'Number expected');\n ngDevMode && assertNotEqual(parentLocation as any, -1, 'Not a valid state.');\n const parentInjectorIndex =\n (parentLocation as any as number) & RelativeInjectorLocationFlags.InjectorIndexMask;\n ngDevMode &&\n assertGreaterThan(\n parentInjectorIndex, HEADER_OFFSET,\n 'Parent injector must be pointing past HEADER_OFFSET.');\n return (parentLocation as any as number) & RelativeInjectorLocationFlags.InjectorIndexMask;\n}\n\nexport function getParentInjectorViewOffset(parentLocation: RelativeInjectorLocation): number {\n return (parentLocation as any as number) >> RelativeInjectorLocationFlags.ViewOffsetShift;\n}\n\n/**\n * Unwraps a parent injector location number to find the view offset from the current injector,\n * then walks up the declaration view tree until the view is found that contains the parent\n * injector.\n *\n * @param location The location of the parent injector, which contains the view offset\n * @param startView The LView instance from which to start walking up the view tree\n * @returns The LView instance that contains the parent injector\n */\nexport function getParentInjectorView(location: RelativeInjectorLocation, startView: LView): LView {\n let viewOffset = getParentInjectorViewOffset(location);\n let parentView = startView;\n // For most cases, the parent injector can be found on the host node (e.g. for component\n // or container), but we must keep the loop here to support the rarer case of deeply nested\n // tags or inline views, where the parent injector might live many views\n // above the child injector.\n while (viewOffset > 0) {\n parentView = parentView[DECLARATION_VIEW]!;\n viewOffset--;\n }\n return parentView;\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\nimport {isForwardRef, resolveForwardRef} from '../di/forward_ref';\nimport {injectRootLimpMode, setInjectImplementation} from '../di/inject_switch';\nimport {Injector} from '../di/injector';\nimport {InjectorMarkers} from '../di/injector_marker';\nimport {InjectFlags} from '../di/interface/injector';\nimport {ProviderToken} from '../di/provider_token';\nimport {Type} from '../interface/type';\nimport {assertDefined, assertEqual, assertIndexInRange} from '../util/assert';\nimport {noSideEffects} from '../util/closure';\n\nimport {assertDirectiveDef, assertNodeInjector, assertTNodeForLView} from './assert';\nimport {FactoryFn, getFactoryDef} from './definition_factory';\nimport {throwCyclicDependencyError, throwProviderNotFoundError} from './errors_di';\nimport {NG_ELEMENT_ID, NG_FACTORY_DEF} from './fields';\nimport {registerPreOrderHooks} from './hooks';\nimport {DirectiveDef} from './interfaces/definition';\nimport {isFactory, NO_PARENT_INJECTOR, NodeInjectorFactory, NodeInjectorOffset, RelativeInjectorLocation, RelativeInjectorLocationFlags} from './interfaces/injector';\nimport {AttributeMarker, TContainerNode, TDirectiveHostNode, TElementContainerNode, TElementNode, TNode, TNodeProviderIndexes, TNodeType} from './interfaces/node';\nimport {isComponentDef, isComponentHost} from './interfaces/type_checks';\nimport {DECLARATION_COMPONENT_VIEW, DECLARATION_VIEW, INJECTOR, LView, T_HOST, TData, TVIEW, TView, TViewType} from './interfaces/view';\nimport {assertTNodeType} from './node_assert';\nimport {enterDI, getCurrentTNode, getLView, leaveDI} from './state';\nimport {isNameOnlyAttributeMarker} from './util/attrs_utils';\nimport {getParentInjectorIndex, getParentInjectorView, hasParentInjector} from './util/injector_utils';\nimport {stringifyForError} from './util/stringify_utils';\n\n\n\n/**\n * Defines if the call to `inject` should include `viewProviders` in its resolution.\n *\n * This is set to true when we try to instantiate a component. This value is reset in\n * `getNodeInjectable` to a value which matches the declaration location of the token about to be\n * instantiated. This is done so that if we are injecting a token which was declared outside of\n * `viewProviders` we don't accidentally pull `viewProviders` in.\n *\n * Example:\n *\n * ```\n * @Injectable()\n * class MyService {\n * constructor(public value: String) {}\n * }\n *\n * @Component({\n * providers: [\n * MyService,\n * {provide: String, value: 'providers' }\n * ]\n * viewProviders: [\n * {provide: String, value: 'viewProviders'}\n * ]\n * })\n * class MyComponent {\n * constructor(myService: MyService, value: String) {\n * // We expect that Component can see into `viewProviders`.\n * expect(value).toEqual('viewProviders');\n * // `MyService` was not declared in `viewProviders` hence it can't see it.\n * expect(myService.value).toEqual('providers');\n * }\n * }\n *\n * ```\n */\nlet includeViewProviders = true;\n\nexport function setIncludeViewProviders(v: boolean): boolean {\n const oldValue = includeViewProviders;\n includeViewProviders = v;\n return oldValue;\n}\n\n/**\n * The number of slots in each bloom filter (used by DI). The larger this number, the fewer\n * directives that will share slots, and thus, the fewer false positives when checking for\n * the existence of a directive.\n */\nconst BLOOM_SIZE = 256;\nconst BLOOM_MASK = BLOOM_SIZE - 1;\n\n/**\n * The number of bits that is represented by a single bloom bucket. JS bit operations are 32 bits,\n * so each bucket represents 32 distinct tokens which accounts for log2(32) = 5 bits of a bloom hash\n * number.\n */\nconst BLOOM_BUCKET_BITS = 5;\n\n/** Counter used to generate unique IDs for directives. */\nlet nextNgElementId = 0;\n\n/**\n * Registers this directive as present in its node's injector by flipping the directive's\n * corresponding bit in the injector's bloom filter.\n *\n * @param injectorIndex The index of the node injector where this token should be registered\n * @param tView The TView for the injector's bloom filters\n * @param type The directive token to register\n */\nexport function bloomAdd(\n injectorIndex: number, tView: TView, type: ProviderToken|string): void {\n ngDevMode && assertEqual(tView.firstCreatePass, true, 'expected firstCreatePass to be true');\n let id: number|undefined;\n if (typeof type === 'string') {\n id = type.charCodeAt(0) || 0;\n } else if (type.hasOwnProperty(NG_ELEMENT_ID)) {\n id = (type as any)[NG_ELEMENT_ID];\n }\n\n // Set a unique ID on the directive type, so if something tries to inject the directive,\n // we can easily retrieve the ID and hash it into the bloom bit that should be checked.\n if (id == null) {\n id = (type as any)[NG_ELEMENT_ID] = nextNgElementId++;\n }\n\n // We only have BLOOM_SIZE (256) slots in our bloom filter (8 buckets * 32 bits each),\n // so all unique IDs must be modulo-ed into a number from 0 - 255 to fit into the filter.\n const bloomHash = id & BLOOM_MASK;\n\n // Create a mask that targets the specific bit associated with the directive.\n // JS bit operations are 32 bits, so this will be a number between 2^0 and 2^31, corresponding\n // to bit positions 0 - 31 in a 32 bit integer.\n const mask = 1 << bloomHash;\n\n // Each bloom bucket in `tData` represents `BLOOM_BUCKET_BITS` number of bits of `bloomHash`.\n // Any bits in `bloomHash` beyond `BLOOM_BUCKET_BITS` indicate the bucket offset that the mask\n // should be written to.\n (tView.data as number[])[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)] |= mask;\n}\n\n/**\n * Creates (or gets an existing) injector for a given element or container.\n *\n * @param tNode for which an injector should be retrieved / created.\n * @param lView View where the node is stored\n * @returns Node injector\n */\nexport function getOrCreateNodeInjectorForNode(\n tNode: TElementNode|TContainerNode|TElementContainerNode, lView: LView): number {\n const existingInjectorIndex = getInjectorIndex(tNode, lView);\n if (existingInjectorIndex !== -1) {\n return existingInjectorIndex;\n }\n\n const tView = lView[TVIEW];\n if (tView.firstCreatePass) {\n tNode.injectorIndex = lView.length;\n insertBloom(tView.data, tNode); // foundation for node bloom\n insertBloom(lView, null); // foundation for cumulative bloom\n insertBloom(tView.blueprint, null);\n }\n\n const parentLoc = getParentInjectorLocation(tNode, lView);\n const injectorIndex = tNode.injectorIndex;\n\n // If a parent injector can't be found, its location is set to -1.\n // In that case, we don't need to set up a cumulative bloom\n if (hasParentInjector(parentLoc)) {\n const parentIndex = getParentInjectorIndex(parentLoc);\n const parentLView = getParentInjectorView(parentLoc, lView);\n const parentData = parentLView[TVIEW].data as any;\n // Creates a cumulative bloom filter that merges the parent's bloom filter\n // and its own cumulative bloom (which contains tokens for all ancestors)\n for (let i = 0; i < NodeInjectorOffset.BLOOM_SIZE; i++) {\n lView[injectorIndex + i] = parentLView[parentIndex + i] | parentData[parentIndex + i];\n }\n }\n\n lView[injectorIndex + NodeInjectorOffset.PARENT] = parentLoc;\n return injectorIndex;\n}\n\nfunction insertBloom(arr: any[], footer: TNode|null): void {\n arr.push(0, 0, 0, 0, 0, 0, 0, 0, footer);\n}\n\n\nexport function getInjectorIndex(tNode: TNode, lView: LView): number {\n if (tNode.injectorIndex === -1 ||\n // If the injector index is the same as its parent's injector index, then the index has been\n // copied down from the parent node. No injector has been created yet on this node.\n (tNode.parent && tNode.parent.injectorIndex === tNode.injectorIndex) ||\n // After the first template pass, the injector index might exist but the parent values\n // might not have been calculated yet for this instance\n lView[tNode.injectorIndex + NodeInjectorOffset.PARENT] === null) {\n return -1;\n } else {\n ngDevMode && assertIndexInRange(lView, tNode.injectorIndex);\n return tNode.injectorIndex;\n }\n}\n\n/**\n * Finds the index of the parent injector, with a view offset if applicable. Used to set the\n * parent injector initially.\n *\n * @returns Returns a number that is the combination of the number of LViews that we have to go up\n * to find the LView containing the parent inject AND the index of the injector within that LView.\n */\nexport function getParentInjectorLocation(tNode: TNode, lView: LView): RelativeInjectorLocation {\n if (tNode.parent && tNode.parent.injectorIndex !== -1) {\n // If we have a parent `TNode` and there is an injector associated with it we are done, because\n // the parent injector is within the current `LView`.\n return tNode.parent.injectorIndex as any; // ViewOffset is 0\n }\n\n // When parent injector location is computed it may be outside of the current view. (ie it could\n // be pointing to a declared parent location). This variable stores number of declaration parents\n // we need to walk up in order to find the parent injector location.\n let declarationViewOffset = 0;\n let parentTNode: TNode|null = null;\n let lViewCursor: LView|null = lView;\n\n // The parent injector is not in the current `LView`. We will have to walk the declared parent\n // `LView` hierarchy and look for it. If we walk of the top, that means that there is no parent\n // `NodeInjector`.\n while (lViewCursor !== null) {\n // First determine the `parentTNode` location. The parent pointer differs based on `TView.type`.\n const tView = lViewCursor[TVIEW];\n const tViewType = tView.type;\n if (tViewType === TViewType.Embedded) {\n ngDevMode &&\n assertDefined(tView.declTNode, 'Embedded TNodes should have declaration parents.');\n parentTNode = tView.declTNode;\n } else if (tViewType === TViewType.Component) {\n // Components don't have `TView.declTNode` because each instance of component could be\n // inserted in different location, hence `TView.declTNode` is meaningless.\n parentTNode = lViewCursor[T_HOST];\n } else {\n ngDevMode && assertEqual(tView.type, TViewType.Root, 'Root type expected');\n parentTNode = null;\n }\n if (parentTNode === null) {\n // If we have no parent, than we are done.\n return NO_PARENT_INJECTOR;\n }\n\n ngDevMode && parentTNode && assertTNodeForLView(parentTNode!, lViewCursor[DECLARATION_VIEW]!);\n // Every iteration of the loop requires that we go to the declared parent.\n declarationViewOffset++;\n lViewCursor = lViewCursor[DECLARATION_VIEW];\n\n if (parentTNode.injectorIndex !== -1) {\n // We found a NodeInjector which points to something.\n return (parentTNode.injectorIndex |\n (declarationViewOffset << RelativeInjectorLocationFlags.ViewOffsetShift)) as any;\n }\n }\n return NO_PARENT_INJECTOR;\n}\n/**\n * Makes a type or an injection token public to the DI system by adding it to an\n * injector's bloom filter.\n *\n * @param di The node injector in which a directive will be added\n * @param token The type or the injection token to be made public\n */\nexport function diPublicInInjector(\n injectorIndex: number, tView: TView, token: ProviderToken): void {\n bloomAdd(injectorIndex, tView, token);\n}\n\n/**\n * Inject static attribute value into directive constructor.\n *\n * This method is used with `factory` functions which are generated as part of\n * `defineDirective` or `defineComponent`. The method retrieves the static value\n * of an attribute. (Dynamic attributes are not supported since they are not resolved\n * at the time of injection and can change over time.)\n *\n * # Example\n * Given:\n * ```\n * @Component(...)\n * class MyComponent {\n * constructor(@Attribute('title') title: string) { ... }\n * }\n * ```\n * When instantiated with\n * ```\n * \n * ```\n *\n * Then factory method generated is:\n * ```\n * MyComponent.ɵcmp = defineComponent({\n * factory: () => new MyComponent(injectAttribute('title'))\n * ...\n * })\n * ```\n *\n * @publicApi\n */\nexport function injectAttributeImpl(tNode: TNode, attrNameToInject: string): string|null {\n ngDevMode && assertTNodeType(tNode, TNodeType.AnyContainer | TNodeType.AnyRNode);\n ngDevMode && assertDefined(tNode, 'expecting tNode');\n if (attrNameToInject === 'class') {\n return tNode.classes;\n }\n if (attrNameToInject === 'style') {\n return tNode.styles;\n }\n\n const attrs = tNode.attrs;\n if (attrs) {\n const attrsLength = attrs.length;\n let i = 0;\n while (i < attrsLength) {\n const value = attrs[i];\n\n // If we hit a `Bindings` or `Template` marker then we are done.\n if (isNameOnlyAttributeMarker(value)) break;\n\n // Skip namespaced attributes\n if (value === AttributeMarker.NamespaceURI) {\n // we skip the next two values\n // as namespaced attributes looks like\n // [..., AttributeMarker.NamespaceURI, 'http://someuri.com/test', 'test:exist',\n // 'existValue', ...]\n i = i + 2;\n } else if (typeof value === 'number') {\n // Skip to the first value of the marked attribute.\n i++;\n while (i < attrsLength && typeof attrs[i] === 'string') {\n i++;\n }\n } else if (value === attrNameToInject) {\n return attrs[i + 1] as string;\n } else {\n i = i + 2;\n }\n }\n }\n return null;\n}\n\n\nfunction notFoundValueOrThrow(\n notFoundValue: T|null, token: ProviderToken, flags: InjectFlags): T|null {\n if (flags & InjectFlags.Optional) {\n return notFoundValue;\n } else {\n throwProviderNotFoundError(token, 'NodeInjector');\n }\n}\n\n/**\n * Returns the value associated to the given token from the ModuleInjector or throws exception\n *\n * @param lView The `LView` that contains the `tNode`\n * @param token The token to look for\n * @param flags Injection flags\n * @param notFoundValue The value to return when the injection flags is `InjectFlags.Optional`\n * @returns the value from the injector or throws an exception\n */\nfunction lookupTokenUsingModuleInjector(\n lView: LView, token: ProviderToken, flags: InjectFlags, notFoundValue?: any): T|null {\n if (flags & InjectFlags.Optional && notFoundValue === undefined) {\n // This must be set or the NullInjector will throw for optional deps\n notFoundValue = null;\n }\n\n if ((flags & (InjectFlags.Self | InjectFlags.Host)) === 0) {\n const moduleInjector = lView[INJECTOR];\n // switch to `injectInjectorOnly` implementation for module injector, since module injector\n // should not have access to Component/Directive DI scope (that may happen through\n // `directiveInject` implementation)\n const previousInjectImplementation = setInjectImplementation(undefined);\n try {\n if (moduleInjector) {\n return moduleInjector.get(token, notFoundValue, flags & InjectFlags.Optional);\n } else {\n return injectRootLimpMode(token, notFoundValue, flags & InjectFlags.Optional);\n }\n } finally {\n setInjectImplementation(previousInjectImplementation);\n }\n }\n return notFoundValueOrThrow(notFoundValue, token, flags);\n}\n\n/**\n * Returns the value associated to the given token from the NodeInjectors => ModuleInjector.\n *\n * Look for the injector providing the token by walking up the node injector tree and then\n * the module injector tree.\n *\n * This function patches `token` with `__NG_ELEMENT_ID__` which contains the id for the bloom\n * filter. `-1` is reserved for injecting `Injector` (implemented by `NodeInjector`)\n *\n * @param tNode The Node where the search for the injector should start\n * @param lView The `LView` that contains the `tNode`\n * @param token The token to look for\n * @param flags Injection flags\n * @param notFoundValue The value to return when the injection flags is `InjectFlags.Optional`\n * @returns the value from the injector, `null` when not found, or `notFoundValue` if provided\n */\nexport function getOrCreateInjectable(\n tNode: TDirectiveHostNode|null, lView: LView, token: ProviderToken,\n flags: InjectFlags = InjectFlags.Default, notFoundValue?: any): T|null {\n if (tNode !== null) {\n const bloomHash = bloomHashBitOrFactory(token);\n // If the ID stored here is a function, this is a special object like ElementRef or TemplateRef\n // so just call the factory function to create it.\n if (typeof bloomHash === 'function') {\n if (!enterDI(lView, tNode, flags)) {\n // Failed to enter DI, try module injector instead. If a token is injected with the @Host\n // flag, the module injector is not searched for that token in Ivy.\n return (flags & InjectFlags.Host) ?\n notFoundValueOrThrow(notFoundValue, token, flags) :\n lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);\n }\n try {\n const value = bloomHash(flags);\n if (value == null && !(flags & InjectFlags.Optional)) {\n throwProviderNotFoundError(token);\n } else {\n return value;\n }\n } finally {\n leaveDI();\n }\n } else if (typeof bloomHash === 'number') {\n // A reference to the previous injector TView that was found while climbing the element\n // injector tree. This is used to know if viewProviders can be accessed on the current\n // injector.\n let previousTView: TView|null = null;\n let injectorIndex = getInjectorIndex(tNode, lView);\n let parentLocation: RelativeInjectorLocation = NO_PARENT_INJECTOR;\n let hostTElementNode: TNode|null =\n flags & InjectFlags.Host ? lView[DECLARATION_COMPONENT_VIEW][T_HOST] : null;\n\n // If we should skip this injector, or if there is no injector on this node, start by\n // searching the parent injector.\n if (injectorIndex === -1 || flags & InjectFlags.SkipSelf) {\n parentLocation = injectorIndex === -1 ? getParentInjectorLocation(tNode, lView) :\n lView[injectorIndex + NodeInjectorOffset.PARENT];\n\n if (parentLocation === NO_PARENT_INJECTOR || !shouldSearchParent(flags, false)) {\n injectorIndex = -1;\n } else {\n previousTView = lView[TVIEW];\n injectorIndex = getParentInjectorIndex(parentLocation);\n lView = getParentInjectorView(parentLocation, lView);\n }\n }\n\n // Traverse up the injector tree until we find a potential match or until we know there\n // *isn't* a match.\n while (injectorIndex !== -1) {\n ngDevMode && assertNodeInjector(lView, injectorIndex);\n\n // Check the current injector. If it matches, see if it contains token.\n const tView = lView[TVIEW];\n ngDevMode &&\n assertTNodeForLView(\n tView.data[injectorIndex + NodeInjectorOffset.TNODE] as TNode, lView);\n if (bloomHasToken(bloomHash, injectorIndex, tView.data)) {\n // At this point, we have an injector which *may* contain the token, so we step through\n // the providers and directives associated with the injector's corresponding node to get\n // the instance.\n const instance: T|null = searchTokensOnInjector(\n injectorIndex, lView, token, previousTView, flags, hostTElementNode);\n if (instance !== NOT_FOUND) {\n return instance;\n }\n }\n parentLocation = lView[injectorIndex + NodeInjectorOffset.PARENT];\n if (parentLocation !== NO_PARENT_INJECTOR &&\n shouldSearchParent(\n flags,\n lView[TVIEW].data[injectorIndex + NodeInjectorOffset.TNODE] === hostTElementNode) &&\n bloomHasToken(bloomHash, injectorIndex, lView)) {\n // The def wasn't found anywhere on this node, so it was a false positive.\n // Traverse up the tree and continue searching.\n previousTView = tView;\n injectorIndex = getParentInjectorIndex(parentLocation);\n lView = getParentInjectorView(parentLocation, lView);\n } else {\n // If we should not search parent OR If the ancestor bloom filter value does not have the\n // bit corresponding to the directive we can give up on traversing up to find the specific\n // injector.\n injectorIndex = -1;\n }\n }\n }\n }\n\n return lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue);\n}\n\nconst NOT_FOUND = {};\n\nexport function createNodeInjector(): Injector {\n return new NodeInjector(getCurrentTNode()! as TDirectiveHostNode, getLView()) as any;\n}\n\nfunction searchTokensOnInjector(\n injectorIndex: number, lView: LView, token: ProviderToken, previousTView: TView|null,\n flags: InjectFlags, hostTElementNode: TNode|null) {\n const currentTView = lView[TVIEW];\n const tNode = currentTView.data[injectorIndex + NodeInjectorOffset.TNODE] as TNode;\n // First, we need to determine if view providers can be accessed by the starting element.\n // There are two possibilities\n const canAccessViewProviders = previousTView == null ?\n // 1) This is the first invocation `previousTView == null` which means that we are at the\n // `TNode` of where injector is starting to look. In such a case the only time we are allowed\n // to look into the ViewProviders is if:\n // - we are on a component\n // - AND the injector set `includeViewProviders` to true (implying that the token can see\n // ViewProviders because it is the Component or a Service which itself was declared in\n // ViewProviders)\n (isComponentHost(tNode) && includeViewProviders) :\n // 2) `previousTView != null` which means that we are now walking across the parent nodes.\n // In such a case we are only allowed to look into the ViewProviders if:\n // - We just crossed from child View to Parent View `previousTView != currentTView`\n // - AND the parent TNode is an Element.\n // This means that we just came from the Component's View and therefore are allowed to see\n // into the ViewProviders.\n (previousTView != currentTView && ((tNode.type & TNodeType.AnyRNode) !== 0));\n\n // This special case happens when there is a @host on the inject and when we are searching\n // on the host element node.\n const isHostSpecialCase = (flags & InjectFlags.Host) && hostTElementNode === tNode;\n\n const injectableIdx = locateDirectiveOrProvider(\n tNode, currentTView, token, canAccessViewProviders, isHostSpecialCase);\n if (injectableIdx !== null) {\n return getNodeInjectable(lView, currentTView, injectableIdx, tNode as TElementNode);\n } else {\n return NOT_FOUND;\n }\n}\n\n/**\n * Searches for the given token among the node's directives and providers.\n *\n * @param tNode TNode on which directives are present.\n * @param tView The tView we are currently processing\n * @param token Provider token or type of a directive to look for.\n * @param canAccessViewProviders Whether view providers should be considered.\n * @param isHostSpecialCase Whether the host special case applies.\n * @returns Index of a found directive or provider, or null when none found.\n */\nexport function locateDirectiveOrProvider(\n tNode: TNode, tView: TView, token: ProviderToken|string, canAccessViewProviders: boolean,\n isHostSpecialCase: boolean|number): number|null {\n const nodeProviderIndexes = tNode.providerIndexes;\n const tInjectables = tView.data;\n\n const injectablesStart = nodeProviderIndexes & TNodeProviderIndexes.ProvidersStartIndexMask;\n const directivesStart = tNode.directiveStart;\n const directiveEnd = tNode.directiveEnd;\n const cptViewProvidersCount =\n nodeProviderIndexes >> TNodeProviderIndexes.CptViewProvidersCountShift;\n const startingIndex =\n canAccessViewProviders ? injectablesStart : injectablesStart + cptViewProvidersCount;\n // When the host special case applies, only the viewProviders and the component are visible\n const endIndex = isHostSpecialCase ? injectablesStart + cptViewProvidersCount : directiveEnd;\n for (let i = startingIndex; i < endIndex; i++) {\n const providerTokenOrDef = tInjectables[i] as ProviderToken| DirectiveDef| string;\n if (i < directivesStart && token === providerTokenOrDef ||\n i >= directivesStart && (providerTokenOrDef as DirectiveDef).type === token) {\n return i;\n }\n }\n if (isHostSpecialCase) {\n const dirDef = tInjectables[directivesStart] as DirectiveDef;\n if (dirDef && isComponentDef(dirDef) && dirDef.type === token) {\n return directivesStart;\n }\n }\n return null;\n}\n\n/**\n * Retrieve or instantiate the injectable from the `LView` at particular `index`.\n *\n * This function checks to see if the value has already been instantiated and if so returns the\n * cached `injectable`. Otherwise if it detects that the value is still a factory it\n * instantiates the `injectable` and caches the value.\n */\nexport function getNodeInjectable(\n lView: LView, tView: TView, index: number, tNode: TDirectiveHostNode): any {\n let value = lView[index];\n const tData = tView.data;\n if (isFactory(value)) {\n const factory: NodeInjectorFactory = value;\n if (factory.resolving) {\n throwCyclicDependencyError(stringifyForError(tData[index]));\n }\n const previousIncludeViewProviders = setIncludeViewProviders(factory.canSeeViewProviders);\n factory.resolving = true;\n const previousInjectImplementation =\n factory.injectImpl ? setInjectImplementation(factory.injectImpl) : null;\n const success = enterDI(lView, tNode, InjectFlags.Default);\n ngDevMode &&\n assertEqual(\n success, true,\n 'Because flags do not contain \\`SkipSelf\\' we expect this to always succeed.');\n try {\n value = lView[index] = factory.factory(undefined, tData, lView, tNode);\n // This code path is hit for both directives and providers.\n // For perf reasons, we want to avoid searching for hooks on providers.\n // It does no harm to try (the hooks just won't exist), but the extra\n // checks are unnecessary and this is a hot path. So we check to see\n // if the index of the dependency is in the directive range for this\n // tNode. If it's not, we know it's a provider and skip hook registration.\n if (tView.firstCreatePass && index >= tNode.directiveStart) {\n ngDevMode && assertDirectiveDef(tData[index]);\n registerPreOrderHooks(index, tData[index] as DirectiveDef, tView);\n }\n } finally {\n previousInjectImplementation !== null &&\n setInjectImplementation(previousInjectImplementation);\n setIncludeViewProviders(previousIncludeViewProviders);\n factory.resolving = false;\n leaveDI();\n }\n }\n return value;\n}\n\n/**\n * Returns the bit in an injector's bloom filter that should be used to determine whether or not\n * the directive might be provided by the injector.\n *\n * When a directive is public, it is added to the bloom filter and given a unique ID that can be\n * retrieved on the Type. When the directive isn't public or the token is not a directive `null`\n * is returned as the node injector can not possibly provide that token.\n *\n * @param token the injection token\n * @returns the matching bit to check in the bloom filter or `null` if the token is not known.\n * When the returned value is negative then it represents special values such as `Injector`.\n */\nexport function bloomHashBitOrFactory(token: ProviderToken|string): number|Function|undefined {\n ngDevMode && assertDefined(token, 'token must be defined');\n if (typeof token === 'string') {\n return token.charCodeAt(0) || 0;\n }\n const tokenId: number|undefined =\n // First check with `hasOwnProperty` so we don't get an inherited ID.\n token.hasOwnProperty(NG_ELEMENT_ID) ? (token as any)[NG_ELEMENT_ID] : undefined;\n // Negative token IDs are used for special objects such as `Injector`\n if (typeof tokenId === 'number') {\n if (tokenId >= 0) {\n return tokenId & BLOOM_MASK;\n } else {\n ngDevMode &&\n assertEqual(tokenId, InjectorMarkers.Injector, 'Expecting to get Special Injector Id');\n return createNodeInjector;\n }\n } else {\n return tokenId;\n }\n}\n\nexport function bloomHasToken(bloomHash: number, injectorIndex: number, injectorView: LView|TData) {\n // Create a mask that targets the specific bit associated with the directive we're looking for.\n // JS bit operations are 32 bits, so this will be a number between 2^0 and 2^31, corresponding\n // to bit positions 0 - 31 in a 32 bit integer.\n const mask = 1 << bloomHash;\n\n // Each bloom bucket in `injectorView` represents `BLOOM_BUCKET_BITS` number of bits of\n // `bloomHash`. Any bits in `bloomHash` beyond `BLOOM_BUCKET_BITS` indicate the bucket offset\n // that should be used.\n const value = injectorView[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)];\n\n // If the bloom filter value has the bit corresponding to the directive's bloomBit flipped on,\n // this injector is a potential match.\n return !!(value & mask);\n}\n\n/** Returns true if flags prevent parent injector from being searched for tokens */\nfunction shouldSearchParent(flags: InjectFlags, isFirstHostTNode: boolean): boolean|number {\n return !(flags & InjectFlags.Self) && !(flags & InjectFlags.Host && isFirstHostTNode);\n}\n\nexport class NodeInjector implements Injector {\n constructor(\n private _tNode: TElementNode|TContainerNode|TElementContainerNode|null,\n private _lView: LView) {}\n\n get(token: any, notFoundValue?: any): any {\n return getOrCreateInjectable(this._tNode, this._lView, token, undefined, notFoundValue);\n }\n}\n\n/**\n * @codeGenApi\n */\nexport function ɵɵgetInheritedFactory(type: Type): (type: Type) => T {\n return noSideEffects(() => {\n const ownConstructor = type.prototype.constructor;\n const ownFactory = ownConstructor[NG_FACTORY_DEF] || getFactoryOf(ownConstructor);\n const objectPrototype = Object.prototype;\n let parent = Object.getPrototypeOf(type.prototype).constructor;\n\n // Go up the prototype until we hit `Object`.\n while (parent && parent !== objectPrototype) {\n const factory = parent[NG_FACTORY_DEF] || getFactoryOf(parent);\n\n // If we hit something that has a factory and the factory isn't the same as the type,\n // we've found the inherited factory. Note the check that the factory isn't the type's\n // own factory is redundant in most cases, but if the user has custom decorators on the\n // class, this lookup will start one level down in the prototype chain, causing us to\n // find the own factory first and potentially triggering an infinite loop downstream.\n if (factory && factory !== ownFactory) {\n return factory;\n }\n\n parent = Object.getPrototypeOf(parent);\n }\n\n // There is no factory defined. Either this was improper usage of inheritance\n // (no Angular decorator on the superclass) or there is no constructor at all\n // in the inheritance chain. Since the two cases cannot be distinguished, the\n // latter has to be assumed.\n return t => new t();\n });\n}\n\nfunction getFactoryOf(type: Type): ((type?: Type) => T | null)|null {\n if (isForwardRef(type)) {\n return () => {\n const factory = getFactoryOf(resolveForwardRef(type));\n return factory && factory();\n };\n }\n return getFactoryDef(type);\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 */\nimport {injectAttributeImpl} from '../di';\nimport {getCurrentTNode} from '../state';\n\n/**\n * Facade for the attribute injection from DI.\n *\n * @codeGenApi\n */\nexport function ɵɵinjectAttribute(attrNameToInject: string): string|null {\n return injectAttributeImpl(getCurrentTNode()!, attrNameToInject);\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\nimport {Type} from '../interface/type';\n\nimport {noSideEffects} from './closure';\n\n\n\n/**\n * An interface implemented by all Angular type decorators, which allows them to be used as\n * decorators as well as Angular syntax.\n *\n * ```\n * @ng.Component({...})\n * class MyClass {...}\n * ```\n *\n * @publicApi\n */\nexport interface TypeDecorator {\n /**\n * Invoke as decorator.\n */\n >(type: T): T;\n\n // Make TypeDecorator assignable to built-in ParameterDecorator type.\n // ParameterDecorator is declared in lib.d.ts as a `declare type`\n // so we cannot declare this interface as a subtype.\n // see https://github.com/angular/angular/issues/3379#issuecomment-126169417\n (target: Object, propertyKey?: string|symbol, parameterIndex?: number): void;\n}\n\nexport const ANNOTATIONS = '__annotations__';\nexport const PARAMETERS = '__parameters__';\nexport const PROP_METADATA = '__prop__metadata__';\n\n/**\n * @suppress {globalThis}\n */\nexport function makeDecorator(\n name: string, props?: (...args: any[]) => any, parentClass?: any,\n additionalProcessing?: (type: Type) => void,\n typeFn?: (type: Type, ...args: any[]) => void):\n {new (...args: any[]): any; (...args: any[]): any; (...args: any[]): (cls: any) => any;} {\n return noSideEffects(() => {\n const metaCtor = makeMetadataCtor(props);\n\n function DecoratorFactory(\n this: unknown|typeof DecoratorFactory, ...args: any[]): (cls: Type) => any {\n if (this instanceof DecoratorFactory) {\n metaCtor.call(this, ...args);\n return this as typeof DecoratorFactory;\n }\n\n const annotationInstance = new (DecoratorFactory as any)(...args);\n return function TypeDecorator(cls: Type) {\n if (typeFn) typeFn(cls, ...args);\n // Use of Object.defineProperty is important since it creates non-enumerable property which\n // prevents the property is copied during subclassing.\n const annotations = cls.hasOwnProperty(ANNOTATIONS) ?\n (cls as any)[ANNOTATIONS] :\n (Object.defineProperty(cls, ANNOTATIONS, {value: []}) as any)[ANNOTATIONS];\n annotations.push(annotationInstance);\n\n\n if (additionalProcessing) additionalProcessing(cls);\n\n return cls;\n };\n }\n\n if (parentClass) {\n DecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n\n DecoratorFactory.prototype.ngMetadataName = name;\n (DecoratorFactory as any).annotationCls = DecoratorFactory;\n return DecoratorFactory as any;\n });\n}\n\nfunction makeMetadataCtor(props?: (...args: any[]) => any): any {\n return function ctor(this: any, ...args: any[]) {\n if (props) {\n const values = props(...args);\n for (const propName in values) {\n this[propName] = values[propName];\n }\n }\n };\n}\n\nexport function makeParamDecorator(\n name: string, props?: (...args: any[]) => any, parentClass?: any): any {\n return noSideEffects(() => {\n const metaCtor = makeMetadataCtor(props);\n function ParamDecoratorFactory(\n this: unknown|typeof ParamDecoratorFactory, ...args: any[]): any {\n if (this instanceof ParamDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n const annotationInstance = new (ParamDecoratorFactory)(...args);\n\n (ParamDecorator).annotation = annotationInstance;\n return ParamDecorator;\n\n function ParamDecorator(cls: any, unusedKey: any, index: number): any {\n // Use of Object.defineProperty is important since it creates non-enumerable property which\n // prevents the property is copied during subclassing.\n const parameters = cls.hasOwnProperty(PARAMETERS) ?\n (cls as any)[PARAMETERS] :\n Object.defineProperty(cls, PARAMETERS, {value: []})[PARAMETERS];\n\n // there might be gaps if some in between parameters do not have annotations.\n // we pad with nulls.\n while (parameters.length <= index) {\n parameters.push(null);\n }\n\n (parameters[index] = parameters[index] || []).push(annotationInstance);\n return cls;\n }\n }\n if (parentClass) {\n ParamDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n ParamDecoratorFactory.prototype.ngMetadataName = name;\n (ParamDecoratorFactory).annotationCls = ParamDecoratorFactory;\n return ParamDecoratorFactory;\n });\n}\n\nexport function makePropDecorator(\n name: string, props?: (...args: any[]) => any, parentClass?: any,\n additionalProcessing?: (target: any, name: string, ...args: any[]) => void): any {\n return noSideEffects(() => {\n const metaCtor = makeMetadataCtor(props);\n\n function PropDecoratorFactory(this: unknown|typeof PropDecoratorFactory, ...args: any[]): any {\n if (this instanceof PropDecoratorFactory) {\n metaCtor.apply(this, args);\n return this;\n }\n\n const decoratorInstance = new (PropDecoratorFactory)(...args);\n\n function PropDecorator(target: any, name: string) {\n const constructor = target.constructor;\n // Use of Object.defineProperty is important because it creates a non-enumerable property\n // which prevents the property from being copied during subclassing.\n const meta = constructor.hasOwnProperty(PROP_METADATA) ?\n (constructor as any)[PROP_METADATA] :\n Object.defineProperty(constructor, PROP_METADATA, {value: {}})[PROP_METADATA];\n meta[name] = meta.hasOwnProperty(name) && meta[name] || [];\n meta[name].unshift(decoratorInstance);\n\n if (additionalProcessing) additionalProcessing(target, name, ...args);\n }\n\n return PropDecorator;\n }\n\n if (parentClass) {\n PropDecoratorFactory.prototype = Object.create(parentClass.prototype);\n }\n\n PropDecoratorFactory.prototype.ngMetadataName = name;\n (PropDecoratorFactory).annotationCls = PropDecoratorFactory;\n return PropDecoratorFactory;\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\nimport {Type} from '../interface/type';\nimport {assertLessThan} from '../util/assert';\n\nimport {ɵɵdefineInjectable} from './interface/defs';\n\n/**\n * Creates a token that can be used in a DI Provider.\n *\n * Use an `InjectionToken` whenever the type you are injecting is not reified (does not have a\n * runtime representation) such as when injecting an interface, callable type, array or\n * parameterized type.\n *\n * `InjectionToken` is parameterized on `T` which is the type of object which will be returned by\n * the `Injector`. This provides additional level of type safety.\n *\n * ```\n * interface MyInterface {...}\n * var myInterface = injector.get(new InjectionToken('SomeToken'));\n * // myInterface is inferred to be MyInterface.\n * ```\n *\n * When creating an `InjectionToken`, you can optionally specify a factory function which returns\n * (possibly by creating) a default value of the parameterized type `T`. This sets up the\n * `InjectionToken` using this factory as a provider as if it was defined explicitly in the\n * application's root injector. If the factory function, which takes zero arguments, needs to inject\n * dependencies, it can do so using the `inject` function. See below for an example.\n *\n * Additionally, if a `factory` is specified you can also specify the `providedIn` option, which\n * overrides the above behavior and marks the token as belonging to a particular `@NgModule`. As\n * mentioned above, `'root'` is the default value for `providedIn`.\n *\n * @usageNotes\n * ### Basic Example\n *\n * ### Plain InjectionToken\n *\n * {@example core/di/ts/injector_spec.ts region='InjectionToken'}\n *\n * ### Tree-shakable InjectionToken\n *\n * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}\n *\n *\n * @publicApi\n */\nexport class InjectionToken {\n /** @internal */\n readonly ngMetadataName = 'InjectionToken';\n\n readonly ɵprov: unknown;\n\n constructor(protected _desc: string, options?: {\n providedIn?: Type|'root'|'platform'|'any'|null, factory: () => T\n }) {\n this.ɵprov = undefined;\n if (typeof options == 'number') {\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n assertLessThan(options, 0, 'Only negative numbers are supported here');\n // This is a special hack to assign __NG_ELEMENT_ID__ to this instance.\n // See `InjectorMarkers`\n (this as any).__NG_ELEMENT_ID__ = options;\n } else if (options !== undefined) {\n this.ɵprov = ɵɵdefineInjectable({\n token: this,\n providedIn: options.providedIn || 'root',\n factory: options.factory,\n });\n }\n }\n\n toString(): string {\n return `InjectionToken ${this._desc}`;\n }\n}\n\nexport interface InjectableDefToken extends InjectionToken {\n ɵprov: unknown;\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\nimport {InjectionToken} from '../di/injection_token';\nimport {ProviderToken} from '../di/provider_token';\nimport {makePropDecorator} from '../util/decorators';\n\n/**\n * A DI token that you can use to create a virtual [provider](guide/glossary#provider)\n * that will populate the `entryComponents` field of components and NgModules\n * based on its `useValue` property value.\n * All components that are referenced in the `useValue` value (either directly\n * or in a nested array or map) are added to the `entryComponents` property.\n *\n * @usageNotes\n *\n * The following example shows how the router can populate the `entryComponents`\n * field of an NgModule based on a router configuration that refers\n * to components.\n *\n * ```typescript\n * // helper function inside the router\n * function provideRoutes(routes) {\n * return [\n * {provide: ROUTES, useValue: routes},\n * {provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: routes, multi: true}\n * ];\n * }\n *\n * // user code\n * let routes = [\n * {path: '/root', component: RootComp},\n * {path: '/teams', component: TeamsComp}\n * ];\n *\n * @NgModule({\n * providers: [provideRoutes(routes)]\n * })\n * class ModuleWithRoutes {}\n * ```\n *\n * @publicApi\n * @deprecated Since 9.0.0. With Ivy, this property is no longer necessary.\n */\nexport const ANALYZE_FOR_ENTRY_COMPONENTS = new InjectionToken('AnalyzeForEntryComponents');\n\n/**\n * Type of the `Attribute` decorator / constructor function.\n *\n * @publicApi\n */\nexport interface AttributeDecorator {\n /**\n * Specifies that a constant attribute value should be injected.\n *\n * The directive can inject constant string literals of host element attributes.\n *\n * @usageNotes\n *\n * Suppose we have an `` element and want to know its `type`.\n *\n * ```html\n * \n * ```\n *\n * A decorator can inject string literal `text` as in the following example.\n *\n * {@example core/ts/metadata/metadata.ts region='attributeMetadata'}\n *\n * @publicApi\n */\n (name: string): any;\n new(name: string): Attribute;\n}\n\n\n/**\n * Type of the Attribute metadata.\n *\n * @publicApi\n */\nexport interface Attribute {\n /**\n * The name of the attribute to be injected into the constructor.\n */\n attributeName?: string;\n}\n\n/**\n * Type of the Query metadata.\n *\n * @publicApi\n */\nexport interface Query {\n descendants: boolean;\n emitDistinctChangesOnly: boolean;\n first: boolean;\n read: any;\n isViewQuery: boolean;\n selector: any;\n static?: boolean;\n}\n\n// Stores the default value of `emitDistinctChangesOnly` when the `emitDistinctChangesOnly` is not\n// explicitly set.\nexport const emitDistinctChangesOnlyDefaultValue = true;\n\n\n/**\n * Base class for query metadata.\n *\n * @see `ContentChildren`.\n * @see `ContentChild`.\n * @see `ViewChildren`.\n * @see `ViewChild`.\n *\n * @publicApi\n */\nexport abstract class Query {}\n\n/**\n * Type of the ContentChildren decorator / constructor function.\n *\n * @see `ContentChildren`.\n * @publicApi\n */\nexport interface ContentChildrenDecorator {\n /**\n * @description\n * Property decorator that configures a content query.\n *\n * Use to get the `QueryList` of elements or directives from the content DOM.\n * Any time a child element is added, removed, or moved, the query list will be\n * updated, and the changes observable of the query list will emit a new value.\n *\n * Content queries are set before the `ngAfterContentInit` callback is called.\n *\n * Does not retrieve elements or directives that are in other components' templates,\n * since a component's template is always a black box to its ancestors.\n *\n * **Metadata Properties**:\n *\n * * **selector** - The directive type or the name used for querying.\n * * **descendants** - If `true` include all descendants of the element. If `false` then only\n * query direct children of the element.\n * * **emitDistinctChangesOnly** - The ` QueryList#changes` observable will emit new values only\n * if the QueryList result has changed. When `false` the `changes` observable might emit even\n * if the QueryList has not changed.\n * ** Note: *** This config option is **deprecated**, it will be permanently set to `true` and\n * removed in future versions of Angular.\n * * **read** - Used to read a different token from the queried elements.\n *\n * The following selectors are supported.\n * * Any class with the `@Component` or `@Directive` decorator\n * * A template reference variable as a string (e.g. query ``\n * with `@ContentChildren('cmp')`)\n * * Any provider defined in the child component tree of the current component (e.g.\n * `@ContentChildren(SomeService) someService: SomeService`)\n * * Any provider defined through a string token (e.g. `@ContentChildren('someToken')\n * someTokenVal: any`)\n * * A `TemplateRef` (e.g. query `` with\n * `@ContentChildren(TemplateRef) template;`)\n *\n * In addition, multiple string selectors can be separated with a comma (e.g.\n * `@ContentChildren('cmp1,cmp2')`)\n *\n * The following values are supported by `read`:\n * * Any class with the `@Component` or `@Directive` decorator\n * * Any provider defined on the injector of the component that is matched by the `selector` of\n * this query\n * * Any provider defined through a string token (e.g. `{provide: 'token', useValue: 'val'}`)\n * * `TemplateRef`, `ElementRef`, and `ViewContainerRef`\n *\n * @usageNotes\n *\n * Here is a simple demonstration of how the `ContentChildren` decorator can be used.\n *\n * {@example core/di/ts/contentChildren/content_children_howto.ts region='HowTo'}\n *\n * ### Tab-pane example\n *\n * Here is a slightly more realistic example that shows how `ContentChildren` decorators\n * can be used to implement a tab pane component.\n *\n * {@example core/di/ts/contentChildren/content_children_example.ts region='Component'}\n *\n * @Annotation\n */\n (selector: ProviderToken|Function|string, opts?: {\n descendants?: boolean,\n emitDistinctChangesOnly?: boolean,\n read?: any,\n }): any;\n new(selector: ProviderToken|Function|string,\n opts?: {descendants?: boolean, emitDistinctChangesOnly?: boolean, read?: any}): Query;\n}\n\n/**\n * Type of the ContentChildren metadata.\n *\n *\n * @Annotation\n * @publicApi\n */\nexport type ContentChildren = Query;\n\n/**\n * ContentChildren decorator and metadata.\n *\n *\n * @Annotation\n * @publicApi\n */\nexport const ContentChildren: ContentChildrenDecorator = makePropDecorator(\n 'ContentChildren', (selector?: any, data: any = {}) => ({\n selector,\n first: false,\n isViewQuery: false,\n descendants: false,\n emitDistinctChangesOnly: emitDistinctChangesOnlyDefaultValue,\n ...data\n }),\n Query);\n\n/**\n * Type of the ContentChild decorator / constructor function.\n *\n * @publicApi\n */\nexport interface ContentChildDecorator {\n /**\n * @description\n * Property decorator that configures a content query.\n *\n * Use to get the first element or the directive matching the selector from the content DOM.\n * If the content DOM changes, and a new child matches the selector,\n * the property will be updated.\n *\n * Content queries are set before the `ngAfterContentInit` callback is called.\n *\n * Does not retrieve elements or directives that are in other components' templates,\n * since a component's template is always a black box to its ancestors.\n *\n * **Metadata Properties**:\n *\n * * **selector** - The directive type or the name used for querying.\n * * **read** - Used to read a different token from the queried element.\n * * **static** - True to resolve query results before change detection runs,\n * false to resolve after change detection. Defaults to false.\n *\n * The following selectors are supported.\n * * Any class with the `@Component` or `@Directive` decorator\n * * A template reference variable as a string (e.g. query ``\n * with `@ContentChild('cmp')`)\n * * Any provider defined in the child component tree of the current component (e.g.\n * `@ContentChild(SomeService) someService: SomeService`)\n * * Any provider defined through a string token (e.g. `@ContentChild('someToken') someTokenVal:\n * any`)\n * * A `TemplateRef` (e.g. query `` with `@ContentChild(TemplateRef)\n * template;`)\n *\n * The following values are supported by `read`:\n * * Any class with the `@Component` or `@Directive` decorator\n * * Any provider defined on the injector of the component that is matched by the `selector` of\n * this query\n * * Any provider defined through a string token (e.g. `{provide: 'token', useValue: 'val'}`)\n * * `TemplateRef`, `ElementRef`, and `ViewContainerRef`\n *\n * @usageNotes\n *\n * {@example core/di/ts/contentChild/content_child_howto.ts region='HowTo'}\n *\n * ### Example\n *\n * {@example core/di/ts/contentChild/content_child_example.ts region='Component'}\n *\n * @Annotation\n */\n (selector: ProviderToken|Function|string, opts?: {read?: any, static?: boolean}): any;\n new(selector: ProviderToken|Function|string,\n opts?: {read?: any, static?: boolean}): ContentChild;\n}\n\n/**\n * Type of the ContentChild metadata.\n *\n * @publicApi\n */\nexport type ContentChild = Query;\n\n/**\n * ContentChild decorator and metadata.\n *\n *\n * @Annotation\n *\n * @publicApi\n */\nexport const ContentChild: ContentChildDecorator = makePropDecorator(\n 'ContentChild',\n (selector?: any, data: any = {}) =>\n ({selector, first: true, isViewQuery: false, descendants: true, ...data}),\n Query);\n\n/**\n * Type of the ViewChildren decorator / constructor function.\n *\n * @see `ViewChildren`.\n *\n * @publicApi\n */\nexport interface ViewChildrenDecorator {\n /**\n * @description\n * Property decorator that configures a view query.\n *\n * Use to get the `QueryList` of elements or directives from the view DOM.\n * Any time a child element is added, removed, or moved, the query list will be updated,\n * and the changes observable of the query list will emit a new value.\n *\n * View queries are set before the `ngAfterViewInit` callback is called.\n *\n * **Metadata Properties**:\n *\n * * **selector** - The directive type or the name used for querying.\n * * **read** - Used to read a different token from the queried elements.\n * * **emitDistinctChangesOnly** - The ` QueryList#changes` observable will emit new values only\n * if the QueryList result has changed. When `false` the `changes` observable might emit even\n * if the QueryList has not changed.\n * ** Note: *** This config option is **deprecated**, it will be permanently set to `true` and\n * removed in future versions of Angular.\n *\n * The following selectors are supported.\n * * Any class with the `@Component` or `@Directive` decorator\n * * A template reference variable as a string (e.g. query ``\n * with `@ViewChildren('cmp')`)\n * * Any provider defined in the child component tree of the current component (e.g.\n * `@ViewChildren(SomeService) someService!: SomeService`)\n * * Any provider defined through a string token (e.g. `@ViewChildren('someToken')\n * someTokenVal!: any`)\n * * A `TemplateRef` (e.g. query `` with `@ViewChildren(TemplateRef)\n * template;`)\n *\n * In addition, multiple string selectors can be separated with a comma (e.g.\n * `@ViewChildren('cmp1,cmp2')`)\n *\n * The following values are supported by `read`:\n * * Any class with the `@Component` or `@Directive` decorator\n * * Any provider defined on the injector of the component that is matched by the `selector` of\n * this query\n * * Any provider defined through a string token (e.g. `{provide: 'token', useValue: 'val'}`)\n * * `TemplateRef`, `ElementRef`, and `ViewContainerRef`\n *\n * @usageNotes\n *\n * {@example core/di/ts/viewChildren/view_children_howto.ts region='HowTo'}\n *\n * ### Another example\n *\n * {@example core/di/ts/viewChildren/view_children_example.ts region='Component'}\n *\n * @Annotation\n */\n (selector: ProviderToken|Function|string,\n opts?: {read?: any, emitDistinctChangesOnly?: boolean}): any;\n new(selector: ProviderToken|Function|string,\n opts?: {read?: any, emitDistinctChangesOnly?: boolean}): ViewChildren;\n}\n\n/**\n * Type of the ViewChildren metadata.\n *\n * @publicApi\n */\nexport type ViewChildren = Query;\n\n/**\n * ViewChildren decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nexport const ViewChildren: ViewChildrenDecorator = makePropDecorator(\n 'ViewChildren', (selector?: any, data: any = {}) => ({\n selector,\n first: false,\n isViewQuery: true,\n descendants: true,\n emitDistinctChangesOnly: emitDistinctChangesOnlyDefaultValue,\n ...data\n }),\n Query);\n\n/**\n * Type of the ViewChild decorator / constructor function.\n *\n * @see `ViewChild`.\n * @publicApi\n */\nexport interface ViewChildDecorator {\n /**\n * @description\n * Property decorator that configures a view query.\n * The change detector looks for the first element or the directive matching the selector\n * in the view DOM. If the view DOM changes, and a new child matches the selector,\n * the property is updated.\n *\n * View queries are set before the `ngAfterViewInit` callback is called.\n *\n * **Metadata Properties**:\n *\n * * **selector** - The directive type or the name used for querying.\n * * **read** - Used to read a different token from the queried elements.\n * * **static** - True to resolve query results before change detection runs,\n * false to resolve after change detection. Defaults to false.\n *\n *\n * The following selectors are supported.\n * * Any class with the `@Component` or `@Directive` decorator\n * * A template reference variable as a string (e.g. query ``\n * with `@ViewChild('cmp')`)\n * * Any provider defined in the child component tree of the current component (e.g.\n * `@ViewChild(SomeService) someService: SomeService`)\n * * Any provider defined through a string token (e.g. `@ViewChild('someToken') someTokenVal:\n * any`)\n * * A `TemplateRef` (e.g. query `` with `@ViewChild(TemplateRef)\n * template;`)\n *\n * The following values are supported by `read`:\n * * Any class with the `@Component` or `@Directive` decorator\n * * Any provider defined on the injector of the component that is matched by the `selector` of\n * this query\n * * Any provider defined through a string token (e.g. `{provide: 'token', useValue: 'val'}`)\n * * `TemplateRef`, `ElementRef`, and `ViewContainerRef`\n *\n * @usageNotes\n *\n * {@example core/di/ts/viewChild/view_child_example.ts region='Component'}\n *\n * ### Example 2\n *\n * {@example core/di/ts/viewChild/view_child_howto.ts region='HowTo'}\n *\n * @Annotation\n */\n (selector: ProviderToken|Function|string, opts?: {read?: any, static?: boolean}): any;\n new(selector: ProviderToken|Function|string,\n opts?: {read?: any, static?: boolean}): ViewChild;\n}\n\n/**\n * Type of the ViewChild metadata.\n *\n * @publicApi\n */\nexport type ViewChild = Query;\n\n/**\n * ViewChild decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nexport const ViewChild: ViewChildDecorator = makePropDecorator(\n 'ViewChild',\n (selector: any, data: any) =>\n ({selector, first: true, isViewQuery: true, descendants: true, ...data}),\n Query);\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 * @description\n *\n * Represents a type that a Component or other object is instances of.\n *\n * An example of a `Type` is `MyCustomComponent` class, which in JavaScript is represented by\n * the `MyCustomComponent` constructor function.\n *\n * @publicApi\n */\nexport const Type = Function;\n\nexport function isType(v: any): v is Type {\n return typeof v === 'function';\n}\n\n/**\n * @description\n *\n * Represents an abstract class `T`, if applied to a concrete class it would stop being\n * instantiable.\n *\n * @publicApi\n */\nexport interface AbstractType extends Function {\n prototype: T;\n}\n\nexport interface Type extends Function {\n new(...args: any[]): T;\n}\n\nexport type Mutable = {\n [P in K]: T[P];\n};\n\n/**\n * Returns a writable type version of type.\n *\n * USAGE:\n * Given:\n * ```\n * interface Person {readonly name: string}\n * ```\n *\n * We would like to get a read/write version of `Person`.\n * ```\n * const WritablePerson = Writable;\n * ```\n *\n * The result is that you can do:\n *\n * ```\n * const readonlyPerson: Person = {name: 'Marry'};\n * readonlyPerson.name = 'John'; // TypeError\n * (readonlyPerson as WritablePerson).name = 'John'; // OK\n *\n * // Error: Correctly detects that `Person` did not have `age` property.\n * (readonlyPerson as WritablePerson).age = 30;\n * ```\n */\nexport type Writable = {\n -readonly[K in keyof T]: T[K];\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\nimport {assertEqual, assertLessThanOrEqual} from './assert';\n\n/**\n * Equivalent to ES6 spread, add each item to an array.\n *\n * @param items The items to add\n * @param arr The array to which you want to add the items\n */\nexport function addAllToArray(items: any[], arr: any[]) {\n for (let i = 0; i < items.length; i++) {\n arr.push(items[i]);\n }\n}\n\n/**\n * Determines if the contents of two arrays is identical\n *\n * @param a first array\n * @param b second array\n * @param identityAccessor Optional function for extracting stable object identity from a value in\n * the array.\n */\nexport function arrayEquals(a: T[], b: T[], identityAccessor?: (value: T) => unknown): boolean {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n let valueA = a[i];\n let valueB = b[i];\n if (identityAccessor) {\n valueA = identityAccessor(valueA) as any;\n valueB = identityAccessor(valueB) as any;\n }\n if (valueB !== valueA) {\n return false;\n }\n }\n return true;\n}\n\n\n/**\n * Flattens an array.\n */\nexport function flatten(list: any[], dst?: any[]): any[] {\n if (dst === undefined) dst = list;\n for (let i = 0; i < list.length; i++) {\n let item = list[i];\n if (Array.isArray(item)) {\n // we need to inline it.\n if (dst === list) {\n // Our assumption that the list was already flat was wrong and\n // we need to clone flat since we need to write to it.\n dst = list.slice(0, i);\n }\n flatten(item, dst);\n } else if (dst !== list) {\n dst.push(item);\n }\n }\n return dst;\n}\n\nexport function deepForEach(input: (T|any[])[], fn: (value: T) => void): void {\n input.forEach(value => Array.isArray(value) ? deepForEach(value, fn) : fn(value));\n}\n\nexport function addToArray(arr: any[], index: number, value: any): void {\n // perf: array.push is faster than array.splice!\n if (index >= arr.length) {\n arr.push(value);\n } else {\n arr.splice(index, 0, value);\n }\n}\n\nexport function removeFromArray(arr: any[], index: number): any {\n // perf: array.pop is faster than array.splice!\n if (index >= arr.length - 1) {\n return arr.pop();\n } else {\n return arr.splice(index, 1)[0];\n }\n}\n\nexport function newArray(size: number): T[];\nexport function newArray(size: number, value: T): T[];\nexport function newArray(size: number, value?: T): T[] {\n const list: T[] = [];\n for (let i = 0; i < size; i++) {\n list.push(value!);\n }\n return list;\n}\n\n/**\n * Remove item from array (Same as `Array.splice()` but faster.)\n *\n * `Array.splice()` is not as fast because it has to allocate an array for the elements which were\n * removed. This causes memory pressure and slows down code when most of the time we don't\n * care about the deleted items array.\n *\n * https://jsperf.com/fast-array-splice (About 20x faster)\n *\n * @param array Array to splice\n * @param index Index of element in array to remove.\n * @param count Number of items to remove.\n */\nexport function arraySplice(array: any[], index: number, count: number): void {\n const length = array.length - count;\n while (index < length) {\n array[index] = array[index + count];\n index++;\n }\n while (count--) {\n array.pop(); // shrink the array\n }\n}\n\n/**\n * Same as `Array.splice(index, 0, value)` but faster.\n *\n * `Array.splice()` is not fast because it has to allocate an array for the elements which were\n * removed. This causes memory pressure and slows down code when most of the time we don't\n * care about the deleted items array.\n *\n * @param array Array to splice.\n * @param index Index in array where the `value` should be added.\n * @param value Value to add to array.\n */\nexport function arrayInsert(array: any[], index: number, value: any): void {\n ngDevMode && assertLessThanOrEqual(index, array.length, 'Can\\'t insert past array end.');\n let end = array.length;\n while (end > index) {\n const previousEnd = end - 1;\n array[end] = array[previousEnd];\n end = previousEnd;\n }\n array[index] = value;\n}\n\n/**\n * Same as `Array.splice2(index, 0, value1, value2)` but faster.\n *\n * `Array.splice()` is not fast because it has to allocate an array for the elements which were\n * removed. This causes memory pressure and slows down code when most of the time we don't\n * care about the deleted items array.\n *\n * @param array Array to splice.\n * @param index Index in array where the `value` should be added.\n * @param value1 Value to add to array.\n * @param value2 Value to add to array.\n */\nexport function arrayInsert2(array: any[], index: number, value1: any, value2: any): void {\n ngDevMode && assertLessThanOrEqual(index, array.length, 'Can\\'t insert past array end.');\n let end = array.length;\n if (end == index) {\n // inserting at the end.\n array.push(value1, value2);\n } else if (end === 1) {\n // corner case when we have less items in array than we have items to insert.\n array.push(value2, array[0]);\n array[0] = value1;\n } else {\n end--;\n array.push(array[end - 1], array[end]);\n while (end > index) {\n const previousEnd = end - 2;\n array[end] = array[previousEnd];\n end--;\n }\n array[index] = value1;\n array[index + 1] = value2;\n }\n}\n\n/**\n * Insert a `value` into an `array` so that the array remains sorted.\n *\n * NOTE:\n * - Duplicates are not allowed, and are ignored.\n * - This uses binary search algorithm for fast inserts.\n *\n * @param array A sorted array to insert into.\n * @param value The value to insert.\n * @returns index of the inserted value.\n */\nexport function arrayInsertSorted(array: string[], value: string): number {\n let index = arrayIndexOfSorted(array, value);\n if (index < 0) {\n // if we did not find it insert it.\n index = ~index;\n arrayInsert(array, index, value);\n }\n return index;\n}\n\n/**\n * Remove `value` from a sorted `array`.\n *\n * NOTE:\n * - This uses binary search algorithm for fast removals.\n *\n * @param array A sorted array to remove from.\n * @param value The value to remove.\n * @returns index of the removed value.\n * - positive index if value found and removed.\n * - negative index if value not found. (`~index` to get the value where it should have been\n * inserted)\n */\nexport function arrayRemoveSorted(array: string[], value: string): number {\n const index = arrayIndexOfSorted(array, value);\n if (index >= 0) {\n arraySplice(array, index, 1);\n }\n return index;\n}\n\n\n/**\n * Get an index of an `value` in a sorted `array`.\n *\n * NOTE:\n * - This uses binary search algorithm for fast removals.\n *\n * @param array A sorted array to binary search.\n * @param value The value to look for.\n * @returns index of the value.\n * - positive index if value found.\n * - negative index if value not found. (`~index` to get the value where it should have been\n * located)\n */\nexport function arrayIndexOfSorted(array: string[], value: string): number {\n return _arrayIndexOfSorted(array, value, 0);\n}\n\n\n/**\n * `KeyValueArray` is an array where even positions contain keys and odd positions contain values.\n *\n * `KeyValueArray` provides a very efficient way of iterating over its contents. For small\n * sets (~10) the cost of binary searching an `KeyValueArray` has about the same performance\n * characteristics that of a `Map` with significantly better memory footprint.\n *\n * If used as a `Map` the keys are stored in alphabetical order so that they can be binary searched\n * for retrieval.\n *\n * See: `keyValueArraySet`, `keyValueArrayGet`, `keyValueArrayIndexOf`, `keyValueArrayDelete`.\n */\nexport interface KeyValueArray extends Array {\n __brand__: 'array-map';\n}\n\n/**\n * Set a `value` for a `key`.\n *\n * @param keyValueArray to modify.\n * @param key The key to locate or create.\n * @param value The value to set for a `key`.\n * @returns index (always even) of where the value vas set.\n */\nexport function keyValueArraySet(\n keyValueArray: KeyValueArray, key: string, value: V): number {\n let index = keyValueArrayIndexOf(keyValueArray, key);\n if (index >= 0) {\n // if we found it set it.\n keyValueArray[index | 1] = value;\n } else {\n index = ~index;\n arrayInsert2(keyValueArray, index, key, value);\n }\n return index;\n}\n\n/**\n * Retrieve a `value` for a `key` (on `undefined` if not found.)\n *\n * @param keyValueArray to search.\n * @param key The key to locate.\n * @return The `value` stored at the `key` location or `undefined if not found.\n */\nexport function keyValueArrayGet(keyValueArray: KeyValueArray, key: string): V|undefined {\n const index = keyValueArrayIndexOf(keyValueArray, key);\n if (index >= 0) {\n // if we found it retrieve it.\n return keyValueArray[index | 1] as V;\n }\n return undefined;\n}\n\n/**\n * Retrieve a `key` index value in the array or `-1` if not found.\n *\n * @param keyValueArray to search.\n * @param key The key to locate.\n * @returns index of where the key is (or should have been.)\n * - positive (even) index if key found.\n * - negative index if key not found. (`~index` (even) to get the index where it should have\n * been inserted.)\n */\nexport function keyValueArrayIndexOf(keyValueArray: KeyValueArray, key: string): number {\n return _arrayIndexOfSorted(keyValueArray as string[], key, 1);\n}\n\n/**\n * Delete a `key` (and `value`) from the `KeyValueArray`.\n *\n * @param keyValueArray to modify.\n * @param key The key to locate or delete (if exist).\n * @returns index of where the key was (or should have been.)\n * - positive (even) index if key found and deleted.\n * - negative index if key not found. (`~index` (even) to get the index where it should have\n * been.)\n */\nexport function keyValueArrayDelete(keyValueArray: KeyValueArray, key: string): number {\n const index = keyValueArrayIndexOf(keyValueArray, key);\n if (index >= 0) {\n // if we found it remove it.\n arraySplice(keyValueArray, index, 2);\n }\n return index;\n}\n\n\n/**\n * INTERNAL: Get an index of an `value` in a sorted `array` by grouping search by `shift`.\n *\n * NOTE:\n * - This uses binary search algorithm for fast removals.\n *\n * @param array A sorted array to binary search.\n * @param value The value to look for.\n * @param shift grouping shift.\n * - `0` means look at every location\n * - `1` means only look at every other (even) location (the odd locations are to be ignored as\n * they are values.)\n * @returns index of the value.\n * - positive index if value found.\n * - negative index if value not found. (`~index` to get the value where it should have been\n * inserted)\n */\nfunction _arrayIndexOfSorted(array: string[], value: string, shift: number): number {\n ngDevMode && assertEqual(Array.isArray(array), true, 'Expecting an array');\n let start = 0;\n let end = array.length >> shift;\n while (end !== start) {\n const middle = start + ((end - start) >> 1); // find the middle.\n const current = array[middle << shift];\n if (value === current) {\n return (middle << shift);\n } else if (current > value) {\n end = middle;\n } else {\n start = middle + 1; // We already searched middle so make it non-inclusive by adding 1\n }\n }\n return ~(end << shift);\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\nimport '../util/ng_dev_mode';\n\nimport {Type} from '../interface/type';\nimport {getClosureSafeProperty} from '../util/property';\nimport {stringify} from '../util/stringify';\n\nimport {resolveForwardRef} from './forward_ref';\nimport {getInjectImplementation, injectRootLimpMode} from './inject_switch';\nimport {Injector} from './injector';\nimport {DecoratorFlags, InjectFlags, InternalInjectFlags} from './interface/injector';\nimport {ValueProvider} from './interface/provider';\nimport {ProviderToken} from './provider_token';\n\n\nconst _THROW_IF_NOT_FOUND = {};\nexport const THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND;\n\n/*\n * Name of a property (that we patch onto DI decorator), which is used as an annotation of which\n * InjectFlag this decorator represents. This allows to avoid direct references to the DI decorators\n * in the code, thus making them tree-shakable.\n */\nconst DI_DECORATOR_FLAG = '__NG_DI_FLAG__';\n\nexport const NG_TEMP_TOKEN_PATH = 'ngTempTokenPath';\nconst NG_TOKEN_PATH = 'ngTokenPath';\nconst NEW_LINE = /\\n/gm;\nconst NO_NEW_LINE = 'ɵ';\nexport const SOURCE = '__source';\n\nexport const USE_VALUE =\n getClosureSafeProperty({provide: String, useValue: getClosureSafeProperty});\n\n/**\n * Current injector value used by `inject`.\n * - `undefined`: it is an error to call `inject`\n * - `null`: `inject` can be called but there is no injector (limp-mode).\n * - Injector instance: Use the injector for resolution.\n */\nlet _currentInjector: Injector|undefined|null = undefined;\n\nexport function setCurrentInjector(injector: Injector|null|undefined): Injector|undefined|null {\n const former = _currentInjector;\n _currentInjector = injector;\n return former;\n}\n\nexport function injectInjectorOnly(token: ProviderToken): T;\nexport function injectInjectorOnly(token: ProviderToken, flags?: InjectFlags): T|null;\nexport function injectInjectorOnly(token: ProviderToken, flags = InjectFlags.Default): T|\n null {\n if (_currentInjector === undefined) {\n throw new Error(`inject() must be called from an injection context`);\n } else if (_currentInjector === null) {\n return injectRootLimpMode(token, undefined, flags);\n } else {\n return _currentInjector.get(token, flags & InjectFlags.Optional ? null : undefined, flags);\n }\n}\n\n/**\n * Generated instruction: Injects a token from the currently active injector.\n *\n * Must be used in the context of a factory function such as one defined for an\n * `InjectionToken`. Throws an error if not called from such a context.\n *\n * (Additional documentation moved to `inject`, as it is the public API, and an alias for this\n * instruction)\n *\n * @see inject\n * @codeGenApi\n * @publicApi This instruction has been emitted by ViewEngine for some time and is deployed to npm.\n */\nexport function ɵɵinject(token: ProviderToken): T;\nexport function ɵɵinject(token: ProviderToken, flags?: InjectFlags): T|null;\nexport function ɵɵinject(token: ProviderToken, flags = InjectFlags.Default): T|null {\n return (getInjectImplementation() || injectInjectorOnly)(resolveForwardRef(token), flags);\n}\n\n/**\n * Throws an error indicating that a factory function could not be generated by the compiler for a\n * particular class.\n *\n * This instruction allows the actual error message to be optimized away when ngDevMode is turned\n * off, saving bytes of generated code while still providing a good experience in dev mode.\n *\n * The name of the class is not mentioned here, but will be in the generated factory function name\n * and thus in the stack trace.\n *\n * @codeGenApi\n */\nexport function ɵɵinvalidFactoryDep(index: number): never {\n const msg = ngDevMode ?\n `This constructor is not compatible with Angular Dependency Injection because its dependency at index ${\n index} of the parameter list is invalid.\nThis can happen if the dependency type is a primitive like a string or if an ancestor of this class is missing an Angular decorator.\n\nPlease check that 1) the type for the parameter at index ${\n index} is correct and 2) the correct Angular decorators are defined for this class and its ancestors.` :\n 'invalid';\n throw new Error(msg);\n}\n\n/**\n * Injects a token from the currently active injector.\n *\n * Must be used in the context of a factory function such as one defined for an\n * `InjectionToken`. Throws an error if not called from such a context.\n *\n * Within such a factory function, using this function to request injection of a dependency\n * is faster and more type-safe than providing an additional array of dependencies\n * (as has been common with `useFactory` providers).\n *\n * @param token The injection token for the dependency to be injected.\n * @param flags Optional flags that control how injection is executed.\n * The flags correspond to injection strategies that can be specified with\n * parameter decorators `@Host`, `@Self`, `@SkipSef`, and `@Optional`.\n * @returns the injected value if injection is successful, `null` otherwise.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example core/di/ts/injector_spec.ts region='ShakableInjectionToken'}\n *\n * @publicApi\n */\nexport const inject = ɵɵinject;\n\nexport function injectArgs(types: (ProviderToken|any[])[]): any[] {\n const args: any[] = [];\n for (let i = 0; i < types.length; i++) {\n const arg = resolveForwardRef(types[i]);\n if (Array.isArray(arg)) {\n if (arg.length === 0) {\n throw new Error('Arguments array must have arguments.');\n }\n let type: Type|undefined = undefined;\n let flags: InjectFlags = InjectFlags.Default;\n\n for (let j = 0; j < arg.length; j++) {\n const meta = arg[j];\n const flag = getInjectFlag(meta);\n if (typeof flag === 'number') {\n // Special case when we handle @Inject decorator.\n if (flag === DecoratorFlags.Inject) {\n type = meta.token;\n } else {\n flags |= flag;\n }\n } else {\n type = meta;\n }\n }\n\n args.push(ɵɵinject(type!, flags));\n } else {\n args.push(ɵɵinject(arg));\n }\n }\n return args;\n}\n\n/**\n * Attaches a given InjectFlag to a given decorator using monkey-patching.\n * Since DI decorators can be used in providers `deps` array (when provider is configured using\n * `useFactory`) without initialization (e.g. `Host`) and as an instance (e.g. `new Host()`), we\n * attach the flag to make it available both as a static property and as a field on decorator\n * instance.\n *\n * @param decorator Provided DI decorator.\n * @param flag InjectFlag that should be applied.\n */\nexport function attachInjectFlag(decorator: any, flag: InternalInjectFlags|DecoratorFlags): any {\n decorator[DI_DECORATOR_FLAG] = flag;\n decorator.prototype[DI_DECORATOR_FLAG] = flag;\n return decorator;\n}\n\n/**\n * Reads monkey-patched property that contains InjectFlag attached to a decorator.\n *\n * @param token Token that may contain monkey-patched DI flags property.\n */\nexport function getInjectFlag(token: any): number|undefined {\n return token[DI_DECORATOR_FLAG];\n}\n\nexport function catchInjectorError(\n e: any, token: any, injectorErrorName: string, source: string|null): never {\n const tokenPath: any[] = e[NG_TEMP_TOKEN_PATH];\n if (token[SOURCE]) {\n tokenPath.unshift(token[SOURCE]);\n }\n e.message = formatError('\\n' + e.message, tokenPath, injectorErrorName, source);\n e[NG_TOKEN_PATH] = tokenPath;\n e[NG_TEMP_TOKEN_PATH] = null;\n throw e;\n}\n\nexport function formatError(\n text: string, obj: any, injectorErrorName: string, source: string|null = null): string {\n text = text && text.charAt(0) === '\\n' && text.charAt(1) == NO_NEW_LINE ? text.substr(2) : text;\n let context = stringify(obj);\n if (Array.isArray(obj)) {\n context = obj.map(stringify).join(' -> ');\n } else if (typeof obj === 'object') {\n let parts = [];\n for (let key in obj) {\n if (obj.hasOwnProperty(key)) {\n let value = obj[key];\n parts.push(\n key + ':' + (typeof value === 'string' ? JSON.stringify(value) : stringify(value)));\n }\n }\n context = `{${parts.join(', ')}}`;\n }\n return `${injectorErrorName}${source ? '(' + source + ')' : ''}[${context}]: ${\n text.replace(NEW_LINE, '\\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\nimport {makeParamDecorator} from '../util/decorators';\n\nimport {attachInjectFlag} from './injector_compatibility';\nimport {DecoratorFlags, InternalInjectFlags} from './interface/injector';\n\n\n/**\n * Type of the Inject decorator / constructor function.\n *\n * @publicApi\n */\nexport interface InjectDecorator {\n /**\n * Parameter decorator on a dependency parameter of a class constructor\n * that specifies a custom provider of the dependency.\n *\n * @usageNotes\n * The following example shows a class constructor that specifies a\n * custom provider of a dependency using the parameter decorator.\n *\n * When `@Inject()` is not present, the injector uses the type annotation of the\n * parameter as the provider.\n *\n * \n * \n *\n * @see [\"Dependency Injection Guide\"](guide/dependency-injection)\n *\n */\n (token: any): any;\n new(token: any): Inject;\n}\n\n/**\n * Type of the Inject metadata.\n *\n * @publicApi\n */\nexport interface Inject {\n /**\n * A [DI token](guide/glossary#di-token) that maps to the dependency to be injected.\n */\n token: any;\n}\n\n/**\n * Inject decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nexport const Inject: InjectDecorator = attachInjectFlag(\n // Disable tslint because `DecoratorFlags` is a const enum which gets inlined.\n // tslint:disable-next-line: no-toplevel-property-access\n makeParamDecorator('Inject', (token: any) => ({token})), DecoratorFlags.Inject);\n\n/**\n * Type of the Optional decorator / constructor function.\n *\n * @publicApi\n */\nexport interface OptionalDecorator {\n /**\n * Parameter decorator to be used on constructor parameters,\n * which marks the parameter as being an optional dependency.\n * The DI framework provides `null` if the dependency is not found.\n *\n * Can be used together with other parameter decorators\n * that modify how dependency injection operates.\n *\n * @usageNotes\n *\n * The following code allows the possibility of a `null` result:\n *\n * \n * \n *\n * @see [\"Dependency Injection Guide\"](guide/dependency-injection).\n */\n (): any;\n new(): Optional;\n}\n\n/**\n * Type of the Optional metadata.\n *\n * @publicApi\n */\nexport interface Optional {}\n\n/**\n * Optional decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nexport const Optional: OptionalDecorator =\n // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.\n // tslint:disable-next-line: no-toplevel-property-access\n attachInjectFlag(makeParamDecorator('Optional'), InternalInjectFlags.Optional);\n\n/**\n * Type of the Self decorator / constructor function.\n *\n * @publicApi\n */\nexport interface SelfDecorator {\n /**\n * Parameter decorator to be used on constructor parameters,\n * which tells the DI framework to start dependency resolution from the local injector.\n *\n * Resolution works upward through the injector hierarchy, so the children\n * of this class must configure their own providers or be prepared for a `null` result.\n *\n * @usageNotes\n *\n * In the following example, the dependency can be resolved\n * by the local injector when instantiating the class itself, but not\n * when instantiating a child.\n *\n * \n * \n *\n * @see `SkipSelf`\n * @see `Optional`\n *\n */\n (): any;\n new(): Self;\n}\n\n/**\n * Type of the Self metadata.\n *\n * @publicApi\n */\nexport interface Self {}\n\n/**\n * Self decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nexport const Self: SelfDecorator =\n // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.\n // tslint:disable-next-line: no-toplevel-property-access\n attachInjectFlag(makeParamDecorator('Self'), InternalInjectFlags.Self);\n\n\n/**\n * Type of the `SkipSelf` decorator / constructor function.\n *\n * @publicApi\n */\nexport interface SkipSelfDecorator {\n /**\n * Parameter decorator to be used on constructor parameters,\n * which tells the DI framework to start dependency resolution from the parent injector.\n * Resolution works upward through the injector hierarchy, so the local injector\n * is not checked for a provider.\n *\n * @usageNotes\n *\n * In the following example, the dependency can be resolved when\n * instantiating a child, but not when instantiating the class itself.\n *\n * \n * \n *\n * @see [Dependency Injection guide](guide/dependency-injection-in-action#skip).\n * @see `Self`\n * @see `Optional`\n *\n */\n (): any;\n new(): SkipSelf;\n}\n\n/**\n * Type of the `SkipSelf` metadata.\n *\n * @publicApi\n */\nexport interface SkipSelf {}\n\n/**\n * `SkipSelf` decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nexport const SkipSelf: SkipSelfDecorator =\n // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.\n // tslint:disable-next-line: no-toplevel-property-access\n attachInjectFlag(makeParamDecorator('SkipSelf'), InternalInjectFlags.SkipSelf);\n\n/**\n * Type of the `Host` decorator / constructor function.\n *\n * @publicApi\n */\nexport interface HostDecorator {\n /**\n * Parameter decorator on a view-provider parameter of a class constructor\n * that tells the DI framework to resolve the view by checking injectors of child\n * elements, and stop when reaching the host element of the current component.\n *\n * @usageNotes\n *\n * The following shows use with the `@Optional` decorator, and allows for a `null` result.\n *\n * \n * \n *\n * For an extended example, see [\"Dependency Injection\n * Guide\"](guide/dependency-injection-in-action#optional).\n */\n (): any;\n new(): Host;\n}\n\n/**\n * Type of the Host metadata.\n *\n * @publicApi\n */\nexport interface Host {}\n\n/**\n * Host decorator and metadata.\n *\n * @Annotation\n * @publicApi\n */\nexport const Host: HostDecorator =\n // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined.\n // tslint:disable-next-line: no-toplevel-property-access\n attachInjectFlag(makeParamDecorator('Host'), InternalInjectFlags.Host);\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 * @fileoverview\n * A module to facilitate use of a Trusted Types policy internally within\n * Angular. It lazily constructs the Trusted Types policy, providing helper\n * utilities for promoting strings to Trusted Types. When Trusted Types are not\n * available, strings are used as a fallback.\n * @security All use of this module is security-sensitive and should go through\n * security review.\n */\n\nimport {global} from '../global';\nimport {TrustedHTML, TrustedScript, TrustedScriptURL, TrustedTypePolicy, TrustedTypePolicyFactory} from './trusted_type_defs';\n\n/**\n * The Trusted Types policy, or null if Trusted Types are not\n * enabled/supported, or undefined if the policy has not been created yet.\n */\nlet policy: TrustedTypePolicy|null|undefined;\n\n/**\n * Returns the Trusted Types policy, or null if Trusted Types are not\n * enabled/supported. The first call to this function will create the policy.\n */\nfunction getPolicy(): TrustedTypePolicy|null {\n if (policy === undefined) {\n policy = null;\n if (global.trustedTypes) {\n try {\n policy = (global.trustedTypes as TrustedTypePolicyFactory).createPolicy('angular', {\n createHTML: (s: string) => s,\n createScript: (s: string) => s,\n createScriptURL: (s: string) => s,\n });\n } catch {\n // trustedTypes.createPolicy throws if called with a name that is\n // already registered, even in report-only mode. Until the API changes,\n // catch the error not to break the applications functionally. In such\n // cases, the code will fall back to using strings.\n }\n }\n }\n return policy;\n}\n\n/**\n * Unsafely promote a string to a TrustedHTML, falling back to strings when\n * Trusted Types are not available.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that the\n * provided string will never cause an XSS vulnerability if used in a context\n * that will be interpreted as HTML by a browser, e.g. when assigning to\n * element.innerHTML.\n */\nexport function trustedHTMLFromString(html: string): TrustedHTML|string {\n return getPolicy()?.createHTML(html) || html;\n}\n\n/**\n * Unsafely promote a string to a TrustedScript, falling back to strings when\n * Trusted Types are not available.\n * @security In particular, it must be assured that the provided string will\n * never cause an XSS vulnerability if used in a context that will be\n * interpreted and executed as a script by a browser, e.g. when calling eval.\n */\nexport function trustedScriptFromString(script: string): TrustedScript|string {\n return getPolicy()?.createScript(script) || script;\n}\n\n/**\n * Unsafely promote a string to a TrustedScriptURL, falling back to strings\n * when Trusted Types are not available.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that the\n * provided string will never cause an XSS vulnerability if used in a context\n * that will cause a browser to load and execute a resource, e.g. when\n * assigning to script.src.\n */\nexport function trustedScriptURLFromString(url: string): TrustedScriptURL|string {\n return getPolicy()?.createScriptURL(url) || url;\n}\n\n/**\n * Unsafely call the Function constructor with the given string arguments. It\n * is only available in development mode, and should be stripped out of\n * production code.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that it\n * is only called from development code, as use in production code can lead to\n * XSS vulnerabilities.\n */\nexport function newTrustedFunctionForDev(...args: string[]): Function {\n if (typeof ngDevMode === 'undefined') {\n throw new Error('newTrustedFunctionForDev should never be called in production');\n }\n if (!global.trustedTypes) {\n // In environments that don't support Trusted Types, fall back to the most\n // straightforward implementation:\n return new Function(...args);\n }\n\n // Chrome currently does not support passing TrustedScript to the Function\n // constructor. The following implements the workaround proposed on the page\n // below, where the Chromium bug is also referenced:\n // https://github.com/w3c/webappsec-trusted-types/wiki/Trusted-Types-for-function-constructor\n const fnArgs = args.slice(0, -1).join(',');\n const fnBody = args[args.length - 1];\n const body = `(function anonymous(${fnArgs}\n) { ${fnBody}\n})`;\n\n // Using eval directly confuses the compiler and prevents this module from\n // being stripped out of JS binaries even if not used. The global['eval']\n // indirection fixes that.\n const fn = global['eval'](trustedScriptFromString(body) as string) as Function;\n if (fn.bind === undefined) {\n // Workaround for a browser bug that only exists in Chrome 83, where passing\n // a TrustedScript to eval just returns the TrustedScript back without\n // evaluating it. In that case, fall back to the most straightforward\n // implementation:\n return new Function(...args);\n }\n\n // To completely mimic the behavior of calling \"new Function\", two more\n // things need to happen:\n // 1. Stringifying the resulting function should return its source code\n fn.toString = () => body;\n // 2. When calling the resulting function, `this` should refer to `global`\n return fn.bind(global);\n\n // When Trusted Types support in Function constructors is widely available,\n // the implementation of this function can be simplified to:\n // return new Function(...args.map(a => trustedScriptFromString(a)));\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 * @fileoverview\n * A module to facilitate use of a Trusted Types policy internally within\n * Angular specifically for bypassSecurityTrust* and custom sanitizers. It\n * lazily constructs the Trusted Types policy, providing helper utilities for\n * promoting strings to Trusted Types. When Trusted Types are not available,\n * strings are used as a fallback.\n * @security All use of this module is security-sensitive and should go through\n * security review.\n */\n\nimport {global} from '../global';\nimport {TrustedHTML, TrustedScript, TrustedScriptURL, TrustedTypePolicy, TrustedTypePolicyFactory} from './trusted_type_defs';\n\n/**\n * The Trusted Types policy, or null if Trusted Types are not\n * enabled/supported, or undefined if the policy has not been created yet.\n */\nlet policy: TrustedTypePolicy|null|undefined;\n\n/**\n * Returns the Trusted Types policy, or null if Trusted Types are not\n * enabled/supported. The first call to this function will create the policy.\n */\nfunction getPolicy(): TrustedTypePolicy|null {\n if (policy === undefined) {\n policy = null;\n if (global.trustedTypes) {\n try {\n policy = (global.trustedTypes as TrustedTypePolicyFactory)\n .createPolicy('angular#unsafe-bypass', {\n createHTML: (s: string) => s,\n createScript: (s: string) => s,\n createScriptURL: (s: string) => s,\n });\n } catch {\n // trustedTypes.createPolicy throws if called with a name that is\n // already registered, even in report-only mode. Until the API changes,\n // catch the error not to break the applications functionally. In such\n // cases, the code will fall back to using strings.\n }\n }\n }\n return policy;\n}\n\n/**\n * Unsafely promote a string to a TrustedHTML, falling back to strings when\n * Trusted Types are not available.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that it\n * is only passed strings that come directly from custom sanitizers or the\n * bypassSecurityTrust* functions.\n */\nexport function trustedHTMLFromStringBypass(html: string): TrustedHTML|string {\n return getPolicy()?.createHTML(html) || html;\n}\n\n/**\n * Unsafely promote a string to a TrustedScript, falling back to strings when\n * Trusted Types are not available.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that it\n * is only passed strings that come directly from custom sanitizers or the\n * bypassSecurityTrust* functions.\n */\nexport function trustedScriptFromStringBypass(script: string): TrustedScript|string {\n return getPolicy()?.createScript(script) || script;\n}\n\n/**\n * Unsafely promote a string to a TrustedScriptURL, falling back to strings\n * when Trusted Types are not available.\n * @security This is a security-sensitive function; any use of this function\n * must go through security review. In particular, it must be assured that it\n * is only passed strings that come directly from custom sanitizers or the\n * bypassSecurityTrust* functions.\n */\nexport function trustedScriptURLFromStringBypass(url: string): TrustedScriptURL|string {\n return getPolicy()?.createScriptURL(url) || url;\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\nexport const enum BypassType {\n Url = 'URL',\n Html = 'HTML',\n ResourceUrl = 'ResourceURL',\n Script = 'Script',\n Style = 'Style',\n}\n\n/**\n * Marker interface for a value that's safe to use in a particular context.\n *\n * @publicApi\n */\nexport interface SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as HTML.\n *\n * @publicApi\n */\nexport interface SafeHtml extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as style (CSS).\n *\n * @publicApi\n */\nexport interface SafeStyle extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as JavaScript.\n *\n * @publicApi\n */\nexport interface SafeScript extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as a URL linking to a document.\n *\n * @publicApi\n */\nexport interface SafeUrl extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as a URL to load executable code from.\n *\n * @publicApi\n */\nexport interface SafeResourceUrl extends SafeValue {}\n\n\nabstract class SafeValueImpl implements SafeValue {\n constructor(public changingThisBreaksApplicationSecurity: string) {}\n\n abstract getTypeName(): string;\n\n toString() {\n return `SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity}` +\n ` (see https://g.co/ng/security#xss)`;\n }\n}\n\nclass SafeHtmlImpl extends SafeValueImpl implements SafeHtml {\n override getTypeName() {\n return BypassType.Html;\n }\n}\nclass SafeStyleImpl extends SafeValueImpl implements SafeStyle {\n override getTypeName() {\n return BypassType.Style;\n }\n}\nclass SafeScriptImpl extends SafeValueImpl implements SafeScript {\n override getTypeName() {\n return BypassType.Script;\n }\n}\nclass SafeUrlImpl extends SafeValueImpl implements SafeUrl {\n override getTypeName() {\n return BypassType.Url;\n }\n}\nclass SafeResourceUrlImpl extends SafeValueImpl implements SafeResourceUrl {\n override getTypeName() {\n return BypassType.ResourceUrl;\n }\n}\n\nexport function unwrapSafeValue(value: SafeValue): string;\nexport function unwrapSafeValue(value: T): T;\nexport function unwrapSafeValue(value: T|SafeValue): T {\n return value instanceof SafeValueImpl ? value.changingThisBreaksApplicationSecurity as any as T :\n value as any as T;\n}\n\n\nexport function allowSanitizationBypassAndThrow(\n value: any, type: BypassType.Html): value is SafeHtml;\nexport function allowSanitizationBypassAndThrow(\n value: any, type: BypassType.ResourceUrl): value is SafeResourceUrl;\nexport function allowSanitizationBypassAndThrow(\n value: any, type: BypassType.Script): value is SafeScript;\nexport function allowSanitizationBypassAndThrow(\n value: any, type: BypassType.Style): value is SafeStyle;\nexport function allowSanitizationBypassAndThrow(value: any, type: BypassType.Url): value is SafeUrl;\nexport function allowSanitizationBypassAndThrow(value: any, type: BypassType): boolean;\nexport function allowSanitizationBypassAndThrow(value: any, type: BypassType): boolean {\n const actualType = getSanitizationBypassType(value);\n if (actualType != null && actualType !== type) {\n // Allow ResourceURLs in URL contexts, they are strictly more trusted.\n if (actualType === BypassType.ResourceUrl && type === BypassType.Url) return true;\n throw new Error(\n `Required a safe ${type}, got a ${actualType} (see https://g.co/ng/security#xss)`);\n }\n return actualType === type;\n}\n\nexport function getSanitizationBypassType(value: any): BypassType|null {\n return value instanceof SafeValueImpl && value.getTypeName() as BypassType || null;\n}\n\n/**\n * Mark `html` string as trusted.\n *\n * This function wraps the trusted string in `String` and brands it in a way which makes it\n * recognizable to {@link htmlSanitizer} to be trusted implicitly.\n *\n * @param trustedHtml `html` string which needs to be implicitly trusted.\n * @returns a `html` which has been branded to be implicitly trusted.\n */\nexport function bypassSanitizationTrustHtml(trustedHtml: string): SafeHtml {\n return new SafeHtmlImpl(trustedHtml);\n}\n/**\n * Mark `style` string as trusted.\n *\n * This function wraps the trusted string in `String` and brands it in a way which makes it\n * recognizable to {@link styleSanitizer} to be trusted implicitly.\n *\n * @param trustedStyle `style` string which needs to be implicitly trusted.\n * @returns a `style` hich has been branded to be implicitly trusted.\n */\nexport function bypassSanitizationTrustStyle(trustedStyle: string): SafeStyle {\n return new SafeStyleImpl(trustedStyle);\n}\n/**\n * Mark `script` string as trusted.\n *\n * This function wraps the trusted string in `String` and brands it in a way which makes it\n * recognizable to {@link scriptSanitizer} to be trusted implicitly.\n *\n * @param trustedScript `script` string which needs to be implicitly trusted.\n * @returns a `script` which has been branded to be implicitly trusted.\n */\nexport function bypassSanitizationTrustScript(trustedScript: string): SafeScript {\n return new SafeScriptImpl(trustedScript);\n}\n/**\n * Mark `url` string as trusted.\n *\n * This function wraps the trusted string in `String` and brands it in a way which makes it\n * recognizable to {@link urlSanitizer} to be trusted implicitly.\n *\n * @param trustedUrl `url` string which needs to be implicitly trusted.\n * @returns a `url` which has been branded to be implicitly trusted.\n */\nexport function bypassSanitizationTrustUrl(trustedUrl: string): SafeUrl {\n return new SafeUrlImpl(trustedUrl);\n}\n/**\n * Mark `url` string as trusted.\n *\n * This function wraps the trusted string in `String` and brands it in a way which makes it\n * recognizable to {@link resourceUrlSanitizer} to be trusted implicitly.\n *\n * @param trustedResourceUrl `url` string which needs to be implicitly trusted.\n * @returns a `url` which has been branded to be implicitly trusted.\n */\nexport function bypassSanitizationTrustResourceUrl(trustedResourceUrl: string): SafeResourceUrl {\n return new SafeResourceUrlImpl(trustedResourceUrl);\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\nimport {trustedHTMLFromString} from '../util/security/trusted_types';\n\n/**\n * This helper is used to get hold of an inert tree of DOM elements containing dirty HTML\n * that needs sanitizing.\n * Depending upon browser support we use one of two strategies for doing this.\n * Default: DOMParser strategy\n * Fallback: InertDocument strategy\n */\nexport function getInertBodyHelper(defaultDoc: Document): InertBodyHelper {\n const inertDocumentHelper = new InertDocumentHelper(defaultDoc);\n return isDOMParserAvailable() ? new DOMParserHelper(inertDocumentHelper) : inertDocumentHelper;\n}\n\nexport interface InertBodyHelper {\n /**\n * Get an inert DOM element containing DOM created from the dirty HTML string provided.\n */\n getInertBodyElement: (html: string) => HTMLElement | null;\n}\n\n/**\n * Uses DOMParser to create and fill an inert body element.\n * This is the default strategy used in browsers that support it.\n */\nclass DOMParserHelper implements InertBodyHelper {\n constructor(private inertDocumentHelper: InertBodyHelper) {}\n\n getInertBodyElement(html: string): HTMLElement|null {\n // We add these extra elements to ensure that the rest of the content is parsed as expected\n // e.g. leading whitespace is maintained and tags like `` do not get hoisted to the\n // `` tag. Note that the `` tag is closed implicitly to prevent unclosed tags\n // in `html` from consuming the otherwise explicit `` tag.\n html = '' + html;\n try {\n const body = new window.DOMParser()\n .parseFromString(trustedHTMLFromString(html) as string, 'text/html')\n .body as HTMLBodyElement;\n if (body === null) {\n // In some browsers (e.g. Mozilla/5.0 iPad AppleWebKit Mobile) the `body` property only\n // becomes available in the following tick of the JS engine. In that case we fall back to\n // the `inertDocumentHelper` instead.\n return this.inertDocumentHelper.getInertBodyElement(html);\n }\n body.removeChild(body.firstChild!);\n return body;\n } catch {\n return null;\n }\n }\n}\n\n/**\n * Use an HTML5 `template` element, if supported, or an inert body element created via\n * `createHtmlDocument` to create and fill an inert DOM element.\n * This is the fallback strategy if the browser does not support DOMParser.\n */\nclass InertDocumentHelper implements InertBodyHelper {\n private inertDocument: Document;\n\n constructor(private defaultDoc: Document) {\n this.inertDocument = this.defaultDoc.implementation.createHTMLDocument('sanitization-inert');\n\n if (this.inertDocument.body == null) {\n // usually there should be only one body element in the document, but IE doesn't have any, so\n // we need to create one.\n const inertHtml = this.inertDocument.createElement('html');\n this.inertDocument.appendChild(inertHtml);\n const inertBodyElement = this.inertDocument.createElement('body');\n inertHtml.appendChild(inertBodyElement);\n }\n }\n\n getInertBodyElement(html: string): HTMLElement|null {\n // Prefer using