{"version":3,"file":"823.afe6d74f20e81734.js","mappings":"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","names":["deepCloneNode","node","clone","cloneNode","descendantsWithId","querySelectorAll","nodeName","toLowerCase","removeAttribute","i","length","transferCanvasData","transferInputData","transferData","selector","callback","descendantElements","cloneElements","cloneUniqueId","source","type","value","name","context","getContext","drawImage","getMutableClientRect","element","rect","getBoundingClientRect","top","right","bottom","left","width","height","x","y","isInsideClientRect","clientRect","adjustDomRect","domRect","isPointerNearDomRect","threshold","pointerX","pointerY","xThreshold","yThreshold","ParentPositionTracker","constructor","_document","this","positions","Map","clear","cache","elements","set","scrollPosition","getViewportScrollPosition","forEach","scrollTop","scrollLeft","handleScroll","event","target","_getEventTarget","cachedPosition","get","newTop","newLeft","viewportScrollPosition","topDifference","leftDifference","position","contains","window","scrollY","scrollX","getRootNode","viewRef","rootNodes","nodeType","ELEMENT_NODE","wrapper","createElement","appendChild","extendStyles","dest","importantProperties","key","hasOwnProperty","setProperty","has","removeProperty","toggleNativeDragInteractions","enable","userSelect","style","toggleVisibility","opacity","combineTransforms","transform","initialTransform","matchElementSize","sourceRect","getTransform","Math","round","parseCssTimeUnitsToMs","multiplier","indexOf","parseFloat","parseCssPropertyValue","computedStyle","getPropertyValue","split","map","part","trim","Set","PreviewRef","_preview","_rootElement","_direction","_initialDomRect","_previewTemplate","_previewClass","_pickupPositionOnPage","_initialTransform","_zIndex","attach","parent","_createPreview","supportsPopover","showPopover","destroy","_this$_previewEmbedde","remove","_previewEmbeddedView","setTransform","addClass","className","classList","add","getTransitionDuration","getTransformTransitionDurationInMs","getComputedStyle","transitionedProperties","property","find","prop","propertyIndex","rawDurations","rawDelays","addEventListener","handler","removeEventListener","previewConfig","previewClass","previewTemplate","template","preview","rootRect","matchSize","viewContainer","createEmbeddedView","detectChanges","margin","setAttribute","Array","isArray","passiveEventListenerOptions","normalizePassiveListenerOptions","passive","activeEventListenerOptions","activeCapturingEventOptions$1","capture","dragImportantProperties","DragRef","disabled","_disabled","_dropContainer","_toggleNativeDragInteractions","_handles","handle","_config","_ngZone","_viewportRuler","_dragDropRegistry","_passiveTransform","_activeTransform","_hasStartedDragging","signal","_moveEvents","Subject","_pointerMoveSubscription","Subscription","EMPTY","_pointerUpSubscription","_scrollSubscription","_resizeSubscription","_boundaryElement","_nativeInteractionsEnabled","_disabledHandles","dragStartDelay","scale","beforeStarted","started","released","ended","entered","exited","dropped","moved","_pointerDown","next","targetHandle","_getTargetHandle","_initializeDragSequence","_pointerMove","pointerPosition","_getPointerPositionOnPage","abs","dragStartThreshold","isDelayElapsed","Date","now","_dragStartTime","_getDragStartDelay","container","_endDragSequence","isDragging","isReceiving","cancelable","preventDefault","run","_startDragSequence","constrainedPointerPosition","_getConstrainedPointerPosition","_hasMoved","_lastKnownPointerPosition","_updatePointerDirectionDelta","_updateActiveDropContainer","offset","constrainPosition","activeTransform","_applyRootElementTransform","observers","distance","_getDragDistance","delta","_pointerDirectionDelta","_pointerUp","_nativeDragStart","withRootElement","withParent","parentDragRef","_parentPositions","registerDragItem","getPlaceholderElement","_placeholder","getRootElement","getVisibleElement","withHandles","handles","coerceElement","disabledHandles","withPreviewTemplate","withPlaceholderTemplate","_placeholderTemplate","rootElement","_removeRootElementListeners","runOutsideAngular","undefined","SVGElement","_ownerSVGElement","ownerSVGElement","withBoundaryElement","boundaryElement","unsubscribe","change","subscribe","_containInsideBoundaryOnResize","_parentDragRef","dispose","_this$_anchor","_this$_rootElement","_anchor","_destroyPreview","_destroyPlaceholder","removeDragItem","_removeListeners","complete","reset","disableHandle","enableHandle","delete","withDirection","direction","_withDropContainer","getFreeDragPosition","setFreeDragPosition","withPreviewContainer","_previewContainer","_sortFromLastPointerPosition","_this$_getShadowRoot","_getShadowRoot","shadowDomSelectStart","_this$_preview","_this$_placeholder","_this$_placeholderRef","_placeholderRef","stopDragging","webkitTapHighlightColor","_rootElementTapHighlight","_stopScrolling","_animatePreviewToPlaceholder","then","_cleanupDragArtifacts","_cleanupCachedDimensions","dropPoint","isTouchEvent","_lastTouchEventTime","shadowRoot","dropContainer","parentNode","placeholder","_createPlaceholderElement","anchor","createComment","insertBefore","zIndex","_getPreviewInsertionPoint","body","replaceChild","start","_initialContainer","_initialIndex","getItemIndex","getScrollableParents","referenceElement","stopPropagation","isTouchSequence","isAuxiliaryMouseButton","button","isSyntheticEvent","isFakeEvent","isFakeTouchstartFromScreenReader","isFakeMousedownFromScreenReader","draggable","rootStyles","pointerMove","pointerUp","scrolled","scrollEvent","_updateOnScroll","_boundaryRect","_pickupPositionInElement","_getPointerPositionInElement","_pointerPositionAtLastDirectionChange","startDragging","_previewRect","currentIndex","isPointerOverContainer","_isOverContainer","item","previousIndex","previousContainer","drop","rawX","rawY","newContainer","_getSiblingContainerFromPosition","exit","enter","sortingDisabled","_startScrollingIfNecessary","_sortItem","_applyPreviewTransform","Promise","resolve","placeholderRect","duration","_this$_preview2","propertyName","clearTimeout","timeout","setTimeout","placeholderConfig","placeholderTemplate","pointerEvents","elementRect","handleElement","referenceRect","point","targetTouches","_getViewportScrollPosition","pageX","pageY","touches","changedTouches","svgMatrix","getScreenCTM","svgPoint","createSVGPoint","matrixTransform","inverse","dropContainerLock","lockAxis","pickupX","pickupY","boundaryRect","previewWidth","previewHeight","_getPreviewRect","minY","maxY","clamp$1","pointerPositionOnPage","positionSinceLastChange","changeX","changeY","pointerDirectionChangeThreshold","shouldEnable","styles","_this$_previewTemplat","currentPosition","pickupPosition","leftOverflow","rightOverflow","topOverflow","bottomOverflow","touch","mouse","scrollDifference","_this$_parentPosition","_cachedShadowRoot","initialParent","previewContainer","documentRef","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","min","max","moveItemInArray","array","fromIndex","toIndex","from","clamp","to","SingleAxisSortStrategy","_itemPositions","orientation","_previousSwap","drag","overlaps","items","withItems","sort","pointerDelta","siblings","newIndex","_getItemIndexFromPointerPosition","isHorizontal","findIndex","currentItem","siblingAtNewPosition","newPosition","itemOffset","_getItemOffsetPx","siblingOffset","_getSiblingOffsetPx","oldOrder","slice","sibling","index","isDraggedItem","elementToOffset","transformAmount","activeDraggables","_activeDraggables","newPositionReference","_shouldEnterAsFirstChild","splice","parentElement","_element","push","_cacheItemPositions","withSortPredicate","predicate","_sortPredicate","_this$_activeDraggabl","_this$_itemPositions$","p","getActiveItemsSnapshot","reverse","updateOnScroll","withElementContainer","elementToMeasure","a","b","immediateSibling","end","itemPositions","lastItemRect","firstItemRect","floor","MixedSortStrategy","deltaX","deltaY","_relatedNodes","childNodes","nextSibling","previousSwap","_activeItems","toSwapWith","current","overlapElement","after","before","newOverlapElement","_getRootNode","elementFromPoint","enterIndex","_getClosestItemIndexToPointer","targetItem","root","_rootNode","elementAtPoint","minDistance","Infinity","minIndex","hypot","AutoScrollVerticalDirection","NONE","UP","DOWN","AutoScrollHorizontalDirection","LEFT","RIGHT","DropListRef","autoScrollDisabled","autoScrollStep","enterPredicate","sortPredicate","sorted","receivingStarted","receivingStopped","_isDragging","_draggables","_siblings","_activeSiblings","_viewportScrollSubscription","_verticalScrollDirection","_horizontalScrollDirection","_stopScrollTimers","_scrollableElements","_startScrollInterval","interval","period","scheduler","asyncScheduler","timer","animationFrameScheduler","pipe","takeUntil","_scrollNode","scrollStep","scrollBy","coercedElement","withOrientation","registerDropContainer","removeDropContainer","_draggingStarted","_notifyReceivingSiblings","_sortStrategy","_cacheParentPositions","_reset","previousItems","filter","every","connectedTo","strategy","_container","withScrollableParents","oldContainerIndex","newContainerIndex","unshift","size","_domRect","result","scrollNode","verticalScrollDirection","horizontalScrollDirection","getElementScrollDirections","computedVertical","getVerticalScrollDirection","computedHorizontal","getHorizontalScrollDirection","scrollHeight","clientHeight","scrollWidth","clientWidth","getViewportSize","_initialScrollSnap","msScrollSnapType","scrollSnapType","_listenToScrollEvents","_stopReceiving","_canReceive","_startReceiving","activeSiblings","initiator","receiver","draggedItems","activeCapturingEventOptions","activeApps","_ResetsLoader","_ResetsLoader2","ɵfac","__ngFactoryType__","ɵcmp","i0","selectors","hostAttrs","standalone","features","decls","vars","rf","ctx","encapsulation","changeDetection","DragDropRegistry","_DragDropRegistry","_appRef","inject","ApplicationRef","_environmentInjector","EnvironmentInjector","_dropInstances","_dragInstances","_activeDragInstances","_globalListeners","_draggingPredicate","scroll","_preventDefaultWhileDragging","_persistentTouchmoveListener","some","_loadResets","update","instances","startsWith","e","options","config","_clearGlobalListeners","streams","Observable","observer","eventOptions","merge","ngOnDestroy","instance","componentRef","createComponent","environmentInjector","onDestroy","DOCUMENT","ɵprov","token","factory","providedIn","DEFAULT_CONFIG","DragDrop","_DragDrop","createDrag","createDropList","i1","CDK_DRAG_PARENT","InjectionToken","CDK_DRAG_HANDLE","CDK_DRAG_CONFIG","CDK_DROP_LIST","CdkDrag","_CdkDrag","_dragRef","_viewContainerRef","_dir","dragDrop","_changeDetectorRef","_selfHandle","_parentDrag","_destroyed","BehaviorSubject","EventEmitter","subscription","movedEvent","_injector","Injector","data","_assignDefaults","_dropListRef","addItem","_syncInputs","_handleEvents","ngAfterViewInit","afterNextRender","_updateRootElement","_setupHandlesListener","freeDragPosition","injector","ngOnChanges","changes","rootSelectorChange","rootElementSelector","positionChange","firstChange","removeItem","_addHandle","getValue","_removeHandle","_setPreviewTemplate","_resetPreviewTemplate","_setPlaceholderTemplate","_resetPlaceholderTemplate","nativeElement","_element$parentElemen","closest","_getBoundaryElement","boundary","ref","dir","templateRef","coerceNumberProperty","take","_CdkDrag$_dragInstanc","startEvent","emit","markForCheck","releaseEvent","endEvent","enterEvent","exitEvent","dropEvent","draggingDisabled","tap","handleElements","switchMap","_stateChanges","startWith","handleInstance","dragRef","i1$1","ɵdir","hostVars","hostBindings","inputs","booleanAttribute","numberAttribute","outputs","exportAs","provide","useExisting","CDK_DROP_LIST_GROUP","_uniqueIdCounter","CdkDropList","_CdkDropList","_group","_scrollDispatcher","id","_unsortedItems","_setupInputSyncSubscription","_dropLists","_items","_syncItemsWithRef","getSortedItems","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","coerceArray","list","_scrollableParentsResolved","scrollableParents","getAncestorScrollContainers","scrollable","getElementRef","elementContainerSelector","querySelector","listAutoScrollDisabled","listOrientation","useValue","DragDropModule","_DragDropModule","ɵmod","ɵinj","providers","imports","CdkScrollableModule","_c0","_c1","_MatChip_Conditional_3_Template","_MatChip_Conditional_7_Template","_MatChipOption_Conditional_3_Template","_MatChipOption_Conditional_7_Template","_c5","MAT_CHIPS_DEFAULT_OPTIONS","separatorKeyCodes","ENTER","MAT_CHIP_AVATAR","MAT_CHIP_TRAILING_ICON","MAT_CHIP_REMOVE","MAT_CHIP","MatChipAction","_MatChipAction","_parentChip","_getDisabledAttribute","_allowFocusWhenDisabled","_getTabindex","isInteractive","tabIndex","toString","_elementRef","_isPrimary","focus","_handleClick","_handlePrimaryActionInteraction","_handleKeydown","keyCode","SPACE","_isEditing","$event","uid","MatChip","_MatChip","_hasFocus","_hasFocusInternal","_value","_textElement","textContent","ripple","_this$_rippleLoader","_rippleLoader","getRipple","v","_this$_rippleLoader2","attachRipple","_focusMonitor","animationMode","_globalRippleOptions","_this$_rippleLoader3","_onFocus","_onBlur","role","ariaLabel","ariaDescription","_ariaDescriptionId","removable","highlighted","disableRipple","removed","destroyed","basicChipAttrName","MatRippleLoader","_animationsDisabled","_monitorFocus","configureRipple","_isRippleDisabled","ngOnInit","_isBasicChip","hasAttribute","tagName","_pendingFocus","ngAfterContentInit","_actionChanges","_allLeadingIcons","_allTrailingIcons","_allRemoveIcons","ngDoCheck","setDisabled","_this$_rippleLoader4","_this$_actionChanges","stopMonitoring","destroyRipple","chip","_this$_globalRippleOp","_hasTrailingIcon","trailingIcon","removeIcon","BACKSPACE","repeat","DELETE","primaryAction","_getSourceAction","_getActions","action","monitor","origin","hasFocus","ANIMATION_MODULE_TYPE","MAT_RIPPLE_GLOBAL_OPTIONS","contentQueries","dirIndex","_t","leadingIcon","first","viewQuery","color","ngContentSelectors","consts","dependencies","MatChipOption","_MatChipOption","_this$_defaultOptions","_this$_defaultOptions2","super","arguments","_defaultOptions","optional","chipListSelectable","_chipListMultiple","_chipListHideSingleSelectionIndicator","hideSingleSelectionIndicator","_selectable","_selected","selectionChange","selectable","selected","_setSelectedState","ariaSelected","select","deselect","selectViaInteraction","toggleSelected","isUserInput","_hasLeadingGraphic","isSelected","emitEvent","ɵ_MatChipOption_BaseFactory","MatChipSet","_MatChipSet","chipFocusChanges","_getChipStream","chipDestroyedChanges","chipRemovedChanges","_syncChipsState","empty","_chips","_explicitRole","_defaultRole","focused","_hasFocusedChip","_lastDestroyedFocusedChipIndex","_chipActions","QueryList","_setUpFocusManagement","_trackChipSetChanges","_trackDestroyedFocusedChip","_this$_keyManager","_keyManager","_originatesFromChip","onKeydown","_isValidIndex","_allowFocusEscape","previousTabIndex","mappingFunction","currentElement","_this$_dir","chips","actions","notifyOnChanges","FocusKeyManager","withVerticalOrientation","withHorizontalOrientation","withHomeAndEnd","skipPredicate","_skipPredicate","document","activeElement","updateActiveItem","_redirectDestroyedChipFocus","chipIndex","toArray","chipToFocus","setPreviousItemActive","MatChipListboxChange","MAT_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR","NG_VALUE_ACCESSOR","forwardRef","MatChipListbox","multi","_MatChipListbox","_this$_defaultOptions3","_this$_defaultOptions4","_onTouched","_onChange","_multiple","ariaOrientation","compareWith","o1","o2","required","_hideSingleSelectionIndicator","multiple","_syncListboxProperties","selectedChips","chipSelectionChanges","chipBlurChanges","writeValue","_pendingInitialValue","_setSelectionByValue","_blur","_propagateChanges","firstSelectedChip","_getFirstSelectedChip","setFirstItemActive","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","_clearSelection","currentValue","_selectValue","_markAsTouched","_keydown","TAB","valueToEmit","skip","correspondingChip","ɵ_MatChipListbox_BaseFactory","_ariaDescribedby","MatChipsModule","_MatChipsModule","ErrorStateMatcher","MatCommonModule","MatRippleModule","nextId","BADGE_CONTENT_CLASS","badgeApps","_MatBadgeStyleLoader","_MatBadgeStyleLoader2","MatBadge","_MatBadge","_color","_setColor","content","_content","newContent","_updateRenderedContent","description","_description","newDescription","_updateDescription","_ariaDescriber","_renderer","_animationMode","overlap","_id","_isInitialized","_interactivityChecker","InteractivityChecker","appRef","isAbove","isAfter","getBadgeElement","_badgeElement","_clearExistingBadges","_createBadgeElement","_this$_inlineBadgeDes","destroyNode","_inlineBadgeDescription","removeDescription","_isHostInteractive","isFocusable","ignoreVisibility","badgeElement","activeClass","requestAnimationFrame","newContentNormalized","_removeInlineDescription","describe","_updateInlineDescription","_this$_badgeElement","_this$_inlineBadgeDes2","colorPalette","badges","hidden","MatBadgeModule","_MatBadgeModule","A11yModule","_MatProgressBar_Conditional_2_Template","MAT_PROGRESS_BAR_DEFAULT_OPTIONS","MatProgressBar","_MatProgressBar","defaults","_isNoopAnimation","_defaultColor","_bufferValue","animationEnd","_mode","_transitionendHandler","mode","bufferValue","_getPrimaryBarTransform","_isIndeterminate","_getBufferBarFlexBasis","MatProgressBarModule","_MatProgressBarModule","_CdkTable_Conditional_2_Template","_CdkTable_Conditional_3_Template","_CdkTable_Conditional_4_Template","CDK_TABLE","CdkCellDef","_CdkCellDef","CdkHeaderCellDef","_CdkHeaderCellDef","CdkFooterCellDef","_CdkFooterCellDef","CdkColumnDef","_CdkColumnDef","_name","_setNameInput","sticky","_sticky","_hasStickyChanged","stickyEnd","_stickyEnd","_table","hasStickyChanged","resetStickyChanged","_updateColumnCssClassName","_columnCssClassName","cssClassFriendlyName","replace","cell","headerCell","footerCell","BaseCdkCell","columnDef","elementRef","CdkHeaderCell","_CdkHeaderCell","CdkFooterCell","_CdkFooterCell","_columnDef$_table","_getCellRole","CdkCell","_CdkCell","_columnDef$_table2","_Schedule","tasks","endTasks","_COALESCED_STYLE_SCHEDULER","_CoalescedStyleScheduler","_CoalescedStyleScheduler2","_unusedNgZone","_currentSchedule","NgZone","schedule","task","_createScheduleIfNeeded","scheduleEnd","queueMicrotask","BaseRowDef","_BaseRowDef","_differs","_columnsDiffer","columns","create","diff","getColumnsDiff","extractCellTemplate","column","CdkHeaderRowDef","CdkFooterRowDef","_CdkHeaderRowDef","_CdkFooterRowDef","CdkRowDef","_CdkRowDef","when","CdkCellOutlet","_CdkCellOutlet","_viewContainer","mostRecentCellOutlet","CdkHeaderRow","_CdkHeaderRow","CdkFooterRow","_CdkFooterRow","CdkRow","_CdkRow","CdkNoDataRow","_CdkNoDataRow","_contentClassName","STICKY_DIRECTIONS","StickyStyler","_isNativeHtmlTable","_stickCellCss","_coalescedStyleScheduler","_isBrowser","_needsPositionStickyOnElement","_positionListener","_cachedCellWidths","_borderCellCss","clearStickyPositioning","rows","stickyDirections","elementsToClear","row","children","_removeStickyStyle","updateStickyColumns","stickyStartStates","stickyEndStates","recalculateCellWidths","state","firstRow","numCells","cellWidths","_getCellWidths","startPositions","_getStickyStartColumnPositions","endPositions","_getStickyEndColumnPositions","lastStickyStart","lastIndexOf","firstStickyEnd","isRtl","_addStickyStyle","stickyColumnsUpdated","sizes","stickyEndColumnsUpdated","stickRows","rowsToStick","stickyStates","states","stickyOffsets","stickyCellHeights","elementsToStick","rowIndex","stickyOffset","borderedRowIndex","isBorderedRowIndex","_this$_positionListen","_this$_positionListen2","stickyHeaderRowsUpdated","offsets","stickyFooterRowsUpdated","updateStickyFooterContainer","tableElement","tfoot","_getCalculatedZIndex","dirValue","isBorderElement","cssText","zIndexIncrements","firstRowCells","widths","nextPosition","STICKY_POSITIONING_LISTENER","DataRowOutlet","_DataRowOutlet","table","_rowOutlet","_outletAssigned","HeaderRowOutlet","_HeaderRowOutlet","_headerRowOutlet","FooterRowOutlet","_FooterRowOutlet","_footerRowOutlet","NoDataRowOutlet","_NoDataRowOutlet","_noDataRowOutlet","CdkTable","_CdkTable","_cellRoleInternal","getAttribute","cellRole","trackBy","_trackByFn","dataSource","_dataSource","_switchDataSource","multiTemplateDataRows","_multiTemplateDataRows","_forceRenderDataRows","updateStickyColumnStyles","fixedLayout","_fixedLayout","_forceRecalculateCellWidths","_stickyColumnStylesNeedReset","_platform","_viewRepeater","_stickyPositioningListener","_onDestroy","_columnDefsByName","_customColumnDefs","_customRowDefs","_customHeaderRowDefs","_customFooterRowDefs","_headerRowDefChanged","_footerRowDefChanged","_cachedRenderRowsMap","stickyCssClass","needsPositionStickyOnElement","_isShowingNoDataRow","_hasAllOutlets","_hasInitialized","contentChanged","viewChange","Number","MAX_VALUE","_isServer","isBrowser","_setupStickyStyler","_dataDiffer","_i","dataRow","dataIndex","ngAfterContentChecked","_canRender","_render","_this$_rowOutlet","_this$_headerRowOutle","_this$_footerRowOutle","def","_headerRowDefs","_footerRowDefs","_defaultRowDef","isDataSource","disconnect","renderRows","_renderRows","_getAllRenderRows","_updateNoDataRow","applyChanges","record","_adjustedPreviousIndex","_getEmbeddedViewArgs","operation","_ViewRepeaterOperation","INSERTED","_renderCellTemplateForItem","rowDef","_updateRowIndexContext","forEachIdentityChange","$implicit","addColumnDef","removeColumnDef","addRowDef","removeRowDef","addHeaderRowDef","headerRowDef","removeHeaderRowDef","addFooterRowDef","footerRowDef","removeFooterRowDef","setNoDataRow","noDataRow","_customNoDataRow","updateStickyHeaderRowStyles","headerRows","_getRenderedRows","thead","closestTableSection","display","_stickyStyler","updateStickyFooterRowStyles","footerRows","dataRows","headerRow","_addStickyColumnStyles","_rowDefs","footerRow","values","_cacheRowDefs","_cacheColumnDefs","rowDefsChanged","_renderUpdatedColumns","_forceRenderHeaderRows","_forceRenderFooterRows","_renderChangeSubscription","_observeRenderChanges","_checkStickyStates","prevCachedRenderRows","_data","renderRowsForData","_getRenderRowsForData","WeakMap","j","renderRow","_getRowDefs","cachedRenderRows","shift","mergeArrayAndSet","_getOwnDefs","_contentColumnDefs","_contentHeaderRowDefs","_contentFooterRowDefs","_contentRowDefs","defaultRowDefs","columnsDiffReducer","acc","dataColumnsChanged","reduce","headerColumnsChanged","footerColumnsChanged","dataStream","connect","isObservable","of","_renderRow","columnDefs","columnName","rowOutlet","renderedRows","rowDefs","outlet","view","cellTemplate","_getCellTemplates","renderIndex","count","last","even","odd","columnId","stickyCheckReducer","d","_noDataRow","shouldShow","rootNode","i2","_VIEW_REPEATER_STRATEGY","i3","useClass","_DisposeViewRepeaterStrategy","concat","section","uppercaseSection","toUpperCase","CdkTableModule","_CdkTableModule","ScrollingModule","_MatTable_Conditional_2_Template","_MatTable_Conditional_3_Template","_MatTable_Conditional_4_Template","MatTable","_MatTable","ɵ_MatTable_BaseFactory","MatCellDef","_MatCellDef","ɵ_MatCellDef_BaseFactory","MatHeaderCellDef","_MatHeaderCellDef","ɵ_MatHeaderCellDef_BaseFactory","MatFooterCellDef","_MatFooterCellDef","ɵ_MatFooterCellDef_BaseFactory","MatColumnDef","_MatColumnDef","ɵ_MatColumnDef_BaseFactory","MatHeaderCell","_MatHeaderCell","ɵ_MatHeaderCell_BaseFactory","MatFooterCell","_MatFooterCell","ɵ_MatFooterCell_BaseFactory","MatCell","_MatCell","ɵ_MatCell_BaseFactory","MatHeaderRowDef","_MatHeaderRowDef","ɵ_MatHeaderRowDef_BaseFactory","MatFooterRowDef","_MatFooterRowDef","ɵ_MatFooterRowDef_BaseFactory","MatRowDef","_MatRowDef","ɵ_MatRowDef_BaseFactory","MatHeaderRow","_MatHeaderRow","ɵ_MatHeaderRow_BaseFactory","MatFooterRow","_MatFooterRow","ɵ_MatFooterRow_BaseFactory","MatRow","_MatRow","ɵ_MatRow_BaseFactory","MatTableModule","_MatTableModule","MatTableDataSource","DataSource","_renderChangesSubscription","_filterData","_filter","_sort","_updateChangeSubscription","paginator","_paginator","initialData","_renderData","_internalPageChanges","sortingDataAccessor","sortHeaderId","_isNumberValue","numberValue","sortData","active","valueA","valueB","valueAType","valueBType","comparatorResult","filterPredicate","dataStr","Object","keys","currentTerm","transformedFilter","_this$_renderChangesS","sortChange","initialized","pageChange","page","filteredData","combineLatest","orderedData","_orderData","paginatedData","_pageData","obj","_updatePaginator","startIndex","pageIndex","pageSize","filteredDataLength","lastPageIndex","ceil","newPageIndex","_this$_renderChangesS2","pairwise","operate","subscriber","prev","hasPrev","createOperatorSubscriber","HEADER_CELL_SELECTOR","HEADER_ROW_SELECTOR","_curr$closest","_curr","curr","Element","HOVER_OR_ACTIVE_CLASS","ColumnResize","_ColumnResize","selectorId","getUniqueCssClass","_listenForRowHoverEvents","_listenForResizeActivity","_listenForHoverActivity","setResized","ngZone","fromEvent","eventDispatcher","headerCellHovered","relatedTarget","matches","mapTo","overlayHandleActiveForCell","notifier","triggerResize","resizeCompleted","headerRowHoveredOrActiveDistinct","previousRow","hoveredRow","ColumnResizeNotifierSource","_ColumnResizeNotifierSource","resizeCanceled","ColumnResizeNotifier","_ColumnResizeNotifier","_source","resize","completeImmediately","isStickyColumn","HeaderRowEventDispatcher","_HeaderRowEventDispatcher","headerCellHoveredDistinct","distinctUntilChanged","share","hovered","_headerRowHoveredOrActiveDistinctReenterZone","_enterZone","_lastSeenRow","_lastSeenRowHover","resizeOverlayVisibleForHeaderRow","error","err","ResizeStrategy","_ResizeStrategy","_pendingResizeDelta","updateTableWidthAndStickyColumns","_this$_pendingResizeD","columnResize","tableWidth","getElementWidth","styleScheduler","coerceCssPixelValue","TableLayoutFixedResizeStrategy","_TableLayoutFixedResizeStrategy","applyColumnSize","_","columnHeader","sizeInPx","previousSizeInPx","applyMinColumnSize","currentWidth","newWidth","applyMaxColumnSize","coercePixelsFromCssValue","cssValue","_cssValue$match","match","offsetWidth","TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER","ResizeRef","overlayRef","minWidthPx","maxWidthPx","OVERLAY_ACTIVE_CLASS","Resizable","_Resizable","isResizable","minWidthPxInternal","maxWidthPxInternal","MAX_SAFE_INTEGER","_viewInitialized","_isDestroyed","_applyMinWidthPx","_applyMaxWidthPx","_listenForResizeEvents","_appendInlineHandle","_this$inlineHandle","_this$overlayRef","inlineHandle","_createOverlayForHandle","directionality","positionStrategy","overlay","flexibleConnectedTo","withFlexibleDimensions","withGrowAfterOpen","withPush","withDefaultOffsetX","withPositions","originX","originY","overlayX","overlayY","disposeOnNavigation","scrollStrategy","scrollStrategies","reposition","takeUntilDestroyed","hoveringRow","_showHandleOverlay","detach","resizeNotifier","columnSize","previousSize","_applySize","_completeResizeOperation","_cleanUpAfterResize","hasAttached","_updateOverlayHandleHeight","updatePosition","_createHandlePortal","ComponentPortal","getOverlayHandleComponentType","viewContainerRef","changeDetectorRef","updateSize","offsetHeight","sizeInPixels","sizeToApply","resizeStrategy","getInlineHandleCssClassName","ResizeOverlayHandle","_ResizeOverlayHandle","_listenForMouseEvents","resizeRef","mousedownEvent","_dragStarted","mouseup","mousemove","escape","ESCAPE","startX","screenX","initialSize","_getOriginWidth","overlayOffset","originOffset","_getOriginOffset","overshot","updateResizeActive","_notifyResizeEnded","prevX","currX","remainingOvershot","computedNewSize","_isLtr","originNewSize","originNewOffset","originOffsetDeltaX","originSizeDeltaX","_updateOverlayOffset","offsetLeft","overlayElement","completedSuccessfully","sizeMessage","range","valueFunction","valuesArray","String","MtxToObservablePipe","_MtxToObservablePipe","ɵpipe","pure","MtxIsTemplateRefPipe","_MtxIsTemplateRefPipe","TemplateRef","MtxPipesModule","_MtxPipesModule","CommonModule","_MtxDialogContainer_Conditional_0_Conditional_5_Template","_r1","ctx_r1","_onClose","_MtxDialogContainer_Conditional_0_Template","title","showCloseIcon","_MtxDialogContainer_Conditional_1_Template","_MtxDialogContainer_For_4_Case_0_Conditional_0_Template","_r3","btn_r4","_onClick","onClick","class","text","_MtxDialogContainer_For_4_Case_0_Conditional_1_Template","_r5","_MtxDialogContainer_For_4_Case_0_Template","focusInitial","_MtxDialogContainer_For_4_Case_1_Conditional_0_Template","_r6","_MtxDialogContainer_For_4_Case_1_Conditional_1_Template","_r7","_MtxDialogContainer_For_4_Case_1_Template","_MtxDialogContainer_For_4_Case_2_Conditional_0_Template","_r8","_MtxDialogContainer_For_4_Case_2_Conditional_1_Template","_r9","_MtxDialogContainer_For_4_Case_2_Template","_MtxDialogContainer_For_4_Case_3_Conditional_0_Template","_r10","_MtxDialogContainer_For_4_Case_3_Conditional_1_Template","_r11","_MtxDialogContainer_For_4_Case_3_Template","_MtxDialogContainer_For_4_Template","tmp_10_0","MtxDialogContainer","_MtxDialogContainer","dialogRef","call","close","MAT_DIALOG_DATA","buttons","AsyncPipe","MatButton","MatIconButton","MatIcon","disableClose","MtxDialog","_MtxDialog","dialog","originalOpen","componentOrTemplateRef","open","assign","alert","onOk","confirm","onClose","MtxDialogModule","_MtxDialogModule","MatDialogModule","MatButtonModule","MatIconModule","a0","_c2","a1","a2","a3","a4","_MtxGridCell_Conditional_0_Template","ctx_r0","_getFormatterTooltip","colDef","_getText","_MtxGridCell_Conditional_1_Conditional_0_Template","formatter","rowData","_MtxGridCell_Conditional_1_Conditional_1_Case_0_For_1_Conditional_0_Case_0_mat_icon_24_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_0_For_1_Conditional_0_Case_0_Template","_r2","btn_r3","_onActionClick","iconTpl_r4","rowChangeRecord","message","hideDelay","showDelay","positionAtOrigin","touchGestures","_MtxGridCell_Conditional_1_Conditional_1_Case_0_For_1_Conditional_0_Case_1_mat_icon_24_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_0_For_1_Conditional_0_Case_1_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_0_For_1_Conditional_0_Case_2_mat_icon_24_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_0_For_1_Conditional_0_Case_2_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_0_For_1_Conditional_0_Case_3_mat_icon_24_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_0_For_1_Conditional_0_Case_3_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_0_For_1_Conditional_0_Case_4_mat_icon_24_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_0_For_1_Conditional_0_Case_4_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_0_For_1_Conditional_0_Case_5_mat_icon_24_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_0_For_1_Conditional_0_Case_5_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_0_For_1_Conditional_0_Case_6_mat_icon_24_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_0_For_1_Conditional_0_Case_6_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_0_For_1_Conditional_0_Template","tmp_15_0","_MtxGridCell_Conditional_1_Conditional_1_Case_0_For_1_Template","iif","_MtxGridCell_Conditional_1_Conditional_1_Case_0_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_1_Conditional_0_Template","tag","_MtxGridCell_Conditional_1_Conditional_1_Case_1_Conditional_1_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_1_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_2_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_3_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_4_Template","_getTooltip","_MtxGridCell_Conditional_1_Conditional_1_Case_5_Template","typeParameter","digitsInfo","locale","_MtxGridCell_Conditional_1_Conditional_1_Case_6_Template","currencyCode","_MtxGridCell_Conditional_1_Conditional_1_Case_7_Template","_MtxGridCell_Conditional_1_Conditional_1_Case_8_Template","format","timezone","_MtxGridCell_Conditional_1_Conditional_1_Case_9_Template","_MtxGridCell_Conditional_1_Conditional_1_Template","tmp_3_0","_MtxGridCell_Conditional_1_Template","_MtxGridCell_ng_template_2_Conditional_0_Template","btn_r11","icon","_MtxGridCell_ng_template_2_Conditional_1_Template","fontIcon","_MtxGridCell_ng_template_2_Conditional_2_Template","svgIcon","_MtxGridCell_ng_template_2_Template","_c3","_MtxGridColumnMenu_Case_0_Conditional_1_Template","buttonIcon","_MtxGridColumnMenu_Case_0_Template","menu_r3","buttonClass","buttonColor","buttonText","_MtxGridColumnMenu_Case_1_Conditional_1_Template","_MtxGridColumnMenu_Case_1_Template","_MtxGridColumnMenu_Case_2_Conditional_1_Template","_MtxGridColumnMenu_Case_2_Template","_MtxGridColumnMenu_Case_3_Conditional_1_Template","_MtxGridColumnMenu_Case_3_Template","_MtxGridColumnMenu_Case_4_Conditional_1_Template","_MtxGridColumnMenu_Case_4_Template","_MtxGridColumnMenu_Case_5_Conditional_1_Template","_MtxGridColumnMenu_Case_5_Template","_MtxGridColumnMenu_Case_6_Conditional_1_Template","_MtxGridColumnMenu_Case_6_Template","_MtxGridColumnMenu_Conditional_10_Conditional_1_ng_template_0_Template","_MtxGridColumnMenu_Conditional_10_Conditional_1_Template","headerTemplate","_MtxGridColumnMenu_Conditional_10_Conditional_2_Template","headerText","_MtxGridColumnMenu_Conditional_10_Template","_MtxGridColumnMenu_Conditional_12_For_2_ng_template_3_Template","_MtxGridColumnMenu_Conditional_12_For_2_Template","col_r5","checkboxList_r6","selectableChecked","show","hide","_MtxGridColumnMenu_Conditional_12_Template","_r4","_handleDroped","_MtxGridColumnMenu_Conditional_13_For_2_ng_template_1_Template","_MtxGridColumnMenu_Conditional_13_For_2_Template","col_r7","_MtxGridColumnMenu_Conditional_13_Template","_MtxGridColumnMenu_Conditional_14_Conditional_1_ng_template_0_Template","_MtxGridColumnMenu_Conditional_14_Conditional_1_Template","footerTemplate","_MtxGridColumnMenu_Conditional_14_Conditional_2_Template","footerText","_MtxGridColumnMenu_Conditional_14_Template","_MtxGridColumnMenu_ng_template_15_Conditional_0_Conditional_1_Template","_MtxGridColumnMenu_ng_template_15_Conditional_0_Conditional_2_Template","_MtxGridColumnMenu_ng_template_15_Conditional_0_For_6_Conditional_2_Template","_MtxGridColumnMenu_ng_template_15_Conditional_0_For_6_Template","item_r9","col_r10","_handlePinSelect","pinned","label","_MtxGridColumnMenu_ng_template_15_Conditional_0_Template","pinList_r11","pinOptions","_MtxGridColumnMenu_ng_template_15_Conditional_1_Template","_r12","_handleChecked","header","_MtxGridColumnMenu_ng_template_15_Conditional_2_Template","_MtxGridColumnMenu_ng_template_15_Template","pinnable","_c4","_c6","_c7","_c8","_c9","_c10","_c11","colData","_c12","_c13","expanded","_c14","_MtxGrid_Conditional_0_Template","_MtxGrid_Conditional_1_Conditional_2_ng_template_0_Template","_MtxGrid_Conditional_1_Conditional_2_Template","toolbarTemplate","_MtxGrid_Conditional_1_Conditional_3_Conditional_0_Template","toolbarTitle","_MtxGrid_Conditional_1_Conditional_3_Template","_MtxGrid_Conditional_1_Conditional_5_Template","_onColumnChange","columnMenuButtonText","columnMenuButtonType","columnMenuButtonColor","columnMenuButtonClass","columnMenuButtonIcon","columnHideable","columnHideableChecked","columnSortable","columnPinnable","showColumnMenuHeader","columnMenuHeaderText","columnMenuHeaderTemplate","showColumnMenuFooter","columnMenuFooterText","columnMenuFooterTemplate","columnPinOptions","_MtxGrid_Conditional_1_Template","showColumnMenuButton","_MtxGrid_Conditional_6_Conditional_1_th_1_Conditional_1_Template","_toggleMasterCheckbox","rowSelection","hasValue","_isAllSelected","_MtxGrid_Conditional_6_Conditional_1_th_1_Template","multiSelectable","_MtxGrid_Conditional_6_Conditional_1_td_2_Conditional_1_Template","row_r6","_toggleNormalCheckbox","ctx_r6","index_r8","dataIndex_r9","rowSelectionFormatter","_getIndex","_MtxGrid_Conditional_6_Conditional_1_td_2_Template","hideCheckbox","_MtxGrid_Conditional_6_Conditional_1_td_3_Template","_MtxGrid_Conditional_6_Conditional_1_Template","_MtxGrid_Conditional_6_For_3_th_1_Conditional_3_ng_template_0_Template","_MtxGrid_Conditional_6_For_3_th_1_Conditional_3_Template","_MtxGrid_Conditional_6_For_3_th_1_Conditional_5_Conditional_0_ng_template_0_Template","_MtxGrid_Conditional_6_For_3_th_1_Conditional_5_Conditional_0_Template","field","_MtxGrid_Conditional_6_For_3_th_1_Conditional_5_Conditional_2_Conditional_1_Template","_MtxGrid_Conditional_6_For_3_th_1_Conditional_5_Conditional_2_Conditional_6_Template","_MtxGrid_Conditional_6_For_3_th_1_Conditional_5_Conditional_2_ng_template_7_Template","_MtxGrid_Conditional_6_For_3_th_1_Conditional_5_Conditional_2_Template","tmp_18_0","headerExtraTplBase_r11","sortProp","sortable","disableClear","sortDisableClear","arrowPosition","showExpand","headerExtraTemplate","_MtxGrid_Conditional_6_For_3_th_1_Conditional_5_Template","_MtxGrid_Conditional_6_For_3_th_1_Template","_MtxGrid_Conditional_6_For_3_td_2_Conditional_2_ng_template_0_Template","_MtxGrid_Conditional_6_For_3_td_2_Conditional_2_Template","ctx_r13","row_r13","index_r15","dataIndex_r16","_MtxGrid_Conditional_6_For_3_td_2_Conditional_4_Conditional_0_ng_template_0_Template","_MtxGrid_Conditional_6_For_3_td_2_Conditional_4_Conditional_0_Template","_MtxGrid_Conditional_6_For_3_td_2_Conditional_4_Conditional_2_Conditional_0_ng_template_0_Template","_MtxGrid_Conditional_6_For_3_td_2_Conditional_4_Conditional_2_Conditional_0_Template","_MtxGrid_Conditional_6_For_3_td_2_Conditional_4_Conditional_2_Conditional_1_Conditional_0_Template","_r18","expansionRowStates","_onExpansionChange","_MtxGrid_Conditional_6_For_3_td_2_Conditional_4_Conditional_2_Conditional_1_Template","_r17","_onRowDataChange","emptyValuePlaceholder","_MtxGrid_Conditional_6_For_3_td_2_Conditional_4_Conditional_2_Template","_MtxGrid_Conditional_6_For_3_td_2_Conditional_4_Template","_MtxGrid_Conditional_6_For_3_td_2_Template","_selectCell","cellSelectable","_MtxGrid_Conditional_6_For_3_td_3_Conditional_1_Template","_MtxGrid_Conditional_6_For_3_td_3_Conditional_2_ng_template_0_Template","_MtxGrid_Conditional_6_For_3_td_3_Conditional_2_Template","summaryTemplate","_MtxGrid_Conditional_6_For_3_td_3_Conditional_4_Conditional_0_ng_template_0_Template","_MtxGrid_Conditional_6_For_3_td_3_Conditional_4_Conditional_0_Template","_getColData","_MtxGrid_Conditional_6_For_3_td_3_Conditional_4_Conditional_2_Template","_MtxGrid_Conditional_6_For_3_td_3_Conditional_4_Template","_MtxGrid_Conditional_6_For_3_td_3_Template","_MtxGrid_Conditional_6_For_3_Template","_MtxGrid_Conditional_6_Conditional_4_tr_0_Template","_MtxGrid_Conditional_6_Conditional_4_Template","displayedColumns","_MtxGrid_Conditional_6_Conditional_5_tr_0_Template","_r19","ctx_r19","row_r21","index_r22","dataIndex_r23","_selectRow","ctx_r23","_contextmenu","rowClassFormatter","_MtxGrid_Conditional_6_Conditional_5_Template","_MtxGrid_Conditional_6_Conditional_6_tr_0_Template","_MtxGrid_Conditional_6_Conditional_6_Template","_MtxGrid_Conditional_6_Conditional_7_td_1_ng_template_2_Template","_MtxGrid_Conditional_6_Conditional_7_td_1_Template","row_r25","dataIndex_r26","expansionTemplate","_MtxGrid_Conditional_6_Conditional_7_tr_2_Template","dataIndex_r27","_MtxGrid_Conditional_6_Conditional_7_Template","_MtxGrid_Conditional_6_Template","_onSortChange","rowHover","rowStriped","expandable","sortActive","sortDirection","sortDisabled","sortStart","rowSelectable","hideRowSelectionCheckbox","useContentHeaderRowTemplate","useContentRowTemplate","_whetherShowSummary","_MtxGrid_Conditional_7_Conditional_1_th_1_Conditional_1_Template","_r29","_MtxGrid_Conditional_7_Conditional_1_th_1_Template","_MtxGrid_Conditional_7_Conditional_1_td_2_Conditional_1_Template","_r30","row_r31","ctx_r31","index_r33","dataIndex_r34","_MtxGrid_Conditional_7_Conditional_1_td_2_Template","_MtxGrid_Conditional_7_Conditional_1_td_3_Template","_MtxGrid_Conditional_7_Conditional_1_Template","_MtxGrid_Conditional_7_For_3_th_1_Conditional_3_ng_template_0_Template","_MtxGrid_Conditional_7_For_3_th_1_Conditional_3_Template","col_r35","_MtxGrid_Conditional_7_For_3_th_1_Conditional_5_Conditional_0_ng_template_0_Template","_MtxGrid_Conditional_7_For_3_th_1_Conditional_5_Conditional_0_Template","_MtxGrid_Conditional_7_For_3_th_1_Conditional_5_Conditional_2_Conditional_1_Template","_MtxGrid_Conditional_7_For_3_th_1_Conditional_5_Conditional_2_Conditional_6_Template","_MtxGrid_Conditional_7_For_3_th_1_Conditional_5_Conditional_2_ng_template_7_Template","_MtxGrid_Conditional_7_For_3_th_1_Conditional_5_Conditional_2_Template","_MtxGrid_Conditional_7_For_3_th_1_Conditional_5_Template","_MtxGrid_Conditional_7_For_3_th_1_Template","resizable","minWidth","maxWidth","_MtxGrid_Conditional_7_For_3_td_2_Conditional_2_ng_template_0_Template","_MtxGrid_Conditional_7_For_3_td_2_Conditional_2_Template","ctx_r37","row_r37","index_r39","dataIndex_r40","_MtxGrid_Conditional_7_For_3_td_2_Conditional_4_Conditional_0_ng_template_0_Template","_MtxGrid_Conditional_7_For_3_td_2_Conditional_4_Conditional_0_Template","_MtxGrid_Conditional_7_For_3_td_2_Conditional_4_Conditional_2_Conditional_0_ng_template_0_Template","_MtxGrid_Conditional_7_For_3_td_2_Conditional_4_Conditional_2_Conditional_0_Template","_MtxGrid_Conditional_7_For_3_td_2_Conditional_4_Conditional_2_Conditional_1_Conditional_0_Template","_r42","_MtxGrid_Conditional_7_For_3_td_2_Conditional_4_Conditional_2_Conditional_1_Template","_r41","_MtxGrid_Conditional_7_For_3_td_2_Conditional_4_Conditional_2_Template","_MtxGrid_Conditional_7_For_3_td_2_Conditional_4_Template","_MtxGrid_Conditional_7_For_3_td_2_Template","_r36","_MtxGrid_Conditional_7_For_3_td_3_Conditional_1_Template","_MtxGrid_Conditional_7_For_3_td_3_Conditional_2_ng_template_0_Template","_MtxGrid_Conditional_7_For_3_td_3_Conditional_2_Template","_MtxGrid_Conditional_7_For_3_td_3_Conditional_4_Conditional_0_ng_template_0_Template","_MtxGrid_Conditional_7_For_3_td_3_Conditional_4_Conditional_0_Template","_MtxGrid_Conditional_7_For_3_td_3_Conditional_4_Conditional_2_Template","_MtxGrid_Conditional_7_For_3_td_3_Conditional_4_Template","_MtxGrid_Conditional_7_For_3_td_3_Template","_MtxGrid_Conditional_7_For_3_Template","_MtxGrid_Conditional_7_Conditional_4_tr_0_Template","_MtxGrid_Conditional_7_Conditional_4_Template","_MtxGrid_Conditional_7_Conditional_5_tr_0_Template","_r43","ctx_r43","row_r45","index_r46","dataIndex_r47","ctx_r47","_MtxGrid_Conditional_7_Conditional_5_Template","_MtxGrid_Conditional_7_Conditional_6_tr_0_Template","_MtxGrid_Conditional_7_Conditional_6_Template","_MtxGrid_Conditional_7_Conditional_7_td_1_ng_template_2_Template","_MtxGrid_Conditional_7_Conditional_7_td_1_Template","row_r49","dataIndex_r50","_MtxGrid_Conditional_7_Conditional_7_tr_2_Template","dataIndex_r51","_MtxGrid_Conditional_7_Conditional_7_Template","_MtxGrid_Conditional_7_Template","_r28","_MtxGrid_Conditional_8_Conditional_1_ng_template_0_Template","_MtxGrid_Conditional_8_Conditional_1_Template","noResultTemplate","_MtxGrid_Conditional_8_Conditional_2_Template","noResultText","_MtxGrid_Conditional_8_Template","_MtxGrid_Conditional_9_Conditional_1_ng_template_0_Template","_MtxGrid_Conditional_9_Conditional_1_Template","sidebarTemplate","_MtxGrid_Conditional_9_Template","_MtxGrid_Conditional_11_Conditional_1_ng_template_0_Template","_MtxGrid_Conditional_11_Conditional_1_Template","statusbarTemplate","_MtxGrid_Conditional_11_Template","_MtxGrid_Conditional_13_ng_template_0_Template","_MtxGrid_Conditional_13_Template","paginationTemplate","_MtxGrid_Conditional_14_Template","_r52","_onPage","showPaginator","showFirstLastButtons","pageSizeOptions","hidePageSize","pageDisabled","_MtxGrid_ng_template_15_Conditional_0_ng_template_0_Template","_MtxGrid_ng_template_15_Conditional_0_Template","ctx_r52","col_r55","_MtxGrid_ng_template_15_Conditional_2_Conditional_0_ng_template_0_Template","_MtxGrid_ng_template_15_Conditional_2_Conditional_0_Template","_MtxGrid_ng_template_15_Conditional_2_Template","headerExtraTemplate_r54","_MtxGrid_ng_template_15_Template","TABLE_PROVIDERS","AbstractMatColumnResize","getTableHeight","tableParent","MatColumnResize","_MatColumnResize","columnResizeNotifier","MatColumnResizeOverlayHandle","_MatColumnResizeOverlayHandle","originHeight","topElement","AbstractMatResizable","MatResizable","_MatResizable","hasResizableClass","newValue","i4","IMPORTS","OverlayModule","_MatColumnResizeCommonModule","MatColumnResizeCommonModule","MatColumnResizeModule","_MatColumnResizeModule","MtxGridUtils","_MtxGridUtils","getCellValue","keyArr","tmp","getColData","isEmpty","isContainHTML","test","MtxGridColClassPipe","_MtxGridColClassPipe","MtxGridRowClassPipe","_MtxGridRowClassPipe","join","MtxGridCellActionsPipe","_MtxGridCellActionsPipe","btns","MtxGridCellActionTooltipPipe","_MtxGridCellActionTooltipPipe","btn","tooltip","MtxGridCellActionBadgePipe","_MtxGridCellActionBadgePipe","badge","MtxGridCellActionDisablePipe","_MtxGridCellActionDisablePipe","MtxGridCellSummaryPipe","_MtxGridCellSummaryPipe","utils","summary","MtxGridCell","_MtxGridCell","_utils","_dialog","rowDataChange","rowDataDiffer","_this$rowDataDiffer","_applyChanges","forEachChangedItem","pop","_btn$click","click","_btn$pop","_btn$pop2","_btn$pop3","_btn$pop4","_btn$pop5","_btn$pop6","okColor","okText","_btn$click2","closeColor","closeText","_btn$click3","CurrencyPipe","DatePipe","DecimalPipe","NgTemplateOutlet","PercentPipe","MatFabButton","MatMiniFabButton","MatTooltip","MtxGridColumnMenu","_MtxGridColumnMenu","_buttonText","buttonType","showHeader","showFooter","columnChange","_pinOptions","col","val","MatMenuTrigger","menuPanel","menuTrigger","tmp_2_0","FormsModule","i1$2","MatMenu","MatMenuItem","MatCheckbox","MtxGridExpansionToggle","_MtxGridExpansionToggle","opened","_opened","openedChange","expandableRow","_row","_tplRef","toggleChange","toggle","MtxGridSelectableCell","_MtxGridSelectableCell","ctrlKeyPressed","shiftKeyPressed","cellSelectedChange","ctrlKey","shiftKey","MTX_GRID_DEFAULT_OPTIONS","MtxGrid","_MtxGrid","_hasNoResult","loading","showSummary","_this$_defaultOptions5","_this$_defaultOptions6","_this$_defaultOptions7","_this$_defaultOptions8","_this$_defaultOptions9","_this$_defaultOptions10","_this$_defaultOptions11","_this$_defaultOptions12","_this$_defaultOptions13","_this$_defaultOptions14","_this$_defaultOptions15","_this$_defaultOptions16","_this$_defaultOptions17","_this$_defaultOptions18","_this$_defaultOptions19","_this$_defaultOptions20","_this$_defaultOptions21","_this$_defaultOptions22","_this$_defaultOptions23","_this$_defaultOptions24","_this$_defaultOptions25","_this$_defaultOptions26","_this$_defaultOptions27","_this$_defaultOptions28","_this$_defaultOptions29","_this$_defaultOptions30","_this$_defaultOptions31","_this$_defaultOptions32","_this$_defaultOptions33","_this$_defaultOptions34","_this$_defaultOptions35","_this$_defaultOptions36","_this$_defaultOptions37","_this$_defaultOptions38","_this$_defaultOptions39","_this$_defaultOptions40","_this$_defaultOptions41","_this$_defaultOptions42","_this$_defaultOptions43","_this$_defaultOptions44","_this$_defaultOptions45","_this$_defaultOptions46","_this$_defaultOptions47","_this$_defaultOptions48","_this$_defaultOptions49","_this$_defaultOptions50","_this$_defaultOptions51","_this$_defaultOptions52","_this$_defaultOptions53","_this$_defaultOptions54","_this$_defaultOptions55","_this$_defaultOptions56","_this$_defaultOptions57","_this$_defaultOptions58","_this$_defaultOptions59","_this$_defaultOptions60","_this$_defaultOptions61","_this$_defaultOptions62","_this$_defaultOptions63","_this$_defaultOptions64","_this$_defaultOptions65","_this$_defaultOptions66","_this$_defaultOptions67","_this$_defaultOptions68","_this$_defaultOptions69","_this$_defaultOptions70","_this$_defaultOptions71","_this$_defaultOptions72","_this$_defaultOptions73","_this$_defaultOptions74","_this$_defaultOptions75","_this$_defaultOptions76","_this$_defaultOptions77","_this$_defaultOptions78","_this$_defaultOptions79","_this$_defaultOptions80","_this$_defaultOptions81","_this$_defaultOptions82","_this$_defaultOptions83","columnResizable","pageOnFront","sortOnFront","rowClick","rowContextMenu","expansionChange","SelectionModel","multiSelectionWithClick","disableRowClickSelection","rowSelected","rowSelectedChange","cellSelection","showToolbar","useContentFooterRowTemplate","showSidebar","showStatusbar","_isColumnHide","_this$data","_countPinnedPosition","_this$rowDefs","_this$headerRowDefs","_this$footerRowDefs","headerRowDefs","footerRowDefs","cur","pinnedLeftCols","idx","pinnedRightCols","expansionRef","cellRef","_selectedCell","colValue","cellData","_this$rowSelectionFor","_this$rowSelectionFor2","_this$rowSelectionFor3","_this$rowSelectionFor4","metaKey","_this$rowSelectionFor5","_this$rowSelectionFor6","_this$rowSelectionFor7","_this$rowSelectionFor8","getDisplayedColumnFields","toggleExpansion","Error","_this$tableContainer","tableContainer","_this$tableContainer2","MatPaginator","MatSort","columnMenu","MatSortHeader","animation","trigger","minHeight","visibility","transition","animate","MtxGridModule","_MtxGridModule","MatSortModule","MatPaginatorModule","MatCheckboxModule","MatTooltipModule","MatSelectModule","MatFormFieldModule","MatMenuModule"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./node_modules/@angular/cdk/fesm2022/drag-drop.mjs","./node_modules/rxjs/dist/esm/internal/observable/interval.js","./node_modules/@angular/material/fesm2022/chips.mjs","./node_modules/@angular/material/fesm2022/badge.mjs","./node_modules/@angular/material/fesm2022/progress-bar.mjs","./node_modules/@angular/cdk/fesm2022/table.mjs","./node_modules/@angular/material/fesm2022/table.mjs","./node_modules/rxjs/dist/esm/internal/operators/pairwise.js","./node_modules/@ng-matero/extensions/fesm2022/mtxColumnResize.mjs","./node_modules/@ng-matero/extensions/fesm2022/mtxCore.mjs","./node_modules/@ng-matero/extensions/fesm2022/mtxDialog.mjs","./node_modules/@ng-matero/extensions/fesm2022/mtxGrid.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { signal, Component, ViewEncapsulation, ChangeDetectionStrategy, inject, ApplicationRef, EnvironmentInjector, createComponent, Injectable, Inject, InjectionToken, booleanAttribute, Directive, Optional, SkipSelf, Input, EventEmitter, Injector, afterNextRender, numberAttribute, Self, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport * as i1 from '@angular/cdk/scrolling';\nimport { CdkScrollableModule } from '@angular/cdk/scrolling';\nimport { isFakeTouchstartFromScreenReader, isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';\nimport { coerceElement, coerceNumberProperty, coerceArray } from '@angular/cdk/coercion';\nimport { _getEventTarget, normalizePassiveListenerOptions, _getShadowRoot } from '@angular/cdk/platform';\nimport { Subject, Subscription, interval, animationFrameScheduler, Observable, merge, BehaviorSubject } from 'rxjs';\nimport { takeUntil, map, take, tap, switchMap, startWith } from 'rxjs/operators';\nimport * as i1$1 from '@angular/cdk/bidi';\n\n/** Creates a deep clone of an element. */\nfunction deepCloneNode(node) {\n const clone = node.cloneNode(true);\n const descendantsWithId = clone.querySelectorAll('[id]');\n const nodeName = node.nodeName.toLowerCase();\n // Remove the `id` to avoid having multiple elements with the same id on the page.\n clone.removeAttribute('id');\n for (let i = 0; i < descendantsWithId.length; i++) {\n descendantsWithId[i].removeAttribute('id');\n }\n if (nodeName === 'canvas') {\n transferCanvasData(node, clone);\n }\n else if (nodeName === 'input' || nodeName === 'select' || nodeName === 'textarea') {\n transferInputData(node, clone);\n }\n transferData('canvas', node, clone, transferCanvasData);\n transferData('input, textarea, select', node, clone, transferInputData);\n return clone;\n}\n/** Matches elements between an element and its clone and allows for their data to be cloned. */\nfunction transferData(selector, node, clone, callback) {\n const descendantElements = node.querySelectorAll(selector);\n if (descendantElements.length) {\n const cloneElements = clone.querySelectorAll(selector);\n for (let i = 0; i < descendantElements.length; i++) {\n callback(descendantElements[i], cloneElements[i]);\n }\n }\n}\n// Counter for unique cloned radio button names.\nlet cloneUniqueId = 0;\n/** Transfers the data of one input element to another. */\nfunction transferInputData(source, clone) {\n // Browsers throw an error when assigning the value of a file input programmatically.\n if (clone.type !== 'file') {\n clone.value = source.value;\n }\n // Radio button `name` attributes must be unique for radio button groups\n // otherwise original radio buttons can lose their checked state\n // once the clone is inserted in the DOM.\n if (clone.type === 'radio' && clone.name) {\n clone.name = `mat-clone-${clone.name}-${cloneUniqueId++}`;\n }\n}\n/** Transfers the data of one canvas element to another. */\nfunction transferCanvasData(source, clone) {\n const context = clone.getContext('2d');\n if (context) {\n // In some cases `drawImage` can throw (e.g. if the canvas size is 0x0).\n // We can't do much about it so just ignore the error.\n try {\n context.drawImage(source, 0, 0);\n }\n catch { }\n }\n}\n\n/** Gets a mutable version of an element's bounding `DOMRect`. */\nfunction getMutableClientRect(element) {\n const rect = element.getBoundingClientRect();\n // We need to clone the `clientRect` here, because all the values on it are readonly\n // and we need to be able to update them. Also we can't use a spread here, because\n // the values on a `DOMRect` aren't own properties. See:\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect#Notes\n return {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.width,\n height: rect.height,\n x: rect.x,\n y: rect.y,\n };\n}\n/**\n * Checks whether some coordinates are within a `DOMRect`.\n * @param clientRect DOMRect that is being checked.\n * @param x Coordinates along the X axis.\n * @param y Coordinates along the Y axis.\n */\nfunction isInsideClientRect(clientRect, x, y) {\n const { top, bottom, left, right } = clientRect;\n return y >= top && y <= bottom && x >= left && x <= right;\n}\n/**\n * Updates the top/left positions of a `DOMRect`, as well as their bottom/right counterparts.\n * @param domRect `DOMRect` that should be updated.\n * @param top Amount to add to the `top` position.\n * @param left Amount to add to the `left` position.\n */\nfunction adjustDomRect(domRect, top, left) {\n domRect.top += top;\n domRect.bottom = domRect.top + domRect.height;\n domRect.left += left;\n domRect.right = domRect.left + domRect.width;\n}\n/**\n * Checks whether the pointer coordinates are close to a DOMRect.\n * @param rect DOMRect to check against.\n * @param threshold Threshold around the DOMRect.\n * @param pointerX Coordinates along the X axis.\n * @param pointerY Coordinates along the Y axis.\n */\nfunction isPointerNearDomRect(rect, threshold, pointerX, pointerY) {\n const { top, right, bottom, left, width, height } = rect;\n const xThreshold = width * threshold;\n const yThreshold = height * threshold;\n return (pointerY > top - yThreshold &&\n pointerY < bottom + yThreshold &&\n pointerX > left - xThreshold &&\n pointerX < right + xThreshold);\n}\n\n/** Keeps track of the scroll position and dimensions of the parents of an element. */\nclass ParentPositionTracker {\n constructor(_document) {\n this._document = _document;\n /** Cached positions of the scrollable parent elements. */\n this.positions = new Map();\n }\n /** Clears the cached positions. */\n clear() {\n this.positions.clear();\n }\n /** Caches the positions. Should be called at the beginning of a drag sequence. */\n cache(elements) {\n this.clear();\n this.positions.set(this._document, {\n scrollPosition: this.getViewportScrollPosition(),\n });\n elements.forEach(element => {\n this.positions.set(element, {\n scrollPosition: { top: element.scrollTop, left: element.scrollLeft },\n clientRect: getMutableClientRect(element),\n });\n });\n }\n /** Handles scrolling while a drag is taking place. */\n handleScroll(event) {\n const target = _getEventTarget(event);\n const cachedPosition = this.positions.get(target);\n if (!cachedPosition) {\n return null;\n }\n const scrollPosition = cachedPosition.scrollPosition;\n let newTop;\n let newLeft;\n if (target === this._document) {\n const viewportScrollPosition = this.getViewportScrollPosition();\n newTop = viewportScrollPosition.top;\n newLeft = viewportScrollPosition.left;\n }\n else {\n newTop = target.scrollTop;\n newLeft = target.scrollLeft;\n }\n const topDifference = scrollPosition.top - newTop;\n const leftDifference = scrollPosition.left - newLeft;\n // Go through and update the cached positions of the scroll\n // parents that are inside the element that was scrolled.\n this.positions.forEach((position, node) => {\n if (position.clientRect && target !== node && target.contains(node)) {\n adjustDomRect(position.clientRect, topDifference, leftDifference);\n }\n });\n scrollPosition.top = newTop;\n scrollPosition.left = newLeft;\n return { top: topDifference, left: leftDifference };\n }\n /**\n * Gets the scroll position of the viewport. Note that we use the scrollX and scrollY directly,\n * instead of going through the `ViewportRuler`, because the first value the ruler looks at is\n * the top/left offset of the `document.documentElement` which works for most cases, but breaks\n * if the element is offset by something like the `BlockScrollStrategy`.\n */\n getViewportScrollPosition() {\n return { top: window.scrollY, left: window.scrollX };\n }\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, _document) {\n const rootNodes = viewRef.rootNodes;\n if (rootNodes.length === 1 && rootNodes[0].nodeType === _document.ELEMENT_NODE) {\n return rootNodes[0];\n }\n const wrapper = _document.createElement('div');\n rootNodes.forEach(node => wrapper.appendChild(node));\n return wrapper;\n}\n\n/**\n * Shallow-extends a stylesheet object with another stylesheet-like object.\n * Note that the keys in `source` have to be dash-cased.\n * @docs-private\n */\nfunction extendStyles(dest, source, importantProperties) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n const value = source[key];\n if (value) {\n dest.setProperty(key, value, importantProperties?.has(key) ? 'important' : '');\n }\n else {\n dest.removeProperty(key);\n }\n }\n }\n return dest;\n}\n/**\n * Toggles whether the native drag interactions should be enabled for an element.\n * @param element Element on which to toggle the drag interactions.\n * @param enable Whether the drag interactions should be enabled.\n * @docs-private\n */\nfunction toggleNativeDragInteractions(element, enable) {\n const userSelect = enable ? '' : 'none';\n extendStyles(element.style, {\n 'touch-action': enable ? '' : 'none',\n '-webkit-user-drag': enable ? '' : 'none',\n '-webkit-tap-highlight-color': enable ? '' : 'transparent',\n 'user-select': userSelect,\n '-ms-user-select': userSelect,\n '-webkit-user-select': userSelect,\n '-moz-user-select': userSelect,\n });\n}\n/**\n * Toggles whether an element is visible while preserving its dimensions.\n * @param element Element whose visibility to toggle\n * @param enable Whether the element should be visible.\n * @param importantProperties Properties to be set as `!important`.\n * @docs-private\n */\nfunction toggleVisibility(element, enable, importantProperties) {\n extendStyles(element.style, {\n position: enable ? '' : 'fixed',\n top: enable ? '' : '0',\n opacity: enable ? '' : '0',\n left: enable ? '' : '-999em',\n }, importantProperties);\n}\n/**\n * Combines a transform string with an optional other transform\n * that exited before the base transform was applied.\n */\nfunction combineTransforms(transform, initialTransform) {\n return initialTransform && initialTransform != 'none'\n ? transform + ' ' + initialTransform\n : transform;\n}\n/**\n * Matches the target element's size to the source's size.\n * @param target Element that needs to be resized.\n * @param sourceRect Dimensions of the source element.\n */\nfunction matchElementSize(target, sourceRect) {\n target.style.width = `${sourceRect.width}px`;\n target.style.height = `${sourceRect.height}px`;\n target.style.transform = getTransform(sourceRect.left, sourceRect.top);\n}\n/**\n * Gets a 3d `transform` that can be applied to an element.\n * @param x Desired position of the element along the X axis.\n * @param y Desired position of the element along the Y axis.\n */\nfunction getTransform(x, y) {\n // Round the transforms since some browsers will\n // blur the elements for sub-pixel transforms.\n return `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`;\n}\n\n/** Parses a CSS time value to milliseconds. */\nfunction parseCssTimeUnitsToMs(value) {\n // Some browsers will return it in seconds, whereas others will return milliseconds.\n const multiplier = value.toLowerCase().indexOf('ms') > -1 ? 1 : 1000;\n return parseFloat(value) * multiplier;\n}\n/** Gets the transform transition duration, including the delay, of an element in milliseconds. */\nfunction getTransformTransitionDurationInMs(element) {\n const computedStyle = getComputedStyle(element);\n const transitionedProperties = parseCssPropertyValue(computedStyle, 'transition-property');\n const property = transitionedProperties.find(prop => prop === 'transform' || prop === 'all');\n // If there's no transition for `all` or `transform`, we shouldn't do anything.\n if (!property) {\n return 0;\n }\n // Get the index of the property that we're interested in and match\n // it up to the same index in `transition-delay` and `transition-duration`.\n const propertyIndex = transitionedProperties.indexOf(property);\n const rawDurations = parseCssPropertyValue(computedStyle, 'transition-duration');\n const rawDelays = parseCssPropertyValue(computedStyle, 'transition-delay');\n return (parseCssTimeUnitsToMs(rawDurations[propertyIndex]) +\n parseCssTimeUnitsToMs(rawDelays[propertyIndex]));\n}\n/** Parses out multiple values from a computed style into an array. */\nfunction parseCssPropertyValue(computedStyle, name) {\n const value = computedStyle.getPropertyValue(name);\n return value.split(',').map(part => part.trim());\n}\n\n/** Inline styles to be set as `!important` while dragging. */\nconst importantProperties = new Set([\n // Needs to be important, because some `mat-table` sets `position: sticky !important`. See #22781.\n 'position',\n]);\nclass PreviewRef {\n get element() {\n return this._preview;\n }\n constructor(_document, _rootElement, _direction, _initialDomRect, _previewTemplate, _previewClass, _pickupPositionOnPage, _initialTransform, _zIndex) {\n this._document = _document;\n this._rootElement = _rootElement;\n this._direction = _direction;\n this._initialDomRect = _initialDomRect;\n this._previewTemplate = _previewTemplate;\n this._previewClass = _previewClass;\n this._pickupPositionOnPage = _pickupPositionOnPage;\n this._initialTransform = _initialTransform;\n this._zIndex = _zIndex;\n }\n attach(parent) {\n this._preview = this._createPreview();\n parent.appendChild(this._preview);\n // The null check is necessary for browsers that don't support the popover API.\n // Note that we use a string access for compatibility with Closure.\n if (supportsPopover(this._preview)) {\n this._preview['showPopover']();\n }\n }\n destroy() {\n this._preview.remove();\n this._previewEmbeddedView?.destroy();\n this._preview = this._previewEmbeddedView = null;\n }\n setTransform(value) {\n this._preview.style.transform = value;\n }\n getBoundingClientRect() {\n return this._preview.getBoundingClientRect();\n }\n addClass(className) {\n this._preview.classList.add(className);\n }\n getTransitionDuration() {\n return getTransformTransitionDurationInMs(this._preview);\n }\n addEventListener(name, handler) {\n this._preview.addEventListener(name, handler);\n }\n removeEventListener(name, handler) {\n this._preview.removeEventListener(name, handler);\n }\n _createPreview() {\n const previewConfig = this._previewTemplate;\n const previewClass = this._previewClass;\n const previewTemplate = previewConfig ? previewConfig.template : null;\n let preview;\n if (previewTemplate && previewConfig) {\n // Measure the element before we've inserted the preview\n // since the insertion could throw off the measurement.\n const rootRect = previewConfig.matchSize ? this._initialDomRect : null;\n const viewRef = previewConfig.viewContainer.createEmbeddedView(previewTemplate, previewConfig.context);\n viewRef.detectChanges();\n preview = getRootNode(viewRef, this._document);\n this._previewEmbeddedView = viewRef;\n if (previewConfig.matchSize) {\n matchElementSize(preview, rootRect);\n }\n else {\n preview.style.transform = getTransform(this._pickupPositionOnPage.x, this._pickupPositionOnPage.y);\n }\n }\n else {\n preview = deepCloneNode(this._rootElement);\n matchElementSize(preview, this._initialDomRect);\n if (this._initialTransform) {\n preview.style.transform = this._initialTransform;\n }\n }\n extendStyles(preview.style, {\n // It's important that we disable the pointer events on the preview, because\n // it can throw off the `document.elementFromPoint` calls in the `CdkDropList`.\n 'pointer-events': 'none',\n // If the preview has a margin, it can throw off our positioning so we reset it. The reset\n // value for `margin-right` needs to be `auto` when opened as a popover, because our\n // positioning is always top/left based, but native popover seems to position itself\n // to the top/right if `` or `` have `dir=\"rtl\"` (see #29604). Setting it\n // to `auto` pushed it to the top/left corner in RTL and is a noop in LTR.\n 'margin': supportsPopover(preview) ? '0 auto 0 0' : '0',\n 'position': 'fixed',\n 'top': '0',\n 'left': '0',\n 'z-index': this._zIndex + '',\n }, importantProperties);\n toggleNativeDragInteractions(preview, false);\n preview.classList.add('cdk-drag-preview');\n preview.setAttribute('popover', 'manual');\n preview.setAttribute('dir', this._direction);\n if (previewClass) {\n if (Array.isArray(previewClass)) {\n previewClass.forEach(className => preview.classList.add(className));\n }\n else {\n preview.classList.add(previewClass);\n }\n }\n return preview;\n }\n}\n/** Checks whether a specific element supports the popover API. */\nfunction supportsPopover(element) {\n return 'showPopover' in element;\n}\n\n/** Options that can be used to bind a passive event listener. */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });\n/** Options that can be used to bind an active event listener. */\nconst activeEventListenerOptions = normalizePassiveListenerOptions({ passive: false });\n/** Event options that can be used to bind an active, capturing event. */\nconst activeCapturingEventOptions$1 = normalizePassiveListenerOptions({\n passive: false,\n capture: true,\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/** Inline styles to be set as `!important` while dragging. */\nconst dragImportantProperties = new Set([\n // Needs to be important, because some `mat-table` sets `position: sticky !important`. See #22781.\n 'position',\n]);\n/**\n * Reference to a draggable item. Used to manipulate or dispose of the item.\n */\nclass DragRef {\n /** Whether starting to drag this element is disabled. */\n get disabled() {\n return this._disabled || !!(this._dropContainer && this._dropContainer.disabled);\n }\n set disabled(value) {\n if (value !== this._disabled) {\n this._disabled = value;\n this._toggleNativeDragInteractions();\n this._handles.forEach(handle => toggleNativeDragInteractions(handle, value));\n }\n }\n constructor(element, _config, _document, _ngZone, _viewportRuler, _dragDropRegistry) {\n this._config = _config;\n this._document = _document;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._dragDropRegistry = _dragDropRegistry;\n /**\n * CSS `transform` applied to the element when it isn't being dragged. We need a\n * passive transform in order for the dragged element to retain its new position\n * after the user has stopped dragging and because we need to know the relative\n * position in case they start dragging again. This corresponds to `element.style.transform`.\n */\n this._passiveTransform = { x: 0, y: 0 };\n /** CSS `transform` that is applied to the element while it's being dragged. */\n this._activeTransform = { x: 0, y: 0 };\n /**\n * Whether the dragging sequence has been started. Doesn't\n * necessarily mean that the element has been moved.\n */\n this._hasStartedDragging = signal(false);\n /** Emits when the item is being moved. */\n this._moveEvents = new Subject();\n /** Subscription to pointer movement events. */\n this._pointerMoveSubscription = Subscription.EMPTY;\n /** Subscription to the event that is dispatched when the user lifts their pointer. */\n this._pointerUpSubscription = Subscription.EMPTY;\n /** Subscription to the viewport being scrolled. */\n this._scrollSubscription = Subscription.EMPTY;\n /** Subscription to the viewport being resized. */\n this._resizeSubscription = Subscription.EMPTY;\n /** Cached reference to the boundary element. */\n this._boundaryElement = null;\n /** Whether the native dragging interactions have been enabled on the root element. */\n this._nativeInteractionsEnabled = true;\n /** Elements that can be used to drag the draggable item. */\n this._handles = [];\n /** Registered handles that are currently disabled. */\n this._disabledHandles = new Set();\n /** Layout direction of the item. */\n this._direction = 'ltr';\n /**\n * Amount of milliseconds to wait after the user has put their\n * pointer down before starting to drag the element.\n */\n this.dragStartDelay = 0;\n /**\n * If the parent of the dragged element has a `scale` transform, it can throw off the\n * positioning when the user starts dragging. Use this input to notify the CDK of the scale.\n */\n this.scale = 1;\n this._disabled = false;\n /** Emits as the drag sequence is being prepared. */\n this.beforeStarted = new Subject();\n /** Emits when the user starts dragging the item. */\n this.started = new Subject();\n /** Emits when the user has released a drag item, before any animations have started. */\n this.released = new Subject();\n /** Emits when the user stops dragging an item in the container. */\n this.ended = new Subject();\n /** Emits when the user has moved the item into a new container. */\n this.entered = new Subject();\n /** Emits when the user removes the item its container by dragging it into another container. */\n this.exited = new Subject();\n /** Emits when the user drops the item inside a container. */\n this.dropped = new Subject();\n /**\n * Emits as the user is dragging the item. Use with caution,\n * because this event will fire for every pixel that the user has dragged.\n */\n this.moved = this._moveEvents;\n /** Handler for the `mousedown`/`touchstart` events. */\n this._pointerDown = (event) => {\n this.beforeStarted.next();\n // Delegate the event based on whether it started from a handle or the element itself.\n if (this._handles.length) {\n const targetHandle = this._getTargetHandle(event);\n if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) {\n this._initializeDragSequence(targetHandle, event);\n }\n }\n else if (!this.disabled) {\n this._initializeDragSequence(this._rootElement, event);\n }\n };\n /** Handler that is invoked when the user moves their pointer after they've initiated a drag. */\n this._pointerMove = (event) => {\n const pointerPosition = this._getPointerPositionOnPage(event);\n if (!this._hasStartedDragging()) {\n const distanceX = Math.abs(pointerPosition.x - this._pickupPositionOnPage.x);\n const distanceY = Math.abs(pointerPosition.y - this._pickupPositionOnPage.y);\n const isOverThreshold = distanceX + distanceY >= this._config.dragStartThreshold;\n // Only start dragging after the user has moved more than the minimum distance in either\n // direction. Note that this is preferable over doing something like `skip(minimumDistance)`\n // in the `pointerMove` subscription, because we're not guaranteed to have one move event\n // per pixel of movement (e.g. if the user moves their pointer quickly).\n if (isOverThreshold) {\n const isDelayElapsed = Date.now() >= this._dragStartTime + this._getDragStartDelay(event);\n const container = this._dropContainer;\n if (!isDelayElapsed) {\n this._endDragSequence(event);\n return;\n }\n // Prevent other drag sequences from starting while something in the container is still\n // being dragged. This can happen while we're waiting for the drop animation to finish\n // and can cause errors, because some elements might still be moving around.\n if (!container || (!container.isDragging() && !container.isReceiving())) {\n // Prevent the default action as soon as the dragging sequence is considered as\n // \"started\" since waiting for the next event can allow the device to begin scrolling.\n if (event.cancelable) {\n event.preventDefault();\n }\n this._hasStartedDragging.set(true);\n this._ngZone.run(() => this._startDragSequence(event));\n }\n }\n return;\n }\n // We prevent the default action down here so that we know that dragging has started. This is\n // important for touch devices where doing this too early can unnecessarily block scrolling,\n // if there's a dragging delay.\n if (event.cancelable) {\n event.preventDefault();\n }\n const constrainedPointerPosition = this._getConstrainedPointerPosition(pointerPosition);\n this._hasMoved = true;\n this._lastKnownPointerPosition = pointerPosition;\n this._updatePointerDirectionDelta(constrainedPointerPosition);\n if (this._dropContainer) {\n this._updateActiveDropContainer(constrainedPointerPosition, pointerPosition);\n }\n else {\n // If there's a position constraint function, we want the element's top/left to be at the\n // specific position on the page. Use the initial position as a reference if that's the case.\n const offset = this.constrainPosition ? this._initialDomRect : this._pickupPositionOnPage;\n const activeTransform = this._activeTransform;\n activeTransform.x = constrainedPointerPosition.x - offset.x + this._passiveTransform.x;\n activeTransform.y = constrainedPointerPosition.y - offset.y + this._passiveTransform.y;\n this._applyRootElementTransform(activeTransform.x, activeTransform.y);\n }\n // Since this event gets fired for every pixel while dragging, we only\n // want to fire it if the consumer opted into it. Also we have to\n // re-enter the zone because we run all of the events on the outside.\n if (this._moveEvents.observers.length) {\n this._ngZone.run(() => {\n this._moveEvents.next({\n source: this,\n pointerPosition: constrainedPointerPosition,\n event,\n distance: this._getDragDistance(constrainedPointerPosition),\n delta: this._pointerDirectionDelta,\n });\n });\n }\n };\n /** Handler that is invoked when the user lifts their pointer up, after initiating a drag. */\n this._pointerUp = (event) => {\n this._endDragSequence(event);\n };\n /** Handles a native `dragstart` event. */\n this._nativeDragStart = (event) => {\n if (this._handles.length) {\n const targetHandle = this._getTargetHandle(event);\n if (targetHandle && !this._disabledHandles.has(targetHandle) && !this.disabled) {\n event.preventDefault();\n }\n }\n else if (!this.disabled) {\n // Usually this isn't necessary since the we prevent the default action in `pointerDown`,\n // but some cases like dragging of links can slip through (see #24403).\n event.preventDefault();\n }\n };\n this.withRootElement(element).withParent(_config.parentDragRef || null);\n this._parentPositions = new ParentPositionTracker(_document);\n _dragDropRegistry.registerDragItem(this);\n }\n /**\n * Returns the element that is being used as a placeholder\n * while the current element is being dragged.\n */\n getPlaceholderElement() {\n return this._placeholder;\n }\n /** Returns the root draggable element. */\n getRootElement() {\n return this._rootElement;\n }\n /**\n * Gets the currently-visible element that represents the drag item.\n * While dragging this is the placeholder, otherwise it's the root element.\n */\n getVisibleElement() {\n return this.isDragging() ? this.getPlaceholderElement() : this.getRootElement();\n }\n /** Registers the handles that can be used to drag the element. */\n withHandles(handles) {\n this._handles = handles.map(handle => coerceElement(handle));\n this._handles.forEach(handle => toggleNativeDragInteractions(handle, this.disabled));\n this._toggleNativeDragInteractions();\n // Delete any lingering disabled handles that may have been destroyed. Note that we re-create\n // the set, rather than iterate over it and filter out the destroyed handles, because while\n // the ES spec allows for sets to be modified while they're being iterated over, some polyfills\n // use an array internally which may throw an error.\n const disabledHandles = new Set();\n this._disabledHandles.forEach(handle => {\n if (this._handles.indexOf(handle) > -1) {\n disabledHandles.add(handle);\n }\n });\n this._disabledHandles = disabledHandles;\n return this;\n }\n /**\n * Registers the template that should be used for the drag preview.\n * @param template Template that from which to stamp out the preview.\n */\n withPreviewTemplate(template) {\n this._previewTemplate = template;\n return this;\n }\n /**\n * Registers the template that should be used for the drag placeholder.\n * @param template Template that from which to stamp out the placeholder.\n */\n withPlaceholderTemplate(template) {\n this._placeholderTemplate = template;\n return this;\n }\n /**\n * Sets an alternate drag root element. The root element is the element that will be moved as\n * the user is dragging. Passing an alternate root element is useful when trying to enable\n * dragging on an element that you might not have access to.\n */\n withRootElement(rootElement) {\n const element = coerceElement(rootElement);\n if (element !== this._rootElement) {\n if (this._rootElement) {\n this._removeRootElementListeners(this._rootElement);\n }\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener('mousedown', this._pointerDown, activeEventListenerOptions);\n element.addEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);\n element.addEventListener('dragstart', this._nativeDragStart, activeEventListenerOptions);\n });\n this._initialTransform = undefined;\n this._rootElement = element;\n }\n if (typeof SVGElement !== 'undefined' && this._rootElement instanceof SVGElement) {\n this._ownerSVGElement = this._rootElement.ownerSVGElement;\n }\n return this;\n }\n /**\n * Element to which the draggable's position will be constrained.\n */\n withBoundaryElement(boundaryElement) {\n this._boundaryElement = boundaryElement ? coerceElement(boundaryElement) : null;\n this._resizeSubscription.unsubscribe();\n if (boundaryElement) {\n this._resizeSubscription = this._viewportRuler\n .change(10)\n .subscribe(() => this._containInsideBoundaryOnResize());\n }\n return this;\n }\n /** Sets the parent ref that the ref is nested in. */\n withParent(parent) {\n this._parentDragRef = parent;\n return this;\n }\n /** Removes the dragging functionality from the DOM element. */\n dispose() {\n this._removeRootElementListeners(this._rootElement);\n // Do this check before removing from the registry since it'll\n // stop being considered as dragged once it is removed.\n if (this.isDragging()) {\n // Since we move out the element to the end of the body while it's being\n // dragged, we have to make sure that it's removed if it gets destroyed.\n this._rootElement?.remove();\n }\n this._anchor?.remove();\n this._destroyPreview();\n this._destroyPlaceholder();\n this._dragDropRegistry.removeDragItem(this);\n this._removeListeners();\n this.beforeStarted.complete();\n this.started.complete();\n this.released.complete();\n this.ended.complete();\n this.entered.complete();\n this.exited.complete();\n this.dropped.complete();\n this._moveEvents.complete();\n this._handles = [];\n this._disabledHandles.clear();\n this._dropContainer = undefined;\n this._resizeSubscription.unsubscribe();\n this._parentPositions.clear();\n this._boundaryElement =\n this._rootElement =\n this._ownerSVGElement =\n this._placeholderTemplate =\n this._previewTemplate =\n this._anchor =\n this._parentDragRef =\n null;\n }\n /** Checks whether the element is currently being dragged. */\n isDragging() {\n return this._hasStartedDragging() && this._dragDropRegistry.isDragging(this);\n }\n /** Resets a standalone drag item to its initial position. */\n reset() {\n this._rootElement.style.transform = this._initialTransform || '';\n this._activeTransform = { x: 0, y: 0 };\n this._passiveTransform = { x: 0, y: 0 };\n }\n /**\n * Sets a handle as disabled. While a handle is disabled, it'll capture and interrupt dragging.\n * @param handle Handle element that should be disabled.\n */\n disableHandle(handle) {\n if (!this._disabledHandles.has(handle) && this._handles.indexOf(handle) > -1) {\n this._disabledHandles.add(handle);\n toggleNativeDragInteractions(handle, true);\n }\n }\n /**\n * Enables a handle, if it has been disabled.\n * @param handle Handle element to be enabled.\n */\n enableHandle(handle) {\n if (this._disabledHandles.has(handle)) {\n this._disabledHandles.delete(handle);\n toggleNativeDragInteractions(handle, this.disabled);\n }\n }\n /** Sets the layout direction of the draggable item. */\n withDirection(direction) {\n this._direction = direction;\n return this;\n }\n /** Sets the container that the item is part of. */\n _withDropContainer(container) {\n this._dropContainer = container;\n }\n /**\n * Gets the current position in pixels the draggable outside of a drop container.\n */\n getFreeDragPosition() {\n const position = this.isDragging() ? this._activeTransform : this._passiveTransform;\n return { x: position.x, y: position.y };\n }\n /**\n * Sets the current position in pixels the draggable outside of a drop container.\n * @param value New position to be set.\n */\n setFreeDragPosition(value) {\n this._activeTransform = { x: 0, y: 0 };\n this._passiveTransform.x = value.x;\n this._passiveTransform.y = value.y;\n if (!this._dropContainer) {\n this._applyRootElementTransform(value.x, value.y);\n }\n return this;\n }\n /**\n * Sets the container into which to insert the preview element.\n * @param value Container into which to insert the preview.\n */\n withPreviewContainer(value) {\n this._previewContainer = value;\n return this;\n }\n /** Updates the item's sort order based on the last-known pointer position. */\n _sortFromLastPointerPosition() {\n const position = this._lastKnownPointerPosition;\n if (position && this._dropContainer) {\n this._updateActiveDropContainer(this._getConstrainedPointerPosition(position), position);\n }\n }\n /** Unsubscribes from the global subscriptions. */\n _removeListeners() {\n this._pointerMoveSubscription.unsubscribe();\n this._pointerUpSubscription.unsubscribe();\n this._scrollSubscription.unsubscribe();\n this._getShadowRoot()?.removeEventListener('selectstart', shadowDomSelectStart, activeCapturingEventOptions$1);\n }\n /** Destroys the preview element and its ViewRef. */\n _destroyPreview() {\n this._preview?.destroy();\n this._preview = null;\n }\n /** Destroys the placeholder element and its ViewRef. */\n _destroyPlaceholder() {\n this._placeholder?.remove();\n this._placeholderRef?.destroy();\n this._placeholder = this._placeholderRef = null;\n }\n /**\n * Clears subscriptions and stops the dragging sequence.\n * @param event Browser event object that ended the sequence.\n */\n _endDragSequence(event) {\n // Note that here we use `isDragging` from the service, rather than from `this`.\n // The difference is that the one from the service reflects whether a dragging sequence\n // has been initiated, whereas the one on `this` includes whether the user has passed\n // the minimum dragging threshold.\n if (!this._dragDropRegistry.isDragging(this)) {\n return;\n }\n this._removeListeners();\n this._dragDropRegistry.stopDragging(this);\n this._toggleNativeDragInteractions();\n if (this._handles) {\n this._rootElement.style.webkitTapHighlightColor =\n this._rootElementTapHighlight;\n }\n if (!this._hasStartedDragging()) {\n return;\n }\n this.released.next({ source: this, event });\n if (this._dropContainer) {\n // Stop scrolling immediately, instead of waiting for the animation to finish.\n this._dropContainer._stopScrolling();\n this._animatePreviewToPlaceholder().then(() => {\n this._cleanupDragArtifacts(event);\n this._cleanupCachedDimensions();\n this._dragDropRegistry.stopDragging(this);\n });\n }\n else {\n // Convert the active transform into a passive one. This means that next time\n // the user starts dragging the item, its position will be calculated relatively\n // to the new passive transform.\n this._passiveTransform.x = this._activeTransform.x;\n const pointerPosition = this._getPointerPositionOnPage(event);\n this._passiveTransform.y = this._activeTransform.y;\n this._ngZone.run(() => {\n this.ended.next({\n source: this,\n distance: this._getDragDistance(pointerPosition),\n dropPoint: pointerPosition,\n event,\n });\n });\n this._cleanupCachedDimensions();\n this._dragDropRegistry.stopDragging(this);\n }\n }\n /** Starts the dragging sequence. */\n _startDragSequence(event) {\n if (isTouchEvent(event)) {\n this._lastTouchEventTime = Date.now();\n }\n this._toggleNativeDragInteractions();\n // Needs to happen before the root element is moved.\n const shadowRoot = this._getShadowRoot();\n const dropContainer = this._dropContainer;\n if (shadowRoot) {\n // In some browsers the global `selectstart` that we maintain in the `DragDropRegistry`\n // doesn't cross the shadow boundary so we have to prevent it at the shadow root (see #28792).\n this._ngZone.runOutsideAngular(() => {\n shadowRoot.addEventListener('selectstart', shadowDomSelectStart, activeCapturingEventOptions$1);\n });\n }\n if (dropContainer) {\n const element = this._rootElement;\n const parent = element.parentNode;\n const placeholder = (this._placeholder = this._createPlaceholderElement());\n const anchor = (this._anchor =\n this._anchor ||\n this._document.createComment(typeof ngDevMode === 'undefined' || ngDevMode ? 'cdk-drag-anchor' : ''));\n // Insert an anchor node so that we can restore the element's position in the DOM.\n parent.insertBefore(anchor, element);\n // There's no risk of transforms stacking when inside a drop container so\n // we can keep the initial transform up to date any time dragging starts.\n this._initialTransform = element.style.transform || '';\n // Create the preview after the initial transform has\n // been cached, because it can be affected by the transform.\n this._preview = new PreviewRef(this._document, this._rootElement, this._direction, this._initialDomRect, this._previewTemplate || null, this.previewClass || null, this._pickupPositionOnPage, this._initialTransform, this._config.zIndex || 1000);\n this._preview.attach(this._getPreviewInsertionPoint(parent, shadowRoot));\n // We move the element out at the end of the body and we make it hidden, because keeping it in\n // place will throw off the consumer's `:last-child` selectors. We can't remove the element\n // from the DOM completely, because iOS will stop firing all subsequent events in the chain.\n toggleVisibility(element, false, dragImportantProperties);\n this._document.body.appendChild(parent.replaceChild(placeholder, element));\n this.started.next({ source: this, event }); // Emit before notifying the container.\n dropContainer.start();\n this._initialContainer = dropContainer;\n this._initialIndex = dropContainer.getItemIndex(this);\n }\n else {\n this.started.next({ source: this, event });\n this._initialContainer = this._initialIndex = undefined;\n }\n // Important to run after we've called `start` on the parent container\n // so that it has had time to resolve its scrollable parents.\n this._parentPositions.cache(dropContainer ? dropContainer.getScrollableParents() : []);\n }\n /**\n * Sets up the different variables and subscriptions\n * that will be necessary for the dragging sequence.\n * @param referenceElement Element that started the drag sequence.\n * @param event Browser event object that started the sequence.\n */\n _initializeDragSequence(referenceElement, event) {\n // Stop propagation if the item is inside another\n // draggable so we don't start multiple drag sequences.\n if (this._parentDragRef) {\n event.stopPropagation();\n }\n const isDragging = this.isDragging();\n const isTouchSequence = isTouchEvent(event);\n const isAuxiliaryMouseButton = !isTouchSequence && event.button !== 0;\n const rootElement = this._rootElement;\n const target = _getEventTarget(event);\n const isSyntheticEvent = !isTouchSequence &&\n this._lastTouchEventTime &&\n this._lastTouchEventTime + MOUSE_EVENT_IGNORE_TIME > Date.now();\n const isFakeEvent = isTouchSequence\n ? isFakeTouchstartFromScreenReader(event)\n : isFakeMousedownFromScreenReader(event);\n // If the event started from an element with the native HTML drag&drop, it'll interfere\n // with our own dragging (e.g. `img` tags do it by default). Prevent the default action\n // to stop it from happening. Note that preventing on `dragstart` also seems to work, but\n // it's flaky and it fails if the user drags it away quickly. Also note that we only want\n // to do this for `mousedown` since doing the same for `touchstart` will stop any `click`\n // events from firing on touch devices.\n if (target && target.draggable && event.type === 'mousedown') {\n event.preventDefault();\n }\n // Abort if the user is already dragging or is using a mouse button other than the primary one.\n if (isDragging || isAuxiliaryMouseButton || isSyntheticEvent || isFakeEvent) {\n return;\n }\n // If we've got handles, we need to disable the tap highlight on the entire root element,\n // otherwise iOS will still add it, even though all the drag interactions on the handle\n // are disabled.\n if (this._handles.length) {\n const rootStyles = rootElement.style;\n this._rootElementTapHighlight = rootStyles.webkitTapHighlightColor || '';\n rootStyles.webkitTapHighlightColor = 'transparent';\n }\n this._hasMoved = false;\n this._hasStartedDragging.set(this._hasMoved);\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._removeListeners();\n this._initialDomRect = this._rootElement.getBoundingClientRect();\n this._pointerMoveSubscription = this._dragDropRegistry.pointerMove.subscribe(this._pointerMove);\n this._pointerUpSubscription = this._dragDropRegistry.pointerUp.subscribe(this._pointerUp);\n this._scrollSubscription = this._dragDropRegistry\n .scrolled(this._getShadowRoot())\n .subscribe(scrollEvent => this._updateOnScroll(scrollEvent));\n if (this._boundaryElement) {\n this._boundaryRect = getMutableClientRect(this._boundaryElement);\n }\n // If we have a custom preview we can't know ahead of time how large it'll be so we position\n // it next to the cursor. The exception is when the consumer has opted into making the preview\n // the same size as the root element, in which case we do know the size.\n const previewTemplate = this._previewTemplate;\n this._pickupPositionInElement =\n previewTemplate && previewTemplate.template && !previewTemplate.matchSize\n ? { x: 0, y: 0 }\n : this._getPointerPositionInElement(this._initialDomRect, referenceElement, event);\n const pointerPosition = (this._pickupPositionOnPage =\n this._lastKnownPointerPosition =\n this._getPointerPositionOnPage(event));\n this._pointerDirectionDelta = { x: 0, y: 0 };\n this._pointerPositionAtLastDirectionChange = { x: pointerPosition.x, y: pointerPosition.y };\n this._dragStartTime = Date.now();\n this._dragDropRegistry.startDragging(this, event);\n }\n /** Cleans up the DOM artifacts that were added to facilitate the element being dragged. */\n _cleanupDragArtifacts(event) {\n // Restore the element's visibility and insert it at its old position in the DOM.\n // It's important that we maintain the position, because moving the element around in the DOM\n // can throw off `NgFor` which does smart diffing and re-creates elements only when necessary,\n // while moving the existing elements in all other cases.\n toggleVisibility(this._rootElement, true, dragImportantProperties);\n this._anchor.parentNode.replaceChild(this._rootElement, this._anchor);\n this._destroyPreview();\n this._destroyPlaceholder();\n this._initialDomRect =\n this._boundaryRect =\n this._previewRect =\n this._initialTransform =\n undefined;\n // Re-enter the NgZone since we bound `document` events on the outside.\n this._ngZone.run(() => {\n const container = this._dropContainer;\n const currentIndex = container.getItemIndex(this);\n const pointerPosition = this._getPointerPositionOnPage(event);\n const distance = this._getDragDistance(pointerPosition);\n const isPointerOverContainer = container._isOverContainer(pointerPosition.x, pointerPosition.y);\n this.ended.next({ source: this, distance, dropPoint: pointerPosition, event });\n this.dropped.next({\n item: this,\n currentIndex,\n previousIndex: this._initialIndex,\n container: container,\n previousContainer: this._initialContainer,\n isPointerOverContainer,\n distance,\n dropPoint: pointerPosition,\n event,\n });\n container.drop(this, currentIndex, this._initialIndex, this._initialContainer, isPointerOverContainer, distance, pointerPosition, event);\n this._dropContainer = this._initialContainer;\n });\n }\n /**\n * Updates the item's position in its drop container, or moves it\n * into a new one, depending on its current drag position.\n */\n _updateActiveDropContainer({ x, y }, { x: rawX, y: rawY }) {\n // Drop container that draggable has been moved into.\n let newContainer = this._initialContainer._getSiblingContainerFromPosition(this, x, y);\n // If we couldn't find a new container to move the item into, and the item has left its\n // initial container, check whether the it's over the initial container. This handles the\n // case where two containers are connected one way and the user tries to undo dragging an\n // item into a new container.\n if (!newContainer &&\n this._dropContainer !== this._initialContainer &&\n this._initialContainer._isOverContainer(x, y)) {\n newContainer = this._initialContainer;\n }\n if (newContainer && newContainer !== this._dropContainer) {\n this._ngZone.run(() => {\n // Notify the old container that the item has left.\n this.exited.next({ item: this, container: this._dropContainer });\n this._dropContainer.exit(this);\n // Notify the new container that the item has entered.\n this._dropContainer = newContainer;\n this._dropContainer.enter(this, x, y, newContainer === this._initialContainer &&\n // If we're re-entering the initial container and sorting is disabled,\n // put item the into its starting index to begin with.\n newContainer.sortingDisabled\n ? this._initialIndex\n : undefined);\n this.entered.next({\n item: this,\n container: newContainer,\n currentIndex: newContainer.getItemIndex(this),\n });\n });\n }\n // Dragging may have been interrupted as a result of the events above.\n if (this.isDragging()) {\n this._dropContainer._startScrollingIfNecessary(rawX, rawY);\n this._dropContainer._sortItem(this, x, y, this._pointerDirectionDelta);\n if (this.constrainPosition) {\n this._applyPreviewTransform(x, y);\n }\n else {\n this._applyPreviewTransform(x - this._pickupPositionInElement.x, y - this._pickupPositionInElement.y);\n }\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 _animatePreviewToPlaceholder() {\n // If the user hasn't moved yet, the transitionend event won't fire.\n if (!this._hasMoved) {\n return Promise.resolve();\n }\n const placeholderRect = this._placeholder.getBoundingClientRect();\n // Apply the class that adds a transition to the preview.\n this._preview.addClass('cdk-drag-animating');\n // Move the preview to the placeholder position.\n this._applyPreviewTransform(placeholderRect.left, placeholderRect.top);\n // If the element doesn't have a `transition`, the `transitionend` event won't fire. Since\n // we need to trigger a style recalculation in order for the `cdk-drag-animating` class to\n // apply its style, we take advantage of the available info to figure out whether we need to\n // bind the event in the first place.\n const duration = this._preview.getTransitionDuration();\n if (duration === 0) {\n return Promise.resolve();\n }\n return this._ngZone.runOutsideAngular(() => {\n return new Promise(resolve => {\n const handler = ((event) => {\n if (!event ||\n (this._preview &&\n _getEventTarget(event) === this._preview.element &&\n event.propertyName === 'transform')) {\n this._preview?.removeEventListener('transitionend', handler);\n resolve();\n clearTimeout(timeout);\n }\n });\n // If a transition is short enough, the browser might not fire the `transitionend` event.\n // Since we know how long it's supposed to take, add a timeout with a 50% buffer that'll\n // fire if the transition hasn't completed when it was supposed to.\n const timeout = setTimeout(handler, duration * 1.5);\n this._preview.addEventListener('transitionend', handler);\n });\n });\n }\n /** Creates an element that will be shown instead of the current element while dragging. */\n _createPlaceholderElement() {\n const placeholderConfig = this._placeholderTemplate;\n const placeholderTemplate = placeholderConfig ? placeholderConfig.template : null;\n let placeholder;\n if (placeholderTemplate) {\n this._placeholderRef = placeholderConfig.viewContainer.createEmbeddedView(placeholderTemplate, placeholderConfig.context);\n this._placeholderRef.detectChanges();\n placeholder = getRootNode(this._placeholderRef, this._document);\n }\n else {\n placeholder = deepCloneNode(this._rootElement);\n }\n // Stop pointer events on the preview so the user can't\n // interact with it while the preview is animating.\n placeholder.style.pointerEvents = 'none';\n placeholder.classList.add('cdk-drag-placeholder');\n return placeholder;\n }\n /**\n * Figures out the coordinates at which an element was picked up.\n * @param referenceElement Element that initiated the dragging.\n * @param event Event that initiated the dragging.\n */\n _getPointerPositionInElement(elementRect, referenceElement, event) {\n const handleElement = referenceElement === this._rootElement ? null : referenceElement;\n const referenceRect = handleElement ? handleElement.getBoundingClientRect() : elementRect;\n const point = isTouchEvent(event) ? event.targetTouches[0] : event;\n const scrollPosition = this._getViewportScrollPosition();\n const x = point.pageX - referenceRect.left - scrollPosition.left;\n const y = point.pageY - referenceRect.top - scrollPosition.top;\n return {\n x: referenceRect.left - elementRect.left + x,\n y: referenceRect.top - elementRect.top + y,\n };\n }\n /** Determines the point of the page that was touched by the user. */\n _getPointerPositionOnPage(event) {\n const scrollPosition = this._getViewportScrollPosition();\n const point = isTouchEvent(event)\n ? // `touches` will be empty for start/end events so we have to fall back to `changedTouches`.\n // Also note that on real devices we're guaranteed for either `touches` or `changedTouches`\n // to have a value, but Firefox in device emulation mode has a bug where both can be empty\n // for `touchstart` and `touchend` so we fall back to a dummy object in order to avoid\n // throwing an error. The value returned here will be incorrect, but since this only\n // breaks inside a developer tool and the value is only used for secondary information,\n // we can get away with it. See https://bugzilla.mozilla.org/show_bug.cgi?id=1615824.\n event.touches[0] || event.changedTouches[0] || { pageX: 0, pageY: 0 }\n : event;\n const x = point.pageX - scrollPosition.left;\n const y = point.pageY - scrollPosition.top;\n // if dragging SVG element, try to convert from the screen coordinate system to the SVG\n // coordinate system\n if (this._ownerSVGElement) {\n const svgMatrix = this._ownerSVGElement.getScreenCTM();\n if (svgMatrix) {\n const svgPoint = this._ownerSVGElement.createSVGPoint();\n svgPoint.x = x;\n svgPoint.y = y;\n return svgPoint.matrixTransform(svgMatrix.inverse());\n }\n }\n return { x, y };\n }\n /** Gets the pointer position on the page, accounting for any position constraints. */\n _getConstrainedPointerPosition(point) {\n const dropContainerLock = this._dropContainer ? this._dropContainer.lockAxis : null;\n let { x, y } = this.constrainPosition\n ? this.constrainPosition(point, this, this._initialDomRect, this._pickupPositionInElement)\n : point;\n if (this.lockAxis === 'x' || dropContainerLock === 'x') {\n y =\n this._pickupPositionOnPage.y -\n (this.constrainPosition ? this._pickupPositionInElement.y : 0);\n }\n else if (this.lockAxis === 'y' || dropContainerLock === 'y') {\n x =\n this._pickupPositionOnPage.x -\n (this.constrainPosition ? this._pickupPositionInElement.x : 0);\n }\n if (this._boundaryRect) {\n // If not using a custom constrain we need to account for the pickup position in the element\n // otherwise we do not need to do this, as it has already been accounted for\n const { x: pickupX, y: pickupY } = !this.constrainPosition\n ? this._pickupPositionInElement\n : { x: 0, y: 0 };\n const boundaryRect = this._boundaryRect;\n const { width: previewWidth, height: previewHeight } = this._getPreviewRect();\n const minY = boundaryRect.top + pickupY;\n const maxY = boundaryRect.bottom - (previewHeight - pickupY);\n const minX = boundaryRect.left + pickupX;\n const maxX = boundaryRect.right - (previewWidth - pickupX);\n x = clamp$1(x, minX, maxX);\n y = clamp$1(y, minY, maxY);\n }\n return { x, y };\n }\n /** Updates the current drag delta, based on the user's current pointer position on the page. */\n _updatePointerDirectionDelta(pointerPositionOnPage) {\n const { x, y } = pointerPositionOnPage;\n const delta = this._pointerDirectionDelta;\n const positionSinceLastChange = this._pointerPositionAtLastDirectionChange;\n // Amount of pixels the user has dragged since the last time the direction changed.\n const changeX = Math.abs(x - positionSinceLastChange.x);\n const changeY = Math.abs(y - positionSinceLastChange.y);\n // Because we handle pointer events on a per-pixel basis, we don't want the delta\n // to change for every pixel, otherwise anything that depends on it can look erratic.\n // To make the delta more consistent, we track how much the user has moved since the last\n // delta change and we only update it after it has reached a certain threshold.\n if (changeX > this._config.pointerDirectionChangeThreshold) {\n delta.x = x > positionSinceLastChange.x ? 1 : -1;\n positionSinceLastChange.x = x;\n }\n if (changeY > this._config.pointerDirectionChangeThreshold) {\n delta.y = y > positionSinceLastChange.y ? 1 : -1;\n positionSinceLastChange.y = y;\n }\n return delta;\n }\n /** Toggles the native drag interactions, based on how many handles are registered. */\n _toggleNativeDragInteractions() {\n if (!this._rootElement || !this._handles) {\n return;\n }\n const shouldEnable = this._handles.length > 0 || !this.isDragging();\n if (shouldEnable !== this._nativeInteractionsEnabled) {\n this._nativeInteractionsEnabled = shouldEnable;\n toggleNativeDragInteractions(this._rootElement, shouldEnable);\n }\n }\n /** Removes the manually-added event listeners from the root element. */\n _removeRootElementListeners(element) {\n element.removeEventListener('mousedown', this._pointerDown, activeEventListenerOptions);\n element.removeEventListener('touchstart', this._pointerDown, passiveEventListenerOptions);\n element.removeEventListener('dragstart', this._nativeDragStart, activeEventListenerOptions);\n }\n /**\n * Applies a `transform` to the root element, taking into account any existing transforms on it.\n * @param x New transform value along the X axis.\n * @param y New transform value along the Y axis.\n */\n _applyRootElementTransform(x, y) {\n const scale = 1 / this.scale;\n const transform = getTransform(x * scale, y * scale);\n const styles = this._rootElement.style;\n // Cache the previous transform amount only after the first drag sequence, because\n // we don't want our own transforms to stack on top of each other.\n // Should be excluded none because none + translate3d(x, y, x) is invalid css\n if (this._initialTransform == null) {\n this._initialTransform =\n styles.transform && styles.transform != 'none' ? styles.transform : '';\n }\n // Preserve the previous `transform` value, if there was one. Note that we apply our own\n // transform before the user's, because things like rotation can affect which direction\n // the element will be translated towards.\n styles.transform = combineTransforms(transform, this._initialTransform);\n }\n /**\n * Applies a `transform` to the preview, taking into account any existing transforms on it.\n * @param x New transform value along the X axis.\n * @param y New transform value along the Y axis.\n */\n _applyPreviewTransform(x, y) {\n // Only apply the initial transform if the preview is a clone of the original element, otherwise\n // it could be completely different and the transform might not make sense anymore.\n const initialTransform = this._previewTemplate?.template ? undefined : this._initialTransform;\n const transform = getTransform(x, y);\n this._preview.setTransform(combineTransforms(transform, initialTransform));\n }\n /**\n * Gets the distance that the user has dragged during the current drag sequence.\n * @param currentPosition Current position of the user's pointer.\n */\n _getDragDistance(currentPosition) {\n const pickupPosition = this._pickupPositionOnPage;\n if (pickupPosition) {\n return { x: currentPosition.x - pickupPosition.x, y: currentPosition.y - pickupPosition.y };\n }\n return { x: 0, y: 0 };\n }\n /** Cleans up any cached element dimensions that we don't need after dragging has stopped. */\n _cleanupCachedDimensions() {\n this._boundaryRect = this._previewRect = undefined;\n this._parentPositions.clear();\n }\n /**\n * Checks whether the element is still inside its boundary after the viewport has been resized.\n * If not, the position is adjusted so that the element fits again.\n */\n _containInsideBoundaryOnResize() {\n let { x, y } = this._passiveTransform;\n if ((x === 0 && y === 0) || this.isDragging() || !this._boundaryElement) {\n return;\n }\n // Note: don't use `_clientRectAtStart` here, because we want the latest position.\n const elementRect = this._rootElement.getBoundingClientRect();\n const boundaryRect = this._boundaryElement.getBoundingClientRect();\n // It's possible that the element got hidden away after dragging (e.g. by switching to a\n // different tab). Don't do anything in this case so we don't clear the user's position.\n if ((boundaryRect.width === 0 && boundaryRect.height === 0) ||\n (elementRect.width === 0 && elementRect.height === 0)) {\n return;\n }\n const leftOverflow = boundaryRect.left - elementRect.left;\n const rightOverflow = elementRect.right - boundaryRect.right;\n const topOverflow = boundaryRect.top - elementRect.top;\n const bottomOverflow = elementRect.bottom - boundaryRect.bottom;\n // If the element has become wider than the boundary, we can't\n // do much to make it fit so we just anchor it to the left.\n if (boundaryRect.width > elementRect.width) {\n if (leftOverflow > 0) {\n x += leftOverflow;\n }\n if (rightOverflow > 0) {\n x -= rightOverflow;\n }\n }\n else {\n x = 0;\n }\n // If the element has become taller than the boundary, we can't\n // do much to make it fit so we just anchor it to the top.\n if (boundaryRect.height > elementRect.height) {\n if (topOverflow > 0) {\n y += topOverflow;\n }\n if (bottomOverflow > 0) {\n y -= bottomOverflow;\n }\n }\n else {\n y = 0;\n }\n if (x !== this._passiveTransform.x || y !== this._passiveTransform.y) {\n this.setFreeDragPosition({ y, x });\n }\n }\n /** Gets the drag start delay, based on the event type. */\n _getDragStartDelay(event) {\n const value = this.dragStartDelay;\n if (typeof value === 'number') {\n return value;\n }\n else if (isTouchEvent(event)) {\n return value.touch;\n }\n return value ? value.mouse : 0;\n }\n /** Updates the internal state of the draggable element when scrolling has occurred. */\n _updateOnScroll(event) {\n const scrollDifference = this._parentPositions.handleScroll(event);\n if (scrollDifference) {\n const target = _getEventTarget(event);\n // DOMRect dimensions are based on the scroll position of the page and its parent\n // node so we have to update the cached boundary DOMRect if the user has scrolled.\n if (this._boundaryRect &&\n target !== this._boundaryElement &&\n target.contains(this._boundaryElement)) {\n adjustDomRect(this._boundaryRect, scrollDifference.top, scrollDifference.left);\n }\n this._pickupPositionOnPage.x += scrollDifference.left;\n this._pickupPositionOnPage.y += scrollDifference.top;\n // If we're in free drag mode, we have to update the active transform, because\n // it isn't relative to the viewport like the preview inside a drop list.\n if (!this._dropContainer) {\n this._activeTransform.x -= scrollDifference.left;\n this._activeTransform.y -= scrollDifference.top;\n this._applyRootElementTransform(this._activeTransform.x, this._activeTransform.y);\n }\n }\n }\n /** Gets the scroll position of the viewport. */\n _getViewportScrollPosition() {\n return (this._parentPositions.positions.get(this._document)?.scrollPosition ||\n this._parentPositions.getViewportScrollPosition());\n }\n /**\n * Lazily resolves and returns the shadow root of the element. We do this in a function, rather\n * than saving it in property directly on init, because we want to resolve it as late as possible\n * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the\n * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.\n */\n _getShadowRoot() {\n if (this._cachedShadowRoot === undefined) {\n this._cachedShadowRoot = _getShadowRoot(this._rootElement);\n }\n return this._cachedShadowRoot;\n }\n /** Gets the element into which the drag preview should be inserted. */\n _getPreviewInsertionPoint(initialParent, shadowRoot) {\n const previewContainer = this._previewContainer || 'global';\n if (previewContainer === 'parent') {\n return initialParent;\n }\n if (previewContainer === 'global') {\n const documentRef = this._document;\n // We can't use the body if the user is in fullscreen mode,\n // because the preview will render under the fullscreen element.\n // TODO(crisbeto): dedupe this with the `FullscreenOverlayContainer` eventually.\n return (shadowRoot ||\n documentRef.fullscreenElement ||\n documentRef.webkitFullscreenElement ||\n documentRef.mozFullScreenElement ||\n documentRef.msFullscreenElement ||\n documentRef.body);\n }\n return coerceElement(previewContainer);\n }\n /** Lazily resolves and returns the dimensions of the preview. */\n _getPreviewRect() {\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\n ? this._preview.getBoundingClientRect()\n : this._initialDomRect;\n }\n return this._previewRect;\n }\n /** Gets a handle that is the target of an event. */\n _getTargetHandle(event) {\n return this._handles.find(handle => {\n return event.target && (event.target === handle || handle.contains(event.target));\n });\n }\n}\n/** Clamps a value between a minimum and a maximum. */\nfunction clamp$1(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/** Determines whether an event is a touch event. */\nfunction isTouchEvent(event) {\n // This function is called for every pixel that the user has dragged so we need it to be\n // as fast as possible. Since we only bind mouse events and touch events, we can assume\n // that if the event's name starts with `t`, it's a touch event.\n return event.type[0] === 't';\n}\n/** Callback invoked for `selectstart` events inside the shadow DOM. */\nfunction shadowDomSelectStart(event) {\n event.preventDefault();\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 */\nfunction moveItemInArray(array, fromIndex, toIndex) {\n const from = clamp(fromIndex, array.length - 1);\n const to = clamp(toIndex, array.length - 1);\n if (from === to) {\n return;\n }\n const target = array[from];\n const delta = to < from ? -1 : 1;\n for (let i = from; i !== to; i += delta) {\n array[i] = array[i + delta];\n }\n array[to] = target;\n}\n/**\n * Moves an item from one array to another.\n * @param currentArray Array from which to transfer the item.\n * @param targetArray Array into which to put the item.\n * @param currentIndex Index of the item in its current array.\n * @param targetIndex Index at which to insert the item.\n */\nfunction transferArrayItem(currentArray, targetArray, currentIndex, targetIndex) {\n const from = clamp(currentIndex, currentArray.length - 1);\n const to = clamp(targetIndex, targetArray.length);\n if (currentArray.length) {\n targetArray.splice(to, 0, currentArray.splice(from, 1)[0]);\n }\n}\n/**\n * Copies an item from one array to another, leaving it in its\n * original position in current array.\n * @param currentArray Array from which to copy the item.\n * @param targetArray Array into which is copy the item.\n * @param currentIndex Index of the item in its current array.\n * @param targetIndex Index at which to insert the item.\n *\n */\nfunction copyArrayItem(currentArray, targetArray, currentIndex, targetIndex) {\n const to = clamp(targetIndex, targetArray.length);\n if (currentArray.length) {\n targetArray.splice(to, 0, currentArray[currentIndex]);\n }\n}\n/** Clamps a number between zero and a maximum. */\nfunction clamp(value, max) {\n return Math.max(0, Math.min(max, value));\n}\n\n/**\n * Strategy that only supports sorting along a single axis.\n * Items are reordered using CSS transforms which allows for sorting to be animated.\n * @docs-private\n */\nclass SingleAxisSortStrategy {\n constructor(_dragDropRegistry) {\n this._dragDropRegistry = _dragDropRegistry;\n /** Cache of the dimensions of all the items inside the container. */\n this._itemPositions = [];\n /** Direction in which the list is oriented. */\n this.orientation = 'vertical';\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 occurred and whether the user's pointer continued to\n * overlap with the swapped item after the swapping occurred.\n */\n this._previousSwap = {\n drag: null,\n delta: 0,\n overlaps: false,\n };\n }\n /**\n * To be called when the drag sequence starts.\n * @param items Items that are currently in the list.\n */\n start(items) {\n this.withItems(items);\n }\n /**\n * To be called when an item is being sorted.\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 sort(item, pointerX, pointerY, pointerDelta) {\n const siblings = this._itemPositions;\n const newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY, pointerDelta);\n if (newIndex === -1 && siblings.length > 0) {\n return null;\n }\n const isHorizontal = this.orientation === 'horizontal';\n const currentIndex = siblings.findIndex(currentItem => currentItem.drag === item);\n const siblingAtNewPosition = siblings[newIndex];\n const currentPosition = siblings[currentIndex].clientRect;\n const newPosition = siblingAtNewPosition.clientRect;\n const delta = currentIndex > newIndex ? 1 : -1;\n // How many pixels the item's placeholder should be offset.\n const itemOffset = this._getItemOffsetPx(currentPosition, newPosition, delta);\n // How many pixels all the other items should be offset.\n const siblingOffset = this._getSiblingOffsetPx(currentIndex, siblings, delta);\n // Save the previous order of the items before moving the item to its new index.\n // We use this to check whether an item has been moved as a result of the sorting.\n const oldOrder = siblings.slice();\n // Shuffle the array in place.\n moveItemInArray(siblings, currentIndex, newIndex);\n siblings.forEach((sibling, index) => {\n // Don't do anything if the position hasn't changed.\n if (oldOrder[index] === sibling) {\n return;\n }\n const isDraggedItem = sibling.drag === item;\n const offset = isDraggedItem ? itemOffset : siblingOffset;\n const elementToOffset = isDraggedItem\n ? item.getPlaceholderElement()\n : sibling.drag.getRootElement();\n // Update the offset to reflect the new position.\n sibling.offset += offset;\n const transformAmount = Math.round(sibling.offset * (1 / sibling.drag.scale));\n // Since we're moving the items with a `transform`, we need to adjust their cached\n // client rects to reflect their new position, as well as swap their positions in the cache.\n // Note that we shouldn't use `getBoundingClientRect` here to update the cache, because the\n // elements may be mid-animation which will give us a wrong result.\n if (isHorizontal) {\n // Round the transforms since some browsers will\n // blur the elements, for sub-pixel transforms.\n elementToOffset.style.transform = combineTransforms(`translate3d(${transformAmount}px, 0, 0)`, sibling.initialTransform);\n adjustDomRect(sibling.clientRect, 0, offset);\n }\n else {\n elementToOffset.style.transform = combineTransforms(`translate3d(0, ${transformAmount}px, 0)`, sibling.initialTransform);\n adjustDomRect(sibling.clientRect, offset, 0);\n }\n });\n // Note that it's important that we do this after the client rects have been adjusted.\n this._previousSwap.overlaps = isInsideClientRect(newPosition, pointerX, pointerY);\n this._previousSwap.drag = siblingAtNewPosition.drag;\n this._previousSwap.delta = isHorizontal ? pointerDelta.x : pointerDelta.y;\n return { previousIndex: currentIndex, currentIndex: newIndex };\n }\n /**\n * Called when an item is being moved into the container.\n * @param item Item that was moved into the container.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param index Index at which the item entered. If omitted, the container will try to figure it\n * out automatically.\n */\n enter(item, pointerX, pointerY, index) {\n const newIndex = index == null || index < 0\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 this._getItemIndexFromPointerPosition(item, pointerX, pointerY)\n : index;\n const activeDraggables = this._activeDraggables;\n const currentIndex = activeDraggables.indexOf(item);\n const placeholder = item.getPlaceholderElement();\n let newPositionReference = activeDraggables[newIndex];\n // If the item at the new position is the same as the item that is being dragged,\n // it means that we're trying to restore the item to its initial position. In this\n // case we should use the next item from the list as the reference.\n if (newPositionReference === item) {\n newPositionReference = activeDraggables[newIndex + 1];\n }\n // If we didn't find a new position reference, it means that either the item didn't start off\n // in this container, or that the item requested to be inserted at the end of the list.\n if (!newPositionReference &&\n (newIndex == null || newIndex === -1 || newIndex < activeDraggables.length - 1) &&\n this._shouldEnterAsFirstChild(pointerX, pointerY)) {\n newPositionReference = activeDraggables[0];\n }\n // Since the item may be in the `activeDraggables` already (e.g. if the user dragged it\n // into another container and back again), we have to ensure that it isn't duplicated.\n if (currentIndex > -1) {\n activeDraggables.splice(currentIndex, 1);\n }\n // Don't use items that are being dragged as a reference, because\n // their element has been moved down to the bottom of the body.\n if (newPositionReference && !this._dragDropRegistry.isDragging(newPositionReference)) {\n const element = newPositionReference.getRootElement();\n element.parentElement.insertBefore(placeholder, element);\n activeDraggables.splice(newIndex, 0, item);\n }\n else {\n this._element.appendChild(placeholder);\n activeDraggables.push(item);\n }\n // The transform needs to be cleared so it doesn't throw off the measurements.\n placeholder.style.transform = '';\n // Note that usually `start` is called together with `enter` when an item goes into a new\n // container. This will cache item positions, but we need to refresh them since the amount\n // of items has changed.\n this._cacheItemPositions();\n }\n /** Sets the items that are currently part of the list. */\n withItems(items) {\n this._activeDraggables = items.slice();\n this._cacheItemPositions();\n }\n /** Assigns a sort predicate to the strategy. */\n withSortPredicate(predicate) {\n this._sortPredicate = predicate;\n }\n /** Resets the strategy to its initial state before dragging was started. */\n reset() {\n // TODO(crisbeto): may have to wait for the animations to finish.\n this._activeDraggables?.forEach(item => {\n const rootElement = item.getRootElement();\n if (rootElement) {\n const initialTransform = this._itemPositions.find(p => p.drag === item)?.initialTransform;\n rootElement.style.transform = initialTransform || '';\n }\n });\n this._itemPositions = [];\n this._activeDraggables = [];\n this._previousSwap.drag = null;\n this._previousSwap.delta = 0;\n this._previousSwap.overlaps = false;\n }\n /**\n * Gets a snapshot of items currently in the list.\n * Can include items that we dragged in from another list.\n */\n getActiveItemsSnapshot() {\n return this._activeDraggables;\n }\n /** Gets the index of a specific item. */\n getItemIndex(item) {\n // Items are sorted always by top/left in the cache, however they flow differently in RTL.\n // The rest of the logic still stands no matter what orientation we're in, however\n // we need to invert the array when determining the index.\n const items = this.orientation === 'horizontal' && this.direction === 'rtl'\n ? this._itemPositions.slice().reverse()\n : this._itemPositions;\n return items.findIndex(currentItem => currentItem.drag === item);\n }\n /** Used to notify the strategy that the scroll position has changed. */\n updateOnScroll(topDifference, leftDifference) {\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 adjustDomRect(clientRect, topDifference, leftDifference);\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 withElementContainer(container) {\n this._element = container;\n }\n /** Refreshes the position cache of the items and sibling containers. */\n _cacheItemPositions() {\n const isHorizontal = this.orientation === 'horizontal';\n this._itemPositions = this._activeDraggables\n .map(drag => {\n const elementToMeasure = drag.getVisibleElement();\n return {\n drag,\n offset: 0,\n initialTransform: elementToMeasure.style.transform || '',\n clientRect: getMutableClientRect(elementToMeasure),\n };\n })\n .sort((a, b) => {\n return isHorizontal\n ? a.clientRect.left - b.clientRect.left\n : a.clientRect.top - b.clientRect.top;\n });\n }\n /**\n * Gets the offset in pixels by which the item that is being dragged should be moved.\n * @param currentPosition Current position of the item.\n * @param newPosition Position of the item where the current item should be moved.\n * @param delta Direction in which the user is moving.\n */\n _getItemOffsetPx(currentPosition, newPosition, delta) {\n const isHorizontal = this.orientation === 'horizontal';\n let itemOffset = isHorizontal\n ? newPosition.left - currentPosition.left\n : newPosition.top - currentPosition.top;\n // Account for differences in the item width/height.\n if (delta === -1) {\n itemOffset += isHorizontal\n ? newPosition.width - currentPosition.width\n : newPosition.height - currentPosition.height;\n }\n return itemOffset;\n }\n /**\n * Gets the offset in pixels by which the items that aren't being dragged should be moved.\n * @param currentIndex Index of the item currently being dragged.\n * @param siblings All of the items in the list.\n * @param delta Direction in which the user is moving.\n */\n _getSiblingOffsetPx(currentIndex, siblings, delta) {\n const isHorizontal = this.orientation === 'horizontal';\n const currentPosition = siblings[currentIndex].clientRect;\n const immediateSibling = siblings[currentIndex + delta * -1];\n let siblingOffset = currentPosition[isHorizontal ? 'width' : 'height'] * delta;\n if (immediateSibling) {\n const start = isHorizontal ? 'left' : 'top';\n const end = isHorizontal ? 'right' : 'bottom';\n // Get the spacing between the start of the current item and the end of the one immediately\n // after it in the direction in which the user is dragging, or vice versa. We add it to the\n // offset in order to push the element to where it will be when it's inline and is influenced\n // by the `margin` of its siblings.\n if (delta === -1) {\n siblingOffset -= immediateSibling.clientRect[start] - currentPosition[end];\n }\n else {\n siblingOffset += currentPosition[start] - immediateSibling.clientRect[end];\n }\n }\n return siblingOffset;\n }\n /**\n * Checks if pointer is entering in the first position\n * @param pointerX Position of the user's pointer along the X axis.\n * @param pointerY Position of the user's pointer along the Y axis.\n */\n _shouldEnterAsFirstChild(pointerX, pointerY) {\n if (!this._activeDraggables.length) {\n return false;\n }\n const itemPositions = this._itemPositions;\n const isHorizontal = this.orientation === 'horizontal';\n // `itemPositions` are sorted by position while `activeDraggables` are sorted by child index\n // check if container is using some sort of \"reverse\" ordering (eg: flex-direction: row-reverse)\n const reversed = itemPositions[0].drag !== this._activeDraggables[0];\n if (reversed) {\n const lastItemRect = itemPositions[itemPositions.length - 1].clientRect;\n return isHorizontal ? pointerX >= lastItemRect.right : pointerY >= lastItemRect.bottom;\n }\n else {\n const firstItemRect = itemPositions[0].clientRect;\n return isHorizontal ? pointerX <= firstItemRect.left : pointerY <= firstItemRect.top;\n }\n }\n /**\n * Gets the index of an item in the drop container, based on the position of the user's pointer.\n * @param item Item that is being sorted.\n * @param pointerX Position of the user's pointer along the X axis.\n * @param pointerY Position of the user's pointer along the Y axis.\n * @param delta Direction in which the user is moving their pointer.\n */\n _getItemIndexFromPointerPosition(item, pointerX, pointerY, delta) {\n const isHorizontal = this.orientation === 'horizontal';\n const index = this._itemPositions.findIndex(({ drag, clientRect }) => {\n // Skip the item itself.\n if (drag === item) {\n return false;\n }\n if (delta) {\n const direction = isHorizontal ? delta.x : delta.y;\n // If the user is still hovering over the same item as last time, their cursor hasn't left\n // the item after we made the swap, and they didn't change the direction in which they're\n // dragging, we don't consider it a direction swap.\n if (drag === this._previousSwap.drag &&\n this._previousSwap.overlaps &&\n direction === this._previousSwap.delta) {\n return false;\n }\n }\n return isHorizontal\n ? // Round these down since most browsers report client rects with\n // sub-pixel precision, whereas the pointer coordinates are rounded to pixels.\n pointerX >= Math.floor(clientRect.left) && pointerX < Math.floor(clientRect.right)\n : pointerY >= Math.floor(clientRect.top) && pointerY < Math.floor(clientRect.bottom);\n });\n return index === -1 || !this._sortPredicate(index, item) ? -1 : index;\n }\n}\n\n/**\n * Strategy that only supports sorting on a list that might wrap.\n * Items are reordered by moving their DOM nodes around.\n * @docs-private\n */\nclass MixedSortStrategy {\n constructor(_document, _dragDropRegistry) {\n this._document = _document;\n this._dragDropRegistry = _dragDropRegistry;\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 occurred and whether the user's pointer continued to\n * overlap with the swapped item after the swapping occurred.\n */\n this._previousSwap = {\n drag: null,\n deltaX: 0,\n deltaY: 0,\n overlaps: false,\n };\n /**\n * Keeps track of the relationship between a node and its next sibling. This information\n * is used to restore the DOM to the order it was in before dragging started.\n */\n this._relatedNodes = [];\n }\n /**\n * To be called when the drag sequence starts.\n * @param items Items that are currently in the list.\n */\n start(items) {\n const childNodes = this._element.childNodes;\n this._relatedNodes = [];\n for (let i = 0; i < childNodes.length; i++) {\n const node = childNodes[i];\n this._relatedNodes.push([node, node.nextSibling]);\n }\n this.withItems(items);\n }\n /**\n * To be called when an item is being sorted.\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 sort(item, pointerX, pointerY, pointerDelta) {\n const newIndex = this._getItemIndexFromPointerPosition(item, pointerX, pointerY);\n const previousSwap = this._previousSwap;\n if (newIndex === -1 || this._activeItems[newIndex] === item) {\n return null;\n }\n const toSwapWith = this._activeItems[newIndex];\n // Prevent too many swaps over the same item.\n if (previousSwap.drag === toSwapWith &&\n previousSwap.overlaps &&\n previousSwap.deltaX === pointerDelta.x &&\n previousSwap.deltaY === pointerDelta.y) {\n return null;\n }\n const previousIndex = this.getItemIndex(item);\n const current = item.getPlaceholderElement();\n const overlapElement = toSwapWith.getRootElement();\n if (newIndex > previousIndex) {\n overlapElement.after(current);\n }\n else {\n overlapElement.before(current);\n }\n moveItemInArray(this._activeItems, previousIndex, newIndex);\n const newOverlapElement = this._getRootNode().elementFromPoint(pointerX, pointerY);\n // Note: it's tempting to save the entire `pointerDelta` object here, however that'll\n // break this functionality, because the same object is passed for all `sort` calls.\n previousSwap.deltaX = pointerDelta.x;\n previousSwap.deltaY = pointerDelta.y;\n previousSwap.drag = toSwapWith;\n previousSwap.overlaps =\n overlapElement === newOverlapElement || overlapElement.contains(newOverlapElement);\n return {\n previousIndex,\n currentIndex: newIndex,\n };\n }\n /**\n * Called when an item is being moved into the container.\n * @param item Item that was moved into the container.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param index Index at which the item entered. If omitted, the container will try to figure it\n * out automatically.\n */\n enter(item, pointerX, pointerY, index) {\n let enterIndex = index == null || index < 0\n ? this._getItemIndexFromPointerPosition(item, pointerX, pointerY)\n : index;\n // In some cases (e.g. when the container has padding) we might not be able to figure\n // out which item to insert the dragged item next to, because the pointer didn't overlap\n // with anything. In that case we find the item that's closest to the pointer.\n if (enterIndex === -1) {\n enterIndex = this._getClosestItemIndexToPointer(item, pointerX, pointerY);\n }\n const targetItem = this._activeItems[enterIndex];\n const currentIndex = this._activeItems.indexOf(item);\n if (currentIndex > -1) {\n this._activeItems.splice(currentIndex, 1);\n }\n if (targetItem && !this._dragDropRegistry.isDragging(targetItem)) {\n this._activeItems.splice(enterIndex, 0, item);\n targetItem.getRootElement().before(item.getPlaceholderElement());\n }\n else {\n this._activeItems.push(item);\n this._element.appendChild(item.getPlaceholderElement());\n }\n }\n /** Sets the items that are currently part of the list. */\n withItems(items) {\n this._activeItems = items.slice();\n }\n /** Assigns a sort predicate to the strategy. */\n withSortPredicate(predicate) {\n this._sortPredicate = predicate;\n }\n /** Resets the strategy to its initial state before dragging was started. */\n reset() {\n const root = this._element;\n const previousSwap = this._previousSwap;\n // Moving elements around in the DOM can break things like the `@for` loop, because it\n // uses comment nodes to know where to insert elements. To avoid such issues, we restore\n // the DOM nodes in the list to their original order when the list is reset.\n // Note that this could be simpler if we just saved all the nodes, cleared the root\n // and then appended them in the original order. We don't do it, because it can break\n // down depending on when the snapshot was taken. E.g. we may end up snapshotting the\n // placeholder element which is removed after dragging.\n for (let i = this._relatedNodes.length - 1; i > -1; i--) {\n const [node, nextSibling] = this._relatedNodes[i];\n if (node.parentNode === root && node.nextSibling !== nextSibling) {\n if (nextSibling === null) {\n root.appendChild(node);\n }\n else if (nextSibling.parentNode === root) {\n root.insertBefore(node, nextSibling);\n }\n }\n }\n this._relatedNodes = [];\n this._activeItems = [];\n previousSwap.drag = null;\n previousSwap.deltaX = previousSwap.deltaY = 0;\n previousSwap.overlaps = false;\n }\n /**\n * Gets a snapshot of items currently in the list.\n * Can include items that we dragged in from another list.\n */\n getActiveItemsSnapshot() {\n return this._activeItems;\n }\n /** Gets the index of a specific item. */\n getItemIndex(item) {\n return this._activeItems.indexOf(item);\n }\n /** Used to notify the strategy that the scroll position has changed. */\n updateOnScroll() {\n this._activeItems.forEach(item => {\n if (this._dragDropRegistry.isDragging(item)) {\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 item._sortFromLastPointerPosition();\n }\n });\n }\n withElementContainer(container) {\n if (container !== this._element) {\n this._element = container;\n this._rootNode = undefined;\n }\n }\n /**\n * Gets the index of an item in the drop container, based on the position of the user's pointer.\n * @param item Item that is being sorted.\n * @param pointerX Position of the user's pointer along the X axis.\n * @param pointerY Position of the user's pointer along the Y axis.\n * @param delta Direction in which the user is moving their pointer.\n */\n _getItemIndexFromPointerPosition(item, pointerX, pointerY) {\n const elementAtPoint = this._getRootNode().elementFromPoint(Math.floor(pointerX), Math.floor(pointerY));\n const index = elementAtPoint\n ? this._activeItems.findIndex(item => {\n const root = item.getRootElement();\n return elementAtPoint === root || root.contains(elementAtPoint);\n })\n : -1;\n return index === -1 || !this._sortPredicate(index, item) ? -1 : index;\n }\n /** Lazily resolves the list's root node. */\n _getRootNode() {\n // Resolve the root node lazily to ensure that the drop list is in its final place in the DOM.\n if (!this._rootNode) {\n this._rootNode = _getShadowRoot(this._element) || this._document;\n }\n return this._rootNode;\n }\n /**\n * Finds the index of the item that's closest to the item being dragged.\n * @param item Item being dragged.\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 _getClosestItemIndexToPointer(item, pointerX, pointerY) {\n if (this._activeItems.length === 0) {\n return -1;\n }\n if (this._activeItems.length === 1) {\n return 0;\n }\n let minDistance = Infinity;\n let minIndex = -1;\n // Find the Euclidean distance (https://en.wikipedia.org/wiki/Euclidean_distance) between each\n // item and the pointer, and return the smallest one. Note that this is a bit flawed in that DOM\n // nodes are rectangles, not points, so we use the top/left coordinates. It should be enough\n // for our purposes.\n for (let i = 0; i < this._activeItems.length; i++) {\n const current = this._activeItems[i];\n if (current !== item) {\n const { x, y } = current.getRootElement().getBoundingClientRect();\n const distance = Math.hypot(pointerX - x, pointerY - y);\n if (distance < minDistance) {\n minDistance = distance;\n minIndex = i;\n }\n }\n }\n return minIndex;\n }\n}\n\n/**\n * Proximity, as a ratio to width/height, at which a\n * dragged item will affect the drop container.\n */\nconst DROP_PROXIMITY_THRESHOLD = 0.05;\n/**\n * Proximity, as a ratio to width/height at which to start auto-scrolling the drop list or the\n * viewport. The value comes from trying it out manually until it feels right.\n */\nconst SCROLL_PROXIMITY_THRESHOLD = 0.05;\n/** Vertical direction in which we can auto-scroll. */\nvar AutoScrollVerticalDirection;\n(function (AutoScrollVerticalDirection) {\n AutoScrollVerticalDirection[AutoScrollVerticalDirection[\"NONE\"] = 0] = \"NONE\";\n AutoScrollVerticalDirection[AutoScrollVerticalDirection[\"UP\"] = 1] = \"UP\";\n AutoScrollVerticalDirection[AutoScrollVerticalDirection[\"DOWN\"] = 2] = \"DOWN\";\n})(AutoScrollVerticalDirection || (AutoScrollVerticalDirection = {}));\n/** Horizontal direction in which we can auto-scroll. */\nvar AutoScrollHorizontalDirection;\n(function (AutoScrollHorizontalDirection) {\n AutoScrollHorizontalDirection[AutoScrollHorizontalDirection[\"NONE\"] = 0] = \"NONE\";\n AutoScrollHorizontalDirection[AutoScrollHorizontalDirection[\"LEFT\"] = 1] = \"LEFT\";\n AutoScrollHorizontalDirection[AutoScrollHorizontalDirection[\"RIGHT\"] = 2] = \"RIGHT\";\n})(AutoScrollHorizontalDirection || (AutoScrollHorizontalDirection = {}));\n/**\n * Reference to a drop list. Used to manipulate or dispose of the container.\n */\nclass DropListRef {\n constructor(element, _dragDropRegistry, _document, _ngZone, _viewportRuler) {\n this._dragDropRegistry = _dragDropRegistry;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n /** Whether starting a dragging sequence from this container is disabled. */\n this.disabled = false;\n /** Whether sorting items within the list is disabled. */\n this.sortingDisabled = false;\n /**\n * Whether auto-scrolling the view when the user\n * moves their pointer close to the edges is disabled.\n */\n this.autoScrollDisabled = false;\n /** Number of pixels to scroll for each frame when auto-scrolling an element. */\n this.autoScrollStep = 2;\n /**\n * Function that is used to determine whether an item\n * is allowed to be moved into a drop container.\n */\n this.enterPredicate = () => true;\n /** Function that is used to determine whether an item can be sorted into a particular index. */\n this.sortPredicate = () => true;\n /** Emits right before dragging has started. */\n this.beforeStarted = new Subject();\n /**\n * Emits when the user has moved a new drag item into this container.\n */\n this.entered = new Subject();\n /**\n * Emits when the user removes an item from the container\n * by dragging it into another container.\n */\n this.exited = new Subject();\n /** Emits when the user drops an item inside the container. */\n this.dropped = new Subject();\n /** Emits as the user is swapping items while actively dragging. */\n this.sorted = new Subject();\n /** Emits when a dragging sequence is started in a list connected to the current one. */\n this.receivingStarted = new Subject();\n /** Emits when a dragging sequence is stopped from a list connected to the current one. */\n this.receivingStopped = new Subject();\n /** Whether an item in the list is being dragged. */\n this._isDragging = false;\n /** Draggable items in the container. */\n this._draggables = [];\n /** Drop lists that are connected to the current one. */\n this._siblings = [];\n /** Connected siblings that currently have a dragged item. */\n this._activeSiblings = new Set();\n /** Subscription to the window being scrolled. */\n this._viewportScrollSubscription = Subscription.EMPTY;\n /** Vertical direction in which the list is currently scrolling. */\n this._verticalScrollDirection = AutoScrollVerticalDirection.NONE;\n /** Horizontal direction in which the list is currently scrolling. */\n this._horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;\n /** Used to signal to the current auto-scroll sequence when to stop. */\n this._stopScrollTimers = new Subject();\n /** Shadow root of the current element. Necessary for `elementFromPoint` to resolve correctly. */\n this._cachedShadowRoot = null;\n /** Elements that can be scrolled while the user is dragging. */\n this._scrollableElements = [];\n /** Direction of the list's layout. */\n this._direction = 'ltr';\n /** Starts the interval that'll auto-scroll the element. */\n this._startScrollInterval = () => {\n this._stopScrolling();\n interval(0, animationFrameScheduler)\n .pipe(takeUntil(this._stopScrollTimers))\n .subscribe(() => {\n const node = this._scrollNode;\n const scrollStep = this.autoScrollStep;\n if (this._verticalScrollDirection === AutoScrollVerticalDirection.UP) {\n node.scrollBy(0, -scrollStep);\n }\n else if (this._verticalScrollDirection === AutoScrollVerticalDirection.DOWN) {\n node.scrollBy(0, scrollStep);\n }\n if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.LEFT) {\n node.scrollBy(-scrollStep, 0);\n }\n else if (this._horizontalScrollDirection === AutoScrollHorizontalDirection.RIGHT) {\n node.scrollBy(scrollStep, 0);\n }\n });\n };\n const coercedElement = (this.element = coerceElement(element));\n this._document = _document;\n this.withOrientation('vertical').withElementContainer(coercedElement);\n _dragDropRegistry.registerDropContainer(this);\n this._parentPositions = new ParentPositionTracker(_document);\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.receivingStarted.complete();\n this.receivingStopped.complete();\n this._activeSiblings.clear();\n this._scrollNode = null;\n this._parentPositions.clear();\n this._dragDropRegistry.removeDropContainer(this);\n }\n /** Whether an item from this list is currently being dragged. */\n isDragging() {\n return this._isDragging;\n }\n /** Starts dragging an item. */\n start() {\n this._draggingStarted();\n this._notifyReceivingSiblings();\n }\n /**\n * Attempts to move an item into the container.\n * @param item Item that was moved into the container.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param index Index at which the item entered. If omitted, the container will try to figure it\n * out automatically.\n */\n enter(item, pointerX, pointerY, index) {\n this._draggingStarted();\n // If sorting is disabled, we want the item to return to its starting\n // position if the user is returning it to its initial container.\n if (index == null && this.sortingDisabled) {\n index = this._draggables.indexOf(item);\n }\n this._sortStrategy.enter(item, pointerX, pointerY, index);\n // Note that this usually happens inside `_draggingStarted` as well, but the dimensions\n // can change when the sort strategy moves the item around inside `enter`.\n this._cacheParentPositions();\n // Notify siblings at the end so that the item has been inserted into the `activeDraggables`.\n this._notifyReceivingSiblings();\n this.entered.next({ item, container: this, currentIndex: this.getItemIndex(item) });\n }\n /**\n * Removes an item from the container after it was dragged into another container by the user.\n * @param item Item that was dragged out.\n */\n exit(item) {\n this._reset();\n this.exited.next({ item, container: this });\n }\n /**\n * Drops an item into this container.\n * @param item Item being dropped into the container.\n * @param currentIndex Index at which the item should be inserted.\n * @param previousIndex Index of the item when dragging started.\n * @param previousContainer Container from which the item got dragged in.\n * @param isPointerOverContainer Whether the user's pointer was over the\n * container when the item was dropped.\n * @param distance Distance the user has dragged since the start of the dragging sequence.\n * @param event Event that triggered the dropping sequence.\n *\n * @breaking-change 15.0.0 `previousIndex` and `event` parameters to become required.\n */\n drop(item, currentIndex, previousIndex, previousContainer, isPointerOverContainer, distance, dropPoint, event = {}) {\n this._reset();\n this.dropped.next({\n item,\n currentIndex,\n previousIndex,\n container: this,\n previousContainer,\n isPointerOverContainer,\n distance,\n dropPoint,\n event,\n });\n }\n /**\n * Sets the draggable items that are a part of this list.\n * @param items Items that are a part of this list.\n */\n withItems(items) {\n const previousItems = this._draggables;\n this._draggables = items;\n items.forEach(item => item._withDropContainer(this));\n if (this.isDragging()) {\n const draggedItems = previousItems.filter(item => item.isDragging());\n // If all of the items being dragged were removed\n // from the list, abort the current drag sequence.\n if (draggedItems.every(item => items.indexOf(item) === -1)) {\n this._reset();\n }\n else {\n this._sortStrategy.withItems(this._draggables);\n }\n }\n return this;\n }\n /** Sets the layout direction of the drop list. */\n withDirection(direction) {\n this._direction = direction;\n if (this._sortStrategy instanceof SingleAxisSortStrategy) {\n this._sortStrategy.direction = direction;\n }\n return this;\n }\n /**\n * Sets the containers that are connected to this one. When two or more containers are\n * connected, the user will be allowed to transfer items between them.\n * @param connectedTo Other containers that the current containers should be connected to.\n */\n connectedTo(connectedTo) {\n this._siblings = connectedTo.slice();\n return this;\n }\n /**\n * Sets the orientation of the container.\n * @param orientation New orientation for the container.\n */\n withOrientation(orientation) {\n if (orientation === 'mixed') {\n this._sortStrategy = new MixedSortStrategy(this._document, this._dragDropRegistry);\n }\n else {\n const strategy = new SingleAxisSortStrategy(this._dragDropRegistry);\n strategy.direction = this._direction;\n strategy.orientation = orientation;\n this._sortStrategy = strategy;\n }\n this._sortStrategy.withElementContainer(this._container);\n this._sortStrategy.withSortPredicate((index, item) => this.sortPredicate(index, item, this));\n return this;\n }\n /**\n * Sets which parent elements are can be scrolled while the user is dragging.\n * @param elements Elements that can be scrolled.\n */\n withScrollableParents(elements) {\n const element = this._container;\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 * Configures the drop list so that a different element is used as the container for the\n * dragged items. This is useful for the cases when one might not have control over the\n * full DOM that sets up the dragging.\n * Note that the alternate container needs to be a descendant of the drop list.\n * @param container New element container to be assigned.\n */\n withElementContainer(container) {\n if (container === this._container) {\n return this;\n }\n const element = coerceElement(this.element);\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n container !== element &&\n !element.contains(container)) {\n throw new Error('Invalid DOM structure for drop list. Alternate container element must be a descendant of the drop list.');\n }\n const oldContainerIndex = this._scrollableElements.indexOf(this._container);\n const newContainerIndex = this._scrollableElements.indexOf(container);\n if (oldContainerIndex > -1) {\n this._scrollableElements.splice(oldContainerIndex, 1);\n }\n if (newContainerIndex > -1) {\n this._scrollableElements.splice(newContainerIndex, 1);\n }\n if (this._sortStrategy) {\n this._sortStrategy.withElementContainer(container);\n }\n this._cachedShadowRoot = null;\n this._scrollableElements.unshift(container);\n this._container = container;\n return this;\n }\n /** Gets the scrollable parents that are registered with this drop container. */\n getScrollableParents() {\n return this._scrollableElements;\n }\n /**\n * Figures out the index of an item in the container.\n * @param item Item whose index should be determined.\n */\n getItemIndex(item) {\n return this._isDragging\n ? this._sortStrategy.getItemIndex(item)\n : this._draggables.indexOf(item);\n }\n /**\n * Whether the list is able to receive the item that\n * is currently being dragged inside a connected drop list.\n */\n isReceiving() {\n return this._activeSiblings.size > 0;\n }\n /**\n * Sorts an item inside the container based on its position.\n * @param item Item to be sorted.\n * @param pointerX Position of the item along the X axis.\n * @param pointerY Position of the item along the Y axis.\n * @param pointerDelta Direction in which the pointer is moving along each axis.\n */\n _sortItem(item, pointerX, pointerY, pointerDelta) {\n // Don't sort the item if sorting is disabled or it's out of range.\n if (this.sortingDisabled ||\n !this._domRect ||\n !isPointerNearDomRect(this._domRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {\n return;\n }\n const result = this._sortStrategy.sort(item, pointerX, pointerY, pointerDelta);\n if (result) {\n this.sorted.next({\n previousIndex: result.previousIndex,\n currentIndex: result.currentIndex,\n container: this,\n item,\n });\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, pointerY) {\n if (this.autoScrollDisabled) {\n return;\n }\n let scrollNode;\n let verticalScrollDirection = AutoScrollVerticalDirection.NONE;\n let horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;\n // Check whether we should start scrolling any of the parent containers.\n this._parentPositions.positions.forEach((position, element) => {\n // We have special handling for the `document` below. Also this would be\n // nicer with a for...of loop, but it requires changing a compiler flag.\n if (element === this._document || !position.clientRect || scrollNode) {\n return;\n }\n if (isPointerNearDomRect(position.clientRect, DROP_PROXIMITY_THRESHOLD, pointerX, pointerY)) {\n [verticalScrollDirection, horizontalScrollDirection] = getElementScrollDirections(element, position.clientRect, this._direction, pointerX, pointerY);\n if (verticalScrollDirection || horizontalScrollDirection) {\n scrollNode = element;\n }\n }\n });\n // Otherwise check if we can start scrolling the viewport.\n if (!verticalScrollDirection && !horizontalScrollDirection) {\n const { width, height } = this._viewportRuler.getViewportSize();\n const domRect = {\n width,\n height,\n top: 0,\n right: width,\n bottom: height,\n left: 0,\n };\n verticalScrollDirection = getVerticalScrollDirection(domRect, pointerY);\n horizontalScrollDirection = getHorizontalScrollDirection(domRect, pointerX);\n scrollNode = window;\n }\n if (scrollNode &&\n (verticalScrollDirection !== this._verticalScrollDirection ||\n horizontalScrollDirection !== this._horizontalScrollDirection ||\n scrollNode !== this._scrollNode)) {\n this._verticalScrollDirection = verticalScrollDirection;\n this._horizontalScrollDirection = horizontalScrollDirection;\n this._scrollNode = scrollNode;\n if ((verticalScrollDirection || horizontalScrollDirection) && scrollNode) {\n this._ngZone.runOutsideAngular(this._startScrollInterval);\n }\n else {\n this._stopScrolling();\n }\n }\n }\n /** Stops any currently-running auto-scroll sequences. */\n _stopScrolling() {\n this._stopScrollTimers.next();\n }\n /** Starts the dragging sequence within the list. */\n _draggingStarted() {\n const styles = this._container.style;\n this.beforeStarted.next();\n this._isDragging = true;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n // Prevent the check from running on apps not using an alternate container. Ideally we\n // would always run it, but introducing it at this stage would be a breaking change.\n this._container !== coerceElement(this.element)) {\n for (const drag of this._draggables) {\n if (!drag.isDragging() && drag.getVisibleElement().parentNode !== this._container) {\n throw new Error('Invalid DOM structure for drop list. All items must be placed directly inside of the element container.');\n }\n }\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._sortStrategy.start(this._draggables);\n this._cacheParentPositions();\n this._viewportScrollSubscription.unsubscribe();\n this._listenToScrollEvents();\n }\n /** Caches the positions of the configured scrollable parents. */\n _cacheParentPositions() {\n this._parentPositions.cache(this._scrollableElements);\n // The list element is always in the `scrollableElements`\n // so we can take advantage of the cached `DOMRect`.\n this._domRect = this._parentPositions.positions.get(this._container).clientRect;\n }\n /** Resets the container to its initial state. */\n _reset() {\n this._isDragging = false;\n const styles = this._container.style;\n styles.scrollSnapType = styles.msScrollSnapType = this._initialScrollSnap;\n this._siblings.forEach(sibling => sibling._stopReceiving(this));\n this._sortStrategy.reset();\n this._stopScrolling();\n this._viewportScrollSubscription.unsubscribe();\n this._parentPositions.clear();\n }\n /**\n * Checks whether the user's pointer is positioned over the container.\n * @param x Pointer position along the X axis.\n * @param y Pointer position along the Y axis.\n */\n _isOverContainer(x, y) {\n return this._domRect != null && isInsideClientRect(this._domRect, x, y);\n }\n /**\n * Figures out whether an item should be moved into a sibling\n * drop container, based on its current position.\n * @param item Drag item that is being moved.\n * @param x Position of the item along the X axis.\n * @param y Position of the item along the Y axis.\n */\n _getSiblingContainerFromPosition(item, x, y) {\n return this._siblings.find(sibling => sibling._canReceive(item, x, y));\n }\n /**\n * Checks whether the drop list can receive the passed-in item.\n * @param item Item that is being dragged into the list.\n * @param x Position of the item along the X axis.\n * @param y Position of the item along the Y axis.\n */\n _canReceive(item, x, y) {\n if (!this._domRect ||\n !isInsideClientRect(this._domRect, x, y) ||\n !this.enterPredicate(item, this)) {\n return false;\n }\n const elementFromPoint = this._getShadowRoot().elementFromPoint(x, y);\n // If there's no element at the pointer position, then\n // the client rect is probably scrolled out of the view.\n if (!elementFromPoint) {\n return false;\n }\n // The `DOMRect`, 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 === this._container || this._container.contains(elementFromPoint);\n }\n /**\n * Called by one of the connected drop lists when a dragging sequence has started.\n * @param sibling Sibling in which dragging has started.\n */\n _startReceiving(sibling, items) {\n const activeSiblings = this._activeSiblings;\n if (!activeSiblings.has(sibling) &&\n items.every(item => {\n // Note that we have to add an exception to the `enterPredicate` for items that started off\n // in this drop list. The drag ref has logic that allows an item to return to its initial\n // container, if it has left the initial container and none of the connected containers\n // allow it to enter. See `DragRef._updateActiveDropContainer` for more context.\n return this.enterPredicate(item, this) || this._draggables.indexOf(item) > -1;\n })) {\n activeSiblings.add(sibling);\n this._cacheParentPositions();\n this._listenToScrollEvents();\n this.receivingStarted.next({\n initiator: sibling,\n receiver: this,\n items,\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) {\n this._activeSiblings.delete(sibling);\n this._viewportScrollSubscription.unsubscribe();\n this.receivingStopped.next({ initiator: sibling, receiver: this });\n }\n /**\n * Starts listening to scroll events on the viewport.\n * Used for updating the internal state of the list.\n */\n _listenToScrollEvents() {\n this._viewportScrollSubscription = this._dragDropRegistry\n .scrolled(this._getShadowRoot())\n .subscribe(event => {\n if (this.isDragging()) {\n const scrollDifference = this._parentPositions.handleScroll(event);\n if (scrollDifference) {\n this._sortStrategy.updateOnScroll(scrollDifference.top, scrollDifference.left);\n }\n }\n else if (this.isReceiving()) {\n this._cacheParentPositions();\n }\n });\n }\n /**\n * Lazily resolves and returns the shadow root of the element. We do this in a function, rather\n * than saving it in property directly on init, because we want to resolve it as late as possible\n * in order to ensure that the element has been moved into the shadow DOM. Doing it inside the\n * constructor might be too early if the element is inside of something like `ngFor` or `ngIf`.\n */\n _getShadowRoot() {\n if (!this._cachedShadowRoot) {\n const shadowRoot = _getShadowRoot(this._container);\n this._cachedShadowRoot = shadowRoot || this._document;\n }\n return this._cachedShadowRoot;\n }\n /** Notifies any siblings that may potentially receive the item. */\n _notifyReceivingSiblings() {\n const draggedItems = this._sortStrategy\n .getActiveItemsSnapshot()\n .filter(item => item.isDragging());\n this._siblings.forEach(sibling => sibling._startReceiving(this, draggedItems));\n }\n}\n/**\n * Gets whether the vertical auto-scroll direction of a node.\n * @param clientRect Dimensions of the node.\n * @param pointerY Position of the user's pointer along the y axis.\n */\nfunction getVerticalScrollDirection(clientRect, pointerY) {\n const { top, bottom, height } = clientRect;\n const yThreshold = height * SCROLL_PROXIMITY_THRESHOLD;\n if (pointerY >= top - yThreshold && pointerY <= top + yThreshold) {\n return AutoScrollVerticalDirection.UP;\n }\n else if (pointerY >= bottom - yThreshold && pointerY <= bottom + yThreshold) {\n return AutoScrollVerticalDirection.DOWN;\n }\n return AutoScrollVerticalDirection.NONE;\n}\n/**\n * Gets whether the horizontal auto-scroll direction of a node.\n * @param clientRect Dimensions of the node.\n * @param pointerX Position of the user's pointer along the x axis.\n */\nfunction getHorizontalScrollDirection(clientRect, pointerX) {\n const { left, right, width } = clientRect;\n const xThreshold = width * SCROLL_PROXIMITY_THRESHOLD;\n if (pointerX >= left - xThreshold && pointerX <= left + xThreshold) {\n return AutoScrollHorizontalDirection.LEFT;\n }\n else if (pointerX >= right - xThreshold && pointerX <= right + xThreshold) {\n return AutoScrollHorizontalDirection.RIGHT;\n }\n return AutoScrollHorizontalDirection.NONE;\n}\n/**\n * Gets the directions in which an element node should be scrolled,\n * assuming that the user's pointer is already within it scrollable region.\n * @param element Element for which we should calculate the scroll direction.\n * @param clientRect Bounding client rectangle of the element.\n * @param direction Layout direction of the drop list.\n * @param pointerX Position of the user's pointer along the x axis.\n * @param pointerY Position of the user's pointer along the y axis.\n */\nfunction getElementScrollDirections(element, clientRect, direction, pointerX, pointerY) {\n const computedVertical = getVerticalScrollDirection(clientRect, pointerY);\n const computedHorizontal = getHorizontalScrollDirection(clientRect, pointerX);\n let verticalScrollDirection = AutoScrollVerticalDirection.NONE;\n let horizontalScrollDirection = AutoScrollHorizontalDirection.NONE;\n // Note that we here we do some extra checks for whether the element is actually scrollable in\n // a certain direction and we only assign the scroll direction if it is. We do this so that we\n // can allow other elements to be scrolled, if the current element can't be scrolled anymore.\n // This allows us to handle cases where the scroll regions of two scrollable elements overlap.\n if (computedVertical) {\n const scrollTop = element.scrollTop;\n if (computedVertical === AutoScrollVerticalDirection.UP) {\n if (scrollTop > 0) {\n verticalScrollDirection = AutoScrollVerticalDirection.UP;\n }\n }\n else if (element.scrollHeight - scrollTop > element.clientHeight) {\n verticalScrollDirection = AutoScrollVerticalDirection.DOWN;\n }\n }\n if (computedHorizontal) {\n const scrollLeft = element.scrollLeft;\n if (direction === 'rtl') {\n if (computedHorizontal === AutoScrollHorizontalDirection.RIGHT) {\n // In RTL `scrollLeft` will be negative when scrolled.\n if (scrollLeft < 0) {\n horizontalScrollDirection = AutoScrollHorizontalDirection.RIGHT;\n }\n }\n else if (element.scrollWidth + scrollLeft > element.clientWidth) {\n horizontalScrollDirection = AutoScrollHorizontalDirection.LEFT;\n }\n }\n else {\n if (computedHorizontal === AutoScrollHorizontalDirection.LEFT) {\n if (scrollLeft > 0) {\n horizontalScrollDirection = AutoScrollHorizontalDirection.LEFT;\n }\n }\n else if (element.scrollWidth - scrollLeft > element.clientWidth) {\n horizontalScrollDirection = AutoScrollHorizontalDirection.RIGHT;\n }\n }\n }\n return [verticalScrollDirection, horizontalScrollDirection];\n}\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/** Keeps track of the apps currently containing drag items. */\nconst activeApps = new Set();\n/**\n * Component used to load the drag&drop reset styles.\n * @docs-private\n */\nclass _ResetsLoader {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: _ResetsLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: _ResetsLoader, isStandalone: true, selector: \"ng-component\", host: { attributes: { \"cdk-drag-resets-container\": \"\" } }, ngImport: i0, template: '', isInline: true, styles: [\"@layer cdk-resets{.cdk-drag-preview{background:none;border:none;padding:0;color:inherit}}.cdk-drag-placeholder *,.cdk-drag-preview *{pointer-events:none !important}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: _ResetsLoader, decorators: [{\n type: Component,\n args: [{ standalone: true, encapsulation: ViewEncapsulation.None, template: '', changeDetection: ChangeDetectionStrategy.OnPush, host: { 'cdk-drag-resets-container': '' }, styles: [\"@layer cdk-resets{.cdk-drag-preview{background:none;border:none;padding:0;color:inherit}}.cdk-drag-placeholder *,.cdk-drag-preview *{pointer-events:none !important}\"] }]\n }] });\n// TODO(crisbeto): remove generics when making breaking changes.\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 */\nclass DragDropRegistry {\n constructor(_ngZone, _document) {\n this._ngZone = _ngZone;\n this._appRef = inject(ApplicationRef);\n this._environmentInjector = inject(EnvironmentInjector);\n /** Registered drop container instances. */\n this._dropInstances = new Set();\n /** Registered drag item instances. */\n this._dragInstances = new Set();\n /** Drag item instances that are currently being dragged. */\n this._activeDragInstances = signal([]);\n /** Keeps track of the event listeners that we've bound to the `document`. */\n this._globalListeners = new Map();\n /**\n * Predicate function to check if an item is being dragged. Moved out into a property,\n * because it'll be called a lot and we don't want to create a new function every time.\n */\n this._draggingPredicate = (item) => item.isDragging();\n /**\n * Emits the `touchmove` or `mousemove` events that are dispatched\n * while the user is dragging a drag item instance.\n */\n this.pointerMove = new Subject();\n /**\n * Emits the `touchend` or `mouseup` events that are dispatched\n * while the user is dragging a drag item instance.\n */\n this.pointerUp = new Subject();\n /**\n * Emits when the viewport has been scrolled while the user is dragging an item.\n * @deprecated To be turned into a private member. Use the `scrolled` method instead.\n * @breaking-change 13.0.0\n */\n this.scroll = new Subject();\n /**\n * Event listener that will prevent the default browser action while the user is dragging.\n * @param event Event whose default action should be prevented.\n */\n this._preventDefaultWhileDragging = (event) => {\n if (this._activeDragInstances().length > 0) {\n event.preventDefault();\n }\n };\n /** Event listener for `touchmove` that is bound even if no dragging is happening. */\n this._persistentTouchmoveListener = (event) => {\n if (this._activeDragInstances().length > 0) {\n // Note that we only want to prevent the default action after dragging has actually started.\n // Usually this is the same time at which the item is added to the `_activeDragInstances`,\n // but it could be pushed back if the user has set up a drag delay or threshold.\n if (this._activeDragInstances().some(this._draggingPredicate)) {\n event.preventDefault();\n }\n this.pointerMove.next(event);\n }\n };\n this._document = _document;\n }\n /** Adds a drop container to the registry. */\n registerDropContainer(drop) {\n if (!this._dropInstances.has(drop)) {\n this._dropInstances.add(drop);\n }\n }\n /** Adds a drag item instance to the registry. */\n registerDragItem(drag) {\n this._dragInstances.add(drag);\n // The `touchmove` event gets bound once, ahead of time, because WebKit\n // won't preventDefault on a dynamically-added `touchmove` listener.\n // See https://bugs.webkit.org/show_bug.cgi?id=184250.\n if (this._dragInstances.size === 1) {\n this._ngZone.runOutsideAngular(() => {\n // The event handler has to be explicitly active,\n // because newer browsers make it passive by default.\n this._document.addEventListener('touchmove', this._persistentTouchmoveListener, activeCapturingEventOptions);\n });\n }\n }\n /** Removes a drop container from the registry. */\n removeDropContainer(drop) {\n this._dropInstances.delete(drop);\n }\n /** Removes a drag item instance from the registry. */\n removeDragItem(drag) {\n this._dragInstances.delete(drag);\n this.stopDragging(drag);\n if (this._dragInstances.size === 0) {\n this._document.removeEventListener('touchmove', this._persistentTouchmoveListener, activeCapturingEventOptions);\n }\n }\n /**\n * Starts the dragging sequence for a drag instance.\n * @param drag Drag instance which is being dragged.\n * @param event Event that initiated the dragging.\n */\n startDragging(drag, event) {\n // Do not process the same drag twice to avoid memory leaks and redundant listeners\n if (this._activeDragInstances().indexOf(drag) > -1) {\n return;\n }\n this._loadResets();\n this._activeDragInstances.update(instances => [...instances, drag]);\n if (this._activeDragInstances().length === 1) {\n const isTouchEvent = event.type.startsWith('touch');\n // We explicitly bind __active__ listeners here, because newer browsers will default to\n // passive ones for `mousemove` and `touchmove`. The events need to be active, because we\n // use `preventDefault` to prevent the page from scrolling while the user is dragging.\n this._globalListeners\n .set(isTouchEvent ? 'touchend' : 'mouseup', {\n handler: (e) => this.pointerUp.next(e),\n options: true,\n })\n .set('scroll', {\n handler: (e) => this.scroll.next(e),\n // Use capturing so that we pick up scroll changes in any scrollable nodes that aren't\n // the document. See https://github.com/angular/components/issues/17144.\n options: true,\n })\n // Preventing the default action on `mousemove` isn't enough to disable text selection\n // on Safari so we need to prevent the selection event as well. Alternatively this can\n // be done by setting `user-select: none` on the `body`, however it has causes a style\n // recalculation which can be expensive on pages with a lot of elements.\n .set('selectstart', {\n handler: this._preventDefaultWhileDragging,\n options: activeCapturingEventOptions,\n });\n // We don't have to bind a move event for touch drag sequences, because\n // we already have a persistent global one bound from `registerDragItem`.\n if (!isTouchEvent) {\n this._globalListeners.set('mousemove', {\n handler: (e) => this.pointerMove.next(e),\n options: activeCapturingEventOptions,\n });\n }\n this._ngZone.runOutsideAngular(() => {\n this._globalListeners.forEach((config, name) => {\n this._document.addEventListener(name, config.handler, config.options);\n });\n });\n }\n }\n /** Stops dragging a drag item instance. */\n stopDragging(drag) {\n this._activeDragInstances.update(instances => {\n const index = instances.indexOf(drag);\n if (index > -1) {\n instances.splice(index, 1);\n return [...instances];\n }\n return instances;\n });\n if (this._activeDragInstances().length === 0) {\n this._clearGlobalListeners();\n }\n }\n /** Gets whether a drag item instance is currently being dragged. */\n isDragging(drag) {\n return this._activeDragInstances().indexOf(drag) > -1;\n }\n /**\n * Gets a stream that will emit when any element on the page is scrolled while an item is being\n * dragged.\n * @param shadowRoot Optional shadow root that the current dragging sequence started from.\n * Top-level listeners won't pick up events coming from the shadow DOM so this parameter can\n * be used to include an additional top-level listener at the shadow root level.\n */\n scrolled(shadowRoot) {\n const streams = [this.scroll];\n if (shadowRoot && shadowRoot !== this._document) {\n // Note that this is basically the same as `fromEvent` from rxjs, but we do it ourselves,\n // because we want to guarantee that the event is bound outside of the `NgZone`. With\n // `fromEvent` it'll only happen if the subscription is outside the `NgZone`.\n streams.push(new Observable((observer) => {\n return this._ngZone.runOutsideAngular(() => {\n const eventOptions = true;\n const callback = (event) => {\n if (this._activeDragInstances().length) {\n observer.next(event);\n }\n };\n shadowRoot.addEventListener('scroll', callback, eventOptions);\n return () => {\n shadowRoot.removeEventListener('scroll', callback, eventOptions);\n };\n });\n }));\n }\n return merge(...streams);\n }\n ngOnDestroy() {\n this._dragInstances.forEach(instance => this.removeDragItem(instance));\n this._dropInstances.forEach(instance => this.removeDropContainer(instance));\n this._clearGlobalListeners();\n this.pointerMove.complete();\n this.pointerUp.complete();\n }\n /** Clears out the global event listeners from the `document`. */\n _clearGlobalListeners() {\n this._globalListeners.forEach((config, name) => {\n this._document.removeEventListener(name, config.handler, config.options);\n });\n this._globalListeners.clear();\n }\n // TODO(crisbeto): abstract this away into something reusable.\n /** Loads the CSS resets needed for the module to work correctly. */\n _loadResets() {\n if (!activeApps.has(this._appRef)) {\n activeApps.add(this._appRef);\n const componentRef = createComponent(_ResetsLoader, {\n environmentInjector: this._environmentInjector,\n });\n this._appRef.onDestroy(() => {\n activeApps.delete(this._appRef);\n if (activeApps.size === 0) {\n componentRef.destroy();\n }\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: DragDropRegistry, deps: [{ token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: DragDropRegistry, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: DragDropRegistry, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }] });\n\n/** Default configuration to be used when creating a `DragRef`. */\nconst DEFAULT_CONFIG = {\n dragStartThreshold: 5,\n pointerDirectionChangeThreshold: 5,\n};\n/**\n * Service that allows for drag-and-drop functionality to be attached to DOM elements.\n */\nclass DragDrop {\n constructor(_document, _ngZone, _viewportRuler, _dragDropRegistry) {\n this._document = _document;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._dragDropRegistry = _dragDropRegistry;\n }\n /**\n * Turns an element into a draggable item.\n * @param element Element to which to attach the dragging functionality.\n * @param config Object used to configure the dragging behavior.\n */\n createDrag(element, config = DEFAULT_CONFIG) {\n return new DragRef(element, config, this._document, this._ngZone, this._viewportRuler, this._dragDropRegistry);\n }\n /**\n * Turns an element into a drop list.\n * @param element Element to which to attach the drop list functionality.\n */\n createDropList(element) {\n return new DropListRef(element, this._dragDropRegistry, this._document, this._ngZone, this._viewportRuler);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: DragDrop, deps: [{ token: DOCUMENT }, { token: i0.NgZone }, { token: i1.ViewportRuler }, { token: DragDropRegistry }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: DragDrop, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: DragDrop, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.NgZone }, { type: i1.ViewportRuler }, { type: DragDropRegistry }] });\n\n/**\n * Injection token that can be used for a `CdkDrag` to provide itself as a parent to the\n * drag-specific child directive (`CdkDragHandle`, `CdkDragPreview` etc.). Used primarily\n * to avoid circular imports.\n * @docs-private\n */\nconst CDK_DRAG_PARENT = new InjectionToken('CDK_DRAG_PARENT');\n\n/**\n * Asserts that a particular node is an element.\n * @param node Node to be checked.\n * @param name Name to attach to the error message.\n */\nfunction assertElementNode(node, name) {\n if (node.nodeType !== 1) {\n throw Error(`${name} must be attached to an element node. ` + `Currently attached to \"${node.nodeName}\".`);\n }\n}\n\n/**\n * Injection token that can be used to reference instances of `CdkDragHandle`. It serves as\n * alternative token to the actual `CdkDragHandle` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_HANDLE = new InjectionToken('CdkDragHandle');\n/** Handle that can be used to drag a CdkDrag instance. */\nclass CdkDragHandle {\n /** Whether starting to drag through this handle is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n this._stateChanges.next(this);\n }\n constructor(element, _parentDrag) {\n this.element = element;\n this._parentDrag = _parentDrag;\n /** Emits when the state of the handle has changed. */\n this._stateChanges = new Subject();\n this._disabled = false;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n assertElementNode(element.nativeElement, 'cdkDragHandle');\n }\n _parentDrag?._addHandle(this);\n }\n ngOnDestroy() {\n this._parentDrag?._removeHandle(this);\n this._stateChanges.complete();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkDragHandle, deps: [{ token: i0.ElementRef }, { token: CDK_DRAG_PARENT, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: CdkDragHandle, isStandalone: true, selector: \"[cdkDragHandle]\", inputs: { disabled: [\"cdkDragHandleDisabled\", \"disabled\", booleanAttribute] }, host: { classAttribute: \"cdk-drag-handle\" }, providers: [{ provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkDragHandle, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDragHandle]',\n standalone: true,\n host: {\n 'class': 'cdk-drag-handle',\n },\n providers: [{ provide: CDK_DRAG_HANDLE, useExisting: CdkDragHandle }],\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_DRAG_PARENT]\n }, {\n type: Optional\n }, {\n type: SkipSelf\n }] }], propDecorators: { disabled: [{\n type: Input,\n args: [{ alias: 'cdkDragHandleDisabled', transform: booleanAttribute }]\n }] } });\n\n/**\n * Injection token that can be used to configure the\n * behavior of the drag&drop-related components.\n */\nconst CDK_DRAG_CONFIG = new InjectionToken('CDK_DRAG_CONFIG');\n\nconst DRAG_HOST_CLASS = 'cdk-drag';\n/**\n * Injection token that can be used to reference instances of `CdkDropList`. It serves as\n * alternative token to the actual `CdkDropList` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DROP_LIST = new InjectionToken('CdkDropList');\n/** Element that can be moved inside a CdkDropList container. */\nclass CdkDrag {\n static { this._dragInstances = []; }\n /** Whether starting to drag this element is disabled. */\n get disabled() {\n return this._disabled || (this.dropContainer && this.dropContainer.disabled);\n }\n set disabled(value) {\n this._disabled = value;\n this._dragRef.disabled = this._disabled;\n }\n constructor(\n /** Element that the draggable is attached to. */\n element, \n /** Droppable container that the draggable is a part of. */\n dropContainer, \n /**\n * @deprecated `_document` parameter no longer being used and will be removed.\n * @breaking-change 12.0.0\n */\n _document, _ngZone, _viewContainerRef, config, _dir, dragDrop, _changeDetectorRef, _selfHandle, _parentDrag) {\n this.element = element;\n this.dropContainer = dropContainer;\n this._ngZone = _ngZone;\n this._viewContainerRef = _viewContainerRef;\n this._dir = _dir;\n this._changeDetectorRef = _changeDetectorRef;\n this._selfHandle = _selfHandle;\n this._parentDrag = _parentDrag;\n this._destroyed = new Subject();\n this._handles = new BehaviorSubject([]);\n /**\n * If the parent of the dragged element has a `scale` transform, it can throw off the\n * positioning when the user starts dragging. Use this input to notify the CDK of the scale.\n */\n this.scale = 1;\n /** Emits when the user starts dragging the item. */\n this.started = new EventEmitter();\n /** Emits when the user has released a drag item, before any animations have started. */\n this.released = new EventEmitter();\n /** Emits when the user stops dragging an item in the container. */\n this.ended = new EventEmitter();\n /** Emits when the user has moved the item into a new container. */\n this.entered = new EventEmitter();\n /** Emits when the user removes the item its container by dragging it into another container. */\n this.exited = new EventEmitter();\n /** Emits when the user drops the item inside a container. */\n this.dropped = new EventEmitter();\n /**\n * Emits as the user is dragging the item. Use with caution,\n * because this event will fire for every pixel that the user has dragged.\n */\n this.moved = new Observable((observer) => {\n const subscription = this._dragRef.moved\n .pipe(map(movedEvent => ({\n source: this,\n pointerPosition: movedEvent.pointerPosition,\n event: movedEvent.event,\n delta: movedEvent.delta,\n distance: movedEvent.distance,\n })))\n .subscribe(observer);\n return () => {\n subscription.unsubscribe();\n };\n });\n this._injector = inject(Injector);\n this._dragRef = dragDrop.createDrag(element, {\n dragStartThreshold: config && config.dragStartThreshold != null ? config.dragStartThreshold : 5,\n pointerDirectionChangeThreshold: config && config.pointerDirectionChangeThreshold != null\n ? config.pointerDirectionChangeThreshold\n : 5,\n zIndex: config?.zIndex,\n });\n this._dragRef.data = this;\n // We have to keep track of the drag instances in order to be able to match an element to\n // a drag instance. We can't go through the global registry of `DragRef`, because the root\n // element could be different.\n CdkDrag._dragInstances.push(this);\n if (config) {\n this._assignDefaults(config);\n }\n // Note that usually the container is assigned when the drop list is picks up the item, but in\n // some cases (mainly transplanted views with OnPush, see #18341) we may end up in a situation\n // where there are no items on the first change detection pass, but the items get picked up as\n // soon as the user triggers another pass by dragging. This is a problem, because the item would\n // have to switch from standalone mode to drag mode in the middle of the dragging sequence which\n // is too late since the two modes save different kinds of information. We work around it by\n // assigning the drop container both from here and the list.\n if (dropContainer) {\n this._dragRef._withDropContainer(dropContainer._dropListRef);\n dropContainer.addItem(this);\n // The drop container reads this so we need to sync it here.\n dropContainer._dropListRef.beforeStarted.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._dragRef.scale = this.scale;\n });\n }\n this._syncInputs(this._dragRef);\n this._handleEvents(this._dragRef);\n }\n /**\n * Returns the element that is being used as a placeholder\n * while the current element is being dragged.\n */\n getPlaceholderElement() {\n return this._dragRef.getPlaceholderElement();\n }\n /** Returns the root draggable element. */\n getRootElement() {\n return this._dragRef.getRootElement();\n }\n /** Resets a standalone drag item to its initial position. */\n reset() {\n this._dragRef.reset();\n }\n /**\n * Gets the pixel coordinates of the draggable outside of a drop container.\n */\n getFreeDragPosition() {\n return this._dragRef.getFreeDragPosition();\n }\n /**\n * Sets the current position in pixels the draggable outside of a drop container.\n * @param value New position to be set.\n */\n setFreeDragPosition(value) {\n this._dragRef.setFreeDragPosition(value);\n }\n ngAfterViewInit() {\n // We need to wait until after render, 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 afterNextRender(() => {\n this._updateRootElement();\n this._setupHandlesListener();\n if (this.freeDragPosition) {\n this._dragRef.setFreeDragPosition(this.freeDragPosition);\n }\n }, { injector: this._injector });\n }\n ngOnChanges(changes) {\n const rootSelectorChange = changes['rootElementSelector'];\n const positionChange = changes['freeDragPosition'];\n // We don't have to react to the first change since it's being\n // handled in the `afterNextRender` queued up in the constructor.\n if (rootSelectorChange && !rootSelectorChange.firstChange) {\n this._updateRootElement();\n }\n // Skip the first change since it's being handled in the `afterNextRender` queued up in the\n // constructor.\n if (positionChange && !positionChange.firstChange && this.freeDragPosition) {\n this._dragRef.setFreeDragPosition(this.freeDragPosition);\n }\n }\n ngOnDestroy() {\n if (this.dropContainer) {\n this.dropContainer.removeItem(this);\n }\n const index = CdkDrag._dragInstances.indexOf(this);\n if (index > -1) {\n CdkDrag._dragInstances.splice(index, 1);\n }\n // Unnecessary in most cases, but used to avoid extra change detections with `zone-paths-rxjs`.\n this._ngZone.runOutsideAngular(() => {\n this._handles.complete();\n this._destroyed.next();\n this._destroyed.complete();\n this._dragRef.dispose();\n });\n }\n _addHandle(handle) {\n const handles = this._handles.getValue();\n handles.push(handle);\n this._handles.next(handles);\n }\n _removeHandle(handle) {\n const handles = this._handles.getValue();\n const index = handles.indexOf(handle);\n if (index > -1) {\n handles.splice(index, 1);\n this._handles.next(handles);\n }\n }\n _setPreviewTemplate(preview) {\n this._previewTemplate = preview;\n }\n _resetPreviewTemplate(preview) {\n if (preview === this._previewTemplate) {\n this._previewTemplate = null;\n }\n }\n _setPlaceholderTemplate(placeholder) {\n this._placeholderTemplate = placeholder;\n }\n _resetPlaceholderTemplate(placeholder) {\n if (placeholder === this._placeholderTemplate) {\n this._placeholderTemplate = null;\n }\n }\n /** Syncs the root element with the `DragRef`. */\n _updateRootElement() {\n const element = this.element.nativeElement;\n let rootElement = element;\n if (this.rootElementSelector) {\n rootElement =\n element.closest !== undefined\n ? element.closest(this.rootElementSelector)\n : // Comment tag doesn't have closest method, so use parent's one.\n element.parentElement?.closest(this.rootElementSelector);\n }\n if (rootElement && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n assertElementNode(rootElement, 'cdkDrag');\n }\n this._dragRef.withRootElement(rootElement || element);\n }\n /** Gets the boundary element, based on the `boundaryElement` value. */\n _getBoundaryElement() {\n const boundary = this.boundaryElement;\n if (!boundary) {\n return null;\n }\n if (typeof boundary === 'string') {\n return this.element.nativeElement.closest(boundary);\n }\n return coerceElement(boundary);\n }\n /** Syncs the inputs of the CdkDrag with the options of the underlying DragRef. */\n _syncInputs(ref) {\n ref.beforeStarted.subscribe(() => {\n if (!ref.isDragging()) {\n const dir = this._dir;\n const dragStartDelay = this.dragStartDelay;\n const placeholder = this._placeholderTemplate\n ? {\n template: this._placeholderTemplate.templateRef,\n context: this._placeholderTemplate.data,\n viewContainer: this._viewContainerRef,\n }\n : null;\n const preview = this._previewTemplate\n ? {\n template: this._previewTemplate.templateRef,\n context: this._previewTemplate.data,\n matchSize: this._previewTemplate.matchSize,\n viewContainer: this._viewContainerRef,\n }\n : null;\n ref.disabled = this.disabled;\n ref.lockAxis = this.lockAxis;\n ref.scale = this.scale;\n ref.dragStartDelay =\n typeof dragStartDelay === 'object' && dragStartDelay\n ? dragStartDelay\n : coerceNumberProperty(dragStartDelay);\n ref.constrainPosition = this.constrainPosition;\n ref.previewClass = this.previewClass;\n ref\n .withBoundaryElement(this._getBoundaryElement())\n .withPlaceholderTemplate(placeholder)\n .withPreviewTemplate(preview)\n .withPreviewContainer(this.previewContainer || 'global');\n if (dir) {\n ref.withDirection(dir.value);\n }\n }\n });\n // This only needs to be resolved once.\n ref.beforeStarted.pipe(take(1)).subscribe(() => {\n // If we managed to resolve a parent through DI, use it.\n if (this._parentDrag) {\n ref.withParent(this._parentDrag._dragRef);\n return;\n }\n // Otherwise fall back to resolving the parent by looking up the DOM. This can happen if\n // the item was projected into another item by something like `ngTemplateOutlet`.\n let parent = this.element.nativeElement.parentElement;\n while (parent) {\n if (parent.classList.contains(DRAG_HOST_CLASS)) {\n ref.withParent(CdkDrag._dragInstances.find(drag => {\n return drag.element.nativeElement === parent;\n })?._dragRef || null);\n break;\n }\n parent = parent.parentElement;\n }\n });\n }\n /** Handles the events from the underlying `DragRef`. */\n _handleEvents(ref) {\n ref.started.subscribe(startEvent => {\n this.started.emit({ source: this, event: startEvent.event });\n // Since all of these events run outside of change detection,\n // we need to ensure that everything is marked correctly.\n this._changeDetectorRef.markForCheck();\n });\n ref.released.subscribe(releaseEvent => {\n this.released.emit({ source: this, event: releaseEvent.event });\n });\n ref.ended.subscribe(endEvent => {\n this.ended.emit({\n source: this,\n distance: endEvent.distance,\n dropPoint: endEvent.dropPoint,\n event: endEvent.event,\n });\n // Since all of these events run outside of change detection,\n // we need to ensure that everything is marked correctly.\n this._changeDetectorRef.markForCheck();\n });\n ref.entered.subscribe(enterEvent => {\n this.entered.emit({\n container: enterEvent.container.data,\n item: this,\n currentIndex: enterEvent.currentIndex,\n });\n });\n ref.exited.subscribe(exitEvent => {\n this.exited.emit({\n container: exitEvent.container.data,\n item: this,\n });\n });\n ref.dropped.subscribe(dropEvent => {\n this.dropped.emit({\n previousIndex: dropEvent.previousIndex,\n currentIndex: dropEvent.currentIndex,\n previousContainer: dropEvent.previousContainer.data,\n container: dropEvent.container.data,\n isPointerOverContainer: dropEvent.isPointerOverContainer,\n item: this,\n distance: dropEvent.distance,\n dropPoint: dropEvent.dropPoint,\n event: dropEvent.event,\n });\n });\n }\n /** Assigns the default input values based on a provided config object. */\n _assignDefaults(config) {\n const { lockAxis, dragStartDelay, constrainPosition, previewClass, boundaryElement, draggingDisabled, rootElementSelector, previewContainer, } = config;\n this.disabled = draggingDisabled == null ? false : draggingDisabled;\n this.dragStartDelay = dragStartDelay || 0;\n if (lockAxis) {\n this.lockAxis = lockAxis;\n }\n if (constrainPosition) {\n this.constrainPosition = constrainPosition;\n }\n if (previewClass) {\n this.previewClass = previewClass;\n }\n if (boundaryElement) {\n this.boundaryElement = boundaryElement;\n }\n if (rootElementSelector) {\n this.rootElementSelector = rootElementSelector;\n }\n if (previewContainer) {\n this.previewContainer = previewContainer;\n }\n }\n /** Sets up the listener that syncs the handles with the drag ref. */\n _setupHandlesListener() {\n // Listen for any newly-added handles.\n this._handles\n .pipe(\n // Sync the new handles with the DragRef.\n tap(handles => {\n const handleElements = handles.map(handle => handle.element);\n // Usually handles are only allowed to be a descendant of the drag element, but if\n // the consumer defined a different drag root, we should allow the drag element\n // itself to be a handle too.\n if (this._selfHandle && this.rootElementSelector) {\n handleElements.push(this.element);\n }\n this._dragRef.withHandles(handleElements);\n }), \n // Listen if the state of any of the handles changes.\n switchMap((handles) => {\n return merge(...handles.map(item => item._stateChanges.pipe(startWith(item))));\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 static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkDrag, deps: [{ token: i0.ElementRef }, { token: CDK_DROP_LIST, optional: true, skipSelf: true }, { token: DOCUMENT }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: CDK_DRAG_CONFIG, optional: true }, { token: i1$1.Directionality, optional: true }, { token: DragDrop }, { token: i0.ChangeDetectorRef }, { token: CDK_DRAG_HANDLE, optional: true, self: true }, { token: CDK_DRAG_PARENT, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: CdkDrag, isStandalone: true, selector: \"[cdkDrag]\", inputs: { data: [\"cdkDragData\", \"data\"], lockAxis: [\"cdkDragLockAxis\", \"lockAxis\"], rootElementSelector: [\"cdkDragRootElement\", \"rootElementSelector\"], boundaryElement: [\"cdkDragBoundary\", \"boundaryElement\"], dragStartDelay: [\"cdkDragStartDelay\", \"dragStartDelay\"], freeDragPosition: [\"cdkDragFreeDragPosition\", \"freeDragPosition\"], disabled: [\"cdkDragDisabled\", \"disabled\", booleanAttribute], constrainPosition: [\"cdkDragConstrainPosition\", \"constrainPosition\"], previewClass: [\"cdkDragPreviewClass\", \"previewClass\"], previewContainer: [\"cdkDragPreviewContainer\", \"previewContainer\"], scale: [\"cdkDragScale\", \"scale\", numberAttribute] }, outputs: { started: \"cdkDragStarted\", released: \"cdkDragReleased\", ended: \"cdkDragEnded\", entered: \"cdkDragEntered\", exited: \"cdkDragExited\", dropped: \"cdkDragDropped\", moved: \"cdkDragMoved\" }, host: { properties: { \"class.cdk-drag-disabled\": \"disabled\", \"class.cdk-drag-dragging\": \"_dragRef.isDragging()\" }, classAttribute: \"cdk-drag\" }, providers: [{ provide: CDK_DRAG_PARENT, useExisting: CdkDrag }], exportAs: [\"cdkDrag\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkDrag, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDrag]',\n exportAs: 'cdkDrag',\n standalone: true,\n host: {\n 'class': DRAG_HOST_CLASS,\n '[class.cdk-drag-disabled]': 'disabled',\n '[class.cdk-drag-dragging]': '_dragRef.isDragging()',\n },\n providers: [{ provide: CDK_DRAG_PARENT, useExisting: CdkDrag }],\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_DROP_LIST]\n }, {\n type: Optional\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.NgZone }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_DRAG_CONFIG]\n }] }, { type: i1$1.Directionality, decorators: [{\n type: Optional\n }] }, { type: DragDrop }, { type: i0.ChangeDetectorRef }, { type: CdkDragHandle, decorators: [{\n type: Optional\n }, {\n type: Self\n }, {\n type: Inject,\n args: [CDK_DRAG_HANDLE]\n }] }, { type: CdkDrag, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [CDK_DRAG_PARENT]\n }] }], propDecorators: { data: [{\n type: Input,\n args: ['cdkDragData']\n }], lockAxis: [{\n type: Input,\n args: ['cdkDragLockAxis']\n }], rootElementSelector: [{\n type: Input,\n args: ['cdkDragRootElement']\n }], boundaryElement: [{\n type: Input,\n args: ['cdkDragBoundary']\n }], dragStartDelay: [{\n type: Input,\n args: ['cdkDragStartDelay']\n }], freeDragPosition: [{\n type: Input,\n args: ['cdkDragFreeDragPosition']\n }], disabled: [{\n type: Input,\n args: [{ alias: 'cdkDragDisabled', transform: booleanAttribute }]\n }], constrainPosition: [{\n type: Input,\n args: ['cdkDragConstrainPosition']\n }], previewClass: [{\n type: Input,\n args: ['cdkDragPreviewClass']\n }], previewContainer: [{\n type: Input,\n args: ['cdkDragPreviewContainer']\n }], scale: [{\n type: Input,\n args: [{ alias: 'cdkDragScale', transform: numberAttribute }]\n }], started: [{\n type: Output,\n args: ['cdkDragStarted']\n }], released: [{\n type: Output,\n args: ['cdkDragReleased']\n }], ended: [{\n type: Output,\n args: ['cdkDragEnded']\n }], entered: [{\n type: Output,\n args: ['cdkDragEntered']\n }], exited: [{\n type: Output,\n args: ['cdkDragExited']\n }], dropped: [{\n type: Output,\n args: ['cdkDragDropped']\n }], moved: [{\n type: Output,\n args: ['cdkDragMoved']\n }] } });\n\n/**\n * Injection token that can be used to reference instances of `CdkDropListGroup`. It serves as\n * alternative token to the actual `CdkDropListGroup` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DROP_LIST_GROUP = new InjectionToken('CdkDropListGroup');\n/**\n * Declaratively connects sibling `cdkDropList` instances together. All of the `cdkDropList`\n * elements that are placed inside a `cdkDropListGroup` will be connected to each other\n * automatically. Can be used as an alternative to the `cdkDropListConnectedTo` input\n * from `cdkDropList`.\n */\nclass CdkDropListGroup {\n constructor() {\n /** Drop lists registered inside the group. */\n this._items = new Set();\n /** Whether starting a dragging sequence from inside this group is disabled. */\n this.disabled = false;\n }\n ngOnDestroy() {\n this._items.clear();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkDropListGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: CdkDropListGroup, isStandalone: true, selector: \"[cdkDropListGroup]\", inputs: { disabled: [\"cdkDropListGroupDisabled\", \"disabled\", booleanAttribute] }, providers: [{ provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup }], exportAs: [\"cdkDropListGroup\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkDropListGroup, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDropListGroup]',\n exportAs: 'cdkDropListGroup',\n standalone: true,\n providers: [{ provide: CDK_DROP_LIST_GROUP, useExisting: CdkDropListGroup }],\n }]\n }], propDecorators: { disabled: [{\n type: Input,\n args: [{ alias: 'cdkDropListGroupDisabled', transform: booleanAttribute }]\n }] } });\n\n/** Counter used to generate unique ids for drop zones. */\nlet _uniqueIdCounter = 0;\n/** Container that wraps a set of draggable items. */\nclass CdkDropList {\n /** Keeps track of the drop lists that are currently on the page. */\n static { this._dropLists = []; }\n /** Whether starting a dragging sequence from this container is disabled. */\n get disabled() {\n return this._disabled || (!!this._group && this._group.disabled);\n }\n set disabled(value) {\n // Usually we sync the directive and ref state right before dragging starts, in order to have\n // a single point of failure and to avoid having to use setters for everything. `disabled` is\n // a special case, because it can prevent the `beforeStarted` event from firing, which can lock\n // the user in a disabled state, so we also need to sync it as it's being set.\n this._dropListRef.disabled = this._disabled = value;\n }\n constructor(\n /** Element that the drop list is attached to. */\n element, dragDrop, _changeDetectorRef, _scrollDispatcher, _dir, _group, config) {\n this.element = element;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollDispatcher = _scrollDispatcher;\n this._dir = _dir;\n this._group = _group;\n /** Emits when the list has been destroyed. */\n this._destroyed = new Subject();\n /**\n * Other draggable containers that this container is connected to and into which the\n * container's items can be transferred. Can either be references to other drop containers,\n * or their unique IDs.\n */\n this.connectedTo = [];\n /**\n * Unique ID for the drop zone. Can be used as a reference\n * in the `connectedTo` of another `CdkDropList`.\n */\n this.id = `cdk-drop-list-${_uniqueIdCounter++}`;\n /**\n * Function that is used to determine whether an item\n * is allowed to be moved into a drop container.\n */\n this.enterPredicate = () => true;\n /** Functions that is used to determine whether an item can be sorted into a particular index. */\n this.sortPredicate = () => true;\n /** Emits when the user drops an item inside the container. */\n this.dropped = new EventEmitter();\n /**\n * Emits when the user has moved a new drag item into this container.\n */\n this.entered = new EventEmitter();\n /**\n * Emits when the user removes an item from the container\n * by dragging it into another container.\n */\n this.exited = new EventEmitter();\n /** Emits as the user is swapping items while actively dragging. */\n this.sorted = new EventEmitter();\n /**\n * Keeps track of the items that are registered with this container. Historically we used to\n * do this with a `ContentChildren` query, however queries don't handle transplanted views very\n * well which means that we can't handle cases like dragging the headers of a `mat-table`\n * correctly. What we do instead is to have the items register themselves with the container\n * and then we sort them based on their position in the DOM.\n */\n this._unsortedItems = new Set();\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n assertElementNode(element.nativeElement, 'cdkDropList');\n }\n this._dropListRef = dragDrop.createDropList(element);\n this._dropListRef.data = this;\n if (config) {\n this._assignDefaults(config);\n }\n this._dropListRef.enterPredicate = (drag, drop) => {\n return this.enterPredicate(drag.data, drop.data);\n };\n this._dropListRef.sortPredicate = (index, drag, drop) => {\n return this.sortPredicate(index, drag.data, drop.data);\n };\n this._setupInputSyncSubscription(this._dropListRef);\n this._handleEvents(this._dropListRef);\n CdkDropList._dropLists.push(this);\n if (_group) {\n _group._items.add(this);\n }\n }\n /** Registers an items with the drop list. */\n addItem(item) {\n this._unsortedItems.add(item);\n if (this._dropListRef.isDragging()) {\n this._syncItemsWithRef();\n }\n }\n /** Removes an item from the drop list. */\n removeItem(item) {\n this._unsortedItems.delete(item);\n if (this._dropListRef.isDragging()) {\n this._syncItemsWithRef();\n }\n }\n /** Gets the registered items in the list, sorted by their position in the DOM. */\n getSortedItems() {\n return Array.from(this._unsortedItems).sort((a, b) => {\n const documentPosition = a._dragRef\n .getVisibleElement()\n .compareDocumentPosition(b._dragRef.getVisibleElement());\n // `compareDocumentPosition` returns a bitmask so we have to use a bitwise operator.\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/compareDocumentPosition\n // tslint:disable-next-line:no-bitwise\n return documentPosition & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n });\n }\n ngOnDestroy() {\n const index = CdkDropList._dropLists.indexOf(this);\n if (index > -1) {\n CdkDropList._dropLists.splice(index, 1);\n }\n if (this._group) {\n this._group._items.delete(this);\n }\n this._unsortedItems.clear();\n this._dropListRef.dispose();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Syncs the inputs of the CdkDropList with the options of the underlying DropListRef. */\n _setupInputSyncSubscription(ref) {\n if (this._dir) {\n this._dir.change\n .pipe(startWith(this._dir.value), takeUntil(this._destroyed))\n .subscribe(value => ref.withDirection(value));\n }\n ref.beforeStarted.subscribe(() => {\n const siblings = coerceArray(this.connectedTo).map(drop => {\n if (typeof drop === 'string') {\n const correspondingDropList = CdkDropList._dropLists.find(list => list.id === drop);\n if (!correspondingDropList && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n console.warn(`CdkDropList could not find connected drop list with id \"${drop}\"`);\n }\n return correspondingDropList;\n }\n return drop;\n });\n if (this._group) {\n this._group._items.forEach(drop => {\n if (siblings.indexOf(drop) === -1) {\n siblings.push(drop);\n }\n });\n }\n // Note that we resolve the scrollable parents here so that we delay the resolution\n // as long as possible, ensuring that the element is in its final place in the DOM.\n if (!this._scrollableParentsResolved) {\n const scrollableParents = this._scrollDispatcher\n .getAncestorScrollContainers(this.element)\n .map(scrollable => scrollable.getElementRef().nativeElement);\n this._dropListRef.withScrollableParents(scrollableParents);\n // Only do this once since it involves traversing the DOM and the parents\n // shouldn't be able to change without the drop list being destroyed.\n this._scrollableParentsResolved = true;\n }\n if (this.elementContainerSelector) {\n const container = this.element.nativeElement.querySelector(this.elementContainerSelector);\n if (!container && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new Error(`CdkDropList could not find an element container matching the selector \"${this.elementContainerSelector}\"`);\n }\n ref.withElementContainer(container);\n }\n ref.disabled = this.disabled;\n ref.lockAxis = this.lockAxis;\n ref.sortingDisabled = this.sortingDisabled;\n ref.autoScrollDisabled = this.autoScrollDisabled;\n ref.autoScrollStep = coerceNumberProperty(this.autoScrollStep, 2);\n ref\n .connectedTo(siblings.filter(drop => drop && drop !== this).map(list => list._dropListRef))\n .withOrientation(this.orientation);\n });\n }\n /** Handles events from the underlying DropListRef. */\n _handleEvents(ref) {\n ref.beforeStarted.subscribe(() => {\n this._syncItemsWithRef();\n this._changeDetectorRef.markForCheck();\n });\n ref.entered.subscribe(event => {\n this.entered.emit({\n container: this,\n item: event.item.data,\n currentIndex: event.currentIndex,\n });\n });\n ref.exited.subscribe(event => {\n this.exited.emit({\n container: this,\n item: event.item.data,\n });\n this._changeDetectorRef.markForCheck();\n });\n ref.sorted.subscribe(event => {\n this.sorted.emit({\n previousIndex: event.previousIndex,\n currentIndex: event.currentIndex,\n container: this,\n item: event.item.data,\n });\n });\n ref.dropped.subscribe(dropEvent => {\n this.dropped.emit({\n previousIndex: dropEvent.previousIndex,\n currentIndex: dropEvent.currentIndex,\n previousContainer: dropEvent.previousContainer.data,\n container: dropEvent.container.data,\n item: dropEvent.item.data,\n isPointerOverContainer: dropEvent.isPointerOverContainer,\n distance: dropEvent.distance,\n dropPoint: dropEvent.dropPoint,\n event: dropEvent.event,\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 merge(ref.receivingStarted, ref.receivingStopped).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n /** Assigns the default input values based on a provided config object. */\n _assignDefaults(config) {\n const { lockAxis, draggingDisabled, sortingDisabled, listAutoScrollDisabled, listOrientation } = config;\n this.disabled = draggingDisabled == null ? false : draggingDisabled;\n this.sortingDisabled = sortingDisabled == null ? false : sortingDisabled;\n this.autoScrollDisabled = listAutoScrollDisabled == null ? false : listAutoScrollDisabled;\n this.orientation = listOrientation || 'vertical';\n if (lockAxis) {\n this.lockAxis = lockAxis;\n }\n }\n /** Syncs up the registered drag items with underlying drop list ref. */\n _syncItemsWithRef() {\n this._dropListRef.withItems(this.getSortedItems().map(item => item._dragRef));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkDropList, deps: [{ token: i0.ElementRef }, { token: DragDrop }, { token: i0.ChangeDetectorRef }, { token: i1.ScrollDispatcher }, { token: i1$1.Directionality, optional: true }, { token: CDK_DROP_LIST_GROUP, optional: true, skipSelf: true }, { token: CDK_DRAG_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: CdkDropList, isStandalone: true, selector: \"[cdkDropList], cdk-drop-list\", inputs: { connectedTo: [\"cdkDropListConnectedTo\", \"connectedTo\"], data: [\"cdkDropListData\", \"data\"], orientation: [\"cdkDropListOrientation\", \"orientation\"], id: \"id\", lockAxis: [\"cdkDropListLockAxis\", \"lockAxis\"], disabled: [\"cdkDropListDisabled\", \"disabled\", booleanAttribute], sortingDisabled: [\"cdkDropListSortingDisabled\", \"sortingDisabled\", booleanAttribute], enterPredicate: [\"cdkDropListEnterPredicate\", \"enterPredicate\"], sortPredicate: [\"cdkDropListSortPredicate\", \"sortPredicate\"], autoScrollDisabled: [\"cdkDropListAutoScrollDisabled\", \"autoScrollDisabled\", booleanAttribute], autoScrollStep: [\"cdkDropListAutoScrollStep\", \"autoScrollStep\"], elementContainerSelector: [\"cdkDropListElementContainer\", \"elementContainerSelector\"] }, outputs: { dropped: \"cdkDropListDropped\", entered: \"cdkDropListEntered\", exited: \"cdkDropListExited\", sorted: \"cdkDropListSorted\" }, host: { properties: { \"attr.id\": \"id\", \"class.cdk-drop-list-disabled\": \"disabled\", \"class.cdk-drop-list-dragging\": \"_dropListRef.isDragging()\", \"class.cdk-drop-list-receiving\": \"_dropListRef.isReceiving()\" }, classAttribute: \"cdk-drop-list\" }, providers: [\n // Prevent child drop lists from picking up the same group as their parent.\n { provide: CDK_DROP_LIST_GROUP, useValue: undefined },\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\n ], exportAs: [\"cdkDropList\"], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkDropList, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkDropList], cdk-drop-list',\n exportAs: 'cdkDropList',\n standalone: true,\n providers: [\n // Prevent child drop lists from picking up the same group as their parent.\n { provide: CDK_DROP_LIST_GROUP, useValue: undefined },\n { provide: CDK_DROP_LIST, useExisting: CdkDropList },\n ],\n host: {\n 'class': 'cdk-drop-list',\n '[attr.id]': 'id',\n '[class.cdk-drop-list-disabled]': 'disabled',\n '[class.cdk-drop-list-dragging]': '_dropListRef.isDragging()',\n '[class.cdk-drop-list-receiving]': '_dropListRef.isReceiving()',\n },\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: DragDrop }, { type: i0.ChangeDetectorRef }, { type: i1.ScrollDispatcher }, { type: i1$1.Directionality, decorators: [{\n type: Optional\n }] }, { type: CdkDropListGroup, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_DROP_LIST_GROUP]\n }, {\n type: SkipSelf\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [CDK_DRAG_CONFIG]\n }] }], propDecorators: { connectedTo: [{\n type: Input,\n args: ['cdkDropListConnectedTo']\n }], data: [{\n type: Input,\n args: ['cdkDropListData']\n }], orientation: [{\n type: Input,\n args: ['cdkDropListOrientation']\n }], id: [{\n type: Input\n }], lockAxis: [{\n type: Input,\n args: ['cdkDropListLockAxis']\n }], disabled: [{\n type: Input,\n args: [{ alias: 'cdkDropListDisabled', transform: booleanAttribute }]\n }], sortingDisabled: [{\n type: Input,\n args: [{ alias: 'cdkDropListSortingDisabled', transform: booleanAttribute }]\n }], enterPredicate: [{\n type: Input,\n args: ['cdkDropListEnterPredicate']\n }], sortPredicate: [{\n type: Input,\n args: ['cdkDropListSortPredicate']\n }], autoScrollDisabled: [{\n type: Input,\n args: [{ alias: 'cdkDropListAutoScrollDisabled', transform: booleanAttribute }]\n }], autoScrollStep: [{\n type: Input,\n args: ['cdkDropListAutoScrollStep']\n }], elementContainerSelector: [{\n type: Input,\n args: ['cdkDropListElementContainer']\n }], dropped: [{\n type: Output,\n args: ['cdkDropListDropped']\n }], entered: [{\n type: Output,\n args: ['cdkDropListEntered']\n }], exited: [{\n type: Output,\n args: ['cdkDropListExited']\n }], sorted: [{\n type: Output,\n args: ['cdkDropListSorted']\n }] } });\n\n/**\n * Injection token that can be used to reference instances of `CdkDragPreview`. It serves as\n * alternative token to the actual `CdkDragPreview` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_PREVIEW = new InjectionToken('CdkDragPreview');\n/**\n * Element that will be used as a template for the preview\n * of a CdkDrag when it is being dragged.\n */\nclass CdkDragPreview {\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._drag = inject(CDK_DRAG_PARENT, { optional: true });\n /** Whether the preview should preserve the same size as the item that is being dragged. */\n this.matchSize = false;\n this._drag?._setPreviewTemplate(this);\n }\n ngOnDestroy() {\n this._drag?._resetPreviewTemplate(this);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkDragPreview, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: CdkDragPreview, isStandalone: true, selector: \"ng-template[cdkDragPreview]\", inputs: { data: \"data\", matchSize: [\"matchSize\", \"matchSize\", booleanAttribute] }, providers: [{ provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkDragPreview, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkDragPreview]',\n standalone: true,\n providers: [{ provide: CDK_DRAG_PREVIEW, useExisting: CdkDragPreview }],\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { data: [{\n type: Input\n }], matchSize: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }] } });\n\n/**\n * Injection token that can be used to reference instances of `CdkDragPlaceholder`. It serves as\n * alternative token to the actual `CdkDragPlaceholder` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst CDK_DRAG_PLACEHOLDER = new InjectionToken('CdkDragPlaceholder');\n/**\n * Element that will be used as a template for the placeholder of a CdkDrag when\n * it is being dragged. The placeholder is displayed in place of the element being dragged.\n */\nclass CdkDragPlaceholder {\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._drag = inject(CDK_DRAG_PARENT, { optional: true });\n this._drag?._setPlaceholderTemplate(this);\n }\n ngOnDestroy() {\n this._drag?._resetPlaceholderTemplate(this);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkDragPlaceholder, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkDragPlaceholder, isStandalone: true, selector: \"ng-template[cdkDragPlaceholder]\", inputs: { data: \"data\" }, providers: [{ provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkDragPlaceholder, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkDragPlaceholder]',\n standalone: true,\n providers: [{ provide: CDK_DRAG_PLACEHOLDER, useExisting: CdkDragPlaceholder }],\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { data: [{\n type: Input\n }] } });\n\nconst DRAG_DROP_DIRECTIVES = [\n CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder,\n];\nclass DragDropModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: DragDropModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: DragDropModule, imports: [CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder], exports: [CdkScrollableModule, CdkDropList,\n CdkDropListGroup,\n CdkDrag,\n CdkDragHandle,\n CdkDragPreview,\n CdkDragPlaceholder] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: DragDropModule, providers: [DragDrop], imports: [CdkScrollableModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: DragDropModule, decorators: [{\n type: NgModule,\n args: [{\n imports: DRAG_DROP_DIRECTIVES,\n exports: [CdkScrollableModule, ...DRAG_DROP_DIRECTIVES],\n providers: [DragDrop],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CDK_DRAG_CONFIG, CDK_DRAG_HANDLE, CDK_DRAG_PARENT, CDK_DRAG_PLACEHOLDER, CDK_DRAG_PREVIEW, CDK_DROP_LIST, CDK_DROP_LIST_GROUP, CdkDrag, CdkDragHandle, CdkDragPlaceholder, CdkDragPreview, CdkDropList, CdkDropListGroup, DragDrop, DragDropModule, DragDropRegistry, DragRef, DropListRef, copyArrayItem, moveItemInArray, transferArrayItem };\n","import { asyncScheduler } from '../scheduler/async';\nimport { timer } from './timer';\nexport function interval(period = 0, scheduler = asyncScheduler) {\n if (period < 0) {\n period = 0;\n }\n return timer(period, period, scheduler);\n}\n","import * as i1 from '@angular/cdk/a11y';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { ENTER, SPACE, BACKSPACE, DELETE, TAB, hasModifierKey, UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, booleanAttribute, numberAttribute, Directive, Inject, Input, EventEmitter, inject, Injector, afterNextRender, ANIMATION_MODULE_TYPE, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, ContentChildren, Output, ContentChild, ViewChild, Attribute, QueryList, forwardRef, Self, NgModule } from '@angular/core';\nimport * as i3 from '@angular/material/core';\nimport { MatRippleLoader, MAT_RIPPLE_GLOBAL_OPTIONS, _ErrorStateTracker, MatCommonModule, MatRippleModule, ErrorStateMatcher } from '@angular/material/core';\nimport { Subject, merge } from 'rxjs';\nimport { takeUntil, startWith, switchMap } from 'rxjs/operators';\nimport * as i1$1 from '@angular/cdk/bidi';\nimport * as i2 from '@angular/forms';\nimport { NG_VALUE_ACCESSOR, Validators } from '@angular/forms';\nimport * as i1$2 from '@angular/material/form-field';\nimport { MatFormFieldControl, MAT_FORM_FIELD } from '@angular/material/form-field';\n\n/** Injection token to be used to override the default options for the chips module. */\nconst MAT_CHIPS_DEFAULT_OPTIONS = new InjectionToken('mat-chips-default-options', {\n providedIn: 'root',\n factory: () => ({\n separatorKeyCodes: [ENTER],\n }),\n});\n/**\n * Injection token that can be used to reference instances of `MatChipAvatar`. It serves as\n * alternative token to the actual `MatChipAvatar` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_CHIP_AVATAR = new InjectionToken('MatChipAvatar');\n/**\n * Injection token that can be used to reference instances of `MatChipTrailingIcon`. It serves as\n * alternative token to the actual `MatChipTrailingIcon` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_CHIP_TRAILING_ICON = new InjectionToken('MatChipTrailingIcon');\n/**\n * Injection token that can be used to reference instances of `MatChipRemove`. It serves as\n * alternative token to the actual `MatChipRemove` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_CHIP_REMOVE = new InjectionToken('MatChipRemove');\n/**\n * Injection token used to avoid a circular dependency between the `MatChip` and `MatChipAction`.\n */\nconst MAT_CHIP = new InjectionToken('MatChip');\n\n/**\n * Section within a chip.\n * @docs-private\n */\nclass MatChipAction {\n /** Whether the action is disabled. */\n get disabled() {\n return this._disabled || this._parentChip.disabled;\n }\n set disabled(value) {\n this._disabled = value;\n }\n /**\n * Determine the value of the disabled attribute for this chip action.\n */\n _getDisabledAttribute() {\n // When this chip action is disabled and focusing disabled chips is not permitted, return empty\n // string to indicate that disabled attribute should be included.\n return this.disabled && !this._allowFocusWhenDisabled ? '' : null;\n }\n /**\n * Determine the value of the tabindex attribute for this chip action.\n */\n _getTabindex() {\n return (this.disabled && !this._allowFocusWhenDisabled) || !this.isInteractive\n ? null\n : this.tabIndex.toString();\n }\n constructor(_elementRef, _parentChip) {\n this._elementRef = _elementRef;\n this._parentChip = _parentChip;\n /** Whether the action is interactive. */\n this.isInteractive = true;\n /** Whether this is the primary action in the chip. */\n this._isPrimary = true;\n this._disabled = false;\n /** Tab index of the action. */\n this.tabIndex = -1;\n /**\n * Private API to allow focusing this chip when it is disabled.\n */\n this._allowFocusWhenDisabled = false;\n if (_elementRef.nativeElement.nodeName === 'BUTTON') {\n _elementRef.nativeElement.setAttribute('type', 'button');\n }\n }\n focus() {\n this._elementRef.nativeElement.focus();\n }\n _handleClick(event) {\n if (!this.disabled && this.isInteractive && this._isPrimary) {\n event.preventDefault();\n this._parentChip._handlePrimaryActionInteraction();\n }\n }\n _handleKeydown(event) {\n if ((event.keyCode === ENTER || event.keyCode === SPACE) &&\n !this.disabled &&\n this.isInteractive &&\n this._isPrimary &&\n !this._parentChip._isEditing) {\n event.preventDefault();\n this._parentChip._handlePrimaryActionInteraction();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipAction, deps: [{ token: i0.ElementRef }, { token: MAT_CHIP }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: MatChipAction, isStandalone: true, selector: \"[matChipAction]\", inputs: { isInteractive: \"isInteractive\", disabled: [\"disabled\", \"disabled\", booleanAttribute], tabIndex: [\"tabIndex\", \"tabIndex\", (value) => (value == null ? -1 : numberAttribute(value))], _allowFocusWhenDisabled: \"_allowFocusWhenDisabled\" }, host: { listeners: { \"click\": \"_handleClick($event)\", \"keydown\": \"_handleKeydown($event)\" }, properties: { \"class.mdc-evolution-chip__action--primary\": \"_isPrimary\", \"class.mdc-evolution-chip__action--presentational\": \"!isInteractive\", \"class.mdc-evolution-chip__action--trailing\": \"!_isPrimary\", \"attr.tabindex\": \"_getTabindex()\", \"attr.disabled\": \"_getDisabledAttribute()\", \"attr.aria-disabled\": \"disabled\" }, classAttribute: \"mdc-evolution-chip__action mat-mdc-chip-action\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipAction, decorators: [{\n type: Directive,\n args: [{\n selector: '[matChipAction]',\n host: {\n 'class': 'mdc-evolution-chip__action mat-mdc-chip-action',\n '[class.mdc-evolution-chip__action--primary]': '_isPrimary',\n '[class.mdc-evolution-chip__action--presentational]': '!isInteractive',\n '[class.mdc-evolution-chip__action--trailing]': '!_isPrimary',\n '[attr.tabindex]': '_getTabindex()',\n '[attr.disabled]': '_getDisabledAttribute()',\n '[attr.aria-disabled]': 'disabled',\n '(click)': '_handleClick($event)',\n '(keydown)': '_handleKeydown($event)',\n },\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_CHIP]\n }] }], propDecorators: { isInteractive: [{\n type: Input\n }], disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], tabIndex: [{\n type: Input,\n args: [{\n transform: (value) => (value == null ? -1 : numberAttribute(value)),\n }]\n }], _allowFocusWhenDisabled: [{\n type: Input\n }] } });\n\n/** Avatar image within a chip. */\nclass MatChipAvatar {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipAvatar, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatChipAvatar, isStandalone: true, selector: \"mat-chip-avatar, [matChipAvatar]\", host: { attributes: { \"role\": \"img\" }, classAttribute: \"mat-mdc-chip-avatar mdc-evolution-chip__icon mdc-evolution-chip__icon--primary\" }, providers: [{ provide: MAT_CHIP_AVATAR, useExisting: MatChipAvatar }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipAvatar, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-chip-avatar, [matChipAvatar]',\n host: {\n 'class': 'mat-mdc-chip-avatar mdc-evolution-chip__icon mdc-evolution-chip__icon--primary',\n 'role': 'img',\n },\n providers: [{ provide: MAT_CHIP_AVATAR, useExisting: MatChipAvatar }],\n standalone: true,\n }]\n }] });\n/** Non-interactive trailing icon in a chip. */\nclass MatChipTrailingIcon extends MatChipAction {\n constructor() {\n super(...arguments);\n /**\n * MDC considers all trailing actions as a remove icon,\n * but we support non-interactive trailing icons.\n */\n this.isInteractive = false;\n this._isPrimary = false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipTrailingIcon, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatChipTrailingIcon, isStandalone: true, selector: \"mat-chip-trailing-icon, [matChipTrailingIcon]\", host: { attributes: { \"aria-hidden\": \"true\" }, classAttribute: \"mat-mdc-chip-trailing-icon mdc-evolution-chip__icon mdc-evolution-chip__icon--trailing\" }, providers: [{ provide: MAT_CHIP_TRAILING_ICON, useExisting: MatChipTrailingIcon }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipTrailingIcon, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-chip-trailing-icon, [matChipTrailingIcon]',\n host: {\n 'class': 'mat-mdc-chip-trailing-icon mdc-evolution-chip__icon mdc-evolution-chip__icon--trailing',\n 'aria-hidden': 'true',\n },\n providers: [{ provide: MAT_CHIP_TRAILING_ICON, useExisting: MatChipTrailingIcon }],\n standalone: true,\n }]\n }] });\n/**\n * Directive to remove the parent chip when the trailing icon is clicked or\n * when the ENTER key is pressed on it.\n *\n * Recommended for use with the Material Design \"cancel\" icon\n * available at https://material.io/icons/#ic_cancel.\n *\n * Example:\n *\n * ```\n * \n * cancel\n * \n * ```\n */\nclass MatChipRemove extends MatChipAction {\n constructor() {\n super(...arguments);\n this._isPrimary = false;\n }\n _handleClick(event) {\n if (!this.disabled) {\n event.stopPropagation();\n event.preventDefault();\n this._parentChip.remove();\n }\n }\n _handleKeydown(event) {\n if ((event.keyCode === ENTER || event.keyCode === SPACE) && !this.disabled) {\n event.stopPropagation();\n event.preventDefault();\n this._parentChip.remove();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipRemove, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatChipRemove, isStandalone: true, selector: \"[matChipRemove]\", host: { attributes: { \"role\": \"button\" }, properties: { \"attr.aria-hidden\": \"null\" }, classAttribute: \"mat-mdc-chip-remove mat-mdc-chip-trailing-icon mat-mdc-focus-indicator mdc-evolution-chip__icon mdc-evolution-chip__icon--trailing\" }, providers: [{ provide: MAT_CHIP_REMOVE, useExisting: MatChipRemove }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipRemove, decorators: [{\n type: Directive,\n args: [{\n selector: '[matChipRemove]',\n host: {\n 'class': 'mat-mdc-chip-remove mat-mdc-chip-trailing-icon mat-mdc-focus-indicator ' +\n 'mdc-evolution-chip__icon mdc-evolution-chip__icon--trailing',\n 'role': 'button',\n '[attr.aria-hidden]': 'null',\n },\n providers: [{ provide: MAT_CHIP_REMOVE, useExisting: MatChipRemove }],\n standalone: true,\n }]\n }] });\n\nlet uid = 0;\n/**\n * Material design styled Chip base component. Used inside the MatChipSet component.\n *\n * Extended by MatChipOption and MatChipRow for different interaction patterns.\n */\nclass MatChip {\n _hasFocus() {\n return this._hasFocusInternal;\n }\n /**\n * The value of the chip. Defaults to the content inside\n * the `mat-mdc-chip-action-label` element.\n */\n get value() {\n return this._value !== undefined ? this._value : this._textElement.textContent.trim();\n }\n set value(value) {\n this._value = value;\n }\n /**\n * Reference to the MatRipple instance of the chip.\n * @deprecated Considered an implementation detail. To be removed.\n * @breaking-change 17.0.0\n */\n get ripple() {\n return this._rippleLoader?.getRipple(this._elementRef.nativeElement);\n }\n set ripple(v) {\n this._rippleLoader?.attachRipple(this._elementRef.nativeElement, v);\n }\n constructor(_changeDetectorRef, _elementRef, _ngZone, _focusMonitor, _document, animationMode, _globalRippleOptions) {\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._focusMonitor = _focusMonitor;\n this._globalRippleOptions = _globalRippleOptions;\n /** Emits when the chip is focused. */\n this._onFocus = new Subject();\n /** Emits when the chip is blurred. */\n this._onBlur = new Subject();\n /** Role for the root of the chip. */\n this.role = null;\n /** Whether the chip has focus. */\n this._hasFocusInternal = false;\n /** A unique id for the chip. If none is supplied, it will be auto-generated. */\n this.id = `mat-mdc-chip-${uid++}`;\n // TODO(#26104): Consider deprecating and using `_computeAriaAccessibleName` instead.\n // `ariaLabel` may be unnecessary, and `_computeAriaAccessibleName` only supports\n // datepicker's use case.\n /** ARIA label for the content of the chip. */\n this.ariaLabel = null;\n // TODO(#26104): Consider deprecating and using `_computeAriaAccessibleName` instead.\n // `ariaDescription` may be unnecessary, and `_computeAriaAccessibleName` only supports\n // datepicker's use case.\n /** ARIA description for the content of the chip. */\n this.ariaDescription = null;\n /** Id of a span that contains this chip's aria description. */\n this._ariaDescriptionId = `${this.id}-aria-description`;\n /**\n * Determines whether or not the chip displays the remove styling and emits (removed) events.\n */\n this.removable = true;\n /**\n * Colors the chip for emphasis as if it were selected.\n */\n this.highlighted = false;\n /** Whether the ripple effect is disabled or not. */\n this.disableRipple = false;\n /** Whether the chip is disabled. */\n this.disabled = false;\n /** Emitted when a chip is to be removed. */\n this.removed = new EventEmitter();\n /** Emitted when the chip is destroyed. */\n this.destroyed = new EventEmitter();\n /** The unstyled chip selector for this component. */\n this.basicChipAttrName = 'mat-basic-chip';\n /**\n * Handles the lazy creation of the MatChip ripple.\n * Used to improve initial load time of large applications.\n */\n this._rippleLoader = inject(MatRippleLoader);\n this._injector = inject(Injector);\n this._document = _document;\n this._animationsDisabled = animationMode === 'NoopAnimations';\n this._monitorFocus();\n this._rippleLoader?.configureRipple(this._elementRef.nativeElement, {\n className: 'mat-mdc-chip-ripple',\n disabled: this._isRippleDisabled(),\n });\n }\n ngOnInit() {\n // This check needs to happen in `ngOnInit` so the overridden value of\n // `basicChipAttrName` coming from base classes can be picked up.\n const element = this._elementRef.nativeElement;\n this._isBasicChip =\n element.hasAttribute(this.basicChipAttrName) ||\n element.tagName.toLowerCase() === this.basicChipAttrName;\n }\n ngAfterViewInit() {\n this._textElement = this._elementRef.nativeElement.querySelector('.mat-mdc-chip-action-label');\n if (this._pendingFocus) {\n this._pendingFocus = false;\n this.focus();\n }\n }\n ngAfterContentInit() {\n // Since the styling depends on the presence of some\n // actions, we have to mark for check on changes.\n this._actionChanges = merge(this._allLeadingIcons.changes, this._allTrailingIcons.changes, this._allRemoveIcons.changes).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n ngDoCheck() {\n this._rippleLoader.setDisabled(this._elementRef.nativeElement, this._isRippleDisabled());\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n this._rippleLoader?.destroyRipple(this._elementRef.nativeElement);\n this._actionChanges?.unsubscribe();\n this.destroyed.emit({ chip: this });\n this.destroyed.complete();\n }\n /**\n * Allows for programmatic removal of the chip.\n *\n * Informs any listeners of the removal request. Does not remove the chip from the DOM.\n */\n remove() {\n if (this.removable) {\n this.removed.emit({ chip: this });\n }\n }\n /** Whether or not the ripple should be disabled. */\n _isRippleDisabled() {\n return (this.disabled ||\n this.disableRipple ||\n this._animationsDisabled ||\n this._isBasicChip ||\n !!this._globalRippleOptions?.disabled);\n }\n /** Returns whether the chip has a trailing icon. */\n _hasTrailingIcon() {\n return !!(this.trailingIcon || this.removeIcon);\n }\n /** Handles keyboard events on the chip. */\n _handleKeydown(event) {\n // Ignore backspace events where the user is holding down the key\n // so that we don't accidentally remove too many chips.\n if ((event.keyCode === BACKSPACE && !event.repeat) || event.keyCode === DELETE) {\n event.preventDefault();\n this.remove();\n }\n }\n /** Allows for programmatic focusing of the chip. */\n focus() {\n if (!this.disabled) {\n // If `focus` is called before `ngAfterViewInit`, we won't have access to the primary action.\n // This can happen if the consumer tries to focus a chip immediately after it is added.\n // Queue the method to be called again on init.\n if (this.primaryAction) {\n this.primaryAction.focus();\n }\n else {\n this._pendingFocus = true;\n }\n }\n }\n /** Gets the action that contains a specific target node. */\n _getSourceAction(target) {\n return this._getActions().find(action => {\n const element = action._elementRef.nativeElement;\n return element === target || element.contains(target);\n });\n }\n /** Gets all of the actions within the chip. */\n _getActions() {\n const result = [];\n if (this.primaryAction) {\n result.push(this.primaryAction);\n }\n if (this.removeIcon) {\n result.push(this.removeIcon);\n }\n if (this.trailingIcon) {\n result.push(this.trailingIcon);\n }\n return result;\n }\n /** Handles interactions with the primary action of the chip. */\n _handlePrimaryActionInteraction() {\n // Empty here, but is overwritten in child classes.\n }\n /** Starts the focus monitoring process on the chip. */\n _monitorFocus() {\n this._focusMonitor.monitor(this._elementRef, true).subscribe(origin => {\n const hasFocus = origin !== null;\n if (hasFocus !== this._hasFocusInternal) {\n this._hasFocusInternal = hasFocus;\n if (hasFocus) {\n this._onFocus.next({ chip: this });\n }\n else {\n // When animations are enabled, Angular may end up removing the chip from the DOM a little\n // earlier than usual, causing it to be blurred and throwing off the logic in the chip list\n // that moves focus not the next item. To work around the issue, we defer marking the chip\n // as not focused until after the next render.\n afterNextRender(() => this._ngZone.run(() => this._onBlur.next({ chip: this })), {\n injector: this._injector,\n });\n }\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChip, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.FocusMonitor }, { token: DOCUMENT }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: MAT_RIPPLE_GLOBAL_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"18.2.0-next.2\", type: MatChip, isStandalone: true, selector: \"mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]\", inputs: { role: \"role\", id: \"id\", ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaDescription: [\"aria-description\", \"ariaDescription\"], value: \"value\", color: \"color\", removable: [\"removable\", \"removable\", booleanAttribute], highlighted: [\"highlighted\", \"highlighted\", booleanAttribute], disableRipple: [\"disableRipple\", \"disableRipple\", booleanAttribute], disabled: [\"disabled\", \"disabled\", booleanAttribute] }, outputs: { removed: \"removed\", destroyed: \"destroyed\" }, host: { listeners: { \"keydown\": \"_handleKeydown($event)\" }, properties: { \"class\": \"\\\"mat-\\\" + (color || \\\"primary\\\")\", \"class.mdc-evolution-chip\": \"!_isBasicChip\", \"class.mdc-evolution-chip--disabled\": \"disabled\", \"class.mdc-evolution-chip--with-trailing-action\": \"_hasTrailingIcon()\", \"class.mdc-evolution-chip--with-primary-graphic\": \"leadingIcon\", \"class.mdc-evolution-chip--with-primary-icon\": \"leadingIcon\", \"class.mdc-evolution-chip--with-avatar\": \"leadingIcon\", \"class.mat-mdc-chip-with-avatar\": \"leadingIcon\", \"class.mat-mdc-chip-highlighted\": \"highlighted\", \"class.mat-mdc-chip-disabled\": \"disabled\", \"class.mat-mdc-basic-chip\": \"_isBasicChip\", \"class.mat-mdc-standard-chip\": \"!_isBasicChip\", \"class.mat-mdc-chip-with-trailing-icon\": \"_hasTrailingIcon()\", \"class._mat-animation-noopable\": \"_animationsDisabled\", \"id\": \"id\", \"attr.role\": \"role\", \"attr.aria-label\": \"ariaLabel\" }, classAttribute: \"mat-mdc-chip\" }, providers: [{ provide: MAT_CHIP, useExisting: MatChip }], queries: [{ propertyName: \"leadingIcon\", first: true, predicate: MAT_CHIP_AVATAR, descendants: true }, { propertyName: \"trailingIcon\", first: true, predicate: MAT_CHIP_TRAILING_ICON, descendants: true }, { propertyName: \"removeIcon\", first: true, predicate: MAT_CHIP_REMOVE, descendants: true }, { propertyName: \"_allLeadingIcons\", predicate: MAT_CHIP_AVATAR, descendants: true }, { propertyName: \"_allTrailingIcons\", predicate: MAT_CHIP_TRAILING_ICON, descendants: true }, { propertyName: \"_allRemoveIcons\", predicate: MAT_CHIP_REMOVE, descendants: true }], viewQueries: [{ propertyName: \"primaryAction\", first: true, predicate: MatChipAction, descendants: true }], exportAs: [\"matChip\"], ngImport: i0, template: \"\\n\\n\\n \\n @if (leadingIcon) {\\n \\n \\n \\n }\\n \\n \\n \\n \\n \\n\\n\\n@if (_hasTrailingIcon()) {\\n \\n \\n \\n}\\n\", styles: [\".mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{flex-basis:100%;overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}.mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit;overflow-x:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-outline-width);border-radius:var(--mdc-chip-container-shape-radius);box-sizing:border-box;content:\\\"\\\";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1;border-style:solid}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-outline-color, var(--mat-app-outline))}.mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational):not(.mdc-ripple-upgraded):focus::before{border-color:var(--mdc-chip-focus-outline-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-disabled-outline-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip__action--trailing{position:relative;overflow:visible}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-color, var(--mat-app-on-surface))}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip__text-label{-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__text-label{font-family:var(--mdc-chip-label-text-font, var(--mat-app-label-large-font));line-height:var(--mdc-chip-label-text-line-height, var(--mat-app-label-large-line-height));font-size:var(--mdc-chip-label-text-size, var(--mat-app-label-large-size));font-weight:var(--mdc-chip-label-text-weight, var(--mat-app-label-large-weight));letter-spacing:var(--mdc-chip-label-text-tracking, var(--mat-app-label-large-tracking))}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-label-text-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-selected-label-text-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label,.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color)}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{width:var(--mdc-chip-with-avatar-avatar-size);height:var(--mdc-chip-with-avatar-avatar-size);font-size:var(--mdc-chip-with-avatar-avatar-size)}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%;height:20px;width:20px}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-app-on-surface))}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.cdk-high-contrast-active .mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove{opacity:calc(var(--mat-chip-trailing-action-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove:focus{opacity:calc(var(--mat-chip-trailing-action-focus-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mat-mdc-standard-chip{border-radius:var(--mdc-chip-container-shape-radius);height:var(--mdc-chip-container-height)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-app-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-flat-disabled-selected-container-color)}.cdk-high-contrast-active .mat-mdc-standard-chip{outline:solid 1px}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mdc-chip-with-avatar-avatar-shape-radius);width:var(--mdc-chip-with-icon-icon-size);height:var(--mdc-chip-with-icon-icon-size);font-size:var(--mdc-chip-with-icon-icon-size)}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-app-on-surface))}.mat-mdc-chip-highlighted{--mdc-chip-with-icon-icon-color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-app-on-secondary-container));--mdc-chip-elevated-container-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-app-secondary-container));--mdc-chip-label-text-color:var(--mdc-chip-selected-label-text-color, var(--mat-app-on-secondary-container));--mdc-chip-outline-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-chip-selected .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-app-on-secondary-container))}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-hover-state-layer-color, var(--mat-app-on-surface-variant));opacity:var(--mdc-chip-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip-focus-overlay .mat-mdc-chip-selected:hover,.mat-mdc-chip-highlighted:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-hover-state-layer-color, var(--mat-app-on-secondary-container));opacity:var(--mdc-chip-selected-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-app-on-surface-variant));opacity:var(--mdc-chip-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-chip-selected.cdk-focused .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-app-on-secondary-container));opacity:var(--mdc-chip-selected-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mdc-evolution-chip--disabled:not(.mdc-evolution-chip--selected) .mat-mdc-chip-avatar{opacity:var(--mdc-chip-with-avatar-disabled-avatar-opacity)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{opacity:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity)}.mdc-evolution-chip--disabled.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{opacity:var(--mdc-chip-with-icon-disabled-icon-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:var(--mat-chip-disabled-container-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-trailing-icon-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-disabled-trailing-icon-color, var(--mat-app-on-surface))}.mat-mdc-chip-remove{opacity:var(--mat-chip-trailing-action-opacity)}.mat-mdc-chip-remove:focus{opacity:var(--mat-chip-trailing-action-focus-opacity)}.mat-mdc-chip-remove::after{background:var(--mat-chip-trailing-action-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-chip-remove:hover::after{opacity:var(--mat-chip-trailing-action-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip-remove:focus::after{opacity:var(--mat-chip-trailing-action-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-chip-selected .mat-mdc-chip-remove::after,.mat-mdc-chip-highlighted .mat-mdc-chip-remove::after{background:var(--mat-chip-selected-trailing-action-state-layer-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip .mat-ripple.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-chip-remove::before{margin:calc(var(--mat-mdc-focus-indicator-border-width, 3px)*-1);left:8px;right:8px}.mat-mdc-chip-remove::after{content:\\\"\\\";display:block;opacity:0;position:absolute;top:-2px;bottom:-2px;left:6px;right:6px;border-radius:50%}.mat-mdc-chip-remove .mat-icon{width:18px;height:18px;font-size:18px;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}.cdk-high-contrast-active .mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}.mat-mdc-chip-action:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}\"], dependencies: [{ kind: \"directive\", type: MatChipAction, selector: \"[matChipAction]\", inputs: [\"isInteractive\", \"disabled\", \"tabIndex\", \"_allowFocusWhenDisabled\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChip, decorators: [{\n type: Component,\n args: [{ selector: 'mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]', exportAs: 'matChip', host: {\n 'class': 'mat-mdc-chip',\n '[class]': '\"mat-\" + (color || \"primary\")',\n '[class.mdc-evolution-chip]': '!_isBasicChip',\n '[class.mdc-evolution-chip--disabled]': 'disabled',\n '[class.mdc-evolution-chip--with-trailing-action]': '_hasTrailingIcon()',\n '[class.mdc-evolution-chip--with-primary-graphic]': 'leadingIcon',\n '[class.mdc-evolution-chip--with-primary-icon]': 'leadingIcon',\n '[class.mdc-evolution-chip--with-avatar]': 'leadingIcon',\n '[class.mat-mdc-chip-with-avatar]': 'leadingIcon',\n '[class.mat-mdc-chip-highlighted]': 'highlighted',\n '[class.mat-mdc-chip-disabled]': 'disabled',\n '[class.mat-mdc-basic-chip]': '_isBasicChip',\n '[class.mat-mdc-standard-chip]': '!_isBasicChip',\n '[class.mat-mdc-chip-with-trailing-icon]': '_hasTrailingIcon()',\n '[class._mat-animation-noopable]': '_animationsDisabled',\n '[id]': 'id',\n '[attr.role]': 'role',\n '[attr.aria-label]': 'ariaLabel',\n '(keydown)': '_handleKeydown($event)',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: MAT_CHIP, useExisting: MatChip }], standalone: true, imports: [MatChipAction], template: \"\\n\\n\\n \\n @if (leadingIcon) {\\n \\n \\n \\n }\\n \\n \\n \\n \\n \\n\\n\\n@if (_hasTrailingIcon()) {\\n \\n \\n \\n}\\n\", styles: [\".mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{flex-basis:100%;overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}.mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit;overflow-x:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-outline-width);border-radius:var(--mdc-chip-container-shape-radius);box-sizing:border-box;content:\\\"\\\";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1;border-style:solid}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-outline-color, var(--mat-app-outline))}.mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational):not(.mdc-ripple-upgraded):focus::before{border-color:var(--mdc-chip-focus-outline-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-disabled-outline-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip__action--trailing{position:relative;overflow:visible}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-color, var(--mat-app-on-surface))}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip__text-label{-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__text-label{font-family:var(--mdc-chip-label-text-font, var(--mat-app-label-large-font));line-height:var(--mdc-chip-label-text-line-height, var(--mat-app-label-large-line-height));font-size:var(--mdc-chip-label-text-size, var(--mat-app-label-large-size));font-weight:var(--mdc-chip-label-text-weight, var(--mat-app-label-large-weight));letter-spacing:var(--mdc-chip-label-text-tracking, var(--mat-app-label-large-tracking))}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-label-text-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-selected-label-text-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label,.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color)}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{width:var(--mdc-chip-with-avatar-avatar-size);height:var(--mdc-chip-with-avatar-avatar-size);font-size:var(--mdc-chip-with-avatar-avatar-size)}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%;height:20px;width:20px}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-app-on-surface))}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.cdk-high-contrast-active .mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove{opacity:calc(var(--mat-chip-trailing-action-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove:focus{opacity:calc(var(--mat-chip-trailing-action-focus-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mat-mdc-standard-chip{border-radius:var(--mdc-chip-container-shape-radius);height:var(--mdc-chip-container-height)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-app-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-flat-disabled-selected-container-color)}.cdk-high-contrast-active .mat-mdc-standard-chip{outline:solid 1px}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mdc-chip-with-avatar-avatar-shape-radius);width:var(--mdc-chip-with-icon-icon-size);height:var(--mdc-chip-with-icon-icon-size);font-size:var(--mdc-chip-with-icon-icon-size)}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-app-on-surface))}.mat-mdc-chip-highlighted{--mdc-chip-with-icon-icon-color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-app-on-secondary-container));--mdc-chip-elevated-container-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-app-secondary-container));--mdc-chip-label-text-color:var(--mdc-chip-selected-label-text-color, var(--mat-app-on-secondary-container));--mdc-chip-outline-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-chip-selected .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-app-on-secondary-container))}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-hover-state-layer-color, var(--mat-app-on-surface-variant));opacity:var(--mdc-chip-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip-focus-overlay .mat-mdc-chip-selected:hover,.mat-mdc-chip-highlighted:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-hover-state-layer-color, var(--mat-app-on-secondary-container));opacity:var(--mdc-chip-selected-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-app-on-surface-variant));opacity:var(--mdc-chip-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-chip-selected.cdk-focused .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-app-on-secondary-container));opacity:var(--mdc-chip-selected-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mdc-evolution-chip--disabled:not(.mdc-evolution-chip--selected) .mat-mdc-chip-avatar{opacity:var(--mdc-chip-with-avatar-disabled-avatar-opacity)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{opacity:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity)}.mdc-evolution-chip--disabled.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{opacity:var(--mdc-chip-with-icon-disabled-icon-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:var(--mat-chip-disabled-container-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-trailing-icon-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-disabled-trailing-icon-color, var(--mat-app-on-surface))}.mat-mdc-chip-remove{opacity:var(--mat-chip-trailing-action-opacity)}.mat-mdc-chip-remove:focus{opacity:var(--mat-chip-trailing-action-focus-opacity)}.mat-mdc-chip-remove::after{background:var(--mat-chip-trailing-action-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-chip-remove:hover::after{opacity:var(--mat-chip-trailing-action-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip-remove:focus::after{opacity:var(--mat-chip-trailing-action-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-chip-selected .mat-mdc-chip-remove::after,.mat-mdc-chip-highlighted .mat-mdc-chip-remove::after{background:var(--mat-chip-selected-trailing-action-state-layer-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip .mat-ripple.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-chip-remove::before{margin:calc(var(--mat-mdc-focus-indicator-border-width, 3px)*-1);left:8px;right:8px}.mat-mdc-chip-remove::after{content:\\\"\\\";display:block;opacity:0;position:absolute;top:-2px;bottom:-2px;left:6px;right:6px;border-radius:50%}.mat-mdc-chip-remove .mat-icon{width:18px;height:18px;font-size:18px;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}.cdk-high-contrast-active .mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}.mat-mdc-chip-action:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.FocusMonitor }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_RIPPLE_GLOBAL_OPTIONS]\n }] }], propDecorators: { role: [{\n type: Input\n }], _allLeadingIcons: [{\n type: ContentChildren,\n args: [MAT_CHIP_AVATAR, { descendants: true }]\n }], _allTrailingIcons: [{\n type: ContentChildren,\n args: [MAT_CHIP_TRAILING_ICON, { descendants: true }]\n }], _allRemoveIcons: [{\n type: ContentChildren,\n args: [MAT_CHIP_REMOVE, { descendants: true }]\n }], id: [{\n type: Input\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaDescription: [{\n type: Input,\n args: ['aria-description']\n }], value: [{\n type: Input\n }], color: [{\n type: Input\n }], removable: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], highlighted: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], disableRipple: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], removed: [{\n type: Output\n }], destroyed: [{\n type: Output\n }], leadingIcon: [{\n type: ContentChild,\n args: [MAT_CHIP_AVATAR]\n }], trailingIcon: [{\n type: ContentChild,\n args: [MAT_CHIP_TRAILING_ICON]\n }], removeIcon: [{\n type: ContentChild,\n args: [MAT_CHIP_REMOVE]\n }], primaryAction: [{\n type: ViewChild,\n args: [MatChipAction]\n }] } });\n\n/** Event object emitted by MatChipOption when selected or deselected. */\nclass MatChipSelectionChange {\n constructor(\n /** Reference to the chip that emitted the event. */\n source, \n /** Whether the chip that emitted the event is selected. */\n selected, \n /** Whether the selection change was a result of a user interaction. */\n isUserInput = false) {\n this.source = source;\n this.selected = selected;\n this.isUserInput = isUserInput;\n }\n}\n/**\n * An extension of the MatChip component that supports chip selection. Used with MatChipListbox.\n *\n * Unlike other chips, the user can focus on disabled chip options inside a MatChipListbox. The\n * user cannot click disabled chips.\n */\nclass MatChipOption extends MatChip {\n constructor() {\n super(...arguments);\n /** Default chip options. */\n this._defaultOptions = inject(MAT_CHIPS_DEFAULT_OPTIONS, { optional: true });\n /** Whether the chip list is selectable. */\n this.chipListSelectable = true;\n /** Whether the chip list is in multi-selection mode. */\n this._chipListMultiple = false;\n /** Whether the chip list hides single-selection indicator. */\n this._chipListHideSingleSelectionIndicator = this._defaultOptions?.hideSingleSelectionIndicator ?? false;\n this._selectable = true;\n this._selected = false;\n /** The unstyled chip selector for this component. */\n this.basicChipAttrName = 'mat-basic-chip-option';\n /** Emitted when the chip is selected or deselected. */\n this.selectionChange = new EventEmitter();\n }\n /**\n * Whether or not the chip is selectable.\n *\n * When a chip is not selectable, changes to its selected state are always\n * ignored. By default an option chip is selectable, and it becomes\n * non-selectable if its parent chip list is not selectable.\n */\n get selectable() {\n return this._selectable && this.chipListSelectable;\n }\n set selectable(value) {\n this._selectable = value;\n this._changeDetectorRef.markForCheck();\n }\n /** Whether the chip is selected. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n this._setSelectedState(value, false, true);\n }\n /**\n * The ARIA selected applied to the chip. Conforms to WAI ARIA best practices for listbox\n * interaction patterns.\n *\n * From [WAI ARIA Listbox authoring practices guide](\n * https://www.w3.org/WAI/ARIA/apg/patterns/listbox/):\n * \"If any options are selected, each selected option has either aria-selected or aria-checked\n * set to true. All options that are selectable but not selected have either aria-selected or\n * aria-checked set to false.\"\n *\n * Set `aria-selected=\"false\"` on not-selected listbox options that are selectable to fix\n * VoiceOver reading every option as \"selected\" (#25736).\n */\n get ariaSelected() {\n return this.selectable ? this.selected.toString() : null;\n }\n ngOnInit() {\n super.ngOnInit();\n this.role = 'presentation';\n }\n /** Selects the chip. */\n select() {\n this._setSelectedState(true, false, true);\n }\n /** Deselects the chip. */\n deselect() {\n this._setSelectedState(false, false, true);\n }\n /** Selects this chip and emits userInputSelection event */\n selectViaInteraction() {\n this._setSelectedState(true, true, true);\n }\n /** Toggles the current selected state of this chip. */\n toggleSelected(isUserInput = false) {\n this._setSelectedState(!this.selected, isUserInput, true);\n return this.selected;\n }\n _handlePrimaryActionInteraction() {\n if (!this.disabled) {\n // Interacting with the primary action implies that the chip already has focus, however\n // there's a bug in Safari where focus ends up lingering on the previous chip (see #27544).\n // We work around it by explicitly focusing the primary action of the current chip.\n this.focus();\n if (this.selectable) {\n this.toggleSelected(true);\n }\n }\n }\n _hasLeadingGraphic() {\n if (this.leadingIcon) {\n return true;\n }\n // The checkmark graphic communicates selected state for both single-select and multi-select.\n // Include checkmark in single-select to fix a11y issue where selected state is communicated\n // visually only using color (#25886).\n return !this._chipListHideSingleSelectionIndicator || this._chipListMultiple;\n }\n _setSelectedState(isSelected, isUserInput, emitEvent) {\n if (isSelected !== this.selected) {\n this._selected = isSelected;\n if (emitEvent) {\n this.selectionChange.emit({\n source: this,\n isUserInput,\n selected: this.selected,\n });\n }\n this._changeDetectorRef.markForCheck();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipOption, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"18.2.0-next.2\", type: MatChipOption, isStandalone: true, selector: \"mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]\", inputs: { selectable: [\"selectable\", \"selectable\", booleanAttribute], selected: [\"selected\", \"selected\", booleanAttribute] }, outputs: { selectionChange: \"selectionChange\" }, host: { properties: { \"class.mdc-evolution-chip\": \"!_isBasicChip\", \"class.mdc-evolution-chip--filter\": \"!_isBasicChip\", \"class.mdc-evolution-chip--selectable\": \"!_isBasicChip\", \"class.mat-mdc-chip-selected\": \"selected\", \"class.mat-mdc-chip-multiple\": \"_chipListMultiple\", \"class.mat-mdc-chip-disabled\": \"disabled\", \"class.mat-mdc-chip-with-avatar\": \"leadingIcon\", \"class.mdc-evolution-chip--disabled\": \"disabled\", \"class.mdc-evolution-chip--selected\": \"selected\", \"class.mdc-evolution-chip--selecting\": \"!_animationsDisabled\", \"class.mdc-evolution-chip--with-trailing-action\": \"_hasTrailingIcon()\", \"class.mdc-evolution-chip--with-primary-icon\": \"leadingIcon\", \"class.mdc-evolution-chip--with-primary-graphic\": \"_hasLeadingGraphic()\", \"class.mdc-evolution-chip--with-avatar\": \"leadingIcon\", \"class.mat-mdc-chip-highlighted\": \"highlighted\", \"class.mat-mdc-chip-with-trailing-icon\": \"_hasTrailingIcon()\", \"attr.tabindex\": \"null\", \"attr.aria-label\": \"null\", \"attr.aria-description\": \"null\", \"attr.role\": \"role\", \"id\": \"id\" }, classAttribute: \"mat-mdc-chip mat-mdc-chip-option\" }, providers: [\n { provide: MatChip, useExisting: MatChipOption },\n { provide: MAT_CHIP, useExisting: MatChipOption },\n ], usesInheritance: true, ngImport: i0, template: \"\\n\\n\\n \\n @if (_hasLeadingGraphic()) {\\n \\n \\n \\n \\n \\n \\n \\n \\n }\\n \\n \\n \\n \\n \\n\\n\\n@if (_hasTrailingIcon()) {\\n \\n \\n \\n}\\n\\n{{ariaDescription}}\\n\", styles: [\".mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{flex-basis:100%;overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}.mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit;overflow-x:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-outline-width);border-radius:var(--mdc-chip-container-shape-radius);box-sizing:border-box;content:\\\"\\\";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1;border-style:solid}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-outline-color, var(--mat-app-outline))}.mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational):not(.mdc-ripple-upgraded):focus::before{border-color:var(--mdc-chip-focus-outline-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-disabled-outline-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip__action--trailing{position:relative;overflow:visible}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-color, var(--mat-app-on-surface))}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip__text-label{-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__text-label{font-family:var(--mdc-chip-label-text-font, var(--mat-app-label-large-font));line-height:var(--mdc-chip-label-text-line-height, var(--mat-app-label-large-line-height));font-size:var(--mdc-chip-label-text-size, var(--mat-app-label-large-size));font-weight:var(--mdc-chip-label-text-weight, var(--mat-app-label-large-weight));letter-spacing:var(--mdc-chip-label-text-tracking, var(--mat-app-label-large-tracking))}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-label-text-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-selected-label-text-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label,.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color)}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{width:var(--mdc-chip-with-avatar-avatar-size);height:var(--mdc-chip-with-avatar-avatar-size);font-size:var(--mdc-chip-with-avatar-avatar-size)}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%;height:20px;width:20px}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-app-on-surface))}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.cdk-high-contrast-active .mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove{opacity:calc(var(--mat-chip-trailing-action-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove:focus{opacity:calc(var(--mat-chip-trailing-action-focus-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mat-mdc-standard-chip{border-radius:var(--mdc-chip-container-shape-radius);height:var(--mdc-chip-container-height)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-app-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-flat-disabled-selected-container-color)}.cdk-high-contrast-active .mat-mdc-standard-chip{outline:solid 1px}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mdc-chip-with-avatar-avatar-shape-radius);width:var(--mdc-chip-with-icon-icon-size);height:var(--mdc-chip-with-icon-icon-size);font-size:var(--mdc-chip-with-icon-icon-size)}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-app-on-surface))}.mat-mdc-chip-highlighted{--mdc-chip-with-icon-icon-color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-app-on-secondary-container));--mdc-chip-elevated-container-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-app-secondary-container));--mdc-chip-label-text-color:var(--mdc-chip-selected-label-text-color, var(--mat-app-on-secondary-container));--mdc-chip-outline-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-chip-selected .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-app-on-secondary-container))}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-hover-state-layer-color, var(--mat-app-on-surface-variant));opacity:var(--mdc-chip-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip-focus-overlay .mat-mdc-chip-selected:hover,.mat-mdc-chip-highlighted:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-hover-state-layer-color, var(--mat-app-on-secondary-container));opacity:var(--mdc-chip-selected-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-app-on-surface-variant));opacity:var(--mdc-chip-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-chip-selected.cdk-focused .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-app-on-secondary-container));opacity:var(--mdc-chip-selected-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mdc-evolution-chip--disabled:not(.mdc-evolution-chip--selected) .mat-mdc-chip-avatar{opacity:var(--mdc-chip-with-avatar-disabled-avatar-opacity)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{opacity:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity)}.mdc-evolution-chip--disabled.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{opacity:var(--mdc-chip-with-icon-disabled-icon-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:var(--mat-chip-disabled-container-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-trailing-icon-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-disabled-trailing-icon-color, var(--mat-app-on-surface))}.mat-mdc-chip-remove{opacity:var(--mat-chip-trailing-action-opacity)}.mat-mdc-chip-remove:focus{opacity:var(--mat-chip-trailing-action-focus-opacity)}.mat-mdc-chip-remove::after{background:var(--mat-chip-trailing-action-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-chip-remove:hover::after{opacity:var(--mat-chip-trailing-action-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip-remove:focus::after{opacity:var(--mat-chip-trailing-action-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-chip-selected .mat-mdc-chip-remove::after,.mat-mdc-chip-highlighted .mat-mdc-chip-remove::after{background:var(--mat-chip-selected-trailing-action-state-layer-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip .mat-ripple.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-chip-remove::before{margin:calc(var(--mat-mdc-focus-indicator-border-width, 3px)*-1);left:8px;right:8px}.mat-mdc-chip-remove::after{content:\\\"\\\";display:block;opacity:0;position:absolute;top:-2px;bottom:-2px;left:6px;right:6px;border-radius:50%}.mat-mdc-chip-remove .mat-icon{width:18px;height:18px;font-size:18px;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}.cdk-high-contrast-active .mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}.mat-mdc-chip-action:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}\"], dependencies: [{ kind: \"directive\", type: MatChipAction, selector: \"[matChipAction]\", inputs: [\"isInteractive\", \"disabled\", \"tabIndex\", \"_allowFocusWhenDisabled\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipOption, decorators: [{\n type: Component,\n args: [{ selector: 'mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]', host: {\n 'class': 'mat-mdc-chip mat-mdc-chip-option',\n '[class.mdc-evolution-chip]': '!_isBasicChip',\n '[class.mdc-evolution-chip--filter]': '!_isBasicChip',\n '[class.mdc-evolution-chip--selectable]': '!_isBasicChip',\n '[class.mat-mdc-chip-selected]': 'selected',\n '[class.mat-mdc-chip-multiple]': '_chipListMultiple',\n '[class.mat-mdc-chip-disabled]': 'disabled',\n '[class.mat-mdc-chip-with-avatar]': 'leadingIcon',\n '[class.mdc-evolution-chip--disabled]': 'disabled',\n '[class.mdc-evolution-chip--selected]': 'selected',\n // This class enables the transition on the checkmark. Usually MDC adds it when selection\n // starts and removes it once the animation is finished. We don't need to go through all\n // the trouble, because we only care about the selection animation. MDC needs to do it,\n // because they also have an exit animation that we don't care about.\n '[class.mdc-evolution-chip--selecting]': '!_animationsDisabled',\n '[class.mdc-evolution-chip--with-trailing-action]': '_hasTrailingIcon()',\n '[class.mdc-evolution-chip--with-primary-icon]': 'leadingIcon',\n '[class.mdc-evolution-chip--with-primary-graphic]': '_hasLeadingGraphic()',\n '[class.mdc-evolution-chip--with-avatar]': 'leadingIcon',\n '[class.mat-mdc-chip-highlighted]': 'highlighted',\n '[class.mat-mdc-chip-with-trailing-icon]': '_hasTrailingIcon()',\n '[attr.tabindex]': 'null',\n '[attr.aria-label]': 'null',\n '[attr.aria-description]': 'null',\n '[attr.role]': 'role',\n '[id]': 'id',\n }, providers: [\n { provide: MatChip, useExisting: MatChipOption },\n { provide: MAT_CHIP, useExisting: MatChipOption },\n ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatChipAction], template: \"\\n\\n\\n \\n @if (_hasLeadingGraphic()) {\\n \\n \\n \\n \\n \\n \\n \\n \\n }\\n \\n \\n \\n \\n \\n\\n\\n@if (_hasTrailingIcon()) {\\n \\n \\n \\n}\\n\\n{{ariaDescription}}\\n\", styles: [\".mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{flex-basis:100%;overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}.mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit;overflow-x:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-outline-width);border-radius:var(--mdc-chip-container-shape-radius);box-sizing:border-box;content:\\\"\\\";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1;border-style:solid}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-outline-color, var(--mat-app-outline))}.mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational):not(.mdc-ripple-upgraded):focus::before{border-color:var(--mdc-chip-focus-outline-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-disabled-outline-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip__action--trailing{position:relative;overflow:visible}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-color, var(--mat-app-on-surface))}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip__text-label{-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__text-label{font-family:var(--mdc-chip-label-text-font, var(--mat-app-label-large-font));line-height:var(--mdc-chip-label-text-line-height, var(--mat-app-label-large-line-height));font-size:var(--mdc-chip-label-text-size, var(--mat-app-label-large-size));font-weight:var(--mdc-chip-label-text-weight, var(--mat-app-label-large-weight));letter-spacing:var(--mdc-chip-label-text-tracking, var(--mat-app-label-large-tracking))}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-label-text-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-selected-label-text-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label,.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color)}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{width:var(--mdc-chip-with-avatar-avatar-size);height:var(--mdc-chip-with-avatar-avatar-size);font-size:var(--mdc-chip-with-avatar-avatar-size)}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%;height:20px;width:20px}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-app-on-surface))}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.cdk-high-contrast-active .mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove{opacity:calc(var(--mat-chip-trailing-action-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove:focus{opacity:calc(var(--mat-chip-trailing-action-focus-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mat-mdc-standard-chip{border-radius:var(--mdc-chip-container-shape-radius);height:var(--mdc-chip-container-height)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-app-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-flat-disabled-selected-container-color)}.cdk-high-contrast-active .mat-mdc-standard-chip{outline:solid 1px}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mdc-chip-with-avatar-avatar-shape-radius);width:var(--mdc-chip-with-icon-icon-size);height:var(--mdc-chip-with-icon-icon-size);font-size:var(--mdc-chip-with-icon-icon-size)}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-app-on-surface))}.mat-mdc-chip-highlighted{--mdc-chip-with-icon-icon-color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-app-on-secondary-container));--mdc-chip-elevated-container-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-app-secondary-container));--mdc-chip-label-text-color:var(--mdc-chip-selected-label-text-color, var(--mat-app-on-secondary-container));--mdc-chip-outline-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-chip-selected .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-app-on-secondary-container))}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-hover-state-layer-color, var(--mat-app-on-surface-variant));opacity:var(--mdc-chip-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip-focus-overlay .mat-mdc-chip-selected:hover,.mat-mdc-chip-highlighted:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-hover-state-layer-color, var(--mat-app-on-secondary-container));opacity:var(--mdc-chip-selected-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-app-on-surface-variant));opacity:var(--mdc-chip-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-chip-selected.cdk-focused .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-app-on-secondary-container));opacity:var(--mdc-chip-selected-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mdc-evolution-chip--disabled:not(.mdc-evolution-chip--selected) .mat-mdc-chip-avatar{opacity:var(--mdc-chip-with-avatar-disabled-avatar-opacity)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{opacity:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity)}.mdc-evolution-chip--disabled.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{opacity:var(--mdc-chip-with-icon-disabled-icon-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:var(--mat-chip-disabled-container-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-trailing-icon-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-disabled-trailing-icon-color, var(--mat-app-on-surface))}.mat-mdc-chip-remove{opacity:var(--mat-chip-trailing-action-opacity)}.mat-mdc-chip-remove:focus{opacity:var(--mat-chip-trailing-action-focus-opacity)}.mat-mdc-chip-remove::after{background:var(--mat-chip-trailing-action-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-chip-remove:hover::after{opacity:var(--mat-chip-trailing-action-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip-remove:focus::after{opacity:var(--mat-chip-trailing-action-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-chip-selected .mat-mdc-chip-remove::after,.mat-mdc-chip-highlighted .mat-mdc-chip-remove::after{background:var(--mat-chip-selected-trailing-action-state-layer-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip .mat-ripple.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-chip-remove::before{margin:calc(var(--mat-mdc-focus-indicator-border-width, 3px)*-1);left:8px;right:8px}.mat-mdc-chip-remove::after{content:\\\"\\\";display:block;opacity:0;position:absolute;top:-2px;bottom:-2px;left:6px;right:6px;border-radius:50%}.mat-mdc-chip-remove .mat-icon{width:18px;height:18px;font-size:18px;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}.cdk-high-contrast-active .mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}.mat-mdc-chip-action:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}\"] }]\n }], propDecorators: { selectable: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], selected: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], selectionChange: [{\n type: Output\n }] } });\n\n/**\n * A directive that makes a span editable and exposes functions to modify and retrieve the\n * element's contents.\n */\nclass MatChipEditInput {\n constructor(_elementRef, _document) {\n this._elementRef = _elementRef;\n this._document = _document;\n }\n initialize(initialValue) {\n this.getNativeElement().focus();\n this.setValue(initialValue);\n }\n getNativeElement() {\n return this._elementRef.nativeElement;\n }\n setValue(value) {\n this.getNativeElement().textContent = value;\n this._moveCursorToEndOfInput();\n }\n getValue() {\n return this.getNativeElement().textContent || '';\n }\n _moveCursorToEndOfInput() {\n const range = this._document.createRange();\n range.selectNodeContents(this.getNativeElement());\n range.collapse(false);\n const sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipEditInput, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatChipEditInput, isStandalone: true, selector: \"span[matChipEditInput]\", host: { attributes: { \"role\": \"textbox\", \"tabindex\": \"-1\", \"contenteditable\": \"true\" }, classAttribute: \"mat-chip-edit-input\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipEditInput, decorators: [{\n type: Directive,\n args: [{\n selector: 'span[matChipEditInput]',\n host: {\n 'class': 'mat-chip-edit-input',\n 'role': 'textbox',\n 'tabindex': '-1',\n 'contenteditable': 'true',\n },\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }] });\n\n/**\n * An extension of the MatChip component used with MatChipGrid and\n * the matChipInputFor directive.\n */\nclass MatChipRow extends MatChip {\n constructor(changeDetectorRef, elementRef, ngZone, focusMonitor, _document, animationMode, globalRippleOptions, tabIndex) {\n super(changeDetectorRef, elementRef, ngZone, focusMonitor, _document, animationMode, globalRippleOptions);\n this.basicChipAttrName = 'mat-basic-chip-row';\n /**\n * The editing action has to be triggered in a timeout. While we're waiting on it, a blur\n * event might occur which will interrupt the editing. This flag is used to avoid interruptions\n * while the editing action is being initialized.\n */\n this._editStartPending = false;\n this.editable = false;\n /** Emitted when the chip is edited. */\n this.edited = new EventEmitter();\n this._isEditing = false;\n this.role = 'row';\n this._onBlur.pipe(takeUntil(this.destroyed)).subscribe(() => {\n if (this._isEditing && !this._editStartPending) {\n this._onEditFinish();\n }\n });\n }\n _hasTrailingIcon() {\n // The trailing icon is hidden while editing.\n return !this._isEditing && super._hasTrailingIcon();\n }\n /** Sends focus to the first gridcell when the user clicks anywhere inside the chip. */\n _handleFocus() {\n if (!this._isEditing && !this.disabled) {\n this.focus();\n }\n }\n _handleKeydown(event) {\n if (event.keyCode === ENTER && !this.disabled) {\n if (this._isEditing) {\n event.preventDefault();\n this._onEditFinish();\n }\n else if (this.editable) {\n this._startEditing(event);\n }\n }\n else if (this._isEditing) {\n // Stop the event from reaching the chip set in order to avoid navigating.\n event.stopPropagation();\n }\n else {\n super._handleKeydown(event);\n }\n }\n _handleDoubleclick(event) {\n if (!this.disabled && this.editable) {\n this._startEditing(event);\n }\n }\n _startEditing(event) {\n if (!this.primaryAction ||\n (this.removeIcon && this._getSourceAction(event.target) === this.removeIcon)) {\n return;\n }\n // The value depends on the DOM so we need to extract it before we flip the flag.\n const value = this.value;\n this._isEditing = this._editStartPending = true;\n // Defer initializing the input until after it has been added to the DOM.\n afterNextRender(() => {\n this._getEditInput().initialize(value);\n this._editStartPending = false;\n }, { injector: this._injector });\n }\n _onEditFinish() {\n this._isEditing = this._editStartPending = false;\n this.edited.emit({ chip: this, value: this._getEditInput().getValue() });\n // If the edit input is still focused or focus was returned to the body after it was destroyed,\n // return focus to the chip contents.\n if (this._document.activeElement === this._getEditInput().getNativeElement() ||\n this._document.activeElement === this._document.body) {\n this.primaryAction.focus();\n }\n }\n _isRippleDisabled() {\n return super._isRippleDisabled() || this._isEditing;\n }\n /**\n * Gets the projected chip edit input, or the default input if none is projected in. One of these\n * two values is guaranteed to be defined.\n */\n _getEditInput() {\n return this.contentEditInput || this.defaultEditInput;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipRow, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.FocusMonitor }, { token: DOCUMENT }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: MAT_RIPPLE_GLOBAL_OPTIONS, optional: true }, { token: 'tabindex', attribute: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"18.2.0-next.2\", type: MatChipRow, isStandalone: true, selector: \"mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]\", inputs: { editable: \"editable\" }, outputs: { edited: \"edited\" }, host: { listeners: { \"focus\": \"_handleFocus($event)\", \"dblclick\": \"_handleDoubleclick($event)\" }, properties: { \"class.mat-mdc-chip-with-avatar\": \"leadingIcon\", \"class.mat-mdc-chip-disabled\": \"disabled\", \"class.mat-mdc-chip-editing\": \"_isEditing\", \"class.mat-mdc-chip-editable\": \"editable\", \"class.mdc-evolution-chip--disabled\": \"disabled\", \"class.mdc-evolution-chip--with-trailing-action\": \"_hasTrailingIcon()\", \"class.mdc-evolution-chip--with-primary-graphic\": \"leadingIcon\", \"class.mdc-evolution-chip--with-primary-icon\": \"leadingIcon\", \"class.mdc-evolution-chip--with-avatar\": \"leadingIcon\", \"class.mat-mdc-chip-highlighted\": \"highlighted\", \"class.mat-mdc-chip-with-trailing-icon\": \"_hasTrailingIcon()\", \"id\": \"id\", \"attr.tabindex\": \"disabled ? null : -1\", \"attr.aria-label\": \"null\", \"attr.aria-description\": \"null\", \"attr.role\": \"role\" }, classAttribute: \"mat-mdc-chip mat-mdc-chip-row mdc-evolution-chip\" }, providers: [\n { provide: MatChip, useExisting: MatChipRow },\n { provide: MAT_CHIP, useExisting: MatChipRow },\n ], queries: [{ propertyName: \"contentEditInput\", first: true, predicate: MatChipEditInput, descendants: true }], viewQueries: [{ propertyName: \"defaultEditInput\", first: true, predicate: MatChipEditInput, descendants: true }], usesInheritance: true, ngImport: i0, template: \"@if (!_isEditing) {\\n \\n}\\n\\n\\n @if (leadingIcon) {\\n \\n \\n \\n }\\n\\n \\n @if (_isEditing) {\\n @if (contentEditInput) {\\n \\n } @else {\\n \\n }\\n } @else {\\n \\n }\\n\\n \\n \\n\\n\\n@if (_hasTrailingIcon()) {\\n \\n \\n \\n}\\n\\n{{ariaDescription}}\\n\", styles: [\".mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{flex-basis:100%;overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}.mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit;overflow-x:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-outline-width);border-radius:var(--mdc-chip-container-shape-radius);box-sizing:border-box;content:\\\"\\\";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1;border-style:solid}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-outline-color, var(--mat-app-outline))}.mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational):not(.mdc-ripple-upgraded):focus::before{border-color:var(--mdc-chip-focus-outline-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-disabled-outline-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip__action--trailing{position:relative;overflow:visible}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-color, var(--mat-app-on-surface))}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip__text-label{-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__text-label{font-family:var(--mdc-chip-label-text-font, var(--mat-app-label-large-font));line-height:var(--mdc-chip-label-text-line-height, var(--mat-app-label-large-line-height));font-size:var(--mdc-chip-label-text-size, var(--mat-app-label-large-size));font-weight:var(--mdc-chip-label-text-weight, var(--mat-app-label-large-weight));letter-spacing:var(--mdc-chip-label-text-tracking, var(--mat-app-label-large-tracking))}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-label-text-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-selected-label-text-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label,.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color)}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{width:var(--mdc-chip-with-avatar-avatar-size);height:var(--mdc-chip-with-avatar-avatar-size);font-size:var(--mdc-chip-with-avatar-avatar-size)}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%;height:20px;width:20px}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-app-on-surface))}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.cdk-high-contrast-active .mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove{opacity:calc(var(--mat-chip-trailing-action-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove:focus{opacity:calc(var(--mat-chip-trailing-action-focus-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mat-mdc-standard-chip{border-radius:var(--mdc-chip-container-shape-radius);height:var(--mdc-chip-container-height)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-app-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-flat-disabled-selected-container-color)}.cdk-high-contrast-active .mat-mdc-standard-chip{outline:solid 1px}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mdc-chip-with-avatar-avatar-shape-radius);width:var(--mdc-chip-with-icon-icon-size);height:var(--mdc-chip-with-icon-icon-size);font-size:var(--mdc-chip-with-icon-icon-size)}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-app-on-surface))}.mat-mdc-chip-highlighted{--mdc-chip-with-icon-icon-color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-app-on-secondary-container));--mdc-chip-elevated-container-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-app-secondary-container));--mdc-chip-label-text-color:var(--mdc-chip-selected-label-text-color, var(--mat-app-on-secondary-container));--mdc-chip-outline-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-chip-selected .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-app-on-secondary-container))}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-hover-state-layer-color, var(--mat-app-on-surface-variant));opacity:var(--mdc-chip-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip-focus-overlay .mat-mdc-chip-selected:hover,.mat-mdc-chip-highlighted:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-hover-state-layer-color, var(--mat-app-on-secondary-container));opacity:var(--mdc-chip-selected-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-app-on-surface-variant));opacity:var(--mdc-chip-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-chip-selected.cdk-focused .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-app-on-secondary-container));opacity:var(--mdc-chip-selected-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mdc-evolution-chip--disabled:not(.mdc-evolution-chip--selected) .mat-mdc-chip-avatar{opacity:var(--mdc-chip-with-avatar-disabled-avatar-opacity)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{opacity:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity)}.mdc-evolution-chip--disabled.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{opacity:var(--mdc-chip-with-icon-disabled-icon-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:var(--mat-chip-disabled-container-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-trailing-icon-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-disabled-trailing-icon-color, var(--mat-app-on-surface))}.mat-mdc-chip-remove{opacity:var(--mat-chip-trailing-action-opacity)}.mat-mdc-chip-remove:focus{opacity:var(--mat-chip-trailing-action-focus-opacity)}.mat-mdc-chip-remove::after{background:var(--mat-chip-trailing-action-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-chip-remove:hover::after{opacity:var(--mat-chip-trailing-action-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip-remove:focus::after{opacity:var(--mat-chip-trailing-action-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-chip-selected .mat-mdc-chip-remove::after,.mat-mdc-chip-highlighted .mat-mdc-chip-remove::after{background:var(--mat-chip-selected-trailing-action-state-layer-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip .mat-ripple.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-chip-remove::before{margin:calc(var(--mat-mdc-focus-indicator-border-width, 3px)*-1);left:8px;right:8px}.mat-mdc-chip-remove::after{content:\\\"\\\";display:block;opacity:0;position:absolute;top:-2px;bottom:-2px;left:6px;right:6px;border-radius:50%}.mat-mdc-chip-remove .mat-icon{width:18px;height:18px;font-size:18px;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}.cdk-high-contrast-active .mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}.mat-mdc-chip-action:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}\"], dependencies: [{ kind: \"directive\", type: MatChipAction, selector: \"[matChipAction]\", inputs: [\"isInteractive\", \"disabled\", \"tabIndex\", \"_allowFocusWhenDisabled\"] }, { kind: \"directive\", type: MatChipEditInput, selector: \"span[matChipEditInput]\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipRow, decorators: [{\n type: Component,\n args: [{ selector: 'mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]', host: {\n 'class': 'mat-mdc-chip mat-mdc-chip-row mdc-evolution-chip',\n '[class.mat-mdc-chip-with-avatar]': 'leadingIcon',\n '[class.mat-mdc-chip-disabled]': 'disabled',\n '[class.mat-mdc-chip-editing]': '_isEditing',\n '[class.mat-mdc-chip-editable]': 'editable',\n '[class.mdc-evolution-chip--disabled]': 'disabled',\n '[class.mdc-evolution-chip--with-trailing-action]': '_hasTrailingIcon()',\n '[class.mdc-evolution-chip--with-primary-graphic]': 'leadingIcon',\n '[class.mdc-evolution-chip--with-primary-icon]': 'leadingIcon',\n '[class.mdc-evolution-chip--with-avatar]': 'leadingIcon',\n '[class.mat-mdc-chip-highlighted]': 'highlighted',\n '[class.mat-mdc-chip-with-trailing-icon]': '_hasTrailingIcon()',\n '[id]': 'id',\n // Has to have a negative tabindex in order to capture\n // focus and redirect it to the primary action.\n '[attr.tabindex]': 'disabled ? null : -1',\n '[attr.aria-label]': 'null',\n '[attr.aria-description]': 'null',\n '[attr.role]': 'role',\n '(focus)': '_handleFocus($event)',\n '(dblclick)': '_handleDoubleclick($event)',\n }, providers: [\n { provide: MatChip, useExisting: MatChipRow },\n { provide: MAT_CHIP, useExisting: MatChipRow },\n ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [MatChipAction, MatChipEditInput], template: \"@if (!_isEditing) {\\n \\n}\\n\\n\\n @if (leadingIcon) {\\n \\n \\n \\n }\\n\\n \\n @if (_isEditing) {\\n @if (contentEditInput) {\\n \\n } @else {\\n \\n }\\n } @else {\\n \\n }\\n\\n \\n \\n\\n\\n@if (_hasTrailingIcon()) {\\n \\n \\n \\n}\\n\\n{{ariaDescription}}\\n\", styles: [\".mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{flex-basis:100%;overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}.mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit;overflow-x:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-outline-width);border-radius:var(--mdc-chip-container-shape-radius);box-sizing:border-box;content:\\\"\\\";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1;border-style:solid}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-outline-color, var(--mat-app-outline))}.mdc-evolution-chip__action--primary:not(.mdc-evolution-chip__action--presentational):not(.mdc-ripple-upgraded):focus::before{border-color:var(--mdc-chip-focus-outline-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--primary::before{border-color:var(--mdc-chip-disabled-outline-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary::before{border-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}.mdc-evolution-chip__action--trailing{position:relative;overflow:visible}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__action--trailing{color:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-color, var(--mat-app-on-surface))}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}.mdc-evolution-chip__text-label{-webkit-user-select:none;user-select:none;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mat-mdc-standard-chip .mdc-evolution-chip__text-label{font-family:var(--mdc-chip-label-text-font, var(--mat-app-label-large-font));line-height:var(--mdc-chip-label-text-line-height, var(--mat-app-label-large-line-height));font-size:var(--mdc-chip-label-text-size, var(--mat-app-label-large-size));font-weight:var(--mdc-chip-label-text-weight, var(--mat-app-label-large-weight));letter-spacing:var(--mdc-chip-label-text-tracking, var(--mat-app-label-large-tracking))}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-label-text-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-selected-label-text-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label,.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color)}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{width:var(--mdc-chip-with-avatar-avatar-size);height:var(--mdc-chip-with-avatar-avatar-size);font-size:var(--mdc-chip-with-avatar-avatar-size)}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:8px;padding-right:4px}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%;height:20px;width:20px}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-app-on-surface))}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.cdk-high-contrast-active .mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove{opacity:calc(var(--mat-chip-trailing-action-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing.mat-mdc-chip-remove:focus{opacity:calc(var(--mat-chip-trailing-action-focus-opacity)*var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity))}.mat-mdc-standard-chip{border-radius:var(--mdc-chip-container-shape-radius);height:var(--mdc-chip-container-height)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color)}.mat-mdc-standard-chip.mdc-evolution-chip--selected:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-app-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-flat-disabled-selected-container-color)}.cdk-high-contrast-active .mat-mdc-standard-chip{outline:solid 1px}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mdc-chip-with-avatar-avatar-shape-radius);width:var(--mdc-chip-with-icon-icon-size);height:var(--mdc-chip-with-icon-icon-size);font-size:var(--mdc-chip-with-icon-icon-size)}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-icon-color, var(--mat-app-on-surface-variant))}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-disabled-icon-color, var(--mat-app-on-surface))}.mat-mdc-chip-highlighted{--mdc-chip-with-icon-icon-color:var(--mdc-chip-with-icon-selected-icon-color, var(--mat-app-on-secondary-container));--mdc-chip-elevated-container-color:var(--mdc-chip-elevated-selected-container-color, var(--mat-app-secondary-container));--mdc-chip-label-text-color:var(--mdc-chip-selected-label-text-color, var(--mat-app-on-secondary-container));--mdc-chip-outline-width:var(--mdc-chip-flat-selected-outline-width)}.mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-chip-selected .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-app-on-secondary-container))}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-hover-state-layer-color, var(--mat-app-on-surface-variant));opacity:var(--mdc-chip-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip-focus-overlay .mat-mdc-chip-selected:hover,.mat-mdc-chip-highlighted:hover .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-hover-state-layer-color, var(--mat-app-on-secondary-container));opacity:var(--mdc-chip-selected-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-focus-state-layer-color, var(--mat-app-on-surface-variant));opacity:var(--mdc-chip-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-chip-selected.cdk-focused .mat-mdc-chip-focus-overlay,.mat-mdc-chip-highlighted.cdk-focused .mat-mdc-chip-focus-overlay{background:var(--mdc-chip-selected-focus-state-layer-color, var(--mat-app-on-secondary-container));opacity:var(--mdc-chip-selected-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mdc-evolution-chip--disabled:not(.mdc-evolution-chip--selected) .mat-mdc-chip-avatar{opacity:var(--mdc-chip-with-avatar-disabled-avatar-opacity)}.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{opacity:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity)}.mdc-evolution-chip--disabled.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{opacity:var(--mdc-chip-with-icon-disabled-icon-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:var(--mat-chip-disabled-container-opacity)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-trailing-icon-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mat-chip-selected-disabled-trailing-icon-color, var(--mat-app-on-surface))}.mat-mdc-chip-remove{opacity:var(--mat-chip-trailing-action-opacity)}.mat-mdc-chip-remove:focus{opacity:var(--mat-chip-trailing-action-focus-opacity)}.mat-mdc-chip-remove::after{background:var(--mat-chip-trailing-action-state-layer-color, var(--mat-app-on-surface-variant))}.mat-mdc-chip-remove:hover::after{opacity:var(--mat-chip-trailing-action-hover-state-layer-opacity, var(--mat-app-hover-state-layer-opacity))}.mat-mdc-chip-remove:focus::after{opacity:var(--mat-chip-trailing-action-focus-state-layer-opacity, var(--mat-app-focus-state-layer-opacity))}.mat-mdc-chip-selected .mat-mdc-chip-remove::after,.mat-mdc-chip-highlighted .mat-mdc-chip-remove::after{background:var(--mat-chip-selected-trailing-action-state-layer-color, var(--mat-app-on-secondary-container))}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip .mat-ripple.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-chip-remove::before{margin:calc(var(--mat-mdc-focus-indicator-border-width, 3px)*-1);left:8px;right:8px}.mat-mdc-chip-remove::after{content:\\\"\\\";display:block;opacity:0;position:absolute;top:-2px;bottom:-2px;left:6px;right:6px;border-radius:50%}.mat-mdc-chip-remove .mat-icon{width:18px;height:18px;font-size:18px;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}.cdk-high-contrast-active .mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}.mat-mdc-chip-action:focus .mat-mdc-focus-indicator::before{content:\\\"\\\"}\"] }]\n }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.FocusMonitor }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_RIPPLE_GLOBAL_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }], propDecorators: { editable: [{\n type: Input\n }], edited: [{\n type: Output\n }], defaultEditInput: [{\n type: ViewChild,\n args: [MatChipEditInput]\n }], contentEditInput: [{\n type: ContentChild,\n args: [MatChipEditInput]\n }] } });\n\n/**\n * Basic container component for the MatChip component.\n *\n * Extended by MatChipListbox and MatChipGrid for different interaction patterns.\n */\nclass MatChipSet {\n /** Combined stream of all of the child chips' focus events. */\n get chipFocusChanges() {\n return this._getChipStream(chip => chip._onFocus);\n }\n /** Combined stream of all of the child chips' destroy events. */\n get chipDestroyedChanges() {\n return this._getChipStream(chip => chip.destroyed);\n }\n /** Combined stream of all of the child chips' remove events. */\n get chipRemovedChanges() {\n return this._getChipStream(chip => chip.removed);\n }\n /** Whether the chip set is disabled. */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n this._syncChipsState();\n }\n /** Whether the chip list contains chips or not. */\n get empty() {\n return !this._chips || this._chips.length === 0;\n }\n /** The ARIA role applied to the chip set. */\n get role() {\n if (this._explicitRole) {\n return this._explicitRole;\n }\n return this.empty ? null : this._defaultRole;\n }\n set role(value) {\n this._explicitRole = value;\n }\n /** Whether any of the chips inside of this chip-set has focus. */\n get focused() {\n return this._hasFocusedChip();\n }\n constructor(_elementRef, _changeDetectorRef, _dir) {\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._dir = _dir;\n /** Index of the last destroyed chip that had focus. */\n this._lastDestroyedFocusedChipIndex = null;\n /** Subject that emits when the component has been destroyed. */\n this._destroyed = new Subject();\n /** Role to use if it hasn't been overwritten by the user. */\n this._defaultRole = 'presentation';\n this._disabled = false;\n /** Tabindex of the chip set. */\n this.tabIndex = 0;\n this._explicitRole = null;\n /** Flat list of all the actions contained within the chips. */\n this._chipActions = new QueryList();\n }\n ngAfterViewInit() {\n this._setUpFocusManagement();\n this._trackChipSetChanges();\n this._trackDestroyedFocusedChip();\n }\n ngOnDestroy() {\n this._keyManager?.destroy();\n this._chipActions.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Checks whether any of the chips is focused. */\n _hasFocusedChip() {\n return this._chips && this._chips.some(chip => chip._hasFocus());\n }\n /** Syncs the chip-set's state with the individual chips. */\n _syncChipsState() {\n if (this._chips) {\n this._chips.forEach(chip => {\n chip.disabled = this._disabled;\n chip._changeDetectorRef.markForCheck();\n });\n }\n }\n /** Dummy method for subclasses to override. Base chip set cannot be focused. */\n focus() { }\n /** Handles keyboard events on the chip set. */\n _handleKeydown(event) {\n if (this._originatesFromChip(event)) {\n this._keyManager.onKeydown(event);\n }\n }\n /**\n * Utility to ensure all indexes are valid.\n *\n * @param index The index to be checked.\n * @returns True if the index is valid for our list of chips.\n */\n _isValidIndex(index) {\n return index >= 0 && index < this._chips.length;\n }\n /**\n * Removes the `tabindex` from the chip set and resets it back afterwards, allowing the\n * user to tab out of it. This prevents the set from capturing focus and redirecting\n * it back to the first chip, creating a focus trap, if it user tries to tab away.\n */\n _allowFocusEscape() {\n if (this.tabIndex !== -1) {\n const previousTabIndex = this.tabIndex;\n this.tabIndex = -1;\n this._changeDetectorRef.markForCheck();\n // Note that this needs to be a `setTimeout`, because a `Promise.resolve`\n // doesn't allow enough time for the focus to escape.\n setTimeout(() => {\n this.tabIndex = previousTabIndex;\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n /**\n * Gets a stream of events from all the chips within the set.\n * The stream will automatically incorporate any newly-added chips.\n */\n _getChipStream(mappingFunction) {\n return this._chips.changes.pipe(startWith(null), switchMap(() => merge(...this._chips.map(mappingFunction))));\n }\n /** Checks whether an event comes from inside a chip element. */\n _originatesFromChip(event) {\n let currentElement = event.target;\n while (currentElement && currentElement !== this._elementRef.nativeElement) {\n if (currentElement.classList.contains('mat-mdc-chip')) {\n return true;\n }\n currentElement = currentElement.parentElement;\n }\n return false;\n }\n /** Sets up the chip set's focus management logic. */\n _setUpFocusManagement() {\n // Create a flat `QueryList` containing the actions of all of the chips.\n // This allows us to navigate both within the chip and move to the next/previous\n // one using the existing `ListKeyManager`.\n this._chips.changes.pipe(startWith(this._chips)).subscribe((chips) => {\n const actions = [];\n chips.forEach(chip => chip._getActions().forEach(action => actions.push(action)));\n this._chipActions.reset(actions);\n this._chipActions.notifyOnChanges();\n });\n this._keyManager = new FocusKeyManager(this._chipActions)\n .withVerticalOrientation()\n .withHorizontalOrientation(this._dir ? this._dir.value : 'ltr')\n .withHomeAndEnd()\n .skipPredicate(action => this._skipPredicate(action));\n // Keep the manager active index in sync so that navigation picks\n // up from the current chip if the user clicks into the list directly.\n this.chipFocusChanges.pipe(takeUntil(this._destroyed)).subscribe(({ chip }) => {\n const action = chip._getSourceAction(document.activeElement);\n if (action) {\n this._keyManager.updateActiveItem(action);\n }\n });\n this._dir?.change\n .pipe(takeUntil(this._destroyed))\n .subscribe(direction => this._keyManager.withHorizontalOrientation(direction));\n }\n /**\n * Determines if key manager should avoid putting a given chip action in the tab index. Skip\n * non-interactive and disabled actions since the user can't do anything with them.\n */\n _skipPredicate(action) {\n // Skip chips that the user cannot interact with. `mat-chip-set` does not permit focusing disabled\n // chips.\n return !action.isInteractive || action.disabled;\n }\n /** Listens to changes in the chip set and syncs up the state of the individual chips. */\n _trackChipSetChanges() {\n this._chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n if (this.disabled) {\n // Since this happens after the content has been\n // checked, we need to defer it to the next tick.\n Promise.resolve().then(() => this._syncChipsState());\n }\n this._redirectDestroyedChipFocus();\n });\n }\n /** Starts tracking the destroyed chips in order to capture the focused one. */\n _trackDestroyedFocusedChip() {\n this.chipDestroyedChanges.pipe(takeUntil(this._destroyed)).subscribe((event) => {\n const chipArray = this._chips.toArray();\n const chipIndex = chipArray.indexOf(event.chip);\n // If the focused chip is destroyed, save its index so that we can move focus to the next\n // chip. We only save the index here, rather than move the focus immediately, because we want\n // to wait until the chip is removed from the chip list before focusing the next one. This\n // allows us to keep focus on the same index if the chip gets swapped out.\n if (this._isValidIndex(chipIndex) && event.chip._hasFocus()) {\n this._lastDestroyedFocusedChipIndex = chipIndex;\n }\n });\n }\n /**\n * Finds the next appropriate chip to move focus to,\n * if the currently-focused chip is destroyed.\n */\n _redirectDestroyedChipFocus() {\n if (this._lastDestroyedFocusedChipIndex == null) {\n return;\n }\n if (this._chips.length) {\n const newIndex = Math.min(this._lastDestroyedFocusedChipIndex, this._chips.length - 1);\n const chipToFocus = this._chips.toArray()[newIndex];\n if (chipToFocus.disabled) {\n // If we're down to one disabled chip, move focus back to the set.\n if (this._chips.length === 1) {\n this.focus();\n }\n else {\n this._keyManager.setPreviousItemActive();\n }\n }\n else {\n chipToFocus.focus();\n }\n }\n else {\n this.focus();\n }\n this._lastDestroyedFocusedChipIndex = null;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipSet, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: MatChipSet, isStandalone: true, selector: \"mat-chip-set\", inputs: { disabled: [\"disabled\", \"disabled\", booleanAttribute], role: \"role\", tabIndex: [\"tabIndex\", \"tabIndex\", (value) => (value == null ? 0 : numberAttribute(value))] }, host: { listeners: { \"keydown\": \"_handleKeydown($event)\" }, properties: { \"attr.role\": \"role\" }, classAttribute: \"mat-mdc-chip-set mdc-evolution-chip-set\" }, queries: [{ propertyName: \"_chips\", predicate: MatChip, descendants: true }], ngImport: i0, template: `\n
\n \n
\n `, isInline: true, styles: [\".mat-mdc-chip-set{display:flex}.mat-mdc-chip-set:focus{outline:none}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%;margin-left:-8px;margin-right:0}.mat-mdc-chip-set .mdc-evolution-chip{margin:4px 0 4px 8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip-set__chips{margin-left:0;margin-right:-8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip{margin-left:0;margin-right:8px}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}.mat-mdc-chip-set-stacked .mdc-evolution-chip__graphic{flex-grow:0}.mat-mdc-chip-set-stacked .mdc-evolution-chip__action--primary{flex-basis:100%;justify-content:start}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipSet, decorators: [{\n type: Component,\n args: [{ selector: 'mat-chip-set', template: `\n
\n \n
\n `, host: {\n 'class': 'mat-mdc-chip-set mdc-evolution-chip-set',\n '(keydown)': '_handleKeydown($event)',\n '[attr.role]': 'role',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: [\".mat-mdc-chip-set{display:flex}.mat-mdc-chip-set:focus{outline:none}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%;margin-left:-8px;margin-right:0}.mat-mdc-chip-set .mdc-evolution-chip{margin:4px 0 4px 8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip-set__chips{margin-left:0;margin-right:-8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip{margin-left:0;margin-right:8px}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}.mat-mdc-chip-set-stacked .mdc-evolution-chip__graphic{flex-grow:0}.mat-mdc-chip-set-stacked .mdc-evolution-chip__action--primary{flex-basis:100%;justify-content:start}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.Directionality, decorators: [{\n type: Optional\n }] }], propDecorators: { disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], role: [{\n type: Input\n }], tabIndex: [{\n type: Input,\n args: [{\n transform: (value) => (value == null ? 0 : numberAttribute(value)),\n }]\n }], _chips: [{\n type: ContentChildren,\n args: [MatChip, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n }]\n }] } });\n\n/** Change event object that is emitted when the chip listbox value has changed. */\nclass MatChipListboxChange {\n constructor(\n /** Chip listbox that emitted the event. */\n source, \n /** Value of the chip listbox when the event was emitted. */\n value) {\n this.source = source;\n this.value = value;\n }\n}\n/**\n * Provider Expression that allows mat-chip-listbox to register as a ControlValueAccessor.\n * This allows it to support [(ngModel)].\n * @docs-private\n */\nconst MAT_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MatChipListbox),\n multi: true,\n};\n/**\n * An extension of the MatChipSet component that supports chip selection.\n * Used with MatChipOption chips.\n */\nclass MatChipListbox extends MatChipSet {\n constructor() {\n super(...arguments);\n /**\n * Function when touched. Set as part of ControlValueAccessor implementation.\n * @docs-private\n */\n this._onTouched = () => { };\n /**\n * Function when changed. Set as part of ControlValueAccessor implementation.\n * @docs-private\n */\n this._onChange = () => { };\n // TODO: MDC uses `grid` here\n this._defaultRole = 'listbox';\n /** Default chip options. */\n this._defaultOptions = inject(MAT_CHIPS_DEFAULT_OPTIONS, { optional: true });\n this._multiple = false;\n /** Orientation of the chip list. */\n this.ariaOrientation = 'horizontal';\n this._selectable = true;\n /**\n * A function to compare the option values with the selected values. The first argument\n * is a value from an option. The second is a value from the selection. A boolean\n * should be returned.\n */\n this.compareWith = (o1, o2) => o1 === o2;\n /** Whether this chip listbox is required. */\n this.required = false;\n this._hideSingleSelectionIndicator = this._defaultOptions?.hideSingleSelectionIndicator ?? false;\n /** Event emitted when the selected chip listbox value has been changed by the user. */\n this.change = new EventEmitter();\n this._chips = undefined;\n }\n /** Whether the user should be allowed to select multiple chips. */\n get multiple() {\n return this._multiple;\n }\n set multiple(value) {\n this._multiple = value;\n this._syncListboxProperties();\n }\n /** The array of selected chips inside the chip listbox. */\n get selected() {\n const selectedChips = this._chips.toArray().filter(chip => chip.selected);\n return this.multiple ? selectedChips : selectedChips[0];\n }\n /**\n * Whether or not this chip listbox is selectable.\n *\n * When a chip listbox is not selectable, the selected states for all\n * the chips inside the chip listbox are always ignored.\n */\n get selectable() {\n return this._selectable;\n }\n set selectable(value) {\n this._selectable = value;\n this._syncListboxProperties();\n }\n /** Whether checkmark indicator for single-selection options is hidden. */\n get hideSingleSelectionIndicator() {\n return this._hideSingleSelectionIndicator;\n }\n set hideSingleSelectionIndicator(value) {\n this._hideSingleSelectionIndicator = value;\n this._syncListboxProperties();\n }\n /** Combined stream of all of the child chips' selection change events. */\n get chipSelectionChanges() {\n return this._getChipStream(chip => chip.selectionChange);\n }\n /** Combined stream of all of the child chips' blur events. */\n get chipBlurChanges() {\n return this._getChipStream(chip => chip._onBlur);\n }\n /** The value of the listbox, which is the combined value of the selected chips. */\n get value() {\n return this._value;\n }\n set value(value) {\n this.writeValue(value);\n this._value = value;\n }\n ngAfterContentInit() {\n if (this._pendingInitialValue !== undefined) {\n Promise.resolve().then(() => {\n this._setSelectionByValue(this._pendingInitialValue, false);\n this._pendingInitialValue = undefined;\n });\n }\n this._chips.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n // Update listbox selectable/multiple properties on chips\n this._syncListboxProperties();\n });\n this.chipBlurChanges.pipe(takeUntil(this._destroyed)).subscribe(() => this._blur());\n this.chipSelectionChanges.pipe(takeUntil(this._destroyed)).subscribe(event => {\n if (!this.multiple) {\n this._chips.forEach(chip => {\n if (chip !== event.source) {\n chip._setSelectedState(false, false, false);\n }\n });\n }\n if (event.isUserInput) {\n this._propagateChanges();\n }\n });\n }\n /**\n * Focuses the first selected chip in this chip listbox, or the first non-disabled chip when there\n * are no selected chips.\n */\n focus() {\n if (this.disabled) {\n return;\n }\n const firstSelectedChip = this._getFirstSelectedChip();\n if (firstSelectedChip && !firstSelectedChip.disabled) {\n firstSelectedChip.focus();\n }\n else if (this._chips.length > 0) {\n this._keyManager.setFirstItemActive();\n }\n else {\n this._elementRef.nativeElement.focus();\n }\n }\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n writeValue(value) {\n if (this._chips) {\n this._setSelectionByValue(value, false);\n }\n else if (value != null) {\n this._pendingInitialValue = value;\n }\n }\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n registerOnChange(fn) {\n this._onChange = fn;\n }\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /** Selects all chips with value. */\n _setSelectionByValue(value, isUserInput = true) {\n this._clearSelection();\n if (Array.isArray(value)) {\n value.forEach(currentValue => this._selectValue(currentValue, isUserInput));\n }\n else {\n this._selectValue(value, isUserInput);\n }\n }\n /** When blurred, marks the field as touched when focus moved outside the chip listbox. */\n _blur() {\n if (!this.disabled) {\n // Wait to see if focus moves to an individual chip.\n setTimeout(() => {\n if (!this.focused) {\n this._markAsTouched();\n }\n });\n }\n }\n _keydown(event) {\n if (event.keyCode === TAB) {\n super._allowFocusEscape();\n }\n }\n /** Marks the field as touched */\n _markAsTouched() {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n }\n /** Emits change event to set the model value. */\n _propagateChanges() {\n let valueToEmit = null;\n if (Array.isArray(this.selected)) {\n valueToEmit = this.selected.map(chip => chip.value);\n }\n else {\n valueToEmit = this.selected ? this.selected.value : undefined;\n }\n this._value = valueToEmit;\n this.change.emit(new MatChipListboxChange(this, valueToEmit));\n this._onChange(valueToEmit);\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Deselects every chip in the listbox.\n * @param skip Chip that should not be deselected.\n */\n _clearSelection(skip) {\n this._chips.forEach(chip => {\n if (chip !== skip) {\n chip.deselect();\n }\n });\n }\n /**\n * Finds and selects the chip based on its value.\n * @returns Chip that has the corresponding value.\n */\n _selectValue(value, isUserInput) {\n const correspondingChip = this._chips.find(chip => {\n return chip.value != null && this.compareWith(chip.value, value);\n });\n if (correspondingChip) {\n isUserInput ? correspondingChip.selectViaInteraction() : correspondingChip.select();\n }\n return correspondingChip;\n }\n /** Syncs the chip-listbox selection state with the individual chips. */\n _syncListboxProperties() {\n if (this._chips) {\n // Defer setting the value in order to avoid the \"Expression\n // has changed after it was checked\" errors from Angular.\n Promise.resolve().then(() => {\n this._chips.forEach(chip => {\n chip._chipListMultiple = this.multiple;\n chip.chipListSelectable = this._selectable;\n chip._chipListHideSingleSelectionIndicator = this.hideSingleSelectionIndicator;\n chip._changeDetectorRef.markForCheck();\n });\n });\n }\n }\n /** Returns the first selected chip in this listbox, or undefined if no chips are selected. */\n _getFirstSelectedChip() {\n if (Array.isArray(this.selected)) {\n return this.selected.length ? this.selected[0] : undefined;\n }\n else {\n return this.selected;\n }\n }\n /**\n * Determines if key manager should avoid putting a given chip action in the tab index. Skip\n * non-interactive actions since the user can't do anything with them.\n */\n _skipPredicate(action) {\n // Override the skip predicate in the base class to avoid skipping disabled chips. Allow\n // disabled chip options to receive focus to align with WAI ARIA recommendation. Normally WAI\n // ARIA's instructions are to exclude disabled items from the tab order, but it makes a few\n // exceptions for compound widgets.\n //\n // From [Developing a Keyboard Interface](\n // https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/):\n // \"For the following composite widget elements, keep them focusable when disabled: Options in a\n // Listbox...\"\n return !action.isInteractive;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipListbox, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: MatChipListbox, isStandalone: true, selector: \"mat-chip-listbox\", inputs: { multiple: [\"multiple\", \"multiple\", booleanAttribute], ariaOrientation: [\"aria-orientation\", \"ariaOrientation\"], selectable: [\"selectable\", \"selectable\", booleanAttribute], compareWith: \"compareWith\", required: [\"required\", \"required\", booleanAttribute], hideSingleSelectionIndicator: [\"hideSingleSelectionIndicator\", \"hideSingleSelectionIndicator\", booleanAttribute], value: \"value\" }, outputs: { change: \"change\" }, host: { listeners: { \"focus\": \"focus()\", \"blur\": \"_blur()\", \"keydown\": \"_keydown($event)\" }, properties: { \"attr.role\": \"role\", \"tabIndex\": \"(disabled || empty) ? -1 : tabIndex\", \"attr.aria-describedby\": \"_ariaDescribedby || null\", \"attr.aria-required\": \"role ? required : null\", \"attr.aria-disabled\": \"disabled.toString()\", \"attr.aria-multiselectable\": \"multiple\", \"attr.aria-orientation\": \"ariaOrientation\", \"class.mat-mdc-chip-list-disabled\": \"disabled\", \"class.mat-mdc-chip-list-required\": \"required\" }, classAttribute: \"mdc-evolution-chip-set mat-mdc-chip-listbox\" }, providers: [MAT_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR], queries: [{ propertyName: \"_chips\", predicate: MatChipOption, descendants: true }], usesInheritance: true, ngImport: i0, template: `\n
\n \n
\n `, isInline: true, styles: [\".mat-mdc-chip-set{display:flex}.mat-mdc-chip-set:focus{outline:none}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%;margin-left:-8px;margin-right:0}.mat-mdc-chip-set .mdc-evolution-chip{margin:4px 0 4px 8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip-set__chips{margin-left:0;margin-right:-8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip{margin-left:0;margin-right:8px}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}.mat-mdc-chip-set-stacked .mdc-evolution-chip__graphic{flex-grow:0}.mat-mdc-chip-set-stacked .mdc-evolution-chip__action--primary{flex-basis:100%;justify-content:start}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipListbox, decorators: [{\n type: Component,\n args: [{ selector: 'mat-chip-listbox', template: `\n
\n \n
\n `, host: {\n 'class': 'mdc-evolution-chip-set mat-mdc-chip-listbox',\n '[attr.role]': 'role',\n '[tabIndex]': '(disabled || empty) ? -1 : tabIndex',\n // TODO: replace this binding with use of AriaDescriber\n '[attr.aria-describedby]': '_ariaDescribedby || null',\n '[attr.aria-required]': 'role ? required : null',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-multiselectable]': 'multiple',\n '[attr.aria-orientation]': 'ariaOrientation',\n '[class.mat-mdc-chip-list-disabled]': 'disabled',\n '[class.mat-mdc-chip-list-required]': 'required',\n '(focus)': 'focus()',\n '(blur)': '_blur()',\n '(keydown)': '_keydown($event)',\n }, providers: [MAT_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: [\".mat-mdc-chip-set{display:flex}.mat-mdc-chip-set:focus{outline:none}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%;margin-left:-8px;margin-right:0}.mat-mdc-chip-set .mdc-evolution-chip{margin:4px 0 4px 8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip-set__chips{margin-left:0;margin-right:-8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip{margin-left:0;margin-right:8px}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}.mat-mdc-chip-set-stacked .mdc-evolution-chip__graphic{flex-grow:0}.mat-mdc-chip-set-stacked .mdc-evolution-chip__action--primary{flex-basis:100%;justify-content:start}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}\"] }]\n }], propDecorators: { multiple: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], ariaOrientation: [{\n type: Input,\n args: ['aria-orientation']\n }], selectable: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], compareWith: [{\n type: Input\n }], required: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], hideSingleSelectionIndicator: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], value: [{\n type: Input\n }], change: [{\n type: Output\n }], _chips: [{\n type: ContentChildren,\n args: [MatChipOption, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n }]\n }] } });\n\n/** Change event object that is emitted when the chip grid value has changed. */\nclass MatChipGridChange {\n constructor(\n /** Chip grid that emitted the event. */\n source, \n /** Value of the chip grid when the event was emitted. */\n value) {\n this.source = source;\n this.value = value;\n }\n}\n/**\n * An extension of the MatChipSet component used with MatChipRow chips and\n * the matChipInputFor directive.\n */\nclass MatChipGrid extends MatChipSet {\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get disabled() {\n return this.ngControl ? !!this.ngControl.disabled : this._disabled;\n }\n set disabled(value) {\n this._disabled = value;\n this._syncChipsState();\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get id() {\n return this._chipInput.id;\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get empty() {\n return ((!this._chipInput || this._chipInput.empty) && (!this._chips || this._chips.length === 0));\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get placeholder() {\n return this._chipInput ? this._chipInput.placeholder : this._placeholder;\n }\n set placeholder(value) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n /** Whether any chips or the matChipInput inside of this chip-grid has focus. */\n get focused() {\n return this._chipInput.focused || this._hasFocusedChip();\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get required() {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false;\n }\n set required(value) {\n this._required = value;\n this.stateChanges.next();\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get shouldLabelFloat() {\n return !this.empty || this.focused;\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n get value() {\n return this._value;\n }\n set value(value) {\n this._value = value;\n }\n /** An object used to control when error messages are shown. */\n get errorStateMatcher() {\n return this._errorStateTracker.matcher;\n }\n set errorStateMatcher(value) {\n this._errorStateTracker.matcher = value;\n }\n /** Combined stream of all of the child chips' blur events. */\n get chipBlurChanges() {\n return this._getChipStream(chip => chip._onBlur);\n }\n /** Whether the chip grid is in an error state. */\n get errorState() {\n return this._errorStateTracker.errorState;\n }\n set errorState(value) {\n this._errorStateTracker.errorState = value;\n }\n constructor(elementRef, changeDetectorRef, dir, parentForm, parentFormGroup, defaultErrorStateMatcher, ngControl) {\n super(elementRef, changeDetectorRef, dir);\n this.ngControl = ngControl;\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n this.controlType = 'mat-chip-grid';\n this._defaultRole = 'grid';\n /**\n * List of element ids to propagate to the chipInput's aria-describedby attribute.\n */\n this._ariaDescribedbyIds = [];\n /**\n * Function when touched. Set as part of ControlValueAccessor implementation.\n * @docs-private\n */\n this._onTouched = () => { };\n /**\n * Function when changed. Set as part of ControlValueAccessor implementation.\n * @docs-private\n */\n this._onChange = () => { };\n this._value = [];\n /** Emits when the chip grid value has been changed by the user. */\n this.change = new EventEmitter();\n /**\n * Emits whenever the raw value of the chip-grid changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n this.valueChange = new EventEmitter();\n this._chips = undefined;\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `MatFormFieldControl`.\n * @docs-private\n */\n this.stateChanges = new Subject();\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n this._errorStateTracker = new _ErrorStateTracker(defaultErrorStateMatcher, ngControl, parentFormGroup, parentForm, this.stateChanges);\n }\n ngAfterContentInit() {\n this.chipBlurChanges.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._blur();\n this.stateChanges.next();\n });\n merge(this.chipFocusChanges, this._chips.changes)\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this.stateChanges.next());\n }\n ngAfterViewInit() {\n super.ngAfterViewInit();\n if (!this._chipInput && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('mat-chip-grid must be used in combination with matChipInputFor.');\n }\n }\n ngDoCheck() {\n if (this.ngControl) {\n // We need to re-evaluate this on every change detection cycle, because there are some\n // error triggers that we can't subscribe to (e.g. parent form submissions). This means\n // that whatever logic is in here has to be super lean or we risk destroying the performance.\n this.updateErrorState();\n }\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this.stateChanges.complete();\n }\n /** Associates an HTML input element with this chip grid. */\n registerInput(inputElement) {\n this._chipInput = inputElement;\n this._chipInput.setDescribedByIds(this._ariaDescribedbyIds);\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n onContainerClick(event) {\n if (!this.disabled && !this._originatesFromChip(event)) {\n this.focus();\n }\n }\n /**\n * Focuses the first chip in this chip grid, or the associated input when there\n * are no eligible chips.\n */\n focus() {\n if (this.disabled || this._chipInput.focused) {\n return;\n }\n if (!this._chips.length || this._chips.first.disabled) {\n // Delay until the next tick, because this can cause a \"changed after checked\"\n // error if the input does something on focus (e.g. opens an autocomplete).\n Promise.resolve().then(() => this._chipInput.focus());\n }\n else if (this._chips.length && this._keyManager.activeItemIndex !== 0) {\n this._keyManager.setFirstItemActive();\n }\n this.stateChanges.next();\n }\n /**\n * Implemented as part of MatFormFieldControl.\n * @docs-private\n */\n setDescribedByIds(ids) {\n // We must keep this up to date to handle the case where ids are set\n // before the chip input is registered.\n this._ariaDescribedbyIds = ids;\n this._chipInput?.setDescribedByIds(ids);\n }\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n writeValue(value) {\n // The user is responsible for creating the child chips, so we just store the value.\n this._value = value;\n }\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n registerOnChange(fn) {\n this._onChange = fn;\n }\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n /**\n * Implemented as part of ControlValueAccessor.\n * @docs-private\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this.stateChanges.next();\n }\n /** Refreshes the error state of the chip grid. */\n updateErrorState() {\n this._errorStateTracker.updateErrorState();\n }\n /** When blurred, mark the field as touched when focus moved outside the chip grid. */\n _blur() {\n if (!this.disabled) {\n // Check whether the focus moved to chip input.\n // If the focus is not moved to chip input, mark the field as touched. If the focus moved\n // to chip input, do nothing.\n // Timeout is needed to wait for the focus() event trigger on chip input.\n setTimeout(() => {\n if (!this.focused) {\n this._propagateChanges();\n this._markAsTouched();\n }\n });\n }\n }\n /**\n * Removes the `tabindex` from the chip grid and resets it back afterwards, allowing the\n * user to tab out of it. This prevents the grid from capturing focus and redirecting\n * it back to the first chip, creating a focus trap, if it user tries to tab away.\n */\n _allowFocusEscape() {\n if (!this._chipInput.focused) {\n super._allowFocusEscape();\n }\n }\n /** Handles custom keyboard events. */\n _handleKeydown(event) {\n const keyCode = event.keyCode;\n const activeItem = this._keyManager.activeItem;\n if (keyCode === TAB) {\n if (this._chipInput.focused &&\n hasModifierKey(event, 'shiftKey') &&\n this._chips.length &&\n !this._chips.last.disabled) {\n event.preventDefault();\n if (activeItem) {\n this._keyManager.setActiveItem(activeItem);\n }\n else {\n this._focusLastChip();\n }\n }\n else {\n // Use the super method here since it doesn't check for the input\n // focused state. This allows focus to escape if there's only one\n // disabled chip left in the list.\n super._allowFocusEscape();\n }\n }\n else if (!this._chipInput.focused) {\n // The up and down arrows are supposed to navigate between the individual rows in the grid.\n // We do this by filtering the actions down to the ones that have the same `_isPrimary`\n // flag as the active action and moving focus between them ourseles instead of delegating\n // to the key manager. For more information, see #29359 and:\n // https://www.w3.org/WAI/ARIA/apg/patterns/grid/examples/layout-grids/#ex2_label\n if ((keyCode === UP_ARROW || keyCode === DOWN_ARROW) && activeItem) {\n const eligibleActions = this._chipActions.filter(action => action._isPrimary === activeItem._isPrimary && !this._skipPredicate(action));\n const currentIndex = eligibleActions.indexOf(activeItem);\n const delta = event.keyCode === UP_ARROW ? -1 : 1;\n event.preventDefault();\n if (currentIndex > -1 && this._isValidIndex(currentIndex + delta)) {\n this._keyManager.setActiveItem(eligibleActions[currentIndex + delta]);\n }\n }\n else {\n super._handleKeydown(event);\n }\n }\n this.stateChanges.next();\n }\n _focusLastChip() {\n if (this._chips.length) {\n this._chips.last.focus();\n }\n }\n /** Emits change event to set the model value. */\n _propagateChanges() {\n const valueToEmit = this._chips.length ? this._chips.toArray().map(chip => chip.value) : [];\n this._value = valueToEmit;\n this.change.emit(new MatChipGridChange(this, valueToEmit));\n this.valueChange.emit(valueToEmit);\n this._onChange(valueToEmit);\n this._changeDetectorRef.markForCheck();\n }\n /** Mark the field as touched */\n _markAsTouched() {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipGrid, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.Directionality, optional: true }, { token: i2.NgForm, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: i3.ErrorStateMatcher }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: MatChipGrid, isStandalone: true, selector: \"mat-chip-grid\", inputs: { disabled: [\"disabled\", \"disabled\", booleanAttribute], placeholder: \"placeholder\", required: [\"required\", \"required\", booleanAttribute], value: \"value\", errorStateMatcher: \"errorStateMatcher\" }, outputs: { change: \"change\", valueChange: \"valueChange\" }, host: { listeners: { \"focus\": \"focus()\", \"blur\": \"_blur()\" }, properties: { \"attr.role\": \"role\", \"attr.tabindex\": \"(disabled || (_chips && _chips.length === 0)) ? -1 : tabIndex\", \"attr.aria-disabled\": \"disabled.toString()\", \"attr.aria-invalid\": \"errorState\", \"class.mat-mdc-chip-list-disabled\": \"disabled\", \"class.mat-mdc-chip-list-invalid\": \"errorState\", \"class.mat-mdc-chip-list-required\": \"required\" }, classAttribute: \"mat-mdc-chip-set mat-mdc-chip-grid mdc-evolution-chip-set\" }, providers: [{ provide: MatFormFieldControl, useExisting: MatChipGrid }], queries: [{ propertyName: \"_chips\", predicate: MatChipRow, descendants: true }], usesInheritance: true, ngImport: i0, template: `\n
\n \n
\n `, isInline: true, styles: [\".mat-mdc-chip-set{display:flex}.mat-mdc-chip-set:focus{outline:none}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%;margin-left:-8px;margin-right:0}.mat-mdc-chip-set .mdc-evolution-chip{margin:4px 0 4px 8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip-set__chips{margin-left:0;margin-right:-8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip{margin-left:0;margin-right:8px}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}.mat-mdc-chip-set-stacked .mdc-evolution-chip__graphic{flex-grow:0}.mat-mdc-chip-set-stacked .mdc-evolution-chip__action--primary{flex-basis:100%;justify-content:start}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipGrid, decorators: [{\n type: Component,\n args: [{ selector: 'mat-chip-grid', template: `\n
\n \n
\n `, host: {\n 'class': 'mat-mdc-chip-set mat-mdc-chip-grid mdc-evolution-chip-set',\n '[attr.role]': 'role',\n '[attr.tabindex]': '(disabled || (_chips && _chips.length === 0)) ? -1 : tabIndex',\n '[attr.aria-disabled]': 'disabled.toString()',\n '[attr.aria-invalid]': 'errorState',\n '[class.mat-mdc-chip-list-disabled]': 'disabled',\n '[class.mat-mdc-chip-list-invalid]': 'errorState',\n '[class.mat-mdc-chip-list-required]': 'required',\n '(focus)': 'focus()',\n '(blur)': '_blur()',\n }, providers: [{ provide: MatFormFieldControl, useExisting: MatChipGrid }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: [\".mat-mdc-chip-set{display:flex}.mat-mdc-chip-set:focus{outline:none}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%;margin-left:-8px;margin-right:0}.mat-mdc-chip-set .mdc-evolution-chip{margin:4px 0 4px 8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip-set__chips{margin-left:0;margin-right:-8px}[dir=rtl] .mat-mdc-chip-set .mdc-evolution-chip{margin-left:0;margin-right:8px}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}.mat-mdc-chip-set-stacked .mdc-evolution-chip__graphic{flex-grow:0}.mat-mdc-chip-set-stacked .mdc-evolution-chip__action--primary{flex-basis:100%;justify-content:start}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i2.NgForm, decorators: [{\n type: Optional\n }] }, { type: i2.FormGroupDirective, decorators: [{\n type: Optional\n }] }, { type: i3.ErrorStateMatcher }, { type: i2.NgControl, decorators: [{\n type: Optional\n }, {\n type: Self\n }] }], propDecorators: { disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], placeholder: [{\n type: Input\n }], required: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], value: [{\n type: Input\n }], errorStateMatcher: [{\n type: Input\n }], change: [{\n type: Output\n }], valueChange: [{\n type: Output\n }], _chips: [{\n type: ContentChildren,\n args: [MatChipRow, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n }]\n }] } });\n\n// Increasing integer for generating unique ids.\nlet nextUniqueId = 0;\n/**\n * Directive that adds chip-specific behaviors to an input element inside ``.\n * May be placed inside or outside of a ``.\n */\nclass MatChipInput {\n /** Register input for chip list */\n get chipGrid() {\n return this._chipGrid;\n }\n set chipGrid(value) {\n if (value) {\n this._chipGrid = value;\n this._chipGrid.registerInput(this);\n }\n }\n /** Whether the input is disabled. */\n get disabled() {\n return this._disabled || (this._chipGrid && this._chipGrid.disabled);\n }\n set disabled(value) {\n this._disabled = value;\n }\n /** Whether the input is empty. */\n get empty() {\n return !this.inputElement.value;\n }\n constructor(_elementRef, defaultOptions, formField) {\n this._elementRef = _elementRef;\n /** Whether the control is focused. */\n this.focused = false;\n /**\n * Whether or not the chipEnd event will be emitted when the input is blurred.\n */\n this.addOnBlur = false;\n /** Emitted when a chip is to be added. */\n this.chipEnd = new EventEmitter();\n /** The input's placeholder text. */\n this.placeholder = '';\n /** Unique id for the input. */\n this.id = `mat-mdc-chip-list-input-${nextUniqueId++}`;\n this._disabled = false;\n this.inputElement = this._elementRef.nativeElement;\n this.separatorKeyCodes = defaultOptions.separatorKeyCodes;\n if (formField) {\n this.inputElement.classList.add('mat-mdc-form-field-input-control');\n }\n }\n ngOnChanges() {\n this._chipGrid.stateChanges.next();\n }\n ngOnDestroy() {\n this.chipEnd.complete();\n }\n /** Utility method to make host definition/tests more clear. */\n _keydown(event) {\n if (this.empty && event.keyCode === BACKSPACE) {\n // Ignore events where the user is holding down backspace\n // so that we don't accidentally remove too many chips.\n if (!event.repeat) {\n this._chipGrid._focusLastChip();\n }\n event.preventDefault();\n }\n else {\n this._emitChipEnd(event);\n }\n }\n /** Checks to see if the blur should emit the (chipEnd) event. */\n _blur() {\n if (this.addOnBlur) {\n this._emitChipEnd();\n }\n this.focused = false;\n // Blur the chip list if it is not focused\n if (!this._chipGrid.focused) {\n this._chipGrid._blur();\n }\n this._chipGrid.stateChanges.next();\n }\n _focus() {\n this.focused = true;\n this._chipGrid.stateChanges.next();\n }\n /** Checks to see if the (chipEnd) event needs to be emitted. */\n _emitChipEnd(event) {\n if (!event || this._isSeparatorKey(event)) {\n this.chipEnd.emit({\n input: this.inputElement,\n value: this.inputElement.value,\n chipInput: this,\n });\n event?.preventDefault();\n }\n }\n _onInput() {\n // Let chip list know whenever the value changes.\n this._chipGrid.stateChanges.next();\n }\n /** Focuses the input. */\n focus() {\n this.inputElement.focus();\n }\n /** Clears the input */\n clear() {\n this.inputElement.value = '';\n }\n setDescribedByIds(ids) {\n const element = this._elementRef.nativeElement;\n // Set the value directly in the DOM since this binding\n // is prone to \"changed after checked\" errors.\n if (ids.length) {\n element.setAttribute('aria-describedby', ids.join(' '));\n }\n else {\n element.removeAttribute('aria-describedby');\n }\n }\n /** Checks whether a keycode is one of the configured separators. */\n _isSeparatorKey(event) {\n return !hasModifierKey(event) && new Set(this.separatorKeyCodes).has(event.keyCode);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipInput, deps: [{ token: i0.ElementRef }, { token: MAT_CHIPS_DEFAULT_OPTIONS }, { token: MAT_FORM_FIELD, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: MatChipInput, isStandalone: true, selector: \"input[matChipInputFor]\", inputs: { chipGrid: [\"matChipInputFor\", \"chipGrid\"], addOnBlur: [\"matChipInputAddOnBlur\", \"addOnBlur\", booleanAttribute], separatorKeyCodes: [\"matChipInputSeparatorKeyCodes\", \"separatorKeyCodes\"], placeholder: \"placeholder\", id: \"id\", disabled: [\"disabled\", \"disabled\", booleanAttribute] }, outputs: { chipEnd: \"matChipInputTokenEnd\" }, host: { listeners: { \"keydown\": \"_keydown($event)\", \"blur\": \"_blur()\", \"focus\": \"_focus()\", \"input\": \"_onInput()\" }, properties: { \"id\": \"id\", \"attr.disabled\": \"disabled || null\", \"attr.placeholder\": \"placeholder || null\", \"attr.aria-invalid\": \"_chipGrid && _chipGrid.ngControl ? _chipGrid.ngControl.invalid : null\", \"attr.aria-required\": \"_chipGrid && _chipGrid.required || null\", \"attr.required\": \"_chipGrid && _chipGrid.required || null\" }, classAttribute: \"mat-mdc-chip-input mat-mdc-input-element mdc-text-field__input mat-input-element\" }, exportAs: [\"matChipInput\", \"matChipInputFor\"], usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipInput, decorators: [{\n type: Directive,\n args: [{\n selector: 'input[matChipInputFor]',\n exportAs: 'matChipInput, matChipInputFor',\n host: {\n // TODO: eventually we should remove `mat-input-element` from here since it comes from the\n // non-MDC version of the input. It's currently being kept for backwards compatibility, because\n // the MDC chips were landed initially with it.\n 'class': 'mat-mdc-chip-input mat-mdc-input-element mdc-text-field__input mat-input-element',\n '(keydown)': '_keydown($event)',\n '(blur)': '_blur()',\n '(focus)': '_focus()',\n '(input)': '_onInput()',\n '[id]': 'id',\n '[attr.disabled]': 'disabled || null',\n '[attr.placeholder]': 'placeholder || null',\n '[attr.aria-invalid]': '_chipGrid && _chipGrid.ngControl ? _chipGrid.ngControl.invalid : null',\n '[attr.aria-required]': '_chipGrid && _chipGrid.required || null',\n '[attr.required]': '_chipGrid && _chipGrid.required || null',\n },\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_CHIPS_DEFAULT_OPTIONS]\n }] }, { type: i1$2.MatFormField, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_FORM_FIELD]\n }] }], propDecorators: { chipGrid: [{\n type: Input,\n args: ['matChipInputFor']\n }], addOnBlur: [{\n type: Input,\n args: [{ alias: 'matChipInputAddOnBlur', transform: booleanAttribute }]\n }], separatorKeyCodes: [{\n type: Input,\n args: ['matChipInputSeparatorKeyCodes']\n }], chipEnd: [{\n type: Output,\n args: ['matChipInputTokenEnd']\n }], placeholder: [{\n type: Input\n }], id: [{\n type: Input\n }], disabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }] } });\n\nconst CHIP_DECLARATIONS = [\n MatChip,\n MatChipAvatar,\n MatChipEditInput,\n MatChipGrid,\n MatChipInput,\n MatChipListbox,\n MatChipOption,\n MatChipRemove,\n MatChipRow,\n MatChipSet,\n MatChipTrailingIcon,\n];\nclass MatChipsModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipsModule, imports: [MatCommonModule, MatRippleModule, MatChipAction, MatChip,\n MatChipAvatar,\n MatChipEditInput,\n MatChipGrid,\n MatChipInput,\n MatChipListbox,\n MatChipOption,\n MatChipRemove,\n MatChipRow,\n MatChipSet,\n MatChipTrailingIcon], exports: [MatCommonModule, MatChip,\n MatChipAvatar,\n MatChipEditInput,\n MatChipGrid,\n MatChipInput,\n MatChipListbox,\n MatChipOption,\n MatChipRemove,\n MatChipRow,\n MatChipSet,\n MatChipTrailingIcon] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipsModule, providers: [\n ErrorStateMatcher,\n {\n provide: MAT_CHIPS_DEFAULT_OPTIONS,\n useValue: {\n separatorKeyCodes: [ENTER],\n },\n },\n ], imports: [MatCommonModule, MatRippleModule, MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatChipsModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, MatRippleModule, MatChipAction, CHIP_DECLARATIONS],\n exports: [MatCommonModule, CHIP_DECLARATIONS],\n providers: [\n ErrorStateMatcher,\n {\n provide: MAT_CHIPS_DEFAULT_OPTIONS,\n useValue: {\n separatorKeyCodes: [ENTER],\n },\n },\n ],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_CHIP, MAT_CHIPS_DEFAULT_OPTIONS, MAT_CHIP_AVATAR, MAT_CHIP_LISTBOX_CONTROL_VALUE_ACCESSOR, MAT_CHIP_REMOVE, MAT_CHIP_TRAILING_ICON, MatChip, MatChipAvatar, MatChipEditInput, MatChipGrid, MatChipGridChange, MatChipInput, MatChipListbox, MatChipListboxChange, MatChipOption, MatChipRemove, MatChipRow, MatChipSelectionChange, MatChipSet, MatChipTrailingIcon, MatChipsModule };\n","import * as i0 from '@angular/core';\nimport { Component, ViewEncapsulation, ChangeDetectionStrategy, inject, ApplicationRef, createComponent, EnvironmentInjector, ANIMATION_MODULE_TYPE, booleanAttribute, Directive, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { MatCommonModule } from '@angular/material/core';\nimport * as i1 from '@angular/cdk/a11y';\nimport { InteractivityChecker, A11yModule } from '@angular/cdk/a11y';\nimport { DOCUMENT } from '@angular/common';\n\nlet nextId = 0;\nconst BADGE_CONTENT_CLASS = 'mat-badge-content';\n/** Keeps track of the apps currently containing badges. */\nconst badgeApps = new Set();\n/**\n * Component used to load the structural styles of the badge.\n * @docs-private\n */\nclass _MatBadgeStyleLoader {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: _MatBadgeStyleLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: _MatBadgeStyleLoader, isStandalone: true, selector: \"ng-component\", ngImport: i0, template: '', isInline: true, styles: [\".mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-content{position:absolute;text-align:center;display:inline-block;transition:transform 200ms ease-in-out;transform:scale(0.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;pointer-events:none;background-color:var(--mat-badge-background-color, var(--mat-app-error));color:var(--mat-badge-text-color, var(--mat-app-on-error));font-family:var(--mat-badge-text-font, var(--mat-app-label-small-font));font-weight:var(--mat-badge-text-weight, var(--mat-app-label-small-weight));border-radius:var(--mat-badge-container-shape, var(--mat-app-corner-full))}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-above .mat-badge-content{bottom:100%}.mat-badge-below .mat-badge-content{top:100%}.mat-badge-before .mat-badge-content{right:100%}[dir=rtl] .mat-badge-before .mat-badge-content{right:auto;left:100%}.mat-badge-after .mat-badge-content{left:100%}[dir=rtl] .mat-badge-after .mat-badge-content{left:auto;right:100%}.mat-badge-disabled .mat-badge-content{background-color:var(--mat-badge-disabled-state-background-color);color:var(--mat-badge-disabled-state-text-color, var(--mat-app-on-error))}.mat-badge-hidden .mat-badge-content{display:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:var(--mat-badge-legacy-small-size-container-size, unset);height:var(--mat-badge-legacy-small-size-container-size, unset);min-width:var(--mat-badge-small-size-container-size, unset);min-height:var(--mat-badge-small-size-container-size, unset);line-height:var(--mat-badge-legacy-small-size-container-size, var(--mat-badge-small-size-container-size));padding:var(--mat-badge-small-size-container-padding);font-size:var(--mat-badge-small-size-text-size);margin:var(--mat-badge-small-size-container-offset)}.mat-badge-small.mat-badge-overlap .mat-badge-content{margin:var(--mat-badge-small-size-container-overlap-offset)}.mat-badge-medium .mat-badge-content{width:var(--mat-badge-legacy-container-size, unset);height:var(--mat-badge-legacy-container-size, unset);min-width:var(--mat-badge-container-size, unset);min-height:var(--mat-badge-container-size, unset);line-height:var(--mat-badge-legacy-container-size, var(--mat-badge-container-size));padding:var(--mat-badge-container-padding);font-size:var(--mat-badge-text-size, var(--mat-app-label-small-size));margin:var(--mat-badge-container-offset)}.mat-badge-medium.mat-badge-overlap .mat-badge-content{margin:var(--mat-badge-container-overlap-offset)}.mat-badge-large .mat-badge-content{width:var(--mat-badge-legacy-large-size-container-size, unset);height:var(--mat-badge-legacy-large-size-container-size, unset);min-width:var(--mat-badge-large-size-container-size, unset);min-height:var(--mat-badge-large-size-container-size, unset);line-height:var(--mat-badge-legacy-large-size-container-size, var(--mat-badge-large-size-container-size));padding:var(--mat-badge-large-size-container-padding);font-size:var(--mat-badge-large-size-text-size, var(--mat-app-label-small-size));margin:var(--mat-badge-large-size-container-offset)}.mat-badge-large.mat-badge-overlap .mat-badge-content{margin:var(--mat-badge-large-size-container-overlap-offset)}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: _MatBadgeStyleLoader, decorators: [{\n type: Component,\n args: [{ standalone: true, encapsulation: ViewEncapsulation.None, template: '', changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-content{position:absolute;text-align:center;display:inline-block;transition:transform 200ms ease-in-out;transform:scale(0.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;pointer-events:none;background-color:var(--mat-badge-background-color, var(--mat-app-error));color:var(--mat-badge-text-color, var(--mat-app-on-error));font-family:var(--mat-badge-text-font, var(--mat-app-label-small-font));font-weight:var(--mat-badge-text-weight, var(--mat-app-label-small-weight));border-radius:var(--mat-badge-container-shape, var(--mat-app-corner-full))}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-above .mat-badge-content{bottom:100%}.mat-badge-below .mat-badge-content{top:100%}.mat-badge-before .mat-badge-content{right:100%}[dir=rtl] .mat-badge-before .mat-badge-content{right:auto;left:100%}.mat-badge-after .mat-badge-content{left:100%}[dir=rtl] .mat-badge-after .mat-badge-content{left:auto;right:100%}.mat-badge-disabled .mat-badge-content{background-color:var(--mat-badge-disabled-state-background-color);color:var(--mat-badge-disabled-state-text-color, var(--mat-app-on-error))}.mat-badge-hidden .mat-badge-content{display:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:var(--mat-badge-legacy-small-size-container-size, unset);height:var(--mat-badge-legacy-small-size-container-size, unset);min-width:var(--mat-badge-small-size-container-size, unset);min-height:var(--mat-badge-small-size-container-size, unset);line-height:var(--mat-badge-legacy-small-size-container-size, var(--mat-badge-small-size-container-size));padding:var(--mat-badge-small-size-container-padding);font-size:var(--mat-badge-small-size-text-size);margin:var(--mat-badge-small-size-container-offset)}.mat-badge-small.mat-badge-overlap .mat-badge-content{margin:var(--mat-badge-small-size-container-overlap-offset)}.mat-badge-medium .mat-badge-content{width:var(--mat-badge-legacy-container-size, unset);height:var(--mat-badge-legacy-container-size, unset);min-width:var(--mat-badge-container-size, unset);min-height:var(--mat-badge-container-size, unset);line-height:var(--mat-badge-legacy-container-size, var(--mat-badge-container-size));padding:var(--mat-badge-container-padding);font-size:var(--mat-badge-text-size, var(--mat-app-label-small-size));margin:var(--mat-badge-container-offset)}.mat-badge-medium.mat-badge-overlap .mat-badge-content{margin:var(--mat-badge-container-overlap-offset)}.mat-badge-large .mat-badge-content{width:var(--mat-badge-legacy-large-size-container-size, unset);height:var(--mat-badge-legacy-large-size-container-size, unset);min-width:var(--mat-badge-large-size-container-size, unset);min-height:var(--mat-badge-large-size-container-size, unset);line-height:var(--mat-badge-legacy-large-size-container-size, var(--mat-badge-large-size-container-size));padding:var(--mat-badge-large-size-container-padding);font-size:var(--mat-badge-large-size-text-size, var(--mat-app-label-small-size));margin:var(--mat-badge-large-size-container-offset)}.mat-badge-large.mat-badge-overlap .mat-badge-content{margin:var(--mat-badge-large-size-container-overlap-offset)}\"] }]\n }] });\n/** Directive to display a text badge. */\nclass MatBadge {\n /**\n * Theme color of the badge. This API is supported in M2 themes only, it\n * has no effect in M3 themes.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.io/guide/theming#using-component-color-variants.\n */\n get color() {\n return this._color;\n }\n set color(value) {\n this._setColor(value);\n this._color = value;\n }\n /** The content for the badge */\n get content() {\n return this._content;\n }\n set content(newContent) {\n this._updateRenderedContent(newContent);\n }\n /** Message used to describe the decorated element via aria-describedby */\n get description() {\n return this._description;\n }\n set description(newDescription) {\n this._updateDescription(newDescription);\n }\n constructor(_ngZone, _elementRef, _ariaDescriber, _renderer, _animationMode) {\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._ariaDescriber = _ariaDescriber;\n this._renderer = _renderer;\n this._animationMode = _animationMode;\n this._color = 'primary';\n /** Whether the badge should overlap its contents or not */\n this.overlap = true;\n /**\n * Position the badge should reside.\n * Accepts any combination of 'above'|'below' and 'before'|'after'\n */\n this.position = 'above after';\n /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n this.size = 'medium';\n /** Unique id for the badge */\n this._id = nextId++;\n /** Whether the OnInit lifecycle hook has run yet */\n this._isInitialized = false;\n /** InteractivityChecker to determine if the badge host is focusable. */\n this._interactivityChecker = inject(InteractivityChecker);\n this._document = inject(DOCUMENT);\n const appRef = inject(ApplicationRef);\n if (!badgeApps.has(appRef)) {\n badgeApps.add(appRef);\n const componentRef = createComponent(_MatBadgeStyleLoader, {\n environmentInjector: inject(EnvironmentInjector),\n });\n appRef.onDestroy(() => {\n badgeApps.delete(appRef);\n componentRef.destroy();\n });\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const nativeElement = _elementRef.nativeElement;\n if (nativeElement.nodeType !== nativeElement.ELEMENT_NODE) {\n throw Error('matBadge must be attached to an element node.');\n }\n const matIconTagName = 'mat-icon';\n // Heads-up for developers to avoid putting matBadge on \n // as it is aria-hidden by default docs mention this at:\n // https://material.angular.io/components/badge/overview#accessibility\n if (nativeElement.tagName.toLowerCase() === matIconTagName &&\n nativeElement.getAttribute('aria-hidden') === 'true') {\n console.warn(`Detected a matBadge on an \"aria-hidden\" \"\". ` +\n `Consider setting aria-hidden=\"false\" in order to surface the information assistive technology.` +\n `\\n${nativeElement.outerHTML}`);\n }\n }\n }\n /** Whether the badge is above the host or not */\n isAbove() {\n return this.position.indexOf('below') === -1;\n }\n /** Whether the badge is after the host or not */\n isAfter() {\n return this.position.indexOf('before') === -1;\n }\n /**\n * Gets the element into which the badge's content is being rendered. Undefined if the element\n * hasn't been created (e.g. if the badge doesn't have content).\n */\n getBadgeElement() {\n return this._badgeElement;\n }\n ngOnInit() {\n // We may have server-side rendered badge that we need to clear.\n // We need to do this in ngOnInit because the full content of the component\n // on which the badge is attached won't necessarily be in the DOM until this point.\n this._clearExistingBadges();\n if (this.content && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n this._updateRenderedContent(this.content);\n }\n this._isInitialized = true;\n }\n ngOnDestroy() {\n // ViewEngine only: when creating a badge through the Renderer, Angular remembers its index.\n // We have to destroy it ourselves, otherwise it'll be retained in memory.\n if (this._renderer.destroyNode) {\n this._renderer.destroyNode(this._badgeElement);\n this._inlineBadgeDescription?.remove();\n }\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n }\n /** Gets whether the badge's host element is interactive. */\n _isHostInteractive() {\n // Ignore visibility since it requires an expensive style caluclation.\n return this._interactivityChecker.isFocusable(this._elementRef.nativeElement, {\n ignoreVisibility: true,\n });\n }\n /** Creates the badge element */\n _createBadgeElement() {\n const badgeElement = this._renderer.createElement('span');\n const activeClass = 'mat-badge-active';\n badgeElement.setAttribute('id', `mat-badge-content-${this._id}`);\n // The badge is aria-hidden because we don't want it to appear in the page's navigation\n // flow. Instead, we use the badge to describe the decorated element with aria-describedby.\n badgeElement.setAttribute('aria-hidden', 'true');\n badgeElement.classList.add(BADGE_CONTENT_CLASS);\n if (this._animationMode === 'NoopAnimations') {\n badgeElement.classList.add('_mat-animation-noopable');\n }\n this._elementRef.nativeElement.appendChild(badgeElement);\n // animate in after insertion\n if (typeof requestAnimationFrame === 'function' && this._animationMode !== 'NoopAnimations') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n badgeElement.classList.add(activeClass);\n });\n });\n }\n else {\n badgeElement.classList.add(activeClass);\n }\n return badgeElement;\n }\n /** Update the text content of the badge element in the DOM, creating the element if necessary. */\n _updateRenderedContent(newContent) {\n const newContentNormalized = `${newContent ?? ''}`.trim();\n // Don't create the badge element if the directive isn't initialized because we want to\n // append the badge element to the *end* of the host element's content for backwards\n // compatibility.\n if (this._isInitialized && newContentNormalized && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n }\n if (this._badgeElement) {\n this._badgeElement.textContent = newContentNormalized;\n }\n this._content = newContentNormalized;\n }\n /** Updates the host element's aria description via AriaDescriber. */\n _updateDescription(newDescription) {\n // Always start by removing the aria-describedby; we will add a new one if necessary.\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n // NOTE: We only check whether the host is interactive here, which happens during\n // when then badge content changes. It is possible that the host changes\n // interactivity status separate from one of these. However, watching the interactivity\n // status of the host would require a `MutationObserver`, which is likely more code + overhead\n // than it's worth; from usages inside Google, we see that the vats majority of badges either\n // never change interactivity, or also set `matBadgeHidden` based on the same condition.\n if (!newDescription || this._isHostInteractive()) {\n this._removeInlineDescription();\n }\n this._description = newDescription;\n // We don't add `aria-describedby` for non-interactive hosts elements because we\n // instead insert the description inline.\n if (this._isHostInteractive()) {\n this._ariaDescriber.describe(this._elementRef.nativeElement, newDescription);\n }\n else {\n this._updateInlineDescription();\n }\n }\n _updateInlineDescription() {\n // Create the inline description element if it doesn't exist\n if (!this._inlineBadgeDescription) {\n this._inlineBadgeDescription = this._document.createElement('span');\n this._inlineBadgeDescription.classList.add('cdk-visually-hidden');\n }\n this._inlineBadgeDescription.textContent = this.description;\n this._badgeElement?.appendChild(this._inlineBadgeDescription);\n }\n _removeInlineDescription() {\n this._inlineBadgeDescription?.remove();\n this._inlineBadgeDescription = undefined;\n }\n /** Adds css theme class given the color to the component host */\n _setColor(colorPalette) {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(`mat-badge-${this._color}`);\n if (colorPalette) {\n classList.add(`mat-badge-${colorPalette}`);\n }\n }\n /** Clears any existing badges that might be left over from server-side rendering. */\n _clearExistingBadges() {\n // Only check direct children of this host element in order to avoid deleting\n // any badges that might exist in descendant elements.\n const badges = this._elementRef.nativeElement.querySelectorAll(`:scope > .${BADGE_CONTENT_CLASS}`);\n for (const badgeElement of Array.from(badges)) {\n if (badgeElement !== this._badgeElement) {\n badgeElement.remove();\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatBadge, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.AriaDescriber }, { token: i0.Renderer2 }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: MatBadge, isStandalone: true, selector: \"[matBadge]\", inputs: { color: [\"matBadgeColor\", \"color\"], overlap: [\"matBadgeOverlap\", \"overlap\", booleanAttribute], disabled: [\"matBadgeDisabled\", \"disabled\", booleanAttribute], position: [\"matBadgePosition\", \"position\"], content: [\"matBadge\", \"content\"], description: [\"matBadgeDescription\", \"description\"], size: [\"matBadgeSize\", \"size\"], hidden: [\"matBadgeHidden\", \"hidden\", booleanAttribute] }, host: { properties: { \"class.mat-badge-overlap\": \"overlap\", \"class.mat-badge-above\": \"isAbove()\", \"class.mat-badge-below\": \"!isAbove()\", \"class.mat-badge-before\": \"!isAfter()\", \"class.mat-badge-after\": \"isAfter()\", \"class.mat-badge-small\": \"size === \\\"small\\\"\", \"class.mat-badge-medium\": \"size === \\\"medium\\\"\", \"class.mat-badge-large\": \"size === \\\"large\\\"\", \"class.mat-badge-hidden\": \"hidden || !content\", \"class.mat-badge-disabled\": \"disabled\" }, classAttribute: \"mat-badge\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatBadge, decorators: [{\n type: Directive,\n args: [{\n selector: '[matBadge]',\n host: {\n 'class': 'mat-badge',\n '[class.mat-badge-overlap]': 'overlap',\n '[class.mat-badge-above]': 'isAbove()',\n '[class.mat-badge-below]': '!isAbove()',\n '[class.mat-badge-before]': '!isAfter()',\n '[class.mat-badge-after]': 'isAfter()',\n '[class.mat-badge-small]': 'size === \"small\"',\n '[class.mat-badge-medium]': 'size === \"medium\"',\n '[class.mat-badge-large]': 'size === \"large\"',\n '[class.mat-badge-hidden]': 'hidden || !content',\n '[class.mat-badge-disabled]': 'disabled',\n },\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.AriaDescriber }, { type: i0.Renderer2 }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }], propDecorators: { color: [{\n type: Input,\n args: ['matBadgeColor']\n }], overlap: [{\n type: Input,\n args: [{ alias: 'matBadgeOverlap', transform: booleanAttribute }]\n }], disabled: [{\n type: Input,\n args: [{ alias: 'matBadgeDisabled', transform: booleanAttribute }]\n }], position: [{\n type: Input,\n args: ['matBadgePosition']\n }], content: [{\n type: Input,\n args: ['matBadge']\n }], description: [{\n type: Input,\n args: ['matBadgeDescription']\n }], size: [{\n type: Input,\n args: ['matBadgeSize']\n }], hidden: [{\n type: Input,\n args: [{ alias: 'matBadgeHidden', transform: booleanAttribute }]\n }] } });\n\nclass MatBadgeModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatBadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatBadgeModule, imports: [A11yModule, MatCommonModule, MatBadge, _MatBadgeStyleLoader], exports: [MatBadge, MatCommonModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatBadgeModule, imports: [A11yModule, MatCommonModule, MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatBadgeModule, decorators: [{\n type: NgModule,\n args: [{\n // Note: we _shouldn't_ have to import `_MatBadgeStyleLoader`,\n // but it seems to be necessary for tests.\n imports: [A11yModule, MatCommonModule, MatBadge, _MatBadgeStyleLoader],\n exports: [MatBadge, MatCommonModule],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatBadge, MatBadgeModule };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, ANIMATION_MODULE_TYPE, numberAttribute, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, Inject, Input, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { MatCommonModule } from '@angular/material/core';\n\n/** Injection token to be used to override the default options for `mat-progress-bar`. */\nconst MAT_PROGRESS_BAR_DEFAULT_OPTIONS = new InjectionToken('MAT_PROGRESS_BAR_DEFAULT_OPTIONS');\n/**\n * Injection token used to provide the current location to `MatProgressBar`.\n * Used to handle server-side rendering and to stub out during unit tests.\n * @docs-private\n */\nconst MAT_PROGRESS_BAR_LOCATION = new InjectionToken('mat-progress-bar-location', { providedIn: 'root', factory: MAT_PROGRESS_BAR_LOCATION_FACTORY });\n/** @docs-private */\nfunction MAT_PROGRESS_BAR_LOCATION_FACTORY() {\n const _document = inject(DOCUMENT);\n const _location = _document ? _document.location : null;\n return {\n // Note that this needs to be a function, rather than a property, because Angular\n // will only resolve it once, but we want the current path on each call.\n getPathname: () => (_location ? _location.pathname + _location.search : ''),\n };\n}\nclass MatProgressBar {\n constructor(_elementRef, _ngZone, _changeDetectorRef, _animationMode, defaults) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._changeDetectorRef = _changeDetectorRef;\n this._animationMode = _animationMode;\n /** Flag that indicates whether NoopAnimations mode is set to true. */\n this._isNoopAnimation = false;\n this._defaultColor = 'primary';\n this._value = 0;\n this._bufferValue = 0;\n /**\n * Event emitted when animation of the primary progress bar completes. This event will not\n * be emitted when animations are disabled, nor will it be emitted for modes with continuous\n * animations (indeterminate and query).\n */\n this.animationEnd = new EventEmitter();\n this._mode = 'determinate';\n /** Event handler for `transitionend` events. */\n this._transitionendHandler = (event) => {\n if (this.animationEnd.observers.length === 0 ||\n !event.target ||\n !event.target.classList.contains('mdc-linear-progress__primary-bar')) {\n return;\n }\n if (this.mode === 'determinate' || this.mode === 'buffer') {\n this._ngZone.run(() => this.animationEnd.next({ value: this.value }));\n }\n };\n this._isNoopAnimation = _animationMode === 'NoopAnimations';\n if (defaults) {\n if (defaults.color) {\n this.color = this._defaultColor = defaults.color;\n }\n this.mode = defaults.mode || this.mode;\n }\n }\n // TODO: should be typed as `ThemePalette` but internal apps pass in arbitrary strings.\n /**\n * Theme color of the progress bar. This API is supported in M2 themes only, it\n * has no effect in M3 themes.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.io/guide/theming#using-component-color-variants.\n */\n get color() {\n return this._color || this._defaultColor;\n }\n set color(value) {\n this._color = value;\n }\n /** Value of the progress bar. Defaults to zero. Mirrored to aria-valuenow. */\n get value() {\n return this._value;\n }\n set value(v) {\n this._value = clamp(v || 0);\n this._changeDetectorRef.markForCheck();\n }\n /** Buffer value of the progress bar. Defaults to zero. */\n get bufferValue() {\n return this._bufferValue || 0;\n }\n set bufferValue(v) {\n this._bufferValue = clamp(v || 0);\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Mode of the progress bar.\n *\n * Input must be one of these values: determinate, indeterminate, buffer, query, defaults to\n * 'determinate'.\n * Mirrored to mode attribute.\n */\n get mode() {\n return this._mode;\n }\n set mode(value) {\n // Note that we don't technically need a getter and a setter here,\n // but we use it to match the behavior of the existing mat-progress-bar.\n this._mode = value;\n this._changeDetectorRef.markForCheck();\n }\n ngAfterViewInit() {\n // Run outside angular so change detection didn't get triggered on every transition end\n // instead only on the animation that we care about (primary value bar's transitionend)\n this._ngZone.runOutsideAngular(() => {\n this._elementRef.nativeElement.addEventListener('transitionend', this._transitionendHandler);\n });\n }\n ngOnDestroy() {\n this._elementRef.nativeElement.removeEventListener('transitionend', this._transitionendHandler);\n }\n /** Gets the transform style that should be applied to the primary bar. */\n _getPrimaryBarTransform() {\n return `scaleX(${this._isIndeterminate() ? 1 : this.value / 100})`;\n }\n /** Gets the `flex-basis` value that should be applied to the buffer bar. */\n _getBufferBarFlexBasis() {\n return `${this.mode === 'buffer' ? this.bufferValue : 100}%`;\n }\n /** Returns whether the progress bar is indeterminate. */\n _isIndeterminate() {\n return this.mode === 'indeterminate' || this.mode === 'query';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatProgressBar, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: ANIMATION_MODULE_TYPE, optional: true }, { token: MAT_PROGRESS_BAR_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"18.2.0-next.2\", type: MatProgressBar, isStandalone: true, selector: \"mat-progress-bar\", inputs: { color: \"color\", value: [\"value\", \"value\", numberAttribute], bufferValue: [\"bufferValue\", \"bufferValue\", numberAttribute], mode: \"mode\" }, outputs: { animationEnd: \"animationEnd\" }, host: { attributes: { \"role\": \"progressbar\", \"aria-valuemin\": \"0\", \"aria-valuemax\": \"100\", \"tabindex\": \"-1\" }, properties: { \"attr.aria-valuenow\": \"_isIndeterminate() ? null : value\", \"attr.mode\": \"mode\", \"class\": \"\\\"mat-\\\" + color\", \"class._mat-animation-noopable\": \"_isNoopAnimation\", \"class.mdc-linear-progress--animation-ready\": \"!_isNoopAnimation\", \"class.mdc-linear-progress--indeterminate\": \"_isIndeterminate()\" }, classAttribute: \"mat-mdc-progress-bar mdc-linear-progress\" }, exportAs: [\"matProgressBar\"], ngImport: i0, template: \"\\n
\\n
\\n \\n @if (mode === 'buffer') {\\n
\\n }\\n\\n\\n \\n\\n
\\n \\n
\\n\", styles: [\".mat-mdc-progress-bar{display:block;text-align:start}.mat-mdc-progress-bar[mode=query]{transform:scaleX(-1)}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-dots,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__secondary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__bar-inner.mdc-linear-progress__bar-inner{animation:none}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-bar{transition:transform 1ms}.mdc-linear-progress{position:relative;width:100%;transform:translateZ(0);outline:1px solid rgba(0,0,0,0);overflow-x:hidden;transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);height:max(var(--mdc-linear-progress-track-height),var(--mdc-linear-progress-active-indicator-height))}.cdk-high-contrast-active .mdc-linear-progress{outline-color:CanvasText}.mdc-linear-progress__bar{position:absolute;top:0;bottom:0;margin:auto 0;width:100%;animation:none;transform-origin:top left;transition:transform 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);height:var(--mdc-linear-progress-active-indicator-height)}.mdc-linear-progress--indeterminate .mdc-linear-progress__bar{transition:none}[dir=rtl] .mdc-linear-progress__bar{right:0;transform-origin:center right}.mdc-linear-progress__bar-inner{display:inline-block;position:absolute;width:100%;animation:none;border-top-style:solid;border-color:var(--mdc-linear-progress-active-indicator-color, var(--mat-app-primary));border-top-width:var(--mdc-linear-progress-active-indicator-height)}.mdc-linear-progress__buffer{display:flex;position:absolute;top:0;bottom:0;margin:auto 0;width:100%;overflow:hidden;height:var(--mdc-linear-progress-track-height);border-radius:var(--mdc-linear-progress-track-shape, var(--mat-app-corner-none))}.mdc-linear-progress__buffer-dots{-webkit-mask-image:url(\\\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E\\\");mask-image:url(\\\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E\\\");background-repeat:repeat-x;flex:auto;transform:rotate(180deg);animation:mdc-linear-progress-buffering 250ms infinite linear;background-color:var(--mdc-linear-progress-track-color, var(--mat-app-surface-variant))}.cdk-high-contrast-active .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}[dir=rtl] .mdc-linear-progress__buffer-dots{animation:mdc-linear-progress-buffering-reverse 250ms infinite linear;transform:rotate(0)}.mdc-linear-progress__buffer-bar{flex:0 1 100%;transition:flex-basis 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);background-color:var(--mdc-linear-progress-track-color, var(--mat-app-surface-variant))}.mdc-linear-progress__primary-bar{transform:scaleX(0)}.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{left:-145.166611%}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation:mdc-linear-progress-primary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-primary-indeterminate-scale 2s infinite linear}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation-name:mdc-linear-progress-primary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{right:-145.166611%;left:auto}.mdc-linear-progress__secondary-bar{display:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{left:-54.888891%;display:block}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation:mdc-linear-progress-secondary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-secondary-indeterminate-scale 2s infinite linear}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation-name:mdc-linear-progress-secondary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{right:-54.888891%;left:auto}@keyframes mdc-linear-progress-buffering{from{transform:rotate(180deg) translateX(calc(var(--mdc-linear-progress-track-height) * -2.5))}}@keyframes mdc-linear-progress-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(83.67142%)}100%{transform:translateX(200.611057%)}}@keyframes mdc-linear-progress-primary-indeterminate-scale{0%{transform:scaleX(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(84.386165%)}100%{transform:translateX(160.277782%)}}@keyframes mdc-linear-progress-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-primary-indeterminate-translate-reverse{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(-83.67142%)}100%{transform:translateX(-200.611057%)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate-reverse{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(-37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(-84.386165%)}100%{transform:translateX(-160.277782%)}}@keyframes mdc-linear-progress-buffering-reverse{from{transform:translateX(-10px)}}\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatProgressBar, decorators: [{\n type: Component,\n args: [{ selector: 'mat-progress-bar', exportAs: 'matProgressBar', host: {\n 'role': 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n // set tab index to -1 so screen readers will read the aria-label\n // Note: there is a known issue with JAWS that does not read progressbar aria labels on FireFox\n 'tabindex': '-1',\n '[attr.aria-valuenow]': '_isIndeterminate() ? null : value',\n '[attr.mode]': 'mode',\n 'class': 'mat-mdc-progress-bar mdc-linear-progress',\n '[class]': '\"mat-\" + color',\n '[class._mat-animation-noopable]': '_isNoopAnimation',\n '[class.mdc-linear-progress--animation-ready]': '!_isNoopAnimation',\n '[class.mdc-linear-progress--indeterminate]': '_isIndeterminate()',\n }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, template: \"\\n
\\n
\\n \\n @if (mode === 'buffer') {\\n
\\n }\\n\\n\\n \\n\\n
\\n \\n
\\n\", styles: [\".mat-mdc-progress-bar{display:block;text-align:start}.mat-mdc-progress-bar[mode=query]{transform:scaleX(-1)}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-dots,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__secondary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__bar-inner.mdc-linear-progress__bar-inner{animation:none}.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__primary-bar,.mat-mdc-progress-bar._mat-animation-noopable .mdc-linear-progress__buffer-bar{transition:transform 1ms}.mdc-linear-progress{position:relative;width:100%;transform:translateZ(0);outline:1px solid rgba(0,0,0,0);overflow-x:hidden;transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);height:max(var(--mdc-linear-progress-track-height),var(--mdc-linear-progress-active-indicator-height))}.cdk-high-contrast-active .mdc-linear-progress{outline-color:CanvasText}.mdc-linear-progress__bar{position:absolute;top:0;bottom:0;margin:auto 0;width:100%;animation:none;transform-origin:top left;transition:transform 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);height:var(--mdc-linear-progress-active-indicator-height)}.mdc-linear-progress--indeterminate .mdc-linear-progress__bar{transition:none}[dir=rtl] .mdc-linear-progress__bar{right:0;transform-origin:center right}.mdc-linear-progress__bar-inner{display:inline-block;position:absolute;width:100%;animation:none;border-top-style:solid;border-color:var(--mdc-linear-progress-active-indicator-color, var(--mat-app-primary));border-top-width:var(--mdc-linear-progress-active-indicator-height)}.mdc-linear-progress__buffer{display:flex;position:absolute;top:0;bottom:0;margin:auto 0;width:100%;overflow:hidden;height:var(--mdc-linear-progress-track-height);border-radius:var(--mdc-linear-progress-track-shape, var(--mat-app-corner-none))}.mdc-linear-progress__buffer-dots{-webkit-mask-image:url(\\\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E\\\");mask-image:url(\\\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='xMinYMin slice'%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3C/svg%3E\\\");background-repeat:repeat-x;flex:auto;transform:rotate(180deg);animation:mdc-linear-progress-buffering 250ms infinite linear;background-color:var(--mdc-linear-progress-track-color, var(--mat-app-surface-variant))}.cdk-high-contrast-active .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}[dir=rtl] .mdc-linear-progress__buffer-dots{animation:mdc-linear-progress-buffering-reverse 250ms infinite linear;transform:rotate(0)}.mdc-linear-progress__buffer-bar{flex:0 1 100%;transition:flex-basis 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1);background-color:var(--mdc-linear-progress-track-color, var(--mat-app-surface-variant))}.mdc-linear-progress__primary-bar{transform:scaleX(0)}.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{left:-145.166611%}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation:mdc-linear-progress-primary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-primary-indeterminate-scale 2s infinite linear}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--animation-ready .mdc-linear-progress__primary-bar{animation-name:mdc-linear-progress-primary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--indeterminate .mdc-linear-progress__primary-bar{right:-145.166611%;left:auto}.mdc-linear-progress__secondary-bar{display:none}.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{left:-54.888891%;display:block}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation:mdc-linear-progress-secondary-indeterminate-translate 2s infinite linear}.mdc-linear-progress--indeterminate.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar>.mdc-linear-progress__bar-inner{animation:mdc-linear-progress-secondary-indeterminate-scale 2s infinite linear}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--animation-ready .mdc-linear-progress__secondary-bar{animation-name:mdc-linear-progress-secondary-indeterminate-translate-reverse}[dir=rtl] .mdc-linear-progress.mdc-linear-progress--indeterminate .mdc-linear-progress__secondary-bar{right:-54.888891%;left:auto}@keyframes mdc-linear-progress-buffering{from{transform:rotate(180deg) translateX(calc(var(--mdc-linear-progress-track-height) * -2.5))}}@keyframes mdc-linear-progress-primary-indeterminate-translate{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(83.67142%)}100%{transform:translateX(200.611057%)}}@keyframes mdc-linear-progress-primary-indeterminate-scale{0%{transform:scaleX(0.08)}36.65%{animation-timing-function:cubic-bezier(0.334731, 0.12482, 0.785844, 1);transform:scaleX(0.08)}69.15%{animation-timing-function:cubic-bezier(0.06, 0.11, 0.6, 1);transform:scaleX(0.661479)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(84.386165%)}100%{transform:translateX(160.277782%)}}@keyframes mdc-linear-progress-secondary-indeterminate-scale{0%{animation-timing-function:cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);transform:scaleX(0.08)}19.15%{animation-timing-function:cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);transform:scaleX(0.457104)}44.15%{animation-timing-function:cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);transform:scaleX(0.72796)}100%{transform:scaleX(0.08)}}@keyframes mdc-linear-progress-primary-indeterminate-translate-reverse{0%{transform:translateX(0)}20%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(0)}59.15%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(-83.67142%)}100%{transform:translateX(-200.611057%)}}@keyframes mdc-linear-progress-secondary-indeterminate-translate-reverse{0%{animation-timing-function:cubic-bezier(0.15, 0, 0.515058, 0.409685);transform:translateX(0)}25%{animation-timing-function:cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);transform:translateX(-37.651913%)}48.35%{animation-timing-function:cubic-bezier(0.4, 0.627035, 0.6, 0.902026);transform:translateX(-84.386165%)}100%{transform:translateX(-160.277782%)}}@keyframes mdc-linear-progress-buffering-reverse{from{transform:translateX(-10px)}}\"] }]\n }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_PROGRESS_BAR_DEFAULT_OPTIONS]\n }] }], propDecorators: { color: [{\n type: Input\n }], value: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], bufferValue: [{\n type: Input,\n args: [{ transform: numberAttribute }]\n }], animationEnd: [{\n type: Output\n }], mode: [{\n type: Input\n }] } });\n/** Clamps a value to be between two numbers, by default 0 and 100. */\nfunction clamp(v, min = 0, max = 100) {\n return Math.max(min, Math.min(max, v));\n}\n\nclass MatProgressBarModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatProgressBarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatProgressBarModule, imports: [MatProgressBar], exports: [MatProgressBar, MatCommonModule] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatProgressBarModule, imports: [MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatProgressBarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatProgressBar],\n exports: [MatProgressBar, MatCommonModule],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_PROGRESS_BAR_DEFAULT_OPTIONS, MAT_PROGRESS_BAR_LOCATION, MAT_PROGRESS_BAR_LOCATION_FACTORY, MatProgressBar, MatProgressBarModule };\n","import * as i1 from '@angular/cdk/bidi';\nimport { _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy, isDataSource, _ViewRepeaterOperation, _DisposeViewRepeaterStrategy } from '@angular/cdk/collections';\nexport { DataSource } from '@angular/cdk/collections';\nimport * as i2 from '@angular/cdk/platform';\nimport * as i3 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, booleanAttribute, Inject, Optional, Input, ContentChild, inject, NgZone, Injectable, Component, ChangeDetectionStrategy, ViewEncapsulation, EmbeddedViewRef, EventEmitter, Injector, afterNextRender, Attribute, SkipSelf, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';\nimport { Subject, BehaviorSubject, isObservable, of } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/**\n * Used to provide a table to some of the sub-components without causing a circular dependency.\n * @docs-private\n */\nconst CDK_TABLE = new InjectionToken('CDK_TABLE');\n/** Injection token that can be used to specify the text column options. */\nconst TEXT_COLUMN_OPTIONS = new InjectionToken('text-column-options');\n\n/**\n * Cell definition for a CDK table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\nclass CdkCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkCellDef, isStandalone: true, selector: \"[cdkCellDef]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkCellDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkCellDef]',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }] });\n/**\n * Header cell definition for a CDK table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\nclass CdkHeaderCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkHeaderCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkHeaderCellDef, isStandalone: true, selector: \"[cdkHeaderCellDef]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkHeaderCellDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkHeaderCellDef]',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }] });\n/**\n * Footer cell definition for a CDK table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\nclass CdkFooterCellDef {\n constructor(/** @docs-private */ template) {\n this.template = template;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkFooterCellDef, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkFooterCellDef, isStandalone: true, selector: \"[cdkFooterCellDef]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkFooterCellDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkFooterCellDef]',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }] });\n/**\n * Column definition for the CDK table.\n * Defines a set of cells available for a table column.\n */\nclass CdkColumnDef {\n /** Unique name for this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._setNameInput(name);\n }\n /** Whether the cell is sticky. */\n get sticky() {\n return this._sticky;\n }\n set sticky(value) {\n if (value !== this._sticky) {\n this._sticky = value;\n this._hasStickyChanged = true;\n }\n }\n /**\n * Whether this column should be sticky positioned on the end of the row. Should make sure\n * that it mimics the `CanStick` mixin such that `_hasStickyChanged` is set to true if the value\n * has been changed.\n */\n get stickyEnd() {\n return this._stickyEnd;\n }\n set stickyEnd(value) {\n if (value !== this._stickyEnd) {\n this._stickyEnd = value;\n this._hasStickyChanged = true;\n }\n }\n constructor(_table) {\n this._table = _table;\n this._hasStickyChanged = false;\n this._sticky = false;\n this._stickyEnd = false;\n }\n /** Whether the sticky state has changed. */\n hasStickyChanged() {\n const hasStickyChanged = this._hasStickyChanged;\n this.resetStickyChanged();\n return hasStickyChanged;\n }\n /** Resets the sticky changed state. */\n resetStickyChanged() {\n this._hasStickyChanged = false;\n }\n /**\n * Overridable method that sets the css classes that will be added to every cell in this\n * column.\n * In the future, columnCssClassName will change from type string[] to string and this\n * will set a single string value.\n * @docs-private\n */\n _updateColumnCssClassName() {\n this._columnCssClassName = [`cdk-column-${this.cssClassFriendlyName}`];\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setNameInput(value) {\n // If the directive is set without a name (updated programmatically), then this setter will\n // trigger with an empty string and should not overwrite the programmatically set value.\n if (value) {\n this._name = value;\n this.cssClassFriendlyName = value.replace(/[^a-z0-9_-]/gi, '-');\n this._updateColumnCssClassName();\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkColumnDef, deps: [{ token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: CdkColumnDef, isStandalone: true, selector: \"[cdkColumnDef]\", inputs: { name: [\"cdkColumnDef\", \"name\"], sticky: [\"sticky\", \"sticky\", booleanAttribute], stickyEnd: [\"stickyEnd\", \"stickyEnd\", booleanAttribute] }, providers: [{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }], queries: [{ propertyName: \"cell\", first: true, predicate: CdkCellDef, descendants: true }, { propertyName: \"headerCell\", first: true, predicate: CdkHeaderCellDef, descendants: true }, { propertyName: \"footerCell\", first: true, predicate: CdkFooterCellDef, descendants: true }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkColumnDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkColumnDef]',\n providers: [{ provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: CdkColumnDef }],\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }], propDecorators: { name: [{\n type: Input,\n args: ['cdkColumnDef']\n }], sticky: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], stickyEnd: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], cell: [{\n type: ContentChild,\n args: [CdkCellDef]\n }], headerCell: [{\n type: ContentChild,\n args: [CdkHeaderCellDef]\n }], footerCell: [{\n type: ContentChild,\n args: [CdkFooterCellDef]\n }] } });\n/** Base class for the cells. Adds a CSS classname that identifies the column it renders in. */\nclass BaseCdkCell {\n constructor(columnDef, elementRef) {\n elementRef.nativeElement.classList.add(...columnDef._columnCssClassName);\n }\n}\n/** Header cell template container that adds the right classes and role. */\nclass CdkHeaderCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n super(columnDef, elementRef);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkHeaderCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkHeaderCell, isStandalone: true, selector: \"cdk-header-cell, th[cdk-header-cell]\", host: { attributes: { \"role\": \"columnheader\" }, classAttribute: \"cdk-header-cell\" }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkHeaderCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-header-cell, th[cdk-header-cell]',\n host: {\n 'class': 'cdk-header-cell',\n 'role': 'columnheader',\n },\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: CdkColumnDef }, { type: i0.ElementRef }] });\n/** Footer cell template container that adds the right classes and role. */\nclass CdkFooterCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n super(columnDef, elementRef);\n const role = columnDef._table?._getCellRole();\n if (role) {\n elementRef.nativeElement.setAttribute('role', role);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkFooterCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkFooterCell, isStandalone: true, selector: \"cdk-footer-cell, td[cdk-footer-cell]\", host: { classAttribute: \"cdk-footer-cell\" }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkFooterCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-footer-cell, td[cdk-footer-cell]',\n host: {\n 'class': 'cdk-footer-cell',\n },\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: CdkColumnDef }, { type: i0.ElementRef }] });\n/** Cell template container that adds the right classes and role. */\nclass CdkCell extends BaseCdkCell {\n constructor(columnDef, elementRef) {\n super(columnDef, elementRef);\n const role = columnDef._table?._getCellRole();\n if (role) {\n elementRef.nativeElement.setAttribute('role', role);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkCell, deps: [{ token: CdkColumnDef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkCell, isStandalone: true, selector: \"cdk-cell, td[cdk-cell]\", host: { classAttribute: \"cdk-cell\" }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-cell, td[cdk-cell]',\n host: {\n 'class': 'cdk-cell',\n },\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: CdkColumnDef }, { type: i0.ElementRef }] });\n\n/**\n * @docs-private\n */\nclass _Schedule {\n constructor() {\n this.tasks = [];\n this.endTasks = [];\n }\n}\n/** Injection token used to provide a coalesced style scheduler. */\nconst _COALESCED_STYLE_SCHEDULER = new InjectionToken('_COALESCED_STYLE_SCHEDULER');\n/**\n * Allows grouping up CSSDom mutations after the current execution context.\n * This can significantly improve performance when separate consecutive functions are\n * reading from the CSSDom and then mutating it.\n *\n * @docs-private\n */\nclass _CoalescedStyleScheduler {\n constructor(_unusedNgZone) {\n this._currentSchedule = null;\n this._ngZone = inject(NgZone);\n }\n /**\n * Schedules the specified task to run at the end of the current VM turn.\n */\n schedule(task) {\n this._createScheduleIfNeeded();\n this._currentSchedule.tasks.push(task);\n }\n /**\n * Schedules the specified task to run after other scheduled tasks at the end of the current\n * VM turn.\n */\n scheduleEnd(task) {\n this._createScheduleIfNeeded();\n this._currentSchedule.endTasks.push(task);\n }\n _createScheduleIfNeeded() {\n if (this._currentSchedule) {\n return;\n }\n this._currentSchedule = new _Schedule();\n this._ngZone.runOutsideAngular(() => \n // TODO(mmalerba): Scheduling this using something that runs less frequently\n // (e.g. requestAnimationFrame, setTimeout, etc.) causes noticeable jank with the column\n // resizer. We should audit the usages of schedule / scheduleEnd in that component and see\n // if we can refactor it so that we don't need to flush the tasks quite so frequently.\n queueMicrotask(() => {\n while (this._currentSchedule.tasks.length || this._currentSchedule.endTasks.length) {\n const schedule = this._currentSchedule;\n // Capture new tasks scheduled by the current set of tasks.\n this._currentSchedule = new _Schedule();\n for (const task of schedule.tasks) {\n task();\n }\n for (const task of schedule.endTasks) {\n task();\n }\n }\n this._currentSchedule = null;\n }));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: _CoalescedStyleScheduler, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: _CoalescedStyleScheduler }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: _CoalescedStyleScheduler, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.NgZone }] });\n\n/**\n * The row template that can be used by the mat-table. Should not be used outside of the\n * material library.\n */\nconst CDK_ROW_TEMPLATE = ``;\n/**\n * Base class for the CdkHeaderRowDef and CdkRowDef that handles checking their columns inputs\n * for changes and notifying the table.\n */\nclass BaseRowDef {\n constructor(\n /** @docs-private */ template, _differs) {\n this.template = template;\n this._differs = _differs;\n }\n ngOnChanges(changes) {\n // Create a new columns differ if one does not yet exist. Initialize it based on initial value\n // of the columns property or an empty array if none is provided.\n if (!this._columnsDiffer) {\n const columns = (changes['columns'] && changes['columns'].currentValue) || [];\n this._columnsDiffer = this._differs.find(columns).create();\n this._columnsDiffer.diff(columns);\n }\n }\n /**\n * Returns the difference between the current columns and the columns from the last diff, or null\n * if there is no difference.\n */\n getColumnsDiff() {\n return this._columnsDiffer.diff(this.columns);\n }\n /** Gets this row def's relevant cell template from the provided column def. */\n extractCellTemplate(column) {\n if (this instanceof CdkHeaderRowDef) {\n return column.headerCell.template;\n }\n if (this instanceof CdkFooterRowDef) {\n return column.footerCell.template;\n }\n else {\n return column.cell.template;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: BaseRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: BaseRowDef, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: BaseRowDef, decorators: [{\n type: Directive\n }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }] });\n/**\n * Header row definition for the CDK table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\nclass CdkHeaderRowDef extends BaseRowDef {\n /** Whether the row is sticky. */\n get sticky() {\n return this._sticky;\n }\n set sticky(value) {\n if (value !== this._sticky) {\n this._sticky = value;\n this._hasStickyChanged = true;\n }\n }\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n this._hasStickyChanged = false;\n this._sticky = false;\n }\n // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n // Explicitly define it so that the method is called as part of the Angular lifecycle.\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n }\n /** Whether the sticky state has changed. */\n hasStickyChanged() {\n const hasStickyChanged = this._hasStickyChanged;\n this.resetStickyChanged();\n return hasStickyChanged;\n }\n /** Resets the sticky changed state. */\n resetStickyChanged() {\n this._hasStickyChanged = false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkHeaderRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: CdkHeaderRowDef, isStandalone: true, selector: \"[cdkHeaderRowDef]\", inputs: { columns: [\"cdkHeaderRowDef\", \"columns\"], sticky: [\"cdkHeaderRowDefSticky\", \"sticky\", booleanAttribute] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkHeaderRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkHeaderRowDef]',\n inputs: [{ name: 'columns', alias: 'cdkHeaderRowDef' }],\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }], propDecorators: { sticky: [{\n type: Input,\n args: [{ alias: 'cdkHeaderRowDefSticky', transform: booleanAttribute }]\n }] } });\n/**\n * Footer row definition for the CDK table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\nclass CdkFooterRowDef extends BaseRowDef {\n /** Whether the row is sticky. */\n get sticky() {\n return this._sticky;\n }\n set sticky(value) {\n if (value !== this._sticky) {\n this._sticky = value;\n this._hasStickyChanged = true;\n }\n }\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n this._hasStickyChanged = false;\n this._sticky = false;\n }\n // Prerender fails to recognize that ngOnChanges in a part of this class through inheritance.\n // Explicitly define it so that the method is called as part of the Angular lifecycle.\n ngOnChanges(changes) {\n super.ngOnChanges(changes);\n }\n /** Whether the sticky state has changed. */\n hasStickyChanged() {\n const hasStickyChanged = this._hasStickyChanged;\n this.resetStickyChanged();\n return hasStickyChanged;\n }\n /** Resets the sticky changed state. */\n resetStickyChanged() {\n this._hasStickyChanged = false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkFooterRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: CdkFooterRowDef, isStandalone: true, selector: \"[cdkFooterRowDef]\", inputs: { columns: [\"cdkFooterRowDef\", \"columns\"], sticky: [\"cdkFooterRowDefSticky\", \"sticky\", booleanAttribute] }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkFooterRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkFooterRowDef]',\n inputs: [{ name: 'columns', alias: 'cdkFooterRowDef' }],\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }], propDecorators: { sticky: [{\n type: Input,\n args: [{ alias: 'cdkFooterRowDefSticky', transform: booleanAttribute }]\n }] } });\n/**\n * Data row definition for the CDK table.\n * Captures the header row's template and other row properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\nclass CdkRowDef extends BaseRowDef {\n // TODO(andrewseguin): Add an input for providing a switch function to determine\n // if this template should be used.\n constructor(template, _differs, _table) {\n super(template, _differs);\n this._table = _table;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkRowDef, deps: [{ token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: CDK_TABLE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkRowDef, isStandalone: true, selector: \"[cdkRowDef]\", inputs: { columns: [\"cdkRowDefColumns\", \"columns\"], when: [\"cdkRowDefWhen\", \"when\"] }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkRowDef]',\n inputs: [\n { name: 'columns', alias: 'cdkRowDefColumns' },\n { name: 'when', alias: 'cdkRowDefWhen' },\n ],\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_TABLE]\n }, {\n type: Optional\n }] }] });\n/**\n * Outlet for rendering cells inside of a row or header row.\n * @docs-private\n */\nclass CdkCellOutlet {\n /**\n * Static property containing the latest constructed instance of this class.\n * Used by the CDK table when each CdkHeaderRow and CdkRow component is created using\n * createEmbeddedView. After one of these components are created, this property will provide\n * a handle to provide that component's cells and context. After init, the CdkCellOutlet will\n * construct the cells with the provided context.\n */\n static { this.mostRecentCellOutlet = null; }\n constructor(_viewContainer) {\n this._viewContainer = _viewContainer;\n CdkCellOutlet.mostRecentCellOutlet = this;\n }\n ngOnDestroy() {\n // If this was the last outlet being rendered in the view, remove the reference\n // from the static property after it has been destroyed to avoid leaking memory.\n if (CdkCellOutlet.mostRecentCellOutlet === this) {\n CdkCellOutlet.mostRecentCellOutlet = null;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkCellOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkCellOutlet, isStandalone: true, selector: \"[cdkCellOutlet]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkCellOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkCellOutlet]',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ViewContainerRef }] });\n/** Header template container that contains the cell outlet. Adds the right class and role. */\nclass CdkHeaderRow {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkHeaderRow, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkHeaderRow, isStandalone: true, selector: \"cdk-header-row, tr[cdk-header-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-header-row\" }, ngImport: i0, template: \"\", isInline: true, dependencies: [{ kind: \"directive\", type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkHeaderRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-header-row, tr[cdk-header-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-header-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [CdkCellOutlet],\n }]\n }] });\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\nclass CdkFooterRow {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkFooterRow, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkFooterRow, isStandalone: true, selector: \"cdk-footer-row, tr[cdk-footer-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-footer-row\" }, ngImport: i0, template: \"\", isInline: true, dependencies: [{ kind: \"directive\", type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkFooterRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-footer-row, tr[cdk-footer-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-footer-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [CdkCellOutlet],\n }]\n }] });\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\nclass CdkRow {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkRow, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkRow, isStandalone: true, selector: \"cdk-row, tr[cdk-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"cdk-row\" }, ngImport: i0, template: \"\", isInline: true, dependencies: [{ kind: \"directive\", type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkRow, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-row, tr[cdk-row]',\n template: CDK_ROW_TEMPLATE,\n host: {\n 'class': 'cdk-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [CdkCellOutlet],\n }]\n }] });\n/** Row that can be used to display a message when no data is shown in the table. */\nclass CdkNoDataRow {\n constructor(templateRef) {\n this.templateRef = templateRef;\n this._contentClassName = 'cdk-no-data-row';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkNoDataRow, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkNoDataRow, isStandalone: true, selector: \"ng-template[cdkNoDataRow]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkNoDataRow, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[cdkNoDataRow]',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.TemplateRef }] });\n\n/**\n * List of all possible directions that can be used for sticky positioning.\n * @docs-private\n */\nconst STICKY_DIRECTIONS = ['top', 'bottom', 'left', 'right'];\n/**\n * Applies and removes sticky positioning styles to the `CdkTable` rows and columns cells.\n * @docs-private\n */\nclass StickyStyler {\n /**\n * @param _isNativeHtmlTable Whether the sticky logic should be based on a table\n * that uses the native `` element.\n * @param _stickCellCss The CSS class that will be applied to every row/cell that has\n * sticky positioning applied.\n * @param direction The directionality context of the table (ltr/rtl); affects column positioning\n * by reversing left/right positions.\n * @param _isBrowser Whether the table is currently being rendered on the server or the client.\n * @param _needsPositionStickyOnElement Whether we need to specify position: sticky on cells\n * using inline styles. If false, it is assumed that position: sticky is included in\n * the component stylesheet for _stickCellCss.\n * @param _positionListener A listener that is notified of changes to sticky rows/columns\n * and their dimensions.\n */\n constructor(_isNativeHtmlTable, _stickCellCss, direction, _coalescedStyleScheduler, _isBrowser = true, _needsPositionStickyOnElement = true, _positionListener) {\n this._isNativeHtmlTable = _isNativeHtmlTable;\n this._stickCellCss = _stickCellCss;\n this.direction = direction;\n this._coalescedStyleScheduler = _coalescedStyleScheduler;\n this._isBrowser = _isBrowser;\n this._needsPositionStickyOnElement = _needsPositionStickyOnElement;\n this._positionListener = _positionListener;\n this._cachedCellWidths = [];\n this._borderCellCss = {\n 'top': `${_stickCellCss}-border-elem-top`,\n 'bottom': `${_stickCellCss}-border-elem-bottom`,\n 'left': `${_stickCellCss}-border-elem-left`,\n 'right': `${_stickCellCss}-border-elem-right`,\n };\n }\n /**\n * Clears the sticky positioning styles from the row and its cells by resetting the `position`\n * style, setting the zIndex to 0, and unsetting each provided sticky direction.\n * @param rows The list of rows that should be cleared from sticking in the provided directions\n * @param stickyDirections The directions that should no longer be set as sticky on the rows.\n */\n clearStickyPositioning(rows, stickyDirections) {\n const elementsToClear = [];\n for (const row of rows) {\n // If the row isn't an element (e.g. if it's an `ng-container`),\n // it won't have inline styles or `children` so we skip it.\n if (row.nodeType !== row.ELEMENT_NODE) {\n continue;\n }\n elementsToClear.push(row);\n for (let i = 0; i < row.children.length; i++) {\n elementsToClear.push(row.children[i]);\n }\n }\n // Coalesce with sticky row/column updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n for (const element of elementsToClear) {\n this._removeStickyStyle(element, stickyDirections);\n }\n });\n }\n /**\n * Applies sticky left and right positions to the cells of each row according to the sticky\n * states of the rendered column definitions.\n * @param rows The rows that should have its set of cells stuck according to the sticky states.\n * @param stickyStartStates A list of boolean states where each state represents whether the cell\n * in this index position should be stuck to the start of the row.\n * @param stickyEndStates A list of boolean states where each state represents whether the cell\n * in this index position should be stuck to the end of the row.\n * @param recalculateCellWidths Whether the sticky styler should recalculate the width of each\n * column cell. If `false` cached widths will be used instead.\n */\n updateStickyColumns(rows, stickyStartStates, stickyEndStates, recalculateCellWidths = true) {\n if (!rows.length ||\n !this._isBrowser ||\n !(stickyStartStates.some(state => state) || stickyEndStates.some(state => state))) {\n if (this._positionListener) {\n this._positionListener.stickyColumnsUpdated({ sizes: [] });\n this._positionListener.stickyEndColumnsUpdated({ sizes: [] });\n }\n return;\n }\n // Coalesce with sticky row updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n const firstRow = rows[0];\n const numCells = firstRow.children.length;\n const cellWidths = this._getCellWidths(firstRow, recalculateCellWidths);\n const startPositions = this._getStickyStartColumnPositions(cellWidths, stickyStartStates);\n const endPositions = this._getStickyEndColumnPositions(cellWidths, stickyEndStates);\n const lastStickyStart = stickyStartStates.lastIndexOf(true);\n const firstStickyEnd = stickyEndStates.indexOf(true);\n const isRtl = this.direction === 'rtl';\n const start = isRtl ? 'right' : 'left';\n const end = isRtl ? 'left' : 'right';\n for (const row of rows) {\n for (let i = 0; i < numCells; i++) {\n const cell = row.children[i];\n if (stickyStartStates[i]) {\n this._addStickyStyle(cell, start, startPositions[i], i === lastStickyStart);\n }\n if (stickyEndStates[i]) {\n this._addStickyStyle(cell, end, endPositions[i], i === firstStickyEnd);\n }\n }\n }\n if (this._positionListener) {\n this._positionListener.stickyColumnsUpdated({\n sizes: lastStickyStart === -1\n ? []\n : cellWidths\n .slice(0, lastStickyStart + 1)\n .map((width, index) => (stickyStartStates[index] ? width : null)),\n });\n this._positionListener.stickyEndColumnsUpdated({\n sizes: firstStickyEnd === -1\n ? []\n : cellWidths\n .slice(firstStickyEnd)\n .map((width, index) => (stickyEndStates[index + firstStickyEnd] ? width : null))\n .reverse(),\n });\n }\n });\n }\n /**\n * Applies sticky positioning to the row's cells if using the native table layout, and to the\n * row itself otherwise.\n * @param rowsToStick The list of rows that should be stuck according to their corresponding\n * sticky state and to the provided top or bottom position.\n * @param stickyStates A list of boolean states where each state represents whether the row\n * should be stuck in the particular top or bottom position.\n * @param position The position direction in which the row should be stuck if that row should be\n * sticky.\n *\n */\n stickRows(rowsToStick, stickyStates, position) {\n // Since we can't measure the rows on the server, we can't stick the rows properly.\n if (!this._isBrowser) {\n return;\n }\n // Coalesce with other sticky row updates (top/bottom), sticky columns updates\n // (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n // If positioning the rows to the bottom, reverse their order when evaluating the sticky\n // position such that the last row stuck will be \"bottom: 0px\" and so on. Note that the\n // sticky states need to be reversed as well.\n const rows = position === 'bottom' ? rowsToStick.slice().reverse() : rowsToStick;\n const states = position === 'bottom' ? stickyStates.slice().reverse() : stickyStates;\n // Measure row heights all at once before adding sticky styles to reduce layout thrashing.\n const stickyOffsets = [];\n const stickyCellHeights = [];\n const elementsToStick = [];\n for (let rowIndex = 0, stickyOffset = 0; rowIndex < rows.length; rowIndex++) {\n if (!states[rowIndex]) {\n continue;\n }\n stickyOffsets[rowIndex] = stickyOffset;\n const row = rows[rowIndex];\n elementsToStick[rowIndex] = this._isNativeHtmlTable\n ? Array.from(row.children)\n : [row];\n const height = row.getBoundingClientRect().height;\n stickyOffset += height;\n stickyCellHeights[rowIndex] = height;\n }\n const borderedRowIndex = states.lastIndexOf(true);\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n if (!states[rowIndex]) {\n continue;\n }\n const offset = stickyOffsets[rowIndex];\n const isBorderedRowIndex = rowIndex === borderedRowIndex;\n for (const element of elementsToStick[rowIndex]) {\n this._addStickyStyle(element, position, offset, isBorderedRowIndex);\n }\n }\n if (position === 'top') {\n this._positionListener?.stickyHeaderRowsUpdated({\n sizes: stickyCellHeights,\n offsets: stickyOffsets,\n elements: elementsToStick,\n });\n }\n else {\n this._positionListener?.stickyFooterRowsUpdated({\n sizes: stickyCellHeights,\n offsets: stickyOffsets,\n elements: elementsToStick,\n });\n }\n });\n }\n /**\n * When using the native table in Safari, sticky footer cells do not stick. The only way to stick\n * footer rows is to apply sticky styling to the tfoot container. This should only be done if\n * all footer rows are sticky. If not all footer rows are sticky, remove sticky positioning from\n * the tfoot element.\n */\n updateStickyFooterContainer(tableElement, stickyStates) {\n if (!this._isNativeHtmlTable) {\n return;\n }\n // Coalesce with other sticky updates (and potentially other changes like column resize).\n this._coalescedStyleScheduler.schedule(() => {\n const tfoot = tableElement.querySelector('tfoot');\n if (tfoot) {\n if (stickyStates.some(state => !state)) {\n this._removeStickyStyle(tfoot, ['bottom']);\n }\n else {\n this._addStickyStyle(tfoot, 'bottom', 0, false);\n }\n }\n });\n }\n /**\n * Removes the sticky style on the element by removing the sticky cell CSS class, re-evaluating\n * the zIndex, removing each of the provided sticky directions, and removing the\n * sticky position if there are no more directions.\n */\n _removeStickyStyle(element, stickyDirections) {\n for (const dir of stickyDirections) {\n element.style[dir] = '';\n element.classList.remove(this._borderCellCss[dir]);\n }\n // If the element no longer has any more sticky directions, remove sticky positioning and\n // the sticky CSS class.\n // Short-circuit checking element.style[dir] for stickyDirections as they\n // were already removed above.\n const hasDirection = STICKY_DIRECTIONS.some(dir => stickyDirections.indexOf(dir) === -1 && element.style[dir]);\n if (hasDirection) {\n element.style.zIndex = this._getCalculatedZIndex(element);\n }\n else {\n // When not hasDirection, _getCalculatedZIndex will always return ''.\n element.style.zIndex = '';\n if (this._needsPositionStickyOnElement) {\n element.style.position = '';\n }\n element.classList.remove(this._stickCellCss);\n }\n }\n /**\n * Adds the sticky styling to the element by adding the sticky style class, changing position\n * to be sticky (and -webkit-sticky), setting the appropriate zIndex, and adding a sticky\n * direction and value.\n */\n _addStickyStyle(element, dir, dirValue, isBorderElement) {\n element.classList.add(this._stickCellCss);\n if (isBorderElement) {\n element.classList.add(this._borderCellCss[dir]);\n }\n element.style[dir] = `${dirValue}px`;\n element.style.zIndex = this._getCalculatedZIndex(element);\n if (this._needsPositionStickyOnElement) {\n element.style.cssText += 'position: -webkit-sticky; position: sticky; ';\n }\n }\n /**\n * Calculate what the z-index should be for the element, depending on what directions (top,\n * bottom, left, right) have been set. It should be true that elements with a top direction\n * should have the highest index since these are elements like a table header. If any of those\n * elements are also sticky in another direction, then they should appear above other elements\n * that are only sticky top (e.g. a sticky column on a sticky header). Bottom-sticky elements\n * (e.g. footer rows) should then be next in the ordering such that they are below the header\n * but above any non-sticky elements. Finally, left/right sticky elements (e.g. sticky columns)\n * should minimally increment so that they are above non-sticky elements but below top and bottom\n * elements.\n */\n _getCalculatedZIndex(element) {\n const zIndexIncrements = {\n top: 100,\n bottom: 10,\n left: 1,\n right: 1,\n };\n let zIndex = 0;\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n for (const dir of STICKY_DIRECTIONS) {\n if (element.style[dir]) {\n zIndex += zIndexIncrements[dir];\n }\n }\n return zIndex ? `${zIndex}` : '';\n }\n /** Gets the widths for each cell in the provided row. */\n _getCellWidths(row, recalculateCellWidths = true) {\n if (!recalculateCellWidths && this._cachedCellWidths.length) {\n return this._cachedCellWidths;\n }\n const cellWidths = [];\n const firstRowCells = row.children;\n for (let i = 0; i < firstRowCells.length; i++) {\n let cell = firstRowCells[i];\n cellWidths.push(cell.getBoundingClientRect().width);\n }\n this._cachedCellWidths = cellWidths;\n return cellWidths;\n }\n /**\n * Determines the left and right positions of each sticky column cell, which will be the\n * accumulation of all sticky column cell widths to the left and right, respectively.\n * Non-sticky cells do not need to have a value set since their positions will not be applied.\n */\n _getStickyStartColumnPositions(widths, stickyStates) {\n const positions = [];\n let nextPosition = 0;\n for (let i = 0; i < widths.length; i++) {\n if (stickyStates[i]) {\n positions[i] = nextPosition;\n nextPosition += widths[i];\n }\n }\n return positions;\n }\n /**\n * Determines the left and right positions of each sticky column cell, which will be the\n * accumulation of all sticky column cell widths to the left and right, respectively.\n * Non-sticky cells do not need to have a value set since their positions will not be applied.\n */\n _getStickyEndColumnPositions(widths, stickyStates) {\n const positions = [];\n let nextPosition = 0;\n for (let i = widths.length; i > 0; i--) {\n if (stickyStates[i]) {\n positions[i] = nextPosition;\n nextPosition += widths[i];\n }\n }\n return positions;\n }\n}\n\n/**\n * Returns an error to be thrown when attempting to find an nonexistent column.\n * @param id Id whose lookup failed.\n * @docs-private\n */\nfunction getTableUnknownColumnError(id) {\n return Error(`Could not find column with id \"${id}\".`);\n}\n/**\n * Returns an error to be thrown when two column definitions have the same name.\n * @docs-private\n */\nfunction getTableDuplicateColumnNameError(name) {\n return Error(`Duplicate column definition name provided: \"${name}\".`);\n}\n/**\n * Returns an error to be thrown when there are multiple rows that are missing a when function.\n * @docs-private\n */\nfunction getTableMultipleDefaultRowDefsError() {\n return Error(`There can only be one default row without a when predicate function.`);\n}\n/**\n * Returns an error to be thrown when there are no matching row defs for a particular set of data.\n * @docs-private\n */\nfunction getTableMissingMatchingRowDefError(data) {\n return Error(`Could not find a matching row definition for the` +\n `provided row data: ${JSON.stringify(data)}`);\n}\n/**\n * Returns an error to be thrown when there is no row definitions present in the content.\n * @docs-private\n */\nfunction getTableMissingRowDefsError() {\n return Error('Missing definitions for header, footer, and row; ' +\n 'cannot determine which columns should be rendered.');\n}\n/**\n * Returns an error to be thrown when the data source does not match the compatible types.\n * @docs-private\n */\nfunction getTableUnknownDataSourceError() {\n return Error(`Provided data source did not match an array, Observable, or DataSource`);\n}\n/**\n * Returns an error to be thrown when the text column cannot find a parent table to inject.\n * @docs-private\n */\nfunction getTableTextColumnMissingParentTableError() {\n return Error(`Text column could not find a parent table for registration.`);\n}\n/**\n * Returns an error to be thrown when a table text column doesn't have a name.\n * @docs-private\n */\nfunction getTableTextColumnMissingNameError() {\n return Error(`Table text column must have a name.`);\n}\n\n/** The injection token used to specify the StickyPositioningListener. */\nconst STICKY_POSITIONING_LISTENER = new InjectionToken('CDK_SPL');\n\n/**\n * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\n * tables that animate rows.\n */\nclass CdkRecycleRows {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkRecycleRows, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkRecycleRows, isStandalone: true, selector: \"cdk-table[recycleRows], table[cdk-table][recycleRows]\", providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkRecycleRows, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-table[recycleRows], table[cdk-table][recycleRows]',\n providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n standalone: true,\n }]\n }] });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert data rows.\n * @docs-private\n */\nclass DataRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n const table = inject(CDK_TABLE);\n table._rowOutlet = this;\n table._outletAssigned();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: DataRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: DataRowOutlet, isStandalone: true, selector: \"[rowOutlet]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: DataRowOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[rowOutlet]',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }] });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the header.\n * @docs-private\n */\nclass HeaderRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n const table = inject(CDK_TABLE);\n table._headerRowOutlet = this;\n table._outletAssigned();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: HeaderRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: HeaderRowOutlet, isStandalone: true, selector: \"[headerRowOutlet]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: HeaderRowOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[headerRowOutlet]',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }] });\n/**\n * Provides a handle for the table to grab the view container's ng-container to insert the footer.\n * @docs-private\n */\nclass FooterRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n const table = inject(CDK_TABLE);\n table._footerRowOutlet = this;\n table._outletAssigned();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: FooterRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: FooterRowOutlet, isStandalone: true, selector: \"[footerRowOutlet]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: FooterRowOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[footerRowOutlet]',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }] });\n/**\n * Provides a handle for the table to grab the view\n * container's ng-container to insert the no data row.\n * @docs-private\n */\nclass NoDataRowOutlet {\n constructor(viewContainer, elementRef) {\n this.viewContainer = viewContainer;\n this.elementRef = elementRef;\n const table = inject(CDK_TABLE);\n table._noDataRowOutlet = this;\n table._outletAssigned();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: NoDataRowOutlet, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: NoDataRowOutlet, isStandalone: true, selector: \"[noDataRowOutlet]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: NoDataRowOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[noDataRowOutlet]',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }] });\n/**\n * The table template that can be used by the mat-table. Should not be used outside of the\n * material library.\n * @docs-private\n */\nconst CDK_TABLE_TEMPLATE = \n// Note that according to MDN, the `caption` element has to be projected as the **first**\n// element in the table. See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/caption\n`\n \n \n\n \n @if (_isServer) {\n \n }\n\n @if (_isNativeHtmlTable) {\n \n \n \n \n \n \n \n \n \n \n } @else {\n \n \n \n \n }\n`;\n/**\n * Class used to conveniently type the embedded view ref for rows with a context.\n * @docs-private\n */\nclass RowViewRef extends EmbeddedViewRef {\n}\n/**\n * A data table that can render a header row, data rows, and a footer row.\n * Uses the dataSource input to determine the data to be rendered. The data can be provided either\n * as a data array, an Observable stream that emits the data array to render, or a DataSource with a\n * connect function that will return an Observable stream that emits the data array to render.\n */\nclass CdkTable {\n /** Aria role to apply to the table's cells based on the table's own role. */\n _getCellRole() {\n if (this._cellRoleInternal === undefined) {\n // Perform this lazily in case the table's role was updated by a directive after construction.\n const role = this._elementRef.nativeElement.getAttribute('role');\n const cellRole = role === 'grid' || role === 'treegrid' ? 'gridcell' : 'cell';\n this._cellRoleInternal = this._isNativeHtmlTable && cellRole === 'cell' ? null : cellRole;\n }\n return this._cellRoleInternal;\n }\n /**\n * Tracking function that will be used to check the differences in data changes. Used similarly\n * to `ngFor` `trackBy` function. Optimize row operations by identifying a row based on its data\n * relative to the function to know if a row should be added/removed/moved.\n * Accepts a function that takes two parameters, `index` and `item`.\n */\n get trackBy() {\n return this._trackByFn;\n }\n set trackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}.`);\n }\n this._trackByFn = fn;\n }\n /**\n * The table's source of data, which can be provided in three ways (in order of complexity):\n * - Simple data array (each object represents one table row)\n * - Stream that emits a data array each time the array changes\n * - `DataSource` object that implements the connect/disconnect interface.\n *\n * If a data array is provided, the table must be notified when the array's objects are\n * added, removed, or moved. This can be done by calling the `renderRows()` function which will\n * render the diff since the last table render. If the data array reference is changed, the table\n * will automatically trigger an update to the rows.\n *\n * When providing an Observable stream, the table will trigger an update automatically when the\n * stream emits a new array of data.\n *\n * Finally, when providing a `DataSource` object, the table will use the Observable stream\n * provided by the connect function and trigger updates when that stream emits new data array\n * values. During the table's ngOnDestroy or when the data source is removed from the table, the\n * table will call the DataSource's `disconnect` function (may be useful for cleaning up any\n * subscriptions registered during the connect process).\n */\n get dataSource() {\n return this._dataSource;\n }\n set dataSource(dataSource) {\n if (this._dataSource !== dataSource) {\n this._switchDataSource(dataSource);\n }\n }\n /**\n * Whether to allow multiple rows per data object by evaluating which rows evaluate their 'when'\n * predicate to true. If `multiTemplateDataRows` is false, which is the default value, then each\n * dataobject will render the first row that evaluates its when predicate to true, in the order\n * defined in the table, or otherwise the default row which does not have a when predicate.\n */\n get multiTemplateDataRows() {\n return this._multiTemplateDataRows;\n }\n set multiTemplateDataRows(value) {\n this._multiTemplateDataRows = value;\n // In Ivy if this value is set via a static attribute (e.g.
),\n // this setter will be invoked before the row outlet has been defined hence the null check.\n if (this._rowOutlet && this._rowOutlet.viewContainer.length) {\n this._forceRenderDataRows();\n this.updateStickyColumnStyles();\n }\n }\n /**\n * Whether to use a fixed table layout. Enabling this option will enforce consistent column widths\n * and optimize rendering sticky styles for native tables. No-op for flex tables.\n */\n get fixedLayout() {\n return this._fixedLayout;\n }\n set fixedLayout(value) {\n this._fixedLayout = value;\n // Toggling `fixedLayout` may change column widths. Sticky column styles should be recalculated.\n this._forceRecalculateCellWidths = true;\n this._stickyColumnStylesNeedReset = true;\n }\n constructor(_differs, _changeDetectorRef, _elementRef, role, _dir, _document, _platform, _viewRepeater, _coalescedStyleScheduler, _viewportRuler, \n /**\n * @deprecated `_stickyPositioningListener` parameter to become required.\n * @breaking-change 13.0.0\n */\n _stickyPositioningListener, \n /**\n * @deprecated `_unusedNgZone` parameter to be removed.\n * @breaking-change 19.0.0\n */\n _unusedNgZone) {\n this._differs = _differs;\n this._changeDetectorRef = _changeDetectorRef;\n this._elementRef = _elementRef;\n this._dir = _dir;\n this._platform = _platform;\n this._viewRepeater = _viewRepeater;\n this._coalescedStyleScheduler = _coalescedStyleScheduler;\n this._viewportRuler = _viewportRuler;\n this._stickyPositioningListener = _stickyPositioningListener;\n /** Subject that emits when the component has been destroyed. */\n this._onDestroy = new Subject();\n /**\n * Map of all the user's defined columns (header, data, and footer cell template) identified by\n * name. Collection populated by the column definitions gathered by `ContentChildren` as well as\n * any custom column definitions added to `_customColumnDefs`.\n */\n this._columnDefsByName = new Map();\n /**\n * Column definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * column definitions as *its* content child.\n */\n this._customColumnDefs = new Set();\n /**\n * Data row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * built-in data rows as *its* content child.\n */\n this._customRowDefs = new Set();\n /**\n * Header row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has\n * built-in header rows as *its* content child.\n */\n this._customHeaderRowDefs = new Set();\n /**\n * Footer row definitions that were defined outside of the direct content children of the table.\n * These will be defined when, e.g., creating a wrapper around the cdkTable that has a\n * built-in footer row as *its* content child.\n */\n this._customFooterRowDefs = new Set();\n /**\n * Whether the header row definition has been changed. Triggers an update to the header row after\n * content is checked. Initialized as true so that the table renders the initial set of rows.\n */\n this._headerRowDefChanged = true;\n /**\n * Whether the footer row definition has been changed. Triggers an update to the footer row after\n * content is checked. Initialized as true so that the table renders the initial set of rows.\n */\n this._footerRowDefChanged = true;\n /**\n * Whether the sticky column styles need to be updated. Set to `true` when the visible columns\n * change.\n */\n this._stickyColumnStylesNeedReset = true;\n /**\n * Whether the sticky styler should recalculate cell widths when applying sticky styles. If\n * `false`, cached values will be used instead. This is only applicable to tables with\n * {@link fixedLayout} enabled. For other tables, cell widths will always be recalculated.\n */\n this._forceRecalculateCellWidths = true;\n /**\n * Cache of the latest rendered `RenderRow` objects as a map for easy retrieval when constructing\n * a new list of `RenderRow` objects for rendering rows. Since the new list is constructed with\n * the cached `RenderRow` objects when possible, the row identity is preserved when the data\n * and row template matches, which allows the `IterableDiffer` to check rows by reference\n * and understand which rows are added/moved/removed.\n *\n * Implemented as a map of maps where the first key is the `data: T` object and the second is the\n * `CdkRowDef` object. With the two keys, the cache points to a `RenderRow` object that\n * contains an array of created pairs. The array is necessary to handle cases where the data\n * array contains multiple duplicate data objects and each instantiated `RenderRow` must be\n * stored.\n */\n this._cachedRenderRowsMap = new Map();\n /**\n * CSS class added to any row or cell that has sticky positioning applied. May be overridden by\n * table subclasses.\n */\n this.stickyCssClass = 'cdk-table-sticky';\n /**\n * Whether to manually add position: sticky to all sticky cell elements. Not needed if\n * the position is set in a selector associated with the value of stickyCssClass. May be\n * overridden by table subclasses\n */\n this.needsPositionStickyOnElement = true;\n /** Whether the no data row is currently showing anything. */\n this._isShowingNoDataRow = false;\n /** Whether the table has rendered out all the outlets for the first time. */\n this._hasAllOutlets = false;\n /** Whether the table is done initializing. */\n this._hasInitialized = false;\n this._cellRoleInternal = undefined;\n this._multiTemplateDataRows = false;\n this._fixedLayout = false;\n /**\n * Emits when the table completes rendering a set of data rows based on the latest data from the\n * data source, even if the set of rows is empty.\n */\n this.contentChanged = new EventEmitter();\n // TODO(andrewseguin): Remove max value as the end index\n // and instead calculate the view on init and scroll.\n /**\n * Stream containing the latest information on what rows are being displayed on screen.\n * Can be used by the data source to as a heuristic of what data should be provided.\n *\n * @docs-private\n */\n this.viewChange = new BehaviorSubject({\n start: 0,\n end: Number.MAX_VALUE,\n });\n this._injector = inject(Injector);\n if (!role) {\n _elementRef.nativeElement.setAttribute('role', 'table');\n }\n this._document = _document;\n this._isServer = !_platform.isBrowser;\n this._isNativeHtmlTable = _elementRef.nativeElement.nodeName === 'TABLE';\n }\n ngOnInit() {\n this._setupStickyStyler();\n // Set up the trackBy function so that it uses the `RenderRow` as its identity by default. If\n // the user has provided a custom trackBy, return the result of that function as evaluated\n // with the values of the `RenderRow`'s data and index.\n this._dataDiffer = this._differs.find([]).create((_i, dataRow) => {\n return this.trackBy ? this.trackBy(dataRow.dataIndex, dataRow.data) : dataRow;\n });\n this._viewportRuler\n .change()\n .pipe(takeUntil(this._onDestroy))\n .subscribe(() => {\n this._forceRecalculateCellWidths = true;\n });\n }\n ngAfterContentInit() {\n this._hasInitialized = true;\n }\n ngAfterContentChecked() {\n // Only start re-rendering in `ngAfterContentChecked` after the first render.\n if (this._canRender()) {\n this._render();\n }\n }\n ngOnDestroy() {\n [\n this._rowOutlet?.viewContainer,\n this._headerRowOutlet?.viewContainer,\n this._footerRowOutlet?.viewContainer,\n this._cachedRenderRowsMap,\n this._customColumnDefs,\n this._customRowDefs,\n this._customHeaderRowDefs,\n this._customFooterRowDefs,\n this._columnDefsByName,\n ].forEach((def) => {\n def?.clear();\n });\n this._headerRowDefs = [];\n this._footerRowDefs = [];\n this._defaultRowDef = null;\n this._onDestroy.next();\n this._onDestroy.complete();\n if (isDataSource(this.dataSource)) {\n this.dataSource.disconnect(this);\n }\n }\n /**\n * Renders rows based on the table's latest set of data, which was either provided directly as an\n * input or retrieved through an Observable stream (directly or from a DataSource).\n * Checks for differences in the data since the last diff to perform only the necessary\n * changes (add/remove/move rows).\n *\n * If the table's data source is a DataSource or Observable, this will be invoked automatically\n * each time the provided Observable stream emits a new data array. Otherwise if your data is\n * an array, this function will need to be called to render any changes.\n */\n renderRows() {\n this._renderRows = this._getAllRenderRows();\n const changes = this._dataDiffer.diff(this._renderRows);\n if (!changes) {\n this._updateNoDataRow();\n this.contentChanged.next();\n return;\n }\n const viewContainer = this._rowOutlet.viewContainer;\n this._viewRepeater.applyChanges(changes, viewContainer, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record.item, currentIndex), record => record.item.data, (change) => {\n if (change.operation === _ViewRepeaterOperation.INSERTED && change.context) {\n this._renderCellTemplateForItem(change.record.item.rowDef, change.context);\n }\n });\n // Update the meta context of a row's context data (index, count, first, last, ...)\n this._updateRowIndexContext();\n // Update rows that did not get added/removed/moved but may have had their identity changed,\n // e.g. if trackBy matched data on some property but the actual data reference changed.\n changes.forEachIdentityChange((record) => {\n const rowView = viewContainer.get(record.currentIndex);\n rowView.context.$implicit = record.item.data;\n });\n this._updateNoDataRow();\n afterNextRender(() => {\n this.updateStickyColumnStyles();\n }, { injector: this._injector });\n this.contentChanged.next();\n }\n /** Adds a column definition that was not included as part of the content children. */\n addColumnDef(columnDef) {\n this._customColumnDefs.add(columnDef);\n }\n /** Removes a column definition that was not included as part of the content children. */\n removeColumnDef(columnDef) {\n this._customColumnDefs.delete(columnDef);\n }\n /** Adds a row definition that was not included as part of the content children. */\n addRowDef(rowDef) {\n this._customRowDefs.add(rowDef);\n }\n /** Removes a row definition that was not included as part of the content children. */\n removeRowDef(rowDef) {\n this._customRowDefs.delete(rowDef);\n }\n /** Adds a header row definition that was not included as part of the content children. */\n addHeaderRowDef(headerRowDef) {\n this._customHeaderRowDefs.add(headerRowDef);\n this._headerRowDefChanged = true;\n }\n /** Removes a header row definition that was not included as part of the content children. */\n removeHeaderRowDef(headerRowDef) {\n this._customHeaderRowDefs.delete(headerRowDef);\n this._headerRowDefChanged = true;\n }\n /** Adds a footer row definition that was not included as part of the content children. */\n addFooterRowDef(footerRowDef) {\n this._customFooterRowDefs.add(footerRowDef);\n this._footerRowDefChanged = true;\n }\n /** Removes a footer row definition that was not included as part of the content children. */\n removeFooterRowDef(footerRowDef) {\n this._customFooterRowDefs.delete(footerRowDef);\n this._footerRowDefChanged = true;\n }\n /** Sets a no data row definition that was not included as a part of the content children. */\n setNoDataRow(noDataRow) {\n this._customNoDataRow = noDataRow;\n }\n /**\n * Updates the header sticky styles. First resets all applied styles with respect to the cells\n * sticking to the top. Then, evaluating which cells need to be stuck to the top. This is\n * automatically called when the header row changes its displayed set of columns, or if its\n * sticky input changes. May be called manually for cases where the cell content changes outside\n * of these events.\n */\n updateStickyHeaderRowStyles() {\n const headerRows = this._getRenderedRows(this._headerRowOutlet);\n // Hide the thead element if there are no header rows. This is necessary to satisfy\n // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n // required child `row`.\n if (this._isNativeHtmlTable) {\n const thead = closestTableSection(this._headerRowOutlet, 'thead');\n if (thead) {\n thead.style.display = headerRows.length ? '' : 'none';\n }\n }\n const stickyStates = this._headerRowDefs.map(def => def.sticky);\n this._stickyStyler.clearStickyPositioning(headerRows, ['top']);\n this._stickyStyler.stickRows(headerRows, stickyStates, 'top');\n // Reset the dirty state of the sticky input change since it has been used.\n this._headerRowDefs.forEach(def => def.resetStickyChanged());\n }\n /**\n * Updates the footer sticky styles. First resets all applied styles with respect to the cells\n * sticking to the bottom. Then, evaluating which cells need to be stuck to the bottom. This is\n * automatically called when the footer row changes its displayed set of columns, or if its\n * sticky input changes. May be called manually for cases where the cell content changes outside\n * of these events.\n */\n updateStickyFooterRowStyles() {\n const footerRows = this._getRenderedRows(this._footerRowOutlet);\n // Hide the tfoot element if there are no footer rows. This is necessary to satisfy\n // overzealous a11y checkers that fail because the `rowgroup` element does not contain\n // required child `row`.\n if (this._isNativeHtmlTable) {\n const tfoot = closestTableSection(this._footerRowOutlet, 'tfoot');\n if (tfoot) {\n tfoot.style.display = footerRows.length ? '' : 'none';\n }\n }\n const stickyStates = this._footerRowDefs.map(def => def.sticky);\n this._stickyStyler.clearStickyPositioning(footerRows, ['bottom']);\n this._stickyStyler.stickRows(footerRows, stickyStates, 'bottom');\n this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement, stickyStates);\n // Reset the dirty state of the sticky input change since it has been used.\n this._footerRowDefs.forEach(def => def.resetStickyChanged());\n }\n /**\n * Updates the column sticky styles. First resets all applied styles with respect to the cells\n * sticking to the left and right. Then sticky styles are added for the left and right according\n * to the column definitions for each cell in each row. This is automatically called when\n * the data source provides a new set of data or when a column definition changes its sticky\n * input. May be called manually for cases where the cell content changes outside of these events.\n */\n updateStickyColumnStyles() {\n const headerRows = this._getRenderedRows(this._headerRowOutlet);\n const dataRows = this._getRenderedRows(this._rowOutlet);\n const footerRows = this._getRenderedRows(this._footerRowOutlet);\n // For tables not using a fixed layout, the column widths may change when new rows are rendered.\n // In a table using a fixed layout, row content won't affect column width, so sticky styles\n // don't need to be cleared unless either the sticky column config changes or one of the row\n // defs change.\n if ((this._isNativeHtmlTable && !this._fixedLayout) || this._stickyColumnStylesNeedReset) {\n // Clear the left and right positioning from all columns in the table across all rows since\n // sticky columns span across all table sections (header, data, footer)\n this._stickyStyler.clearStickyPositioning([...headerRows, ...dataRows, ...footerRows], ['left', 'right']);\n this._stickyColumnStylesNeedReset = false;\n }\n // Update the sticky styles for each header row depending on the def's sticky state\n headerRows.forEach((headerRow, i) => {\n this._addStickyColumnStyles([headerRow], this._headerRowDefs[i]);\n });\n // Update the sticky styles for each data row depending on its def's sticky state\n this._rowDefs.forEach(rowDef => {\n // Collect all the rows rendered with this row definition.\n const rows = [];\n for (let i = 0; i < dataRows.length; i++) {\n if (this._renderRows[i].rowDef === rowDef) {\n rows.push(dataRows[i]);\n }\n }\n this._addStickyColumnStyles(rows, rowDef);\n });\n // Update the sticky styles for each footer row depending on the def's sticky state\n footerRows.forEach((footerRow, i) => {\n this._addStickyColumnStyles([footerRow], this._footerRowDefs[i]);\n });\n // Reset the dirty state of the sticky input change since it has been used.\n Array.from(this._columnDefsByName.values()).forEach(def => def.resetStickyChanged());\n }\n /** Invoked whenever an outlet is created and has been assigned to the table. */\n _outletAssigned() {\n // Trigger the first render once all outlets have been assigned. We do it this way, as\n // opposed to waiting for the next `ngAfterContentChecked`, because we don't know when\n // the next change detection will happen.\n // Also we can't use queries to resolve the outlets, because they're wrapped in a\n // conditional, so we have to rely on them being assigned via DI.\n if (!this._hasAllOutlets &&\n this._rowOutlet &&\n this._headerRowOutlet &&\n this._footerRowOutlet &&\n this._noDataRowOutlet) {\n this._hasAllOutlets = true;\n // In some setups this may fire before `ngAfterContentInit`\n // so we need a check here. See #28538.\n if (this._canRender()) {\n this._render();\n }\n }\n }\n /** Whether the table has all the information to start rendering. */\n _canRender() {\n return this._hasAllOutlets && this._hasInitialized;\n }\n /** Renders the table if its state has changed. */\n _render() {\n // Cache the row and column definitions gathered by ContentChildren and programmatic injection.\n this._cacheRowDefs();\n this._cacheColumnDefs();\n // Make sure that the user has at least added header, footer, or data row def.\n if (!this._headerRowDefs.length &&\n !this._footerRowDefs.length &&\n !this._rowDefs.length &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMissingRowDefsError();\n }\n // Render updates if the list of columns have been changed for the header, row, or footer defs.\n const columnsChanged = this._renderUpdatedColumns();\n const rowDefsChanged = columnsChanged || this._headerRowDefChanged || this._footerRowDefChanged;\n // Ensure sticky column styles are reset if set to `true` elsewhere.\n this._stickyColumnStylesNeedReset = this._stickyColumnStylesNeedReset || rowDefsChanged;\n this._forceRecalculateCellWidths = rowDefsChanged;\n // If the header row definition has been changed, trigger a render to the header row.\n if (this._headerRowDefChanged) {\n this._forceRenderHeaderRows();\n this._headerRowDefChanged = false;\n }\n // If the footer row definition has been changed, trigger a render to the footer row.\n if (this._footerRowDefChanged) {\n this._forceRenderFooterRows();\n this._footerRowDefChanged = false;\n }\n // If there is a data source and row definitions, connect to the data source unless a\n // connection has already been made.\n if (this.dataSource && this._rowDefs.length > 0 && !this._renderChangeSubscription) {\n this._observeRenderChanges();\n }\n else if (this._stickyColumnStylesNeedReset) {\n // In the above case, _observeRenderChanges will result in updateStickyColumnStyles being\n // called when it row data arrives. Otherwise, we need to call it proactively.\n this.updateStickyColumnStyles();\n }\n this._checkStickyStates();\n }\n /**\n * Get the list of RenderRow objects to render according to the current list of data and defined\n * row definitions. If the previous list already contained a particular pair, it should be reused\n * so that the differ equates their references.\n */\n _getAllRenderRows() {\n const renderRows = [];\n // Store the cache and create a new one. Any re-used RenderRow objects will be moved into the\n // new cache while unused ones can be picked up by garbage collection.\n const prevCachedRenderRows = this._cachedRenderRowsMap;\n this._cachedRenderRowsMap = new Map();\n // For each data object, get the list of rows that should be rendered, represented by the\n // respective `RenderRow` object which is the pair of `data` and `CdkRowDef`.\n for (let i = 0; i < this._data.length; i++) {\n let data = this._data[i];\n const renderRowsForData = this._getRenderRowsForData(data, i, prevCachedRenderRows.get(data));\n if (!this._cachedRenderRowsMap.has(data)) {\n this._cachedRenderRowsMap.set(data, new WeakMap());\n }\n for (let j = 0; j < renderRowsForData.length; j++) {\n let renderRow = renderRowsForData[j];\n const cache = this._cachedRenderRowsMap.get(renderRow.data);\n if (cache.has(renderRow.rowDef)) {\n cache.get(renderRow.rowDef).push(renderRow);\n }\n else {\n cache.set(renderRow.rowDef, [renderRow]);\n }\n renderRows.push(renderRow);\n }\n }\n return renderRows;\n }\n /**\n * Gets a list of `RenderRow` for the provided data object and any `CdkRowDef` objects that\n * should be rendered for this data. Reuses the cached RenderRow objects if they match the same\n * `(T, CdkRowDef)` pair.\n */\n _getRenderRowsForData(data, dataIndex, cache) {\n const rowDefs = this._getRowDefs(data, dataIndex);\n return rowDefs.map(rowDef => {\n const cachedRenderRows = cache && cache.has(rowDef) ? cache.get(rowDef) : [];\n if (cachedRenderRows.length) {\n const dataRow = cachedRenderRows.shift();\n dataRow.dataIndex = dataIndex;\n return dataRow;\n }\n else {\n return { data, rowDef, dataIndex };\n }\n });\n }\n /** Update the map containing the content's column definitions. */\n _cacheColumnDefs() {\n this._columnDefsByName.clear();\n const columnDefs = mergeArrayAndSet(this._getOwnDefs(this._contentColumnDefs), this._customColumnDefs);\n columnDefs.forEach(columnDef => {\n if (this._columnDefsByName.has(columnDef.name) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableDuplicateColumnNameError(columnDef.name);\n }\n this._columnDefsByName.set(columnDef.name, columnDef);\n });\n }\n /** Update the list of all available row definitions that can be used. */\n _cacheRowDefs() {\n this._headerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentHeaderRowDefs), this._customHeaderRowDefs);\n this._footerRowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentFooterRowDefs), this._customFooterRowDefs);\n this._rowDefs = mergeArrayAndSet(this._getOwnDefs(this._contentRowDefs), this._customRowDefs);\n // After all row definitions are determined, find the row definition to be considered default.\n const defaultRowDefs = this._rowDefs.filter(def => !def.when);\n if (!this.multiTemplateDataRows &&\n defaultRowDefs.length > 1 &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMultipleDefaultRowDefsError();\n }\n this._defaultRowDef = defaultRowDefs[0];\n }\n /**\n * Check if the header, data, or footer rows have changed what columns they want to display or\n * whether the sticky states have changed for the header or footer. If there is a diff, then\n * re-render that section.\n */\n _renderUpdatedColumns() {\n const columnsDiffReducer = (acc, def) => acc || !!def.getColumnsDiff();\n // Force re-render data rows if the list of column definitions have changed.\n const dataColumnsChanged = this._rowDefs.reduce(columnsDiffReducer, false);\n if (dataColumnsChanged) {\n this._forceRenderDataRows();\n }\n // Force re-render header/footer rows if the list of column definitions have changed.\n const headerColumnsChanged = this._headerRowDefs.reduce(columnsDiffReducer, false);\n if (headerColumnsChanged) {\n this._forceRenderHeaderRows();\n }\n const footerColumnsChanged = this._footerRowDefs.reduce(columnsDiffReducer, false);\n if (footerColumnsChanged) {\n this._forceRenderFooterRows();\n }\n return dataColumnsChanged || headerColumnsChanged || footerColumnsChanged;\n }\n /**\n * Switch to the provided data source by resetting the data and unsubscribing from the current\n * render change subscription if one exists. If the data source is null, interpret this by\n * clearing the row outlet. Otherwise start listening for new data.\n */\n _switchDataSource(dataSource) {\n this._data = [];\n if (isDataSource(this.dataSource)) {\n this.dataSource.disconnect(this);\n }\n // Stop listening for data from the previous data source.\n if (this._renderChangeSubscription) {\n this._renderChangeSubscription.unsubscribe();\n this._renderChangeSubscription = null;\n }\n if (!dataSource) {\n if (this._dataDiffer) {\n this._dataDiffer.diff([]);\n }\n if (this._rowOutlet) {\n this._rowOutlet.viewContainer.clear();\n }\n }\n this._dataSource = dataSource;\n }\n /** Set up a subscription for the data provided by the data source. */\n _observeRenderChanges() {\n // If no data source has been set, there is nothing to observe for changes.\n if (!this.dataSource) {\n return;\n }\n let dataStream;\n if (isDataSource(this.dataSource)) {\n dataStream = this.dataSource.connect(this);\n }\n else if (isObservable(this.dataSource)) {\n dataStream = this.dataSource;\n }\n else if (Array.isArray(this.dataSource)) {\n dataStream = of(this.dataSource);\n }\n if (dataStream === undefined && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownDataSourceError();\n }\n this._renderChangeSubscription = dataStream\n .pipe(takeUntil(this._onDestroy))\n .subscribe(data => {\n this._data = data || [];\n this.renderRows();\n });\n }\n /**\n * Clears any existing content in the header row outlet and creates a new embedded view\n * in the outlet using the header row definition.\n */\n _forceRenderHeaderRows() {\n // Clear the header row outlet if any content exists.\n if (this._headerRowOutlet.viewContainer.length > 0) {\n this._headerRowOutlet.viewContainer.clear();\n }\n this._headerRowDefs.forEach((def, i) => this._renderRow(this._headerRowOutlet, def, i));\n this.updateStickyHeaderRowStyles();\n }\n /**\n * Clears any existing content in the footer row outlet and creates a new embedded view\n * in the outlet using the footer row definition.\n */\n _forceRenderFooterRows() {\n // Clear the footer row outlet if any content exists.\n if (this._footerRowOutlet.viewContainer.length > 0) {\n this._footerRowOutlet.viewContainer.clear();\n }\n this._footerRowDefs.forEach((def, i) => this._renderRow(this._footerRowOutlet, def, i));\n this.updateStickyFooterRowStyles();\n }\n /** Adds the sticky column styles for the rows according to the columns' stick states. */\n _addStickyColumnStyles(rows, rowDef) {\n const columnDefs = Array.from(rowDef.columns || []).map(columnName => {\n const columnDef = this._columnDefsByName.get(columnName);\n if (!columnDef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownColumnError(columnName);\n }\n return columnDef;\n });\n const stickyStartStates = columnDefs.map(columnDef => columnDef.sticky);\n const stickyEndStates = columnDefs.map(columnDef => columnDef.stickyEnd);\n this._stickyStyler.updateStickyColumns(rows, stickyStartStates, stickyEndStates, !this._fixedLayout || this._forceRecalculateCellWidths);\n }\n /** Gets the list of rows that have been rendered in the row outlet. */\n _getRenderedRows(rowOutlet) {\n const renderedRows = [];\n for (let i = 0; i < rowOutlet.viewContainer.length; i++) {\n const viewRef = rowOutlet.viewContainer.get(i);\n renderedRows.push(viewRef.rootNodes[0]);\n }\n return renderedRows;\n }\n /**\n * Get the matching row definitions that should be used for this row data. If there is only\n * one row definition, it is returned. Otherwise, find the row definitions that has a when\n * predicate that returns true with the data. If none return true, return the default row\n * definition.\n */\n _getRowDefs(data, dataIndex) {\n if (this._rowDefs.length == 1) {\n return [this._rowDefs[0]];\n }\n let rowDefs = [];\n if (this.multiTemplateDataRows) {\n rowDefs = this._rowDefs.filter(def => !def.when || def.when(dataIndex, data));\n }\n else {\n let rowDef = this._rowDefs.find(def => def.when && def.when(dataIndex, data)) || this._defaultRowDef;\n if (rowDef) {\n rowDefs.push(rowDef);\n }\n }\n if (!rowDefs.length && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableMissingMatchingRowDefError(data);\n }\n return rowDefs;\n }\n _getEmbeddedViewArgs(renderRow, index) {\n const rowDef = renderRow.rowDef;\n const context = { $implicit: renderRow.data };\n return {\n templateRef: rowDef.template,\n context,\n index,\n };\n }\n /**\n * Creates a new row template in the outlet and fills it with the set of cell templates.\n * Optionally takes a context to provide to the row and cells, as well as an optional index\n * of where to place the new row template in the outlet.\n */\n _renderRow(outlet, rowDef, index, context = {}) {\n // TODO(andrewseguin): enforce that one outlet was instantiated from createEmbeddedView\n const view = outlet.viewContainer.createEmbeddedView(rowDef.template, context, index);\n this._renderCellTemplateForItem(rowDef, context);\n return view;\n }\n _renderCellTemplateForItem(rowDef, context) {\n for (let cellTemplate of this._getCellTemplates(rowDef)) {\n if (CdkCellOutlet.mostRecentCellOutlet) {\n CdkCellOutlet.mostRecentCellOutlet._viewContainer.createEmbeddedView(cellTemplate, context);\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n /**\n * Updates the index-related context for each row to reflect any changes in the index of the rows,\n * e.g. first/last/even/odd.\n */\n _updateRowIndexContext() {\n const viewContainer = this._rowOutlet.viewContainer;\n for (let renderIndex = 0, count = viewContainer.length; renderIndex < count; renderIndex++) {\n const viewRef = viewContainer.get(renderIndex);\n const context = viewRef.context;\n context.count = count;\n context.first = renderIndex === 0;\n context.last = renderIndex === count - 1;\n context.even = renderIndex % 2 === 0;\n context.odd = !context.even;\n if (this.multiTemplateDataRows) {\n context.dataIndex = this._renderRows[renderIndex].dataIndex;\n context.renderIndex = renderIndex;\n }\n else {\n context.index = this._renderRows[renderIndex].dataIndex;\n }\n }\n }\n /** Gets the column definitions for the provided row def. */\n _getCellTemplates(rowDef) {\n if (!rowDef || !rowDef.columns) {\n return [];\n }\n return Array.from(rowDef.columns, columnId => {\n const column = this._columnDefsByName.get(columnId);\n if (!column && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableUnknownColumnError(columnId);\n }\n return rowDef.extractCellTemplate(column);\n });\n }\n /**\n * Forces a re-render of the data rows. Should be called in cases where there has been an input\n * change that affects the evaluation of which rows should be rendered, e.g. toggling\n * `multiTemplateDataRows` or adding/removing row definitions.\n */\n _forceRenderDataRows() {\n this._dataDiffer.diff([]);\n this._rowOutlet.viewContainer.clear();\n this.renderRows();\n }\n /**\n * Checks if there has been a change in sticky states since last check and applies the correct\n * sticky styles. Since checking resets the \"dirty\" state, this should only be performed once\n * during a change detection and after the inputs are settled (after content check).\n */\n _checkStickyStates() {\n const stickyCheckReducer = (acc, d) => {\n return acc || d.hasStickyChanged();\n };\n // Note that the check needs to occur for every definition since it notifies the definition\n // that it can reset its dirty state. Using another operator like `some` may short-circuit\n // remaining definitions and leave them in an unchecked state.\n if (this._headerRowDefs.reduce(stickyCheckReducer, false)) {\n this.updateStickyHeaderRowStyles();\n }\n if (this._footerRowDefs.reduce(stickyCheckReducer, false)) {\n this.updateStickyFooterRowStyles();\n }\n if (Array.from(this._columnDefsByName.values()).reduce(stickyCheckReducer, false)) {\n this._stickyColumnStylesNeedReset = true;\n this.updateStickyColumnStyles();\n }\n }\n /**\n * Creates the sticky styler that will be used for sticky rows and columns. Listens\n * for directionality changes and provides the latest direction to the styler. Re-applies column\n * stickiness when directionality changes.\n */\n _setupStickyStyler() {\n const direction = this._dir ? this._dir.value : 'ltr';\n this._stickyStyler = new StickyStyler(this._isNativeHtmlTable, this.stickyCssClass, direction, this._coalescedStyleScheduler, this._platform.isBrowser, this.needsPositionStickyOnElement, this._stickyPositioningListener);\n (this._dir ? this._dir.change : of())\n .pipe(takeUntil(this._onDestroy))\n .subscribe(value => {\n this._stickyStyler.direction = value;\n this.updateStickyColumnStyles();\n });\n }\n /** Filters definitions that belong to this table from a QueryList. */\n _getOwnDefs(items) {\n return items.filter(item => !item._table || item._table === this);\n }\n /** Creates or removes the no data row, depending on whether any data is being shown. */\n _updateNoDataRow() {\n const noDataRow = this._customNoDataRow || this._noDataRow;\n if (!noDataRow) {\n return;\n }\n const shouldShow = this._rowOutlet.viewContainer.length === 0;\n if (shouldShow === this._isShowingNoDataRow) {\n return;\n }\n const container = this._noDataRowOutlet.viewContainer;\n if (shouldShow) {\n const view = container.createEmbeddedView(noDataRow.templateRef);\n const rootNode = view.rootNodes[0];\n // Only add the attributes if we have a single root node since it's hard\n // to figure out which one to add it to when there are multiple.\n if (view.rootNodes.length === 1 && rootNode?.nodeType === this._document.ELEMENT_NODE) {\n rootNode.setAttribute('role', 'row');\n rootNode.classList.add(noDataRow._contentClassName);\n }\n }\n else {\n container.clear();\n }\n this._isShowingNoDataRow = shouldShow;\n this._changeDetectorRef.markForCheck();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkTable, deps: [{ token: i0.IterableDiffers }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: 'role', attribute: true }, { token: i1.Directionality, optional: true }, { token: DOCUMENT }, { token: i2.Platform }, { token: _VIEW_REPEATER_STRATEGY }, { token: _COALESCED_STYLE_SCHEDULER }, { token: i3.ViewportRuler }, { token: STICKY_POSITIONING_LISTENER, optional: true, skipSelf: true }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"18.2.0-next.2\", type: CdkTable, isStandalone: true, selector: \"cdk-table, table[cdk-table]\", inputs: { trackBy: \"trackBy\", dataSource: \"dataSource\", multiTemplateDataRows: [\"multiTemplateDataRows\", \"multiTemplateDataRows\", booleanAttribute], fixedLayout: [\"fixedLayout\", \"fixedLayout\", booleanAttribute] }, outputs: { contentChanged: \"contentChanged\" }, host: { properties: { \"class.cdk-table-fixed-layout\": \"fixedLayout\" }, classAttribute: \"cdk-table\" }, providers: [\n { provide: CDK_TABLE, useExisting: CdkTable },\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], queries: [{ propertyName: \"_noDataRow\", first: true, predicate: CdkNoDataRow, descendants: true }, { propertyName: \"_contentColumnDefs\", predicate: CdkColumnDef, descendants: true }, { propertyName: \"_contentRowDefs\", predicate: CdkRowDef, descendants: true }, { propertyName: \"_contentHeaderRowDefs\", predicate: CdkHeaderRowDef, descendants: true }, { propertyName: \"_contentFooterRowDefs\", predicate: CdkFooterRowDef, descendants: true }], exportAs: [\"cdkTable\"], ngImport: i0, template: \"\\n \\n \\n\\n \\n @if (_isServer) {\\n \\n }\\n\\n @if (_isNativeHtmlTable) {\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n } @else {\\n \\n \\n \\n \\n }\\n\", isInline: true, styles: [\".cdk-table-fixed-layout{table-layout:fixed}\"], dependencies: [{ kind: \"directive\", type: HeaderRowOutlet, selector: \"[headerRowOutlet]\" }, { kind: \"directive\", type: DataRowOutlet, selector: \"[rowOutlet]\" }, { kind: \"directive\", type: NoDataRowOutlet, selector: \"[noDataRowOutlet]\" }, { kind: \"directive\", type: FooterRowOutlet, selector: \"[footerRowOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkTable, decorators: [{\n type: Component,\n args: [{ selector: 'cdk-table, table[cdk-table]', exportAs: 'cdkTable', template: CDK_TABLE_TEMPLATE, host: {\n 'class': 'cdk-table',\n '[class.cdk-table-fixed-layout]': 'fixedLayout',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, providers: [\n { provide: CDK_TABLE, useExisting: CdkTable },\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], standalone: true, imports: [HeaderRowOutlet, DataRowOutlet, NoDataRowOutlet, FooterRowOutlet], styles: [\".cdk-table-fixed-layout{table-layout:fixed}\"] }]\n }], ctorParameters: () => [{ type: i0.IterableDiffers }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i2.Platform }, { type: undefined, decorators: [{\n type: Inject,\n args: [_VIEW_REPEATER_STRATEGY]\n }] }, { type: _CoalescedStyleScheduler, decorators: [{\n type: Inject,\n args: [_COALESCED_STYLE_SCHEDULER]\n }] }, { type: i3.ViewportRuler }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }, {\n type: Inject,\n args: [STICKY_POSITIONING_LISTENER]\n }] }, { type: i0.NgZone, decorators: [{\n type: Optional\n }] }], propDecorators: { trackBy: [{\n type: Input\n }], dataSource: [{\n type: Input\n }], multiTemplateDataRows: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], fixedLayout: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], contentChanged: [{\n type: Output\n }], _contentColumnDefs: [{\n type: ContentChildren,\n args: [CdkColumnDef, { descendants: true }]\n }], _contentRowDefs: [{\n type: ContentChildren,\n args: [CdkRowDef, { descendants: true }]\n }], _contentHeaderRowDefs: [{\n type: ContentChildren,\n args: [CdkHeaderRowDef, {\n descendants: true,\n }]\n }], _contentFooterRowDefs: [{\n type: ContentChildren,\n args: [CdkFooterRowDef, {\n descendants: true,\n }]\n }], _noDataRow: [{\n type: ContentChild,\n args: [CdkNoDataRow]\n }] } });\n/** Utility function that gets a merged list of the entries in an array and values of a Set. */\nfunction mergeArrayAndSet(array, set) {\n return array.concat(Array.from(set));\n}\n/**\n * Finds the closest table section to an outlet. We can't use `HTMLElement.closest` for this,\n * because the node representing the outlet is a comment.\n */\nfunction closestTableSection(outlet, section) {\n const uppercaseSection = section.toUpperCase();\n let current = outlet.viewContainer.element.nativeElement;\n while (current) {\n // 1 is an element node.\n const nodeName = current.nodeType === 1 ? current.nodeName : null;\n if (nodeName === uppercaseSection) {\n return current;\n }\n else if (nodeName === 'TABLE') {\n // Stop traversing past the `table` node.\n break;\n }\n current = current.parentNode;\n }\n return null;\n}\n\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`
`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\nclass CdkTextColumn {\n /** Column name that should be used to reference this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._name = name;\n // With Ivy, inputs can be initialized before static query results are\n // available. In that case, we defer the synchronization until \"ngOnInit\" fires.\n this._syncColumnDefName();\n }\n constructor(\n // `CdkTextColumn` is always requiring a table, but we just assert it manually\n // for better error reporting.\n // tslint:disable-next-line: lightweight-tokens\n _table, _options) {\n this._table = _table;\n this._options = _options;\n /** Alignment of the cell values. */\n this.justify = 'start';\n this._options = _options || {};\n }\n ngOnInit() {\n this._syncColumnDefName();\n if (this.headerText === undefined) {\n this.headerText = this._createDefaultHeaderText();\n }\n if (!this.dataAccessor) {\n this.dataAccessor =\n this._options.defaultDataAccessor || ((data, name) => data[name]);\n }\n if (this._table) {\n // Provide the cell and headerCell directly to the table with the static `ViewChild` query,\n // since the columnDef will not pick up its content by the time the table finishes checking\n // its content and initializing the rows.\n this.columnDef.cell = this.cell;\n this.columnDef.headerCell = this.headerCell;\n this._table.addColumnDef(this.columnDef);\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throw getTableTextColumnMissingParentTableError();\n }\n }\n ngOnDestroy() {\n if (this._table) {\n this._table.removeColumnDef(this.columnDef);\n }\n }\n /**\n * Creates a default header text. Use the options' header text transformation function if one\n * has been provided. Otherwise simply capitalize the column name.\n */\n _createDefaultHeaderText() {\n const name = this.name;\n if (!name && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getTableTextColumnMissingNameError();\n }\n if (this._options && this._options.defaultHeaderTextTransform) {\n return this._options.defaultHeaderTextTransform(name);\n }\n return name[0].toUpperCase() + name.slice(1);\n }\n /** Synchronizes the column definition name with the text column name. */\n _syncColumnDefName() {\n if (this.columnDef) {\n this.columnDef.name = this.name;\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkTextColumn, deps: [{ token: CdkTable, optional: true }, { token: TEXT_COLUMN_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: CdkTextColumn, isStandalone: true, selector: \"cdk-text-column\", inputs: { name: \"name\", headerText: \"headerText\", dataAccessor: \"dataAccessor\", justify: \"justify\" }, viewQueries: [{ propertyName: \"columnDef\", first: true, predicate: CdkColumnDef, descendants: true, static: true }, { propertyName: \"cell\", first: true, predicate: CdkCellDef, descendants: true, static: true }, { propertyName: \"headerCell\", first: true, predicate: CdkHeaderCellDef, descendants: true, static: true }], ngImport: i0, template: `\n \n \n \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: CdkColumnDef, selector: \"[cdkColumnDef]\", inputs: [\"cdkColumnDef\", \"sticky\", \"stickyEnd\"] }, { kind: \"directive\", type: CdkHeaderCellDef, selector: \"[cdkHeaderCellDef]\" }, { kind: \"directive\", type: CdkHeaderCell, selector: \"cdk-header-cell, th[cdk-header-cell]\" }, { kind: \"directive\", type: CdkCellDef, selector: \"[cdkCellDef]\" }, { kind: \"directive\", type: CdkCell, selector: \"cdk-cell, td[cdk-cell]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkTextColumn, decorators: [{\n type: Component,\n args: [{\n selector: 'cdk-text-column',\n template: `\n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: true,\n imports: [CdkColumnDef, CdkHeaderCellDef, CdkHeaderCell, CdkCellDef, CdkCell],\n }]\n }], ctorParameters: () => [{ type: CdkTable, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TEXT_COLUMN_OPTIONS]\n }] }], propDecorators: { name: [{\n type: Input\n }], headerText: [{\n type: Input\n }], dataAccessor: [{\n type: Input\n }], justify: [{\n type: Input\n }], columnDef: [{\n type: ViewChild,\n args: [CdkColumnDef, { static: true }]\n }], cell: [{\n type: ViewChild,\n args: [CdkCellDef, { static: true }]\n }], headerCell: [{\n type: ViewChild,\n args: [CdkHeaderCellDef, { static: true }]\n }] } });\n\nconst EXPORTED_DECLARATIONS = [\n CdkTable,\n CdkRowDef,\n CdkCellDef,\n CdkCellOutlet,\n CdkHeaderCellDef,\n CdkFooterCellDef,\n CdkColumnDef,\n CdkCell,\n CdkRow,\n CdkHeaderCell,\n CdkFooterCell,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkFooterRow,\n CdkFooterRowDef,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n CdkTextColumn,\n CdkNoDataRow,\n CdkRecycleRows,\n NoDataRowOutlet,\n];\nclass CdkTableModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkTableModule, imports: [ScrollingModule, CdkTable,\n CdkRowDef,\n CdkCellDef,\n CdkCellOutlet,\n CdkHeaderCellDef,\n CdkFooterCellDef,\n CdkColumnDef,\n CdkCell,\n CdkRow,\n CdkHeaderCell,\n CdkFooterCell,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkFooterRow,\n CdkFooterRowDef,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n CdkTextColumn,\n CdkNoDataRow,\n CdkRecycleRows,\n NoDataRowOutlet], exports: [CdkTable,\n CdkRowDef,\n CdkCellDef,\n CdkCellOutlet,\n CdkHeaderCellDef,\n CdkFooterCellDef,\n CdkColumnDef,\n CdkCell,\n CdkRow,\n CdkHeaderCell,\n CdkFooterCell,\n CdkHeaderRow,\n CdkHeaderRowDef,\n CdkFooterRow,\n CdkFooterRowDef,\n DataRowOutlet,\n HeaderRowOutlet,\n FooterRowOutlet,\n CdkTextColumn,\n CdkNoDataRow,\n CdkRecycleRows,\n NoDataRowOutlet] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkTableModule, imports: [ScrollingModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: CdkTableModule, decorators: [{\n type: NgModule,\n args: [{\n exports: EXPORTED_DECLARATIONS,\n imports: [ScrollingModule, ...EXPORTED_DECLARATIONS],\n }]\n }] });\n\n/**\n * Mixin to provide a directive with a function that checks if the sticky input has been\n * changed since the last time the function was called. Essentially adds a dirty-check to the\n * sticky value.\n * @docs-private\n * @deprecated Implement the `CanStick` interface instead.\n * @breaking-change 19.0.0\n */\nfunction mixinHasStickyInput(base) {\n return class extends base {\n /** Whether sticky positioning should be applied. */\n get sticky() {\n return this._sticky;\n }\n set sticky(v) {\n const prevValue = this._sticky;\n this._sticky = coerceBooleanProperty(v);\n this._hasStickyChanged = prevValue !== this._sticky;\n }\n /** Whether the sticky value has changed since this was last called. */\n hasStickyChanged() {\n const hasStickyChanged = this._hasStickyChanged;\n this._hasStickyChanged = false;\n return hasStickyChanged;\n }\n /** Resets the dirty check for cases where the sticky state has been used without checking. */\n resetStickyChanged() {\n this._hasStickyChanged = false;\n }\n constructor(...args) {\n super(...args);\n this._sticky = false;\n /** Whether the sticky input has changed since it was last checked. */\n this._hasStickyChanged = false;\n }\n };\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BaseCdkCell, BaseRowDef, CDK_ROW_TEMPLATE, CDK_TABLE, CDK_TABLE_TEMPLATE, CdkCell, CdkCellDef, CdkCellOutlet, CdkColumnDef, CdkFooterCell, CdkFooterCellDef, CdkFooterRow, CdkFooterRowDef, CdkHeaderCell, CdkHeaderCellDef, CdkHeaderRow, CdkHeaderRowDef, CdkNoDataRow, CdkRecycleRows, CdkRow, CdkRowDef, CdkTable, CdkTableModule, CdkTextColumn, DataRowOutlet, FooterRowOutlet, HeaderRowOutlet, NoDataRowOutlet, STICKY_DIRECTIONS, STICKY_POSITIONING_LISTENER, StickyStyler, TEXT_COLUMN_OPTIONS, _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler, _Schedule, mixinHasStickyInput };\n","import * as i0 from '@angular/core';\nimport { Directive, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, booleanAttribute, NgModule } from '@angular/core';\nimport { CdkTable, CDK_TABLE, _COALESCED_STYLE_SCHEDULER, _CoalescedStyleScheduler, STICKY_POSITIONING_LISTENER, HeaderRowOutlet, DataRowOutlet, NoDataRowOutlet, FooterRowOutlet, CdkCellDef, CdkHeaderCellDef, CdkFooterCellDef, CdkColumnDef, CdkHeaderCell, CdkFooterCell, CdkCell, CdkHeaderRowDef, CdkFooterRowDef, CdkRowDef, CdkHeaderRow, CdkCellOutlet, CdkFooterRow, CdkRow, CdkNoDataRow, CdkTextColumn, CdkTableModule } from '@angular/cdk/table';\nimport { _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy, _DisposeViewRepeaterStrategy, DataSource } from '@angular/cdk/collections';\nimport { MatCommonModule } from '@angular/material/core';\nimport { BehaviorSubject, Subject, merge, of, combineLatest } from 'rxjs';\nimport { _isNumberValue } from '@angular/cdk/coercion';\nimport { map } from 'rxjs/operators';\n\n/**\n * Enables the recycle view repeater strategy, which reduces rendering latency. Not compatible with\n * tables that animate rows.\n */\nclass MatRecycleRows {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRecycleRows, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatRecycleRows, isStandalone: true, selector: \"mat-table[recycleRows], table[mat-table][recycleRows]\", providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRecycleRows, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-table[recycleRows], table[mat-table][recycleRows]',\n providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n standalone: true,\n }]\n }] });\nclass MatTable extends CdkTable {\n constructor() {\n super(...arguments);\n /** Overrides the sticky CSS class set by the `CdkTable`. */\n this.stickyCssClass = 'mat-mdc-table-sticky';\n /** Overrides the need to add position: sticky on every sticky cell element in `CdkTable`. */\n this.needsPositionStickyOnElement = false;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatTable, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"18.2.0-next.2\", type: MatTable, isStandalone: true, selector: \"mat-table, table[mat-table]\", host: { properties: { \"class.mdc-table-fixed-layout\": \"fixedLayout\" }, classAttribute: \"mat-mdc-table mdc-data-table__table\" }, providers: [\n { provide: CdkTable, useExisting: MatTable },\n { provide: CDK_TABLE, useExisting: MatTable },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\n // is only included in the build if used.\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], exportAs: [\"matTable\"], usesInheritance: true, ngImport: i0, template: `\n \n \n\n \n @if (_isServer) {\n \n }\n\n @if (_isNativeHtmlTable) {\n \n \n \n \n \n \n \n \n \n \n } @else {\n \n \n \n \n }\n `, isInline: true, styles: [\".mat-mdc-table-sticky{position:sticky !important}mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}.mat-mdc-table{min-width:100%;border:0;border-spacing:0;table-layout:auto;white-space:normal;background-color:var(--mat-table-background-color, var(--mat-app-surface))}.mdc-data-table__cell{box-sizing:border-box;overflow:hidden;text-align:left;text-overflow:ellipsis}[dir=rtl] .mdc-data-table__cell{text-align:right}.mdc-data-table__cell,.mdc-data-table__header-cell{padding:0 16px}.mat-mdc-header-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-header-container-height, 56px);color:var(--mat-table-header-headline-color, var(--mat-app-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-table-header-headline-font, var(--mat-app-title-small-font, Roboto, sans-serif));line-height:var(--mat-table-header-headline-line-height, var(--mat-app-title-small-line-height));font-size:var(--mat-table-header-headline-size, var(--mat-app-title-small-size, 14px));font-weight:var(--mat-table-header-headline-weight, var(--mat-app-title-small-weight, 500))}.mat-mdc-row{height:var(--mat-table-row-item-container-height, 52px);color:var(--mat-table-row-item-label-text-color, var(--mat-app-on-surface, rgba(0, 0, 0, 0.87)))}.mat-mdc-row,.mdc-data-table__content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-table-row-item-label-text-font, var(--mat-app-body-medium-font, Roboto, sans-serif));line-height:var(--mat-table-row-item-label-text-line-height, var(--mat-app-body-medium-line-height));font-size:var(--mat-table-row-item-label-text-size, var(--mat-app-body-medium-size, 14px));font-weight:var(--mat-table-row-item-label-text-weight, var(--mat-app-body-medium-weight))}.mat-mdc-footer-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-footer-container-height, 52px);color:var(--mat-table-row-item-label-text-color, var(--mat-app-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-table-footer-supporting-text-font, var(--mat-app-body-medium-font, Roboto, sans-serif));line-height:var(--mat-table-footer-supporting-text-line-height, var(--mat-app-body-medium-line-height));font-size:var(--mat-table-footer-supporting-text-size, var(--mat-app-body-medium-size, 14px));font-weight:var(--mat-table-footer-supporting-text-weight, var(--mat-app-body-medium-weight));letter-spacing:var(--mat-table-footer-supporting-text-tracking, var(--mat-app-body-medium-tracking))}.mat-mdc-header-cell{border-bottom-color:var(--mat-table-row-item-outline-color, var(--mat-app-outline, rgba(0, 0, 0, 0.12)));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-header-headline-tracking, var(--mat-app-title-small-tracking));font-weight:inherit;line-height:inherit;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;outline:none;text-align:left}[dir=rtl] .mat-mdc-header-cell{text-align:right}.mat-mdc-cell{border-bottom-color:var(--mat-table-row-item-outline-color, var(--mat-app-outline, rgba(0, 0, 0, 0.12)));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-row-item-label-text-tracking, var(--mat-app-body-medium-tracking));line-height:inherit}.mdc-data-table__row:last-child .mat-mdc-cell{border-bottom:none}.mat-mdc-footer-cell{letter-spacing:var(--mat-table-row-item-label-text-tracking, var(--mat-app-body-medium-tracking))}mat-row.mat-mdc-row,mat-header-row.mat-mdc-header-row,mat-footer-row.mat-mdc-footer-row{border-bottom:none}.mat-mdc-table tbody,.mat-mdc-table tfoot,.mat-mdc-table thead,.mat-mdc-cell,.mat-mdc-footer-cell,.mat-mdc-header-row,.mat-mdc-row,.mat-mdc-footer-row,.mat-mdc-table .mat-mdc-header-cell{background:inherit}.mat-mdc-table mat-header-row.mat-mdc-header-row,.mat-mdc-table mat-row.mat-mdc-row,.mat-mdc-table mat-footer-row.mat-mdc-footer-cell{height:unset}mat-header-cell.mat-mdc-header-cell,mat-cell.mat-mdc-cell,mat-footer-cell.mat-mdc-footer-cell{align-self:stretch}\"], dependencies: [{ kind: \"directive\", type: HeaderRowOutlet, selector: \"[headerRowOutlet]\" }, { kind: \"directive\", type: DataRowOutlet, selector: \"[rowOutlet]\" }, { kind: \"directive\", type: NoDataRowOutlet, selector: \"[noDataRowOutlet]\" }, { kind: \"directive\", type: FooterRowOutlet, selector: \"[footerRowOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatTable, decorators: [{\n type: Component,\n args: [{ selector: 'mat-table, table[mat-table]', exportAs: 'matTable', template: `\n \n \n\n \n @if (_isServer) {\n \n }\n\n @if (_isNativeHtmlTable) {\n \n \n \n \n \n \n \n \n \n \n } @else {\n \n \n \n \n }\n `, host: {\n 'class': 'mat-mdc-table mdc-data-table__table',\n '[class.mdc-table-fixed-layout]': 'fixedLayout',\n }, providers: [\n { provide: CdkTable, useExisting: MatTable },\n { provide: CDK_TABLE, useExisting: MatTable },\n { provide: _COALESCED_STYLE_SCHEDULER, useClass: _CoalescedStyleScheduler },\n // TODO(michaeljamesparsons) Abstract the view repeater strategy to a directive API so this code\n // is only included in the build if used.\n { provide: _VIEW_REPEATER_STRATEGY, useClass: _DisposeViewRepeaterStrategy },\n // Prevent nested tables from seeing this table's StickyPositioningListener.\n { provide: STICKY_POSITIONING_LISTENER, useValue: null },\n ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, standalone: true, imports: [HeaderRowOutlet, DataRowOutlet, NoDataRowOutlet, FooterRowOutlet], styles: [\".mat-mdc-table-sticky{position:sticky !important}mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}.mat-mdc-table{min-width:100%;border:0;border-spacing:0;table-layout:auto;white-space:normal;background-color:var(--mat-table-background-color, var(--mat-app-surface))}.mdc-data-table__cell{box-sizing:border-box;overflow:hidden;text-align:left;text-overflow:ellipsis}[dir=rtl] .mdc-data-table__cell{text-align:right}.mdc-data-table__cell,.mdc-data-table__header-cell{padding:0 16px}.mat-mdc-header-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-header-container-height, 56px);color:var(--mat-table-header-headline-color, var(--mat-app-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-table-header-headline-font, var(--mat-app-title-small-font, Roboto, sans-serif));line-height:var(--mat-table-header-headline-line-height, var(--mat-app-title-small-line-height));font-size:var(--mat-table-header-headline-size, var(--mat-app-title-small-size, 14px));font-weight:var(--mat-table-header-headline-weight, var(--mat-app-title-small-weight, 500))}.mat-mdc-row{height:var(--mat-table-row-item-container-height, 52px);color:var(--mat-table-row-item-label-text-color, var(--mat-app-on-surface, rgba(0, 0, 0, 0.87)))}.mat-mdc-row,.mdc-data-table__content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-table-row-item-label-text-font, var(--mat-app-body-medium-font, Roboto, sans-serif));line-height:var(--mat-table-row-item-label-text-line-height, var(--mat-app-body-medium-line-height));font-size:var(--mat-table-row-item-label-text-size, var(--mat-app-body-medium-size, 14px));font-weight:var(--mat-table-row-item-label-text-weight, var(--mat-app-body-medium-weight))}.mat-mdc-footer-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-footer-container-height, 52px);color:var(--mat-table-row-item-label-text-color, var(--mat-app-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mat-table-footer-supporting-text-font, var(--mat-app-body-medium-font, Roboto, sans-serif));line-height:var(--mat-table-footer-supporting-text-line-height, var(--mat-app-body-medium-line-height));font-size:var(--mat-table-footer-supporting-text-size, var(--mat-app-body-medium-size, 14px));font-weight:var(--mat-table-footer-supporting-text-weight, var(--mat-app-body-medium-weight));letter-spacing:var(--mat-table-footer-supporting-text-tracking, var(--mat-app-body-medium-tracking))}.mat-mdc-header-cell{border-bottom-color:var(--mat-table-row-item-outline-color, var(--mat-app-outline, rgba(0, 0, 0, 0.12)));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-header-headline-tracking, var(--mat-app-title-small-tracking));font-weight:inherit;line-height:inherit;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;outline:none;text-align:left}[dir=rtl] .mat-mdc-header-cell{text-align:right}.mat-mdc-cell{border-bottom-color:var(--mat-table-row-item-outline-color, var(--mat-app-outline, rgba(0, 0, 0, 0.12)));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-row-item-label-text-tracking, var(--mat-app-body-medium-tracking));line-height:inherit}.mdc-data-table__row:last-child .mat-mdc-cell{border-bottom:none}.mat-mdc-footer-cell{letter-spacing:var(--mat-table-row-item-label-text-tracking, var(--mat-app-body-medium-tracking))}mat-row.mat-mdc-row,mat-header-row.mat-mdc-header-row,mat-footer-row.mat-mdc-footer-row{border-bottom:none}.mat-mdc-table tbody,.mat-mdc-table tfoot,.mat-mdc-table thead,.mat-mdc-cell,.mat-mdc-footer-cell,.mat-mdc-header-row,.mat-mdc-row,.mat-mdc-footer-row,.mat-mdc-table .mat-mdc-header-cell{background:inherit}.mat-mdc-table mat-header-row.mat-mdc-header-row,.mat-mdc-table mat-row.mat-mdc-row,.mat-mdc-table mat-footer-row.mat-mdc-footer-cell{height:unset}mat-header-cell.mat-mdc-header-cell,mat-cell.mat-mdc-cell,mat-footer-cell.mat-mdc-footer-cell{align-self:stretch}\"] }]\n }] });\n\n/**\n * Cell definition for the mat-table.\n * Captures the template of a column's data row cell as well as cell-specific properties.\n */\nclass MatCellDef extends CdkCellDef {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatCellDef, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatCellDef, isStandalone: true, selector: \"[matCellDef]\", providers: [{ provide: CdkCellDef, useExisting: MatCellDef }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatCellDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matCellDef]',\n providers: [{ provide: CdkCellDef, useExisting: MatCellDef }],\n standalone: true,\n }]\n }] });\n/**\n * Header cell definition for the mat-table.\n * Captures the template of a column's header cell and as well as cell-specific properties.\n */\nclass MatHeaderCellDef extends CdkHeaderCellDef {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatHeaderCellDef, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatHeaderCellDef, isStandalone: true, selector: \"[matHeaderCellDef]\", providers: [{ provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatHeaderCellDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matHeaderCellDef]',\n providers: [{ provide: CdkHeaderCellDef, useExisting: MatHeaderCellDef }],\n standalone: true,\n }]\n }] });\n/**\n * Footer cell definition for the mat-table.\n * Captures the template of a column's footer cell and as well as cell-specific properties.\n */\nclass MatFooterCellDef extends CdkFooterCellDef {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatFooterCellDef, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatFooterCellDef, isStandalone: true, selector: \"[matFooterCellDef]\", providers: [{ provide: CdkFooterCellDef, useExisting: MatFooterCellDef }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatFooterCellDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matFooterCellDef]',\n providers: [{ provide: CdkFooterCellDef, useExisting: MatFooterCellDef }],\n standalone: true,\n }]\n }] });\n/**\n * Column definition for the mat-table.\n * Defines a set of cells available for a table column.\n */\nclass MatColumnDef extends CdkColumnDef {\n /** Unique name for this column. */\n get name() {\n return this._name;\n }\n set name(name) {\n this._setNameInput(name);\n }\n /**\n * Add \"mat-column-\" prefix in addition to \"cdk-column-\" prefix.\n * In the future, this will only add \"mat-column-\" and columnCssClassName\n * will change from type string[] to string.\n * @docs-private\n */\n _updateColumnCssClassName() {\n super._updateColumnCssClassName();\n this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatColumnDef, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatColumnDef, isStandalone: true, selector: \"[matColumnDef]\", inputs: { name: [\"matColumnDef\", \"name\"] }, providers: [\n { provide: CdkColumnDef, useExisting: MatColumnDef },\n { provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef },\n ], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatColumnDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matColumnDef]',\n providers: [\n { provide: CdkColumnDef, useExisting: MatColumnDef },\n { provide: 'MAT_SORT_HEADER_COLUMN_DEF', useExisting: MatColumnDef },\n ],\n standalone: true,\n }]\n }], propDecorators: { name: [{\n type: Input,\n args: ['matColumnDef']\n }] } });\n/** Header cell template container that adds the right classes and role. */\nclass MatHeaderCell extends CdkHeaderCell {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatHeaderCell, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatHeaderCell, isStandalone: true, selector: \"mat-header-cell, th[mat-header-cell]\", host: { attributes: { \"role\": \"columnheader\" }, classAttribute: \"mat-mdc-header-cell mdc-data-table__header-cell\" }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatHeaderCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-header-cell, th[mat-header-cell]',\n host: {\n 'class': 'mat-mdc-header-cell mdc-data-table__header-cell',\n 'role': 'columnheader',\n },\n standalone: true,\n }]\n }] });\n/** Footer cell template container that adds the right classes and role. */\nclass MatFooterCell extends CdkFooterCell {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatFooterCell, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatFooterCell, isStandalone: true, selector: \"mat-footer-cell, td[mat-footer-cell]\", host: { classAttribute: \"mat-mdc-footer-cell mdc-data-table__cell\" }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatFooterCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-footer-cell, td[mat-footer-cell]',\n host: {\n 'class': 'mat-mdc-footer-cell mdc-data-table__cell',\n },\n standalone: true,\n }]\n }] });\n/** Cell template container that adds the right classes and role. */\nclass MatCell extends CdkCell {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatCell, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatCell, isStandalone: true, selector: \"mat-cell, td[mat-cell]\", host: { classAttribute: \"mat-mdc-cell mdc-data-table__cell\" }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatCell, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-cell, td[mat-cell]',\n host: {\n 'class': 'mat-mdc-cell mdc-data-table__cell',\n },\n standalone: true,\n }]\n }] });\n\n// We can't reuse `CDK_ROW_TEMPLATE` because it's incompatible with local compilation mode.\nconst ROW_TEMPLATE = ``;\n/**\n * Header row definition for the mat-table.\n * Captures the header row's template and other header properties such as the columns to display.\n */\nclass MatHeaderRowDef extends CdkHeaderRowDef {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatHeaderRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: MatHeaderRowDef, isStandalone: true, selector: \"[matHeaderRowDef]\", inputs: { columns: [\"matHeaderRowDef\", \"columns\"], sticky: [\"matHeaderRowDefSticky\", \"sticky\", booleanAttribute] }, providers: [{ provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatHeaderRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matHeaderRowDef]',\n providers: [{ provide: CdkHeaderRowDef, useExisting: MatHeaderRowDef }],\n inputs: [\n { name: 'columns', alias: 'matHeaderRowDef' },\n { name: 'sticky', alias: 'matHeaderRowDefSticky', transform: booleanAttribute },\n ],\n standalone: true,\n }]\n }] });\n/**\n * Footer row definition for the mat-table.\n * Captures the footer row's template and other footer properties such as the columns to display.\n */\nclass MatFooterRowDef extends CdkFooterRowDef {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatFooterRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"16.1.0\", version: \"18.2.0-next.2\", type: MatFooterRowDef, isStandalone: true, selector: \"[matFooterRowDef]\", inputs: { columns: [\"matFooterRowDef\", \"columns\"], sticky: [\"matFooterRowDefSticky\", \"sticky\", booleanAttribute] }, providers: [{ provide: CdkFooterRowDef, useExisting: MatFooterRowDef }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatFooterRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matFooterRowDef]',\n providers: [{ provide: CdkFooterRowDef, useExisting: MatFooterRowDef }],\n inputs: [\n { name: 'columns', alias: 'matFooterRowDef' },\n { name: 'sticky', alias: 'matFooterRowDefSticky', transform: booleanAttribute },\n ],\n standalone: true,\n }]\n }] });\n/**\n * Data row definition for the mat-table.\n * Captures the data row's template and other properties such as the columns to display and\n * a when predicate that describes when this row should be used.\n */\nclass MatRowDef extends CdkRowDef {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRowDef, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatRowDef, isStandalone: true, selector: \"[matRowDef]\", inputs: { columns: [\"matRowDefColumns\", \"columns\"], when: [\"matRowDefWhen\", \"when\"] }, providers: [{ provide: CdkRowDef, useExisting: MatRowDef }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRowDef, decorators: [{\n type: Directive,\n args: [{\n selector: '[matRowDef]',\n providers: [{ provide: CdkRowDef, useExisting: MatRowDef }],\n inputs: [\n { name: 'columns', alias: 'matRowDefColumns' },\n { name: 'when', alias: 'matRowDefWhen' },\n ],\n standalone: true,\n }]\n }] });\n/** Header template container that contains the cell outlet. Adds the right class and role. */\nclass MatHeaderRow extends CdkHeaderRow {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatHeaderRow, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatHeaderRow, isStandalone: true, selector: \"mat-header-row, tr[mat-header-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"mat-mdc-header-row mdc-data-table__header-row\" }, providers: [{ provide: CdkHeaderRow, useExisting: MatHeaderRow }], exportAs: [\"matHeaderRow\"], usesInheritance: true, ngImport: i0, template: \"\", isInline: true, dependencies: [{ kind: \"directive\", type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatHeaderRow, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-header-row, tr[mat-header-row]',\n template: ROW_TEMPLATE,\n host: {\n 'class': 'mat-mdc-header-row mdc-data-table__header-row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matHeaderRow',\n providers: [{ provide: CdkHeaderRow, useExisting: MatHeaderRow }],\n standalone: true,\n imports: [CdkCellOutlet],\n }]\n }] });\n/** Footer template container that contains the cell outlet. Adds the right class and role. */\nclass MatFooterRow extends CdkFooterRow {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatFooterRow, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatFooterRow, isStandalone: true, selector: \"mat-footer-row, tr[mat-footer-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"mat-mdc-footer-row mdc-data-table__row\" }, providers: [{ provide: CdkFooterRow, useExisting: MatFooterRow }], exportAs: [\"matFooterRow\"], usesInheritance: true, ngImport: i0, template: \"\", isInline: true, dependencies: [{ kind: \"directive\", type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatFooterRow, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-footer-row, tr[mat-footer-row]',\n template: ROW_TEMPLATE,\n host: {\n 'class': 'mat-mdc-footer-row mdc-data-table__row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matFooterRow',\n providers: [{ provide: CdkFooterRow, useExisting: MatFooterRow }],\n standalone: true,\n imports: [CdkCellOutlet],\n }]\n }] });\n/** Data row template container that contains the cell outlet. Adds the right class and role. */\nclass MatRow extends CdkRow {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRow, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatRow, isStandalone: true, selector: \"mat-row, tr[mat-row]\", host: { attributes: { \"role\": \"row\" }, classAttribute: \"mat-mdc-row mdc-data-table__row\" }, providers: [{ provide: CdkRow, useExisting: MatRow }], exportAs: [\"matRow\"], usesInheritance: true, ngImport: i0, template: \"\", isInline: true, dependencies: [{ kind: \"directive\", type: CdkCellOutlet, selector: \"[cdkCellOutlet]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatRow, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-row, tr[mat-row]',\n template: ROW_TEMPLATE,\n host: {\n 'class': 'mat-mdc-row mdc-data-table__row',\n 'role': 'row',\n },\n // See note on CdkTable for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n encapsulation: ViewEncapsulation.None,\n exportAs: 'matRow',\n providers: [{ provide: CdkRow, useExisting: MatRow }],\n standalone: true,\n imports: [CdkCellOutlet],\n }]\n }] });\n/** Row that can be used to display a message when no data is shown in the table. */\nclass MatNoDataRow extends CdkNoDataRow {\n constructor() {\n super(...arguments);\n this._contentClassName = 'mat-mdc-no-data-row';\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatNoDataRow, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatNoDataRow, isStandalone: true, selector: \"ng-template[matNoDataRow]\", providers: [{ provide: CdkNoDataRow, useExisting: MatNoDataRow }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatNoDataRow, decorators: [{\n type: Directive,\n args: [{\n selector: 'ng-template[matNoDataRow]',\n providers: [{ provide: CdkNoDataRow, useExisting: MatNoDataRow }],\n standalone: true,\n }]\n }] });\n\n/**\n * Column that simply shows text content for the header and row cells. Assumes that the table\n * is using the native table implementation (`
\n {{headerText}}\n \n {{dataAccessor(data, name)}}\n \n {{headerText}}\n \n {{dataAccessor(data, name)}}\n
`).\n *\n * By default, the name of this column will be the header text and data property accessor.\n * The header text can be overridden with the `headerText` input. Cell values can be overridden with\n * the `dataAccessor` input. Change the text justification to the start or end using the `justify`\n * input.\n */\nclass MatTextColumn extends CdkTextColumn {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatTextColumn, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", type: MatTextColumn, isStandalone: true, selector: \"mat-text-column\", usesInheritance: true, ngImport: i0, template: `\n \n \n \n \n `, isInline: true, dependencies: [{ kind: \"directive\", type: MatColumnDef, selector: \"[matColumnDef]\", inputs: [\"matColumnDef\"] }, { kind: \"directive\", type: MatHeaderCellDef, selector: \"[matHeaderCellDef]\" }, { kind: \"directive\", type: MatHeaderCell, selector: \"mat-header-cell, th[mat-header-cell]\" }, { kind: \"directive\", type: MatCellDef, selector: \"[matCellDef]\" }, { kind: \"directive\", type: MatCell, selector: \"mat-cell, td[mat-cell]\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatTextColumn, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-text-column',\n template: `\n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n // Change detection is intentionally not set to OnPush. This component's template will be provided\n // to the table to be inserted into its view. This is problematic when change detection runs since\n // the bindings in this template will be evaluated _after_ the table's view is evaluated, which\n // mean's the template in the table's view will not have the updated value (and in fact will cause\n // an ExpressionChangedAfterItHasBeenCheckedError).\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: true,\n imports: [MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell],\n }]\n }] });\n\nconst EXPORTED_DECLARATIONS = [\n // Table\n MatTable,\n MatRecycleRows,\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n MatNoDataRow,\n MatTextColumn,\n];\nclass MatTableModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatTableModule, imports: [MatCommonModule, CdkTableModule, \n // Table\n MatTable,\n MatRecycleRows,\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n MatNoDataRow,\n MatTextColumn], exports: [MatCommonModule, \n // Table\n MatTable,\n MatRecycleRows,\n // Template defs\n MatHeaderCellDef,\n MatHeaderRowDef,\n MatColumnDef,\n MatCellDef,\n MatRowDef,\n MatFooterCellDef,\n MatFooterRowDef,\n // Cell directives\n MatHeaderCell,\n MatCell,\n MatFooterCell,\n // Row directives\n MatHeaderRow,\n MatRow,\n MatFooterRow,\n MatNoDataRow,\n MatTextColumn] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatTableModule, imports: [MatCommonModule, CdkTableModule, MatCommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0-next.2\", ngImport: i0, type: MatTableModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, CdkTableModule, ...EXPORTED_DECLARATIONS],\n exports: [MatCommonModule, EXPORTED_DECLARATIONS],\n }]\n }] });\n\n/**\n * Corresponds to `Number.MAX_SAFE_INTEGER`. Moved out into a variable here due to\n * flaky browser support and the value not being defined in Closure's typings.\n */\nconst MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * Data source that accepts a client-side data array and includes native support of filtering,\n * sorting (using MatSort), and pagination (using MatPaginator).\n *\n * Allows for sort customization by overriding sortingDataAccessor, which defines how data\n * properties are accessed. Also allows for filter customization by overriding filterPredicate,\n * which defines how row data is converted to a string for filter matching.\n *\n * **Note:** This class is meant to be a simple data source to help you get started. As such\n * it isn't equipped to handle some more advanced cases like robust i18n support or server-side\n * interactions. If your app needs to support more advanced use cases, consider implementing your\n * own `DataSource`.\n */\nclass MatTableDataSource extends DataSource {\n /** Array of data that should be rendered by the table, where each object represents one row. */\n get data() {\n return this._data.value;\n }\n set data(data) {\n data = Array.isArray(data) ? data : [];\n this._data.next(data);\n // Normally the `filteredData` is updated by the re-render\n // subscription, but that won't happen if it's inactive.\n if (!this._renderChangesSubscription) {\n this._filterData(data);\n }\n }\n /**\n * Filter term that should be used to filter out objects from the data array. To override how\n * data objects match to this filter string, provide a custom function for filterPredicate.\n */\n get filter() {\n return this._filter.value;\n }\n set filter(filter) {\n this._filter.next(filter);\n // Normally the `filteredData` is updated by the re-render\n // subscription, but that won't happen if it's inactive.\n if (!this._renderChangesSubscription) {\n this._filterData(this.data);\n }\n }\n /**\n * Instance of the MatSort directive used by the table to control its sorting. Sort changes\n * emitted by the MatSort will trigger an update to the table's rendered data.\n */\n get sort() {\n return this._sort;\n }\n set sort(sort) {\n this._sort = sort;\n this._updateChangeSubscription();\n }\n /**\n * Instance of the paginator component used by the table to control what page of the data is\n * displayed. Page changes emitted by the paginator will trigger an update to the\n * table's rendered data.\n *\n * Note that the data source uses the paginator's properties to calculate which page of data\n * should be displayed. If the paginator receives its properties as template inputs,\n * e.g. `[pageLength]=100` or `[pageIndex]=1`, then be sure that the paginator's view has been\n * initialized before assigning it to this data source.\n */\n get paginator() {\n return this._paginator;\n }\n set paginator(paginator) {\n this._paginator = paginator;\n this._updateChangeSubscription();\n }\n constructor(initialData = []) {\n super();\n /** Stream emitting render data to the table (depends on ordered data changes). */\n this._renderData = new BehaviorSubject([]);\n /** Stream that emits when a new filter string is set on the data source. */\n this._filter = new BehaviorSubject('');\n /** Used to react to internal changes of the paginator that are made by the data source itself. */\n this._internalPageChanges = new Subject();\n /**\n * Subscription to the changes that should trigger an update to the table's rendered rows, such\n * as filtering, sorting, pagination, or base data changes.\n */\n this._renderChangesSubscription = null;\n /**\n * Data accessor function that is used for accessing data properties for sorting through\n * the default sortData function.\n * This default function assumes that the sort header IDs (which defaults to the column name)\n * matches the data's properties (e.g. column Xyz represents data['Xyz']).\n * May be set to a custom function for different behavior.\n * @param data Data object that is being accessed.\n * @param sortHeaderId The name of the column that represents the data.\n */\n this.sortingDataAccessor = (data, sortHeaderId) => {\n const value = data[sortHeaderId];\n if (_isNumberValue(value)) {\n const numberValue = Number(value);\n // Numbers beyond `MAX_SAFE_INTEGER` can't be compared reliably so we leave them as strings.\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER\n return numberValue < MAX_SAFE_INTEGER ? numberValue : value;\n }\n return value;\n };\n /**\n * Gets a sorted copy of the data array based on the state of the MatSort. Called\n * after changes are made to the filtered data or when sort changes are emitted from MatSort.\n * By default, the function retrieves the active sort and its direction and compares data\n * by retrieving data using the sortingDataAccessor. May be overridden for a custom implementation\n * of data ordering.\n * @param data The array of data that should be sorted.\n * @param sort The connected MatSort that holds the current sort state.\n */\n this.sortData = (data, sort) => {\n const active = sort.active;\n const direction = sort.direction;\n if (!active || direction == '') {\n return data;\n }\n return data.sort((a, b) => {\n let valueA = this.sortingDataAccessor(a, active);\n let valueB = this.sortingDataAccessor(b, active);\n // If there are data in the column that can be converted to a number,\n // it must be ensured that the rest of the data\n // is of the same type so as not to order incorrectly.\n const valueAType = typeof valueA;\n const valueBType = typeof valueB;\n if (valueAType !== valueBType) {\n if (valueAType === 'number') {\n valueA += '';\n }\n if (valueBType === 'number') {\n valueB += '';\n }\n }\n // If both valueA and valueB exist (truthy), then compare the two. Otherwise, check if\n // one value exists while the other doesn't. In this case, existing value should come last.\n // This avoids inconsistent results when comparing values to undefined/null.\n // If neither value exists, return 0 (equal).\n let comparatorResult = 0;\n if (valueA != null && valueB != null) {\n // Check if one value is greater than the other; if equal, comparatorResult should remain 0.\n if (valueA > valueB) {\n comparatorResult = 1;\n }\n else if (valueA < valueB) {\n comparatorResult = -1;\n }\n }\n else if (valueA != null) {\n comparatorResult = 1;\n }\n else if (valueB != null) {\n comparatorResult = -1;\n }\n return comparatorResult * (direction == 'asc' ? 1 : -1);\n });\n };\n /**\n * Checks if a data object matches the data source's filter string. By default, each data object\n * is converted to a string of its properties and returns true if the filter has\n * at least one occurrence in that string. By default, the filter string has its whitespace\n * trimmed and the match is case-insensitive. May be overridden for a custom implementation of\n * filter matching.\n * @param data Data object used to check against the filter.\n * @param filter Filter string that has been set on the data source.\n * @returns Whether the filter matches against the data\n */\n this.filterPredicate = (data, filter) => {\n // Transform the data into a lowercase string of all property values.\n const dataStr = Object.keys(data)\n .reduce((currentTerm, key) => {\n // Use an obscure Unicode character to delimit the words in the concatenated string.\n // This avoids matches where the values of two columns combined will match the user's query\n // (e.g. `Flute` and `Stop` will match `Test`). The character is intended to be something\n // that has a very low chance of being typed in by somebody in a text field. This one in\n // particular is \"White up-pointing triangle with dot\" from\n // https://en.wikipedia.org/wiki/List_of_Unicode_characters\n return currentTerm + data[key] + '◬';\n }, '')\n .toLowerCase();\n // Transform the filter by converting it to lowercase and removing whitespace.\n const transformedFilter = filter.trim().toLowerCase();\n return dataStr.indexOf(transformedFilter) != -1;\n };\n this._data = new BehaviorSubject(initialData);\n this._updateChangeSubscription();\n }\n /**\n * Subscribe to changes that should trigger an update to the table's rendered rows. When the\n * changes occur, process the current state of the filter, sort, and pagination along with\n * the provided base data and send it to the table for rendering.\n */\n _updateChangeSubscription() {\n // Sorting and/or pagination should be watched if sort and/or paginator are provided.\n // The events should emit whenever the component emits a change or initializes, or if no\n // component is provided, a stream with just a null event should be provided.\n // The `sortChange` and `pageChange` acts as a signal to the combineLatests below so that the\n // pipeline can progress to the next step. Note that the value from these streams are not used,\n // they purely act as a signal to progress in the pipeline.\n const sortChange = this._sort\n ? merge(this._sort.sortChange, this._sort.initialized)\n : of(null);\n const pageChange = this._paginator\n ? merge(this._paginator.page, this._internalPageChanges, this._paginator.initialized)\n : of(null);\n const dataStream = this._data;\n // Watch for base data or filter changes to provide a filtered set of data.\n const filteredData = combineLatest([dataStream, this._filter]).pipe(map(([data]) => this._filterData(data)));\n // Watch for filtered data or sort changes to provide an ordered set of data.\n const orderedData = combineLatest([filteredData, sortChange]).pipe(map(([data]) => this._orderData(data)));\n // Watch for ordered data or page changes to provide a paged set of data.\n const paginatedData = combineLatest([orderedData, pageChange]).pipe(map(([data]) => this._pageData(data)));\n // Watched for paged data changes and send the result to the table to render.\n this._renderChangesSubscription?.unsubscribe();\n this._renderChangesSubscription = paginatedData.subscribe(data => this._renderData.next(data));\n }\n /**\n * Returns a filtered data array where each filter object contains the filter string within\n * the result of the filterPredicate function. If no filter is set, returns the data array\n * as provided.\n */\n _filterData(data) {\n // If there is a filter string, filter out data that does not contain it.\n // Each data object is converted to a string using the function defined by filterPredicate.\n // May be overridden for customization.\n this.filteredData =\n this.filter == null || this.filter === ''\n ? data\n : data.filter(obj => this.filterPredicate(obj, this.filter));\n if (this.paginator) {\n this._updatePaginator(this.filteredData.length);\n }\n return this.filteredData;\n }\n /**\n * Returns a sorted copy of the data if MatSort has a sort applied, otherwise just returns the\n * data array as provided. Uses the default data accessor for data lookup, unless a\n * sortDataAccessor function is defined.\n */\n _orderData(data) {\n // If there is no active sort or direction, return the data without trying to sort.\n if (!this.sort) {\n return data;\n }\n return this.sortData(data.slice(), this.sort);\n }\n /**\n * Returns a paged slice of the provided data array according to the provided paginator's page\n * index and length. If there is no paginator provided, returns the data array as provided.\n */\n _pageData(data) {\n if (!this.paginator) {\n return data;\n }\n const startIndex = this.paginator.pageIndex * this.paginator.pageSize;\n return data.slice(startIndex, startIndex + this.paginator.pageSize);\n }\n /**\n * Updates the paginator to reflect the length of the filtered data, and makes sure that the page\n * index does not exceed the paginator's last page. Values are changed in a resolved promise to\n * guard against making property changes within a round of change detection.\n */\n _updatePaginator(filteredDataLength) {\n Promise.resolve().then(() => {\n const paginator = this.paginator;\n if (!paginator) {\n return;\n }\n paginator.length = filteredDataLength;\n // If the page index is set beyond the page, reduce it to the last page.\n if (paginator.pageIndex > 0) {\n const lastPageIndex = Math.ceil(paginator.length / paginator.pageSize) - 1 || 0;\n const newPageIndex = Math.min(paginator.pageIndex, lastPageIndex);\n if (newPageIndex !== paginator.pageIndex) {\n paginator.pageIndex = newPageIndex;\n // Since the paginator only emits after user-generated changes,\n // we need our own stream so we know to should re-render the data.\n this._internalPageChanges.next();\n }\n }\n });\n }\n /**\n * Used by the MatTable. Called when it connects to the data source.\n * @docs-private\n */\n connect() {\n if (!this._renderChangesSubscription) {\n this._updateChangeSubscription();\n }\n return this._renderData;\n }\n /**\n * Used by the MatTable. Called when it disconnects from the data source.\n * @docs-private\n */\n disconnect() {\n this._renderChangesSubscription?.unsubscribe();\n this._renderChangesSubscription = null;\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MatCell, MatCellDef, MatColumnDef, MatFooterCell, MatFooterCellDef, MatFooterRow, MatFooterRowDef, MatHeaderCell, MatHeaderCellDef, MatHeaderRow, MatHeaderRowDef, MatNoDataRow, MatRecycleRows, MatRow, MatRowDef, MatTable, MatTableDataSource, MatTableModule, MatTextColumn };\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function pairwise() {\n return operate((source, subscriber) => {\n let prev;\n let hasPrev = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\n","import * as i0 from '@angular/core';\nimport { Directive, Injectable, Inject, CSP_NONCE, Optional, NgModule, Injector } from '@angular/core';\nimport { Subject, fromEvent, merge, combineLatest, Observable } from 'rxjs';\nimport { map, takeUntil, filter, mapTo, take, startWith, pairwise, distinctUntilChanged, share, skip } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport * as i2 from '@angular/cdk/table';\nimport { _COALESCED_STYLE_SCHEDULER } from '@angular/cdk/table';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ESCAPE } from '@angular/cdk/keycodes';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO: Figure out how to remove `mat-` classes from the CDK part of the\n// column resize implementation.\nconst HEADER_CELL_SELECTOR = '.cdk-header-cell, .mat-header-cell';\nconst HEADER_ROW_SELECTOR = '.cdk-header-row, .mat-header-row';\nconst RESIZE_OVERLAY_SELECTOR = '.mat-column-resize-overlay-thumb';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** closest implementation that is able to start from non-Element Nodes. */\nfunction closest(element, selector) {\n if (!(element instanceof Node)) {\n return null;\n }\n let curr = element;\n while (curr != null && !(curr instanceof Element)) {\n curr = curr.parentNode;\n }\n return curr?.closest(selector) ?? null;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst HOVER_OR_ACTIVE_CLASS = 'cdk-column-resize-hover-or-active';\nconst WITH_RESIZED_COLUMN_CLASS = 'cdk-column-resize-with-resized-column';\nlet nextId = 0;\n/**\n * Base class for ColumnResize directives which attach to mat-table elements to\n * provide common events and services for column resizing.\n */\nclass ColumnResize {\n constructor() {\n this.destroyed = new Subject();\n /** Unique ID for this table instance. */\n this.selectorId = `${++nextId}`;\n }\n ngAfterViewInit() {\n this.elementRef.nativeElement.classList.add(this.getUniqueCssClass());\n this._listenForRowHoverEvents();\n this._listenForResizeActivity();\n this._listenForHoverActivity();\n }\n ngOnDestroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n /** Gets the unique CSS class name for this table instance. */\n getUniqueCssClass() {\n return `cdk-column-resize-${this.selectorId}`;\n }\n /** Called when a column in the table is resized. Applies a css class to the table element. */\n setResized() {\n this.elementRef.nativeElement.classList.add(WITH_RESIZED_COLUMN_CLASS);\n }\n _listenForRowHoverEvents() {\n this.ngZone.runOutsideAngular(() => {\n const element = this.elementRef.nativeElement;\n fromEvent(element, 'mouseover')\n .pipe(map(event => closest(event.target, HEADER_CELL_SELECTOR)), takeUntil(this.destroyed))\n .subscribe(this.eventDispatcher.headerCellHovered);\n fromEvent(element, 'mouseleave')\n .pipe(filter(event => !!event.relatedTarget &&\n !event.relatedTarget.matches(RESIZE_OVERLAY_SELECTOR)), mapTo(null), takeUntil(this.destroyed))\n .subscribe(this.eventDispatcher.headerCellHovered);\n });\n }\n _listenForResizeActivity() {\n merge(this.eventDispatcher.overlayHandleActiveForCell.pipe(mapTo(undefined)), this.notifier.triggerResize.pipe(mapTo(undefined)), this.notifier.resizeCompleted.pipe(mapTo(undefined)))\n .pipe(take(1), takeUntil(this.destroyed))\n .subscribe(() => {\n this.setResized();\n });\n }\n _listenForHoverActivity() {\n this.eventDispatcher.headerRowHoveredOrActiveDistinct\n .pipe(startWith(null), pairwise(), takeUntil(this.destroyed))\n .subscribe(([previousRow, hoveredRow]) => {\n if (hoveredRow) {\n hoveredRow.classList.add(HOVER_OR_ACTIVE_CLASS);\n }\n if (previousRow) {\n previousRow.classList.remove(HOVER_OR_ACTIVE_CLASS);\n }\n });\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: ColumnResize, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0\", type: ColumnResize, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: ColumnResize, decorators: [{\n type: Directive\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Originating source of column resize events within a table.\n * @docs-private\n */\nclass ColumnResizeNotifierSource {\n constructor() {\n /** Emits when an in-progress resize is canceled. */\n this.resizeCanceled = new Subject();\n /** Emits when a resize is applied. */\n this.resizeCompleted = new Subject();\n /** Triggers a resize action. */\n this.triggerResize = new Subject();\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: ColumnResizeNotifierSource, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: ColumnResizeNotifierSource }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: ColumnResizeNotifierSource, decorators: [{\n type: Injectable\n }] });\n/** Service for triggering column resizes imperatively or being notified of them. */\nclass ColumnResizeNotifier {\n constructor(_source) {\n this._source = _source;\n /** Emits whenever a column is resized. */\n this.resizeCompleted = this._source.resizeCompleted;\n }\n /** Instantly resizes the specified column. */\n resize(columnId, size) {\n this._source.triggerResize.next({\n columnId,\n size,\n completeImmediately: true,\n isStickyColumn: true,\n });\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: ColumnResizeNotifier, deps: [{ token: ColumnResizeNotifierSource }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: ColumnResizeNotifier }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: ColumnResizeNotifier, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: ColumnResizeNotifierSource }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Coordinates events between the column resize directives. */\nclass HeaderRowEventDispatcher {\n constructor(_ngZone) {\n this._ngZone = _ngZone;\n /**\n * Emits the currently hovered header cell or null when no header cells are hovered.\n * Exposed publicly for events to feed in, but subscribers should use headerCellHoveredDistinct,\n * defined below.\n */\n this.headerCellHovered = new Subject();\n /**\n * Emits the header cell for which a user-triggered resize is active or null\n * when no resize is in progress.\n */\n this.overlayHandleActiveForCell = new Subject();\n /** Distinct and shared version of headerCellHovered. */\n this.headerCellHoveredDistinct = this.headerCellHovered.pipe(distinctUntilChanged(), share());\n /**\n * Emits the header that is currently hovered or hosting an active resize event (with active\n * taking precedence).\n */\n this.headerRowHoveredOrActiveDistinct = combineLatest([\n this.headerCellHoveredDistinct.pipe(map(cell => closest(cell, HEADER_ROW_SELECTOR)), startWith(null), distinctUntilChanged()),\n this.overlayHandleActiveForCell.pipe(map(cell => closest(cell, HEADER_ROW_SELECTOR)), startWith(null), distinctUntilChanged()),\n ]).pipe(skip(1), // Ignore initial [null, null] emission.\n map(([hovered, active]) => active || hovered), distinctUntilChanged(), share());\n this._headerRowHoveredOrActiveDistinctReenterZone = this.headerRowHoveredOrActiveDistinct.pipe(this._enterZone(), share());\n // Optimization: Share row events observable with subsequent callers.\n // At startup, calls will be sequential by row (and typically there's only one).\n this._lastSeenRow = null;\n this._lastSeenRowHover = null;\n }\n /**\n * Emits whether the specified row should show its overlay controls.\n * Emission occurs within the NgZone.\n */\n resizeOverlayVisibleForHeaderRow(row) {\n if (row !== this._lastSeenRow) {\n this._lastSeenRow = row;\n this._lastSeenRowHover = this._headerRowHoveredOrActiveDistinctReenterZone.pipe(map(hoveredRow => hoveredRow === row), distinctUntilChanged(), share());\n }\n return this._lastSeenRowHover;\n }\n _enterZone() {\n return (source) => new Observable(observer => source.subscribe({\n next: value => this._ngZone.run(() => observer.next(value)),\n error: err => observer.error(err),\n complete: () => observer.complete(),\n }));\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: HeaderRowEventDispatcher, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: HeaderRowEventDispatcher }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: HeaderRowEventDispatcher, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i0.NgZone }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Provides an implementation for resizing a column.\n * The details of how resizing works for tables for flex mat-tables are quite different.\n */\nclass ResizeStrategy {\n constructor() {\n this._pendingResizeDelta = null;\n }\n /** Adjusts the width of the table element by the specified delta. */\n updateTableWidthAndStickyColumns(delta) {\n if (this._pendingResizeDelta === null) {\n const tableElement = this.columnResize.elementRef.nativeElement;\n const tableWidth = getElementWidth(tableElement);\n this.styleScheduler.schedule(() => {\n tableElement.style.width = coerceCssPixelValue(tableWidth + this._pendingResizeDelta);\n this._pendingResizeDelta = null;\n });\n this.styleScheduler.scheduleEnd(() => {\n this.table.updateStickyColumnStyles();\n });\n }\n this._pendingResizeDelta = (this._pendingResizeDelta ?? 0) + delta;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: ResizeStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: ResizeStrategy }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: ResizeStrategy, decorators: [{\n type: Injectable\n }] });\n/**\n * The optimally performing resize strategy for <table> elements with table-layout: fixed.\n * Tested against and outperformed:\n * CSS selector\n * CSS selector w/ CSS variable\n * Updating all cell nodes\n */\nclass TableLayoutFixedResizeStrategy extends ResizeStrategy {\n constructor(columnResize, styleScheduler, table) {\n super();\n this.columnResize = columnResize;\n this.styleScheduler = styleScheduler;\n this.table = table;\n }\n applyColumnSize(_, columnHeader, sizeInPx, previousSizeInPx) {\n const delta = sizeInPx - (previousSizeInPx ?? getElementWidth(columnHeader));\n if (delta === 0) {\n return;\n }\n this.styleScheduler.schedule(() => {\n columnHeader.style.width = coerceCssPixelValue(sizeInPx);\n });\n this.updateTableWidthAndStickyColumns(delta);\n }\n applyMinColumnSize(_, columnHeader, sizeInPx) {\n const currentWidth = getElementWidth(columnHeader);\n const newWidth = Math.max(currentWidth, sizeInPx);\n this.applyColumnSize(_, columnHeader, newWidth, currentWidth);\n }\n applyMaxColumnSize(_, columnHeader, sizeInPx) {\n const currentWidth = getElementWidth(columnHeader);\n const newWidth = Math.min(currentWidth, sizeInPx);\n this.applyColumnSize(_, columnHeader, newWidth, currentWidth);\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: TableLayoutFixedResizeStrategy, deps: [{ token: ColumnResize }, { token: _COALESCED_STYLE_SCHEDULER }, { token: i2.CdkTable }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: TableLayoutFixedResizeStrategy }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: TableLayoutFixedResizeStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: ColumnResize }, { type: i2._CoalescedStyleScheduler, decorators: [{\n type: Inject,\n args: [_COALESCED_STYLE_SCHEDULER]\n }] }, { type: i2.CdkTable }] });\n/**\n * The optimally performing resize strategy for flex mat-tables.\n * Tested against and outperformed:\n * CSS selector w/ CSS variable\n * Updating all mat-cell nodes\n */\nclass CdkFlexTableResizeStrategy extends ResizeStrategy {\n constructor(columnResize, styleScheduler, table, document, _nonce) {\n super();\n this.columnResize = columnResize;\n this.styleScheduler = styleScheduler;\n this.table = table;\n this._nonce = _nonce;\n this._columnIndexes = new Map();\n this._columnProperties = new Map();\n this._indexSequence = 0;\n this.defaultMinSize = 0;\n this.defaultMaxSize = Number.MAX_SAFE_INTEGER;\n this._document = document;\n }\n applyColumnSize(cssFriendlyColumnName, columnHeader, sizeInPx, previousSizeInPx) {\n // Optimization: Check applied width first as we probably set it already before reading\n // offsetWidth which triggers layout.\n const delta = sizeInPx -\n (previousSizeInPx ??\n (this._getAppliedWidth(cssFriendlyColumnName) || columnHeader.offsetWidth));\n if (delta === 0) {\n return;\n }\n const cssSize = coerceCssPixelValue(sizeInPx);\n this._applyProperty(cssFriendlyColumnName, 'flex', `0 0.01 ${cssSize}`);\n this.updateTableWidthAndStickyColumns(delta);\n }\n applyMinColumnSize(cssFriendlyColumnName, _, sizeInPx) {\n const cssSize = coerceCssPixelValue(sizeInPx);\n this._applyProperty(cssFriendlyColumnName, 'min-width', cssSize, sizeInPx !== this.defaultMinSize);\n this.updateTableWidthAndStickyColumns(0);\n }\n applyMaxColumnSize(cssFriendlyColumnName, _, sizeInPx) {\n const cssSize = coerceCssPixelValue(sizeInPx);\n this._applyProperty(cssFriendlyColumnName, 'max-width', cssSize, sizeInPx !== this.defaultMaxSize);\n this.updateTableWidthAndStickyColumns(0);\n }\n getColumnCssClass(cssFriendlyColumnName) {\n return `cdk-column-${cssFriendlyColumnName}`;\n }\n ngOnDestroy() {\n this._styleElement?.remove();\n this._styleElement = undefined;\n }\n _getPropertyValue(cssFriendlyColumnName, key) {\n const properties = this._getColumnPropertiesMap(cssFriendlyColumnName);\n return properties.get(key);\n }\n _getAppliedWidth(cssFriendslyColumnName) {\n return coercePixelsFromFlexValue(this._getPropertyValue(cssFriendslyColumnName, 'flex'));\n }\n _applyProperty(cssFriendlyColumnName, key, value, enable = true) {\n const properties = this._getColumnPropertiesMap(cssFriendlyColumnName);\n this.styleScheduler.schedule(() => {\n if (enable) {\n properties.set(key, value);\n }\n else {\n properties.delete(key);\n }\n this._applySizeCss(cssFriendlyColumnName);\n });\n }\n _getStyleSheet() {\n if (!this._styleElement) {\n this._styleElement = this._document.createElement('style');\n if (this._nonce) {\n this._styleElement.nonce = this._nonce;\n }\n this._styleElement.appendChild(this._document.createTextNode(''));\n this._document.head.appendChild(this._styleElement);\n }\n return this._styleElement.sheet;\n }\n _getColumnPropertiesMap(cssFriendlyColumnName) {\n let properties = this._columnProperties.get(cssFriendlyColumnName);\n if (properties === undefined) {\n properties = new Map();\n this._columnProperties.set(cssFriendlyColumnName, properties);\n }\n return properties;\n }\n _applySizeCss(cssFriendlyColumnName) {\n const properties = this._getColumnPropertiesMap(cssFriendlyColumnName);\n const propertyKeys = Array.from(properties.keys());\n let index = this._columnIndexes.get(cssFriendlyColumnName);\n if (index === undefined) {\n if (!propertyKeys.length) {\n // Nothing to set or unset.\n return;\n }\n index = this._indexSequence++;\n this._columnIndexes.set(cssFriendlyColumnName, index);\n }\n else {\n this._getStyleSheet().deleteRule(index);\n }\n const columnClassName = this.getColumnCssClass(cssFriendlyColumnName);\n const tableClassName = this.columnResize.getUniqueCssClass();\n const selector = `.${tableClassName} .${columnClassName}`;\n const body = propertyKeys.map(key => `${key}:${properties.get(key)}`).join(';');\n this._getStyleSheet().insertRule(`${selector} {${body}}`, index);\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: CdkFlexTableResizeStrategy, deps: [{ token: ColumnResize }, { token: _COALESCED_STYLE_SCHEDULER }, { token: i2.CdkTable }, { token: DOCUMENT }, { token: CSP_NONCE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: CdkFlexTableResizeStrategy }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: CdkFlexTableResizeStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: ColumnResize }, { type: i2._CoalescedStyleScheduler, decorators: [{\n type: Inject,\n args: [_COALESCED_STYLE_SCHEDULER]\n }] }, { type: i2.CdkTable }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [CSP_NONCE]\n }, {\n type: Optional\n }] }] });\n/** Converts CSS pixel values to numbers, eg \"123px\" to 123. Returns NaN for non pixel values. */\nfunction coercePixelsFromCssValue(cssValue) {\n return Number(cssValue.match(/(\\d+)px/)?.[1]);\n}\n/** Gets the style.width pixels on the specified element if present, otherwise its offsetWidth. */\nfunction getElementWidth(element) {\n // Optimization: Check style.width first as we probably set it already before reading\n // offsetWidth which triggers layout.\n return coercePixelsFromCssValue(element.style.width) || element.offsetWidth;\n}\n/**\n * Converts CSS flex values as set in CdkFlexTableResizeStrategy to numbers,\n * eg \"0 0.01 123px\" to 123.\n */\nfunction coercePixelsFromFlexValue(flexValue) {\n return Number(flexValue?.match(/0 0\\.01 (\\d+)px/)?.[1]);\n}\nconst TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER = {\n provide: ResizeStrategy,\n useClass: TableLayoutFixedResizeStrategy,\n};\nconst FLEX_RESIZE_STRATEGY_PROVIDER = {\n provide: ResizeStrategy,\n useClass: CdkFlexTableResizeStrategy,\n};\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst PROVIDERS = [\n ColumnResizeNotifier,\n HeaderRowEventDispatcher,\n ColumnResizeNotifierSource,\n];\nconst TABLE_PROVIDERS = [\n ...PROVIDERS,\n TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\n];\nconst FLEX_PROVIDERS = [...PROVIDERS, FLEX_RESIZE_STRATEGY_PROVIDER];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source 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 * Explicitly enables column resizing for a table-based cdk-table.\n * Individual columns must be annotated specifically.\n */\nclass CdkColumnResize extends ColumnResize {\n constructor(columnResizeNotifier, elementRef, eventDispatcher, ngZone, notifier, table) {\n super();\n this.columnResizeNotifier = columnResizeNotifier;\n this.elementRef = elementRef;\n this.eventDispatcher = eventDispatcher;\n this.ngZone = ngZone;\n this.notifier = notifier;\n this.table = table;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: CdkColumnResize, deps: [{ token: ColumnResizeNotifier }, { token: i0.ElementRef }, { token: HeaderRowEventDispatcher }, { token: i0.NgZone }, { token: ColumnResizeNotifierSource }, { token: i2.CdkTable }], target: i0.ɵɵFactoryTarget.Directive }); }\n /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0\", type: CdkColumnResize, isStandalone: true, selector: \"table[cdk-table][columnResize]\", providers: [...TABLE_PROVIDERS, { provide: ColumnResize, useExisting: CdkColumnResize }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: CdkColumnResize, decorators: [{\n type: Directive,\n args: [{\n selector: 'table[cdk-table][columnResize]',\n providers: [...TABLE_PROVIDERS, { provide: ColumnResize, useExisting: CdkColumnResize }],\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: ColumnResizeNotifier }, { type: i0.ElementRef }, { type: HeaderRowEventDispatcher }, { type: i0.NgZone }, { type: ColumnResizeNotifierSource }, { type: i2.CdkTable }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source 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 * Explicitly enables column resizing for a flexbox-based cdk-table.\n * Individual columns must be annotated specifically.\n */\nclass CdkColumnResizeFlex extends ColumnResize {\n constructor(columnResizeNotifier, elementRef, eventDispatcher, ngZone, notifier, table) {\n super();\n this.columnResizeNotifier = columnResizeNotifier;\n this.elementRef = elementRef;\n this.eventDispatcher = eventDispatcher;\n this.ngZone = ngZone;\n this.notifier = notifier;\n this.table = table;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: CdkColumnResizeFlex, deps: [{ token: ColumnResizeNotifier }, { token: i0.ElementRef }, { token: HeaderRowEventDispatcher }, { token: i0.NgZone }, { token: ColumnResizeNotifierSource }, { token: i2.CdkTable }], target: i0.ɵɵFactoryTarget.Directive }); }\n /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0\", type: CdkColumnResizeFlex, isStandalone: true, selector: \"cdk-table[columnResize]\", providers: [...FLEX_PROVIDERS, { provide: ColumnResize, useExisting: CdkColumnResizeFlex }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: CdkColumnResizeFlex, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-table[columnResize]',\n providers: [...FLEX_PROVIDERS, { provide: ColumnResize, useExisting: CdkColumnResizeFlex }],\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: ColumnResizeNotifier }, { type: i0.ElementRef }, { type: HeaderRowEventDispatcher }, { type: i0.NgZone }, { type: ColumnResizeNotifierSource }, { type: i2.CdkTable }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source 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 * One of two NgModules for use with CdkColumnResize.\n * When using this module, columns are not resizable by default.\n */\nclass CdkColumnResizeModule {\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: CdkColumnResizeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0\", ngImport: i0, type: CdkColumnResizeModule, imports: [CdkColumnResize, CdkColumnResizeFlex], exports: [CdkColumnResize, CdkColumnResizeFlex] }); }\n /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: CdkColumnResizeModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: CdkColumnResizeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CdkColumnResize, CdkColumnResizeFlex],\n exports: [CdkColumnResize, CdkColumnResizeFlex],\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 * Can be provided by the host application to enable persistence of column resize state.\n */\nclass ColumnSizeStore {\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: ColumnSizeStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: ColumnSizeStore }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: ColumnSizeStore, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** Tracks state of resize events in progress. */\nclass ResizeRef {\n constructor(origin, overlayRef, minWidthPx, maxWidthPx) {\n this.origin = origin;\n this.overlayRef = overlayRef;\n this.minWidthPx = minWidthPx;\n this.maxWidthPx = maxWidthPx;\n }\n}\n\nconst OVERLAY_ACTIVE_CLASS = 'cdk-resizable-overlay-thumb-active';\n/**\n * Base class for Resizable directives which are applied to column headers to make those columns\n * resizable.\n */\nclass Resizable {\n constructor() {\n this.isResizable = true;\n this.minWidthPxInternal = 0;\n this.maxWidthPxInternal = Number.MAX_SAFE_INTEGER;\n this.destroyed = new Subject();\n this._viewInitialized = false;\n this._isDestroyed = false;\n }\n /** The minimum width to allow the column to be sized to. */\n get minWidthPx() {\n return this.minWidthPxInternal;\n }\n set minWidthPx(value) {\n if (value) {\n this.minWidthPxInternal = value;\n }\n this.columnResize.setResized();\n if (this.elementRef.nativeElement && this._viewInitialized) {\n this._applyMinWidthPx();\n }\n }\n /** The maximum width to allow the column to be sized to. */\n get maxWidthPx() {\n return this.maxWidthPxInternal;\n }\n set maxWidthPx(value) {\n if (value) {\n this.maxWidthPxInternal = value;\n }\n this.columnResize.setResized();\n if (this.elementRef.nativeElement && this._viewInitialized) {\n this._applyMaxWidthPx();\n }\n }\n ngAfterViewInit() {\n if (this.isResizable) {\n this._listenForRowHoverEvents();\n this._listenForResizeEvents();\n this._appendInlineHandle();\n this.styleScheduler.scheduleEnd(() => {\n if (this._isDestroyed)\n return;\n this._viewInitialized = true;\n this._applyMinWidthPx();\n this._applyMaxWidthPx();\n });\n }\n }\n ngOnDestroy() {\n this._isDestroyed = true;\n this.destroyed.next();\n this.destroyed.complete();\n this.inlineHandle?.remove();\n this.overlayRef?.dispose();\n }\n _createOverlayForHandle() {\n // Use of overlays allows us to properly capture click events spanning parts\n // of two table cells and is also useful for displaying a resize thumb\n // over both cells and extending it down the table as needed.\n const isRtl = this.directionality.value === 'rtl';\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef.nativeElement)\n .withFlexibleDimensions(false)\n .withGrowAfterOpen(false)\n .withPush(false)\n .withDefaultOffsetX(isRtl ? 1 : 0)\n .withPositions([\n {\n originX: isRtl ? 'start' : 'end',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'top',\n },\n ]);\n return this.overlay.create({\n // Always position the overlay based on left-indexed coordinates.\n direction: 'ltr',\n disposeOnNavigation: true,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width: '16px',\n });\n }\n _listenForRowHoverEvents() {\n const element = this.elementRef.nativeElement;\n const takeUntilDestroyed = takeUntil(this.destroyed);\n this.eventDispatcher\n .resizeOverlayVisibleForHeaderRow(closest(element, HEADER_ROW_SELECTOR))\n .pipe(takeUntilDestroyed)\n .subscribe(hoveringRow => {\n if (hoveringRow) {\n if (!this.overlayRef) {\n this.overlayRef = this._createOverlayForHandle();\n }\n this._showHandleOverlay();\n }\n else if (this.overlayRef) {\n // todo - can't detach during an active resize - need to work that out\n this.overlayRef.detach();\n }\n });\n }\n _listenForResizeEvents() {\n const takeUntilDestroyed = takeUntil(this.destroyed);\n merge(this.resizeNotifier.resizeCanceled, this.resizeNotifier.triggerResize)\n .pipe(takeUntilDestroyed, filter(columnSize => columnSize.columnId === this.columnDef.name))\n .subscribe(({ size, previousSize, completeImmediately }) => {\n this.elementRef.nativeElement.classList.add(OVERLAY_ACTIVE_CLASS);\n this._applySize(size, previousSize);\n if (completeImmediately) {\n this._completeResizeOperation();\n }\n });\n merge(this.resizeNotifier.resizeCanceled, this.resizeNotifier.resizeCompleted)\n .pipe(takeUntilDestroyed)\n .subscribe(columnSize => {\n this._cleanUpAfterResize(columnSize);\n });\n }\n _completeResizeOperation() {\n this.ngZone.run(() => {\n this.resizeNotifier.resizeCompleted.next({\n columnId: this.columnDef.name,\n size: this.elementRef.nativeElement.offsetWidth,\n });\n });\n }\n _cleanUpAfterResize(columnSize) {\n this.elementRef.nativeElement.classList.remove(OVERLAY_ACTIVE_CLASS);\n if (this.overlayRef && this.overlayRef.hasAttached()) {\n this._updateOverlayHandleHeight();\n this.overlayRef.updatePosition();\n if (columnSize.columnId === this.columnDef.name) {\n this.inlineHandle.focus();\n }\n }\n }\n _createHandlePortal() {\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n {\n provide: ResizeRef,\n useValue: new ResizeRef(this.elementRef, this.overlayRef, this.minWidthPx, this.maxWidthPx),\n },\n ],\n });\n return new ComponentPortal(this.getOverlayHandleComponentType(), this.viewContainerRef, injector);\n }\n _showHandleOverlay() {\n this._updateOverlayHandleHeight();\n this.overlayRef.attach(this._createHandlePortal());\n // Needed to ensure that all of the lifecycle hooks inside the overlay run immediately.\n this.changeDetectorRef.markForCheck();\n }\n _updateOverlayHandleHeight() {\n this.overlayRef.updateSize({ height: this.elementRef.nativeElement.offsetHeight });\n }\n _applySize(sizeInPixels, previousSize) {\n const sizeToApply = Math.min(Math.max(sizeInPixels, this.minWidthPx, 0), this.maxWidthPx);\n this.resizeStrategy.applyColumnSize(this.columnDef.cssClassFriendlyName, this.elementRef.nativeElement, sizeToApply, previousSize);\n }\n _applyMinWidthPx() {\n this.resizeStrategy.applyMinColumnSize(this.columnDef.cssClassFriendlyName, this.elementRef.nativeElement, this.minWidthPx);\n }\n _applyMaxWidthPx() {\n this.resizeStrategy.applyMaxColumnSize(this.columnDef.cssClassFriendlyName, this.elementRef.nativeElement, this.maxWidthPx);\n }\n _appendInlineHandle() {\n this.styleScheduler.schedule(() => {\n this.inlineHandle = this.document.createElement('div');\n this.inlineHandle.tabIndex = 0;\n this.inlineHandle.className = this.getInlineHandleCssClassName();\n // TODO: Apply correct aria role (probably slider) after a11y spec questions resolved.\n this.elementRef.nativeElement.appendChild(this.inlineHandle);\n });\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: Resizable, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0\", type: Resizable, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: Resizable, decorators: [{\n type: Directive\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// TODO: Take another look at using cdk drag drop. IIRC I ran into a couple\n// good reasons for not using it but I don't remember what they were at this point.\n/**\n * Base class for a component shown over the edge of a resizable column that is responsible\n * for handling column resize mouse events and displaying any visible UI on the column edge.\n */\nclass ResizeOverlayHandle {\n constructor() {\n this.destroyed = new Subject();\n }\n ngAfterViewInit() {\n this._listenForMouseEvents();\n }\n ngOnDestroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n _listenForMouseEvents() {\n this.ngZone.runOutsideAngular(() => {\n fromEvent(this.elementRef.nativeElement, 'mouseenter')\n .pipe(mapTo(this.resizeRef.origin.nativeElement), takeUntil(this.destroyed))\n .subscribe(cell => this.eventDispatcher.headerCellHovered.next(cell));\n fromEvent(this.elementRef.nativeElement, 'mouseleave')\n .pipe(map(event => event.relatedTarget && closest(event.relatedTarget, HEADER_CELL_SELECTOR)), takeUntil(this.destroyed))\n .subscribe(cell => this.eventDispatcher.headerCellHovered.next(cell));\n fromEvent(this.elementRef.nativeElement, 'mousedown')\n .pipe(takeUntil(this.destroyed))\n .subscribe(mousedownEvent => {\n this._dragStarted(mousedownEvent);\n });\n });\n }\n _dragStarted(mousedownEvent) {\n // Only allow dragging using the left mouse button.\n if (mousedownEvent.button !== 0) {\n return;\n }\n const mouseup = fromEvent(this.document, 'mouseup');\n const mousemove = fromEvent(this.document, 'mousemove');\n const escape = fromEvent(this.document, 'keyup').pipe(filter(event => event.keyCode === ESCAPE));\n const startX = mousedownEvent.screenX;\n const initialSize = this._getOriginWidth();\n let overlayOffset = 0;\n let originOffset = this._getOriginOffset();\n let size = initialSize;\n let overshot = 0;\n this.updateResizeActive(true);\n mouseup.pipe(takeUntil(merge(escape, this.destroyed))).subscribe(({ screenX }) => {\n this.styleScheduler.scheduleEnd(() => {\n this._notifyResizeEnded(size, screenX !== startX);\n });\n });\n escape.pipe(takeUntil(merge(mouseup, this.destroyed))).subscribe(() => {\n this._notifyResizeEnded(initialSize);\n });\n mousemove\n .pipe(map(({ screenX }) => screenX), startWith(startX), distinctUntilChanged(), pairwise(), takeUntil(merge(mouseup, escape, this.destroyed)))\n .subscribe(([prevX, currX]) => {\n let deltaX = currX - prevX;\n // If the mouse moved further than the resize was able to match, limit the\n // movement of the overlay to match the actual size and position of the origin.\n if (overshot !== 0) {\n if ((overshot < 0 && deltaX < 0) || (overshot > 0 && deltaX > 0)) {\n overshot += deltaX;\n return;\n }\n else {\n const remainingOvershot = overshot + deltaX;\n overshot =\n overshot > 0 ? Math.max(remainingOvershot, 0) : Math.min(remainingOvershot, 0);\n deltaX = remainingOvershot - overshot;\n if (deltaX === 0) {\n return;\n }\n }\n }\n let computedNewSize = size + (this._isLtr() ? deltaX : -deltaX);\n computedNewSize = Math.min(Math.max(computedNewSize, this.resizeRef.minWidthPx, 0), this.resizeRef.maxWidthPx);\n this.resizeNotifier.triggerResize.next({\n columnId: this.columnDef.name,\n size: computedNewSize,\n previousSize: size,\n isStickyColumn: this.columnDef.sticky || this.columnDef.stickyEnd,\n });\n this.styleScheduler.scheduleEnd(() => {\n const originNewSize = this._getOriginWidth();\n const originNewOffset = this._getOriginOffset();\n const originOffsetDeltaX = originNewOffset - originOffset;\n const originSizeDeltaX = originNewSize - size;\n size = originNewSize;\n originOffset = originNewOffset;\n overshot += deltaX + (this._isLtr() ? -originSizeDeltaX : originSizeDeltaX);\n overlayOffset += originOffsetDeltaX + (this._isLtr() ? originSizeDeltaX : 0);\n this._updateOverlayOffset(overlayOffset);\n });\n });\n }\n updateResizeActive(active) {\n this.eventDispatcher.overlayHandleActiveForCell.next(active ? this.resizeRef.origin.nativeElement : null);\n }\n _getOriginWidth() {\n return this.resizeRef.origin.nativeElement.offsetWidth;\n }\n _getOriginOffset() {\n return this.resizeRef.origin.nativeElement.offsetLeft;\n }\n _updateOverlayOffset(offset) {\n this.resizeRef.overlayRef.overlayElement.style.transform = `translateX(${coerceCssPixelValue(offset)})`;\n }\n _isLtr() {\n return this.directionality.value === 'ltr';\n }\n _notifyResizeEnded(size, completedSuccessfully = false) {\n this.updateResizeActive(false);\n this.ngZone.run(() => {\n const sizeMessage = { columnId: this.columnDef.name, size };\n if (completedSuccessfully) {\n this.resizeNotifier.resizeCompleted.next(sizeMessage);\n }\n else {\n this.resizeNotifier.resizeCanceled.next(sizeMessage);\n }\n });\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: ResizeOverlayHandle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0\", type: ResizeOverlayHandle, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: ResizeOverlayHandle, decorators: [{\n type: Directive\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CdkColumnResize, CdkColumnResizeFlex, CdkColumnResizeModule, CdkFlexTableResizeStrategy, ColumnResize, ColumnResizeNotifier, ColumnResizeNotifierSource, ColumnSizeStore, FLEX_PROVIDERS, FLEX_RESIZE_STRATEGY_PROVIDER, HeaderRowEventDispatcher, Resizable, ResizeOverlayHandle, ResizeRef, ResizeStrategy, TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER, TABLE_PROVIDERS, TableLayoutFixedResizeStrategy };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, Optional, Inject, NgModule, Pipe, TemplateRef } from '@angular/core';\nimport * as i1 from '@angular/material/core';\nimport { DateAdapter, MAT_DATE_LOCALE, NativeDateModule, NativeDateAdapter } from '@angular/material/core';\nimport { CommonModule } from '@angular/common';\nimport { isObservable, of } from 'rxjs';\n\nclass DatetimeAdapter extends DateAdapter {\n constructor(_delegate) {\n super();\n this._delegate = _delegate;\n }\n getValidDateOrNull(obj) {\n return this.isDateInstance(obj) && this.isValid(obj) ? obj : null;\n }\n compareDatetime(first, second, respectMinutePart = true) {\n return (this.compareDate(first, second) ||\n this.getHour(first) - this.getHour(second) ||\n (respectMinutePart && this.getMinute(first) - this.getMinute(second)));\n }\n sameDatetime(first, second) {\n if (first && second) {\n const firstValid = this.isValid(first);\n const secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareDatetime(first, second);\n }\n return firstValid === secondValid;\n }\n return first === second;\n }\n sameYear(first, second) {\n return first && second && this.getYear(first) === this.getYear(second);\n }\n sameDay(first, second) {\n return (first &&\n second &&\n this.getDate(first) === this.getDate(second) &&\n this.sameMonthAndYear(first, second));\n }\n sameHour(first, second) {\n return (first && second && this.getHour(first) === this.getHour(second) && this.sameDay(first, second));\n }\n sameMinute(first, second) {\n return (first &&\n second &&\n this.getMinute(first) === this.getMinute(second) &&\n this.sameHour(first, second));\n }\n sameMonthAndYear(first, second) {\n if (first && second) {\n const firstValid = this.isValid(first);\n const secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !(this.getYear(first) - this.getYear(second) || this.getMonth(first) - this.getMonth(second));\n }\n return firstValid === secondValid;\n }\n return first === second;\n }\n // delegate\n clone(date) {\n return this._delegate.clone(date);\n }\n addCalendarYears(date, years) {\n return this._delegate.addCalendarYears(date, years);\n }\n addCalendarMonths(date, months) {\n return this._delegate.addCalendarMonths(date, months);\n }\n addCalendarDays(date, days) {\n return this._delegate.addCalendarDays(date, days);\n }\n getYear(date) {\n return this._delegate.getYear(date);\n }\n getMonth(date) {\n return this._delegate.getMonth(date);\n }\n getDate(date) {\n return this._delegate.getDate(date);\n }\n getDayOfWeek(date) {\n return this._delegate.getDayOfWeek(date);\n }\n getMonthNames(style) {\n return this._delegate.getMonthNames(style);\n }\n getDateNames() {\n return this._delegate.getDateNames();\n }\n getDayOfWeekNames(style) {\n return this._delegate.getDayOfWeekNames(style);\n }\n getYearName(date) {\n return this._delegate.getYearName(date);\n }\n getFirstDayOfWeek() {\n return this._delegate.getFirstDayOfWeek();\n }\n getNumDaysInMonth(date) {\n return this._delegate.getNumDaysInMonth(date);\n }\n createDate(year, month, date) {\n return this._delegate.createDate(year, month, date);\n }\n today() {\n return this._delegate.today();\n }\n parse(value, parseFormat) {\n return this._delegate.parse(value, parseFormat);\n }\n format(date, displayFormat) {\n return this._delegate.format(date, displayFormat);\n }\n toIso8601(date) {\n return this._delegate.toIso8601(date);\n }\n isDateInstance(obj) {\n return this._delegate.isDateInstance(obj);\n }\n isValid(date) {\n return this._delegate.isValid(date);\n }\n invalid() {\n return this._delegate.invalid();\n }\n clampDate(date, min, max) {\n if (min && this.compareDatetime(date, min) < 0) {\n return min;\n }\n if (max && this.compareDatetime(date, max) > 0) {\n return max;\n }\n return date;\n }\n}\n\nconst MTX_DATETIME_FORMATS = new InjectionToken('mtx-datetime-formats');\n\n/** The default hour names to use if Intl API is not available. */\nconst DEFAULT_HOUR_NAMES = range(24, i => String(i));\n/** The default minute names to use if Intl API is not available. */\nconst DEFAULT_MINUTE_NAMES = range(60, i => String(i));\nfunction range(length, valueFunction) {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\nclass NativeDatetimeAdapter extends DatetimeAdapter {\n constructor(matDateLocale, _delegate) {\n super(_delegate);\n this.setLocale(matDateLocale);\n }\n clone(date) {\n return this.createDatetime(this.getYear(date), this.getMonth(date), this.getDate(date), this.getHour(date), this.getMinute(date));\n }\n getHour(date) {\n return date.getHours();\n }\n getMinute(date) {\n return date.getMinutes();\n }\n isInNextMonth(startDate, endDate) {\n const nextMonth = this.getDateInNextMonth(startDate);\n return this.sameMonthAndYear(nextMonth, endDate);\n }\n createDatetime(year, month, date, hour, minute) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n if (hour < 0 || hour > 23) {\n throw Error(`Invalid hour \"${hour}\". Hour has to be between 0 and 23.`);\n }\n if (minute < 0 || minute > 59) {\n throw Error(`Invalid minute \"${minute}\". Minute has to be between 0 and 59.`);\n }\n const result = this._createDateWithOverflow(year, month, date, hour, minute);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() !== month) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n return result;\n }\n getFirstDateOfMonth(date) {\n const result = new Date();\n result.setFullYear(date.getFullYear(), date.getMonth(), 1);\n return result;\n }\n getHourNames() {\n return DEFAULT_HOUR_NAMES;\n }\n getMinuteNames() {\n return DEFAULT_MINUTE_NAMES;\n }\n addCalendarYears(date, years) {\n return this.addCalendarMonths(date, years * 12);\n }\n addCalendarMonths(date, months) {\n let newDate = this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + months, this.getDate(date), this.getHour(date), this.getMinute(date));\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) !== (((this.getMonth(date) + months) % 12) + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0, this.getHour(date), this.getMinute(date));\n }\n return newDate;\n }\n addCalendarDays(date, days) {\n return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date) + days, this.getHour(date), this.getMinute(date));\n }\n addCalendarHours(date, hours) {\n return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date), this.getHour(date) + hours, this.getMinute(date));\n }\n addCalendarMinutes(date, minutes) {\n return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date), this.getHour(date), this.getMinute(date) + minutes);\n }\n toIso8601(date) {\n return (super.toIso8601(date) +\n 'T' +\n [this._2digit(date.getUTCHours()), this._2digit(date.getUTCMinutes())].join(':'));\n }\n getDateInNextMonth(date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 1, date.getHours(), date.getMinutes());\n }\n /**\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n * @param str The string to strip direction characters from.\n * @returns The stripped string.\n */\n _stripDirectionalityCharacters(str) {\n return str.replace(/[\\u200e\\u200f]/g, '');\n }\n /**\n * Pads a number to make it two digits.\n * @param n The number to pad.\n * @returns The padded number.\n */\n _2digit(n) {\n return ('00' + n).slice(-2);\n }\n /** Creates a date but allows the month and date to overflow. */\n _createDateWithOverflow(year, month, date, hours, minutes) {\n const result = new Date(year, month, date, hours, minutes);\n // We need to correct for the fact that JS native Date treats years in range [0, 99] as\n // abbreviations for 19xx.\n if (year >= 0 && year < 100) {\n result.setFullYear(this.getYear(result) - 1900);\n }\n return result;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: NativeDatetimeAdapter, deps: [{ token: MAT_DATE_LOCALE, optional: true }, { token: i1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: NativeDatetimeAdapter }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: NativeDatetimeAdapter, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_LOCALE]\n }] }, { type: i1.DateAdapter }] });\n\nconst MTX_NATIVE_DATETIME_FORMATS = {\n parse: {},\n display: {\n dateInput: { year: 'numeric', month: '2-digit', day: '2-digit' },\n monthInput: { month: 'long' },\n datetimeInput: {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n },\n timeInput: { hour: '2-digit', minute: '2-digit' },\n monthYearLabel: { year: 'numeric', month: 'short' },\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthYearA11yLabel: { year: 'numeric', month: 'long' },\n popupHeaderDateLabel: { weekday: 'short', month: 'short', day: '2-digit' },\n },\n};\n\nclass NativeDatetimeModule {\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: NativeDatetimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0\", ngImport: i0, type: NativeDatetimeModule, imports: [NativeDateModule] }); }\n /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: NativeDatetimeModule, providers: [{ provide: DatetimeAdapter, useClass: NativeDatetimeAdapter }], imports: [NativeDateModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: NativeDatetimeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [NativeDateModule],\n providers: [{ provide: DatetimeAdapter, useClass: NativeDatetimeAdapter }],\n }]\n }] });\nfunction provideNativeDatetimeAdapter(formats = MTX_NATIVE_DATETIME_FORMATS) {\n return [\n { provide: DateAdapter, useClass: NativeDateAdapter },\n { provide: DatetimeAdapter, useClass: NativeDatetimeAdapter },\n { provide: MTX_DATETIME_FORMATS, useValue: formats },\n ];\n}\nclass MtxNativeDatetimeModule {\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxNativeDatetimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxNativeDatetimeModule }); }\n /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxNativeDatetimeModule, providers: [provideNativeDatetimeAdapter()] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxNativeDatetimeModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [provideNativeDatetimeAdapter()],\n }]\n }] });\n\nclass MtxToObservablePipe {\n transform(value) {\n return isObservable(value) ? value : of(value);\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxToObservablePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxToObservablePipe, isStandalone: true, name: \"toObservable\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxToObservablePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'toObservable', standalone: true }]\n }] });\n\nclass MtxIsTemplateRefPipe {\n transform(obj) {\n return obj instanceof TemplateRef;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxIsTemplateRefPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxIsTemplateRefPipe, isStandalone: true, name: \"isTemplateRef\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxIsTemplateRefPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'isTemplateRef', standalone: true }]\n }] });\n\nclass MtxPipesModule {\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxPipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxPipesModule, imports: [CommonModule, MtxToObservablePipe, MtxIsTemplateRefPipe], exports: [MtxToObservablePipe, MtxIsTemplateRefPipe] }); }\n /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxPipesModule, imports: [CommonModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxPipesModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, MtxToObservablePipe, MtxIsTemplateRefPipe],\n exports: [MtxToObservablePipe, MtxIsTemplateRefPipe],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DatetimeAdapter, MTX_DATETIME_FORMATS, MTX_NATIVE_DATETIME_FORMATS, MtxIsTemplateRefPipe, MtxNativeDatetimeModule, MtxPipesModule, MtxToObservablePipe, NativeDatetimeAdapter, NativeDatetimeModule, provideNativeDatetimeAdapter };\n","import * as i0 from '@angular/core';\nimport { Component, ViewEncapsulation, ChangeDetectionStrategy, Inject, Injectable, NgModule } from '@angular/core';\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport * as i1 from '@angular/material/dialog';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { MatButton, MatIconButton, MatFabButton, MatMiniFabButton, MatButtonModule } from '@angular/material/button';\nimport { MatIcon, MatIconModule } from '@angular/material/icon';\nimport { MtxToObservablePipe, MtxPipesModule } from '@ng-matero/extensions/core';\n\nclass MtxDialogContainer {\n constructor(dialogRef, data) {\n this.dialogRef = dialogRef;\n this.data = data;\n }\n _onClick(fn) {\n if (fn) {\n fn.call(this);\n }\n this._onClose();\n }\n _onClose() {\n this.dialogRef.close();\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxDialogContainer, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"18.2.0\", type: MtxDialogContainer, isStandalone: true, selector: \"mtx-dialog-container\", host: { classAttribute: \"mtx-dialog-container\" }, exportAs: [\"mtxDialogContainer\"], ngImport: i0, template: \"@if (data.title) {\\n

\\n {{data.title | toObservable | async}}\\n @if (data.showCloseIcon) {\\n \\n }\\n

\\n}\\n@if (data.description) {\\n
\\n

{{data.description | toObservable | async}}

\\n
\\n}\\n
\\n @for (btn of data.buttons; track btn) {\\n @switch (btn.type) {\\n @case ('raised') {\\n @if (btn.focusInitial) {\\n \\n } @else {\\n \\n }\\n }\\n @case ('stroked') {\\n @if (btn.focusInitial) {\\n \\n } @else {\\n \\n }\\n }\\n @case ('flat') {\\n @if (btn.focusInitial) {\\n \\n } @else {\\n \\n }\\n }\\n @default {\\n @if (btn.focusInitial) {\\n \\n } @else {\\n \\n }\\n }\\n }\\n }\\n
\\n\", styles: [\".mtx-dialog-title{display:flex;justify-content:space-between;align-items:center;padding:8px 24px;margin:0;line-height:48px;font-weight:500;font-size:20px}.mtx-dialog-title .mat-mdc-button-base{margin-right:-16px}[dir=rtl] .mtx-dialog-title .mat-mdc-button-base{margin-right:0;margin-left:-16px}.mtx-dialog-content{display:block;max-height:65vh;padding:0 24px;overflow:auto;-webkit-overflow-scrolling:touch}.mtx-dialog-content p{margin-top:0}.mtx-dialog-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:8px}.mtx-dialog-actions .mat-mdc-button-base{margin-left:8px}[dir=rtl] .mtx-dialog-actions .mat-mdc-button-base{margin-left:0;margin-right:8px}\\n\"], dependencies: [{ kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"component\", type: MatButton, selector: \" button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] \", exportAs: [\"matButton\"] }, { kind: \"component\", type: MatIconButton, selector: \"button[mat-icon-button]\", exportAs: [\"matButton\"] }, { kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"pipe\", type: MtxToObservablePipe, name: \"toObservable\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxDialogContainer, decorators: [{\n type: Component,\n args: [{ selector: 'mtx-dialog-container', exportAs: 'mtxDialogContainer', host: {\n class: 'mtx-dialog-container',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [\n AsyncPipe,\n MatButton,\n MatIconButton,\n MatFabButton,\n MatMiniFabButton,\n MatIcon,\n MtxToObservablePipe,\n ], template: \"@if (data.title) {\\n

\\n {{data.title | toObservable | async}}\\n @if (data.showCloseIcon) {\\n \\n }\\n

\\n}\\n@if (data.description) {\\n
\\n

{{data.description | toObservable | async}}

\\n
\\n}\\n
\\n @for (btn of data.buttons; track btn) {\\n @switch (btn.type) {\\n @case ('raised') {\\n @if (btn.focusInitial) {\\n \\n } @else {\\n \\n }\\n }\\n @case ('stroked') {\\n @if (btn.focusInitial) {\\n \\n } @else {\\n \\n }\\n }\\n @case ('flat') {\\n @if (btn.focusInitial) {\\n \\n } @else {\\n \\n }\\n }\\n @default {\\n @if (btn.focusInitial) {\\n \\n } @else {\\n \\n }\\n }\\n }\\n }\\n
\\n\", styles: [\".mtx-dialog-title{display:flex;justify-content:space-between;align-items:center;padding:8px 24px;margin:0;line-height:48px;font-weight:500;font-size:20px}.mtx-dialog-title .mat-mdc-button-base{margin-right:-16px}[dir=rtl] .mtx-dialog-title .mat-mdc-button-base{margin-right:0;margin-left:-16px}.mtx-dialog-content{display:block;max-height:65vh;padding:0 24px;overflow:auto;-webkit-overflow-scrolling:touch}.mtx-dialog-content p{margin-top:0}.mtx-dialog-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:8px}.mtx-dialog-actions .mat-mdc-button-base{margin-left:8px}[dir=rtl] .mtx-dialog-actions .mat-mdc-button-base{margin-left:0;margin-right:8px}\\n\"] }]\n }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_DIALOG_DATA]\n }] }] });\n\nconst defaults = {\n title: '',\n description: '',\n buttons: [\n {\n color: 'warn',\n text: 'OK',\n focusInitial: true,\n onClick: () => { },\n },\n {\n text: 'CLOSE',\n onClick: () => { },\n },\n ],\n showCloseIcon: false,\n disableClose: true,\n width: '300px',\n};\nclass MtxDialog {\n constructor(dialog) {\n this.dialog = dialog;\n }\n originalOpen(componentOrTemplateRef = MtxDialogContainer, config) {\n return this.dialog.open(componentOrTemplateRef, config);\n }\n open(config, componentOrTemplateRef = MtxDialogContainer) {\n const data = Object.assign({}, defaults, config);\n return this.dialog.open(componentOrTemplateRef, {\n ...data,\n data,\n });\n }\n alert(title, description = '', onOk = () => { }) {\n this.open({\n title,\n description,\n buttons: [\n {\n color: 'warn',\n text: 'OK',\n onClick: () => onOk(),\n },\n ],\n });\n }\n confirm(title, description = '', onOk = () => { }, onClose = () => { }) {\n this.open({\n title,\n description,\n buttons: [\n {\n color: 'warn',\n text: 'OK',\n onClick: () => onOk(),\n },\n {\n text: 'CLOSE',\n onClick: () => onClose(),\n },\n ],\n });\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxDialog, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxDialog, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxDialog, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [{ type: i1.MatDialog }] });\n\nclass MtxDialogModule {\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxDialogModule, imports: [CommonModule,\n MatDialogModule,\n MatButtonModule,\n MatIconModule,\n MtxPipesModule,\n MtxDialogContainer], exports: [MtxDialogContainer] }); }\n /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxDialogModule, providers: [MtxDialog], imports: [CommonModule,\n MatDialogModule,\n MatButtonModule,\n MatIconModule,\n MtxPipesModule,\n MtxDialogContainer] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxDialogModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n MatDialogModule,\n MatButtonModule,\n MatIconModule,\n MtxPipesModule,\n MtxDialogContainer,\n ],\n exports: [MtxDialogContainer],\n providers: [MtxDialog],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MtxDialog, MtxDialogContainer, MtxDialogModule };\n","import { moveItemInArray, CdkDrag, CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';\nimport { DOCUMENT, AsyncPipe, CurrencyPipe, DatePipe, DecimalPipe, NgTemplateOutlet, PercentPipe, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { CSP_NONCE, Injectable, Inject, Optional, Directive, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, HostBinding, Input, NgModule, Pipe, EventEmitter, Output, HostListener, InjectionToken, booleanAttribute, ContentChildren } from '@angular/core';\nimport * as i1$2 from '@angular/forms';\nimport { FormsModule } from '@angular/forms';\nimport { MatBadge, MatBadgeModule } from '@angular/material/badge';\nimport { MatButton, MatIconButton, MatFabButton, MatMiniFabButton, MatButtonModule } from '@angular/material/button';\nimport { MatCheckbox, MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipListbox, MatChip, MatChipsModule } from '@angular/material/chips';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIcon, MatIconModule } from '@angular/material/icon';\nimport { MatMenuTrigger, MatMenu, MatMenuItem, MatMenuModule } from '@angular/material/menu';\nimport { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBar, MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSort, MatSortHeader, MatSortModule } from '@angular/material/sort';\nimport { MatTableDataSource, MatRowDef, MatHeaderRowDef, MatFooterRow, MatTable, MatColumnDef, MatHeaderRow, MatRow, MatFooterRowDef, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell, MatFooterCellDef, MatFooterCell, MatTableModule } from '@angular/material/table';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\nimport * as i4 from '@angular/cdk/overlay';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { MatCommonModule } from '@angular/material/core';\nimport * as i2 from '@ng-matero/extensions/column-resize';\nimport { CdkFlexTableResizeStrategy, ResizeStrategy, ColumnResizeNotifier, HeaderRowEventDispatcher, ColumnResizeNotifierSource, TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER, ColumnResize, ResizeOverlayHandle, Resizable } from '@ng-matero/extensions/column-resize';\nexport { TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER as MAT_TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER } from '@ng-matero/extensions/column-resize';\nimport * as i1 from '@angular/cdk/table';\nimport { _COALESCED_STYLE_SCHEDULER } from '@angular/cdk/table';\nimport * as i3 from '@angular/cdk/bidi';\nimport { MtxToObservablePipe, MtxIsTemplateRefPipe, MtxPipesModule } from '@ng-matero/extensions/core';\nimport * as i1$1 from '@ng-matero/extensions/dialog';\nimport { MtxDialogModule } from '@ng-matero/extensions/dialog';\nimport { isObservable } from 'rxjs';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { SelectionModel } from '@angular/cdk/collections';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Overrides CdkFlexTableResizeStrategy to match mat-column elements.\n */\nclass MatFlexTableResizeStrategy extends CdkFlexTableResizeStrategy {\n constructor(columnResize, styleScheduler, table, document, nonce) {\n super(columnResize, styleScheduler, table, document, nonce);\n }\n getColumnCssClass(cssFriendlyColumnName) {\n return `mat-column-${cssFriendlyColumnName}`;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MatFlexTableResizeStrategy, deps: [{ token: i2.ColumnResize }, { token: _COALESCED_STYLE_SCHEDULER }, { token: i1.CdkTable }, { token: DOCUMENT }, { token: CSP_NONCE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MatFlexTableResizeStrategy }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MatFlexTableResizeStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: () => [{ type: i2.ColumnResize }, { type: i1._CoalescedStyleScheduler, decorators: [{\n type: Inject,\n args: [_COALESCED_STYLE_SCHEDULER]\n }] }, { type: i1.CdkTable }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [CSP_NONCE]\n }, {\n type: Optional\n }] }] });\nconst FLEX_RESIZE_STRATEGY_PROVIDER = {\n provide: ResizeStrategy,\n useClass: MatFlexTableResizeStrategy,\n};\n\nconst PROVIDERS = [\n ColumnResizeNotifier,\n HeaderRowEventDispatcher,\n ColumnResizeNotifierSource,\n];\nconst TABLE_PROVIDERS = [\n ...PROVIDERS,\n TABLE_LAYOUT_FIXED_RESIZE_STRATEGY_PROVIDER,\n];\nconst FLEX_PROVIDERS = [...PROVIDERS, FLEX_RESIZE_STRATEGY_PROVIDER];\nconst TABLE_HOST_BINDINGS = {\n class: 'mat-column-resize-table',\n};\nconst FLEX_HOST_BINDINGS = {\n class: 'mat-column-resize-flex',\n};\nclass AbstractMatColumnResize extends ColumnResize {\n getTableHeight() {\n const table = this.elementRef.nativeElement;\n const tableParent = table.parentNode;\n const isTableContainer = tableParent.classList.contains('mat-table-container');\n return isTableContainer ? tableParent.offsetHeight : table.offsetHeight;\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 * Explicitly enables column resizing for a table-based mat-table.\n * Individual columns must be annotated specifically.\n */\nclass MatColumnResize extends AbstractMatColumnResize {\n constructor(columnResizeNotifier, elementRef, eventDispatcher, ngZone, notifier) {\n super();\n this.columnResizeNotifier = columnResizeNotifier;\n this.elementRef = elementRef;\n this.eventDispatcher = eventDispatcher;\n this.ngZone = ngZone;\n this.notifier = notifier;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MatColumnResize, deps: [{ token: i2.ColumnResizeNotifier }, { token: i0.ElementRef }, { token: i2.HeaderRowEventDispatcher }, { token: i0.NgZone }, { token: i2.ColumnResizeNotifierSource }], target: i0.ɵɵFactoryTarget.Directive }); }\n /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0\", type: MatColumnResize, isStandalone: true, selector: \"table[mat-table][columnResize]\", host: { classAttribute: \"mat-column-resize-table\" }, providers: [...TABLE_PROVIDERS, { provide: ColumnResize, useExisting: MatColumnResize }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MatColumnResize, decorators: [{\n type: Directive,\n args: [{\n selector: 'table[mat-table][columnResize]',\n host: TABLE_HOST_BINDINGS,\n providers: [...TABLE_PROVIDERS, { provide: ColumnResize, useExisting: MatColumnResize }],\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i2.ColumnResizeNotifier }, { type: i0.ElementRef }, { type: i2.HeaderRowEventDispatcher }, { type: i0.NgZone }, { type: i2.ColumnResizeNotifierSource }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source 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 * Explicitly enables column resizing for a flexbox-based mat-table.\n * Individual columns must be annotated specifically.\n */\nclass MatColumnResizeFlex extends AbstractMatColumnResize {\n constructor(columnResizeNotifier, elementRef, eventDispatcher, ngZone, notifier) {\n super();\n this.columnResizeNotifier = columnResizeNotifier;\n this.elementRef = elementRef;\n this.eventDispatcher = eventDispatcher;\n this.ngZone = ngZone;\n this.notifier = notifier;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MatColumnResizeFlex, deps: [{ token: i2.ColumnResizeNotifier }, { token: i0.ElementRef }, { token: i2.HeaderRowEventDispatcher }, { token: i0.NgZone }, { token: i2.ColumnResizeNotifierSource }], target: i0.ɵɵFactoryTarget.Directive }); }\n /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0\", type: MatColumnResizeFlex, isStandalone: true, selector: \"mat-table[columnResize]\", host: { classAttribute: \"mat-column-resize-flex\" }, providers: [...FLEX_PROVIDERS, { provide: ColumnResize, useExisting: MatColumnResizeFlex }], usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MatColumnResizeFlex, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-table[columnResize]',\n host: FLEX_HOST_BINDINGS,\n providers: [...FLEX_PROVIDERS, { provide: ColumnResize, useExisting: MatColumnResizeFlex }],\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i2.ColumnResizeNotifier }, { type: i0.ElementRef }, { type: i2.HeaderRowEventDispatcher }, { type: i0.NgZone }, { type: i2.ColumnResizeNotifierSource }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source 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 * Component shown over the edge of a resizable column that is responsible\n * for handling column resize mouse events and displaying a vertical line along the column edge.\n */\nclass MatColumnResizeOverlayHandle extends ResizeOverlayHandle {\n constructor(columnDef, columnResize, directionality, elementRef, eventDispatcher, ngZone, resizeNotifier, resizeRef, styleScheduler, document) {\n super();\n this.columnDef = columnDef;\n this.columnResize = columnResize;\n this.directionality = directionality;\n this.elementRef = elementRef;\n this.eventDispatcher = eventDispatcher;\n this.ngZone = ngZone;\n this.resizeNotifier = resizeNotifier;\n this.resizeRef = resizeRef;\n this.styleScheduler = styleScheduler;\n this.document = document;\n }\n updateResizeActive(active) {\n super.updateResizeActive(active);\n const originHeight = this.resizeRef.origin.nativeElement.offsetHeight;\n this.topElement.nativeElement.style.height = `${originHeight}px`;\n this.resizeRef.overlayRef.updateSize({\n height: active\n ? this.columnResize.getTableHeight()\n : originHeight,\n });\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MatColumnResizeOverlayHandle, deps: [{ token: i1.CdkColumnDef }, { token: i2.ColumnResize }, { token: i3.Directionality }, { token: i0.ElementRef }, { token: i2.HeaderRowEventDispatcher }, { token: i0.NgZone }, { token: i2.ColumnResizeNotifierSource }, { token: i2.ResizeRef }, { token: _COALESCED_STYLE_SCHEDULER }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"14.0.0\", version: \"18.2.0\", type: MatColumnResizeOverlayHandle, isStandalone: true, selector: \"ng-component\", host: { classAttribute: \"mat-column-resize-overlay-thumb\" }, viewQueries: [{ propertyName: \"topElement\", first: true, predicate: [\"top\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: '
', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MatColumnResizeOverlayHandle, decorators: [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'mat-column-resize-overlay-thumb' },\n template: '
',\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i1.CdkColumnDef }, { type: i2.ColumnResize }, { type: i3.Directionality }, { type: i0.ElementRef }, { type: i2.HeaderRowEventDispatcher }, { type: i0.NgZone }, { type: i2.ColumnResizeNotifierSource }, { type: i2.ResizeRef }, { type: i1._CoalescedStyleScheduler, decorators: [{\n type: Inject,\n args: [_COALESCED_STYLE_SCHEDULER]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }], propDecorators: { topElement: [{\n type: ViewChild,\n args: ['top', { static: true }]\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass AbstractMatResizable extends Resizable {\n constructor() {\n super(...arguments);\n this.minWidthPxInternal = 32;\n }\n getInlineHandleCssClassName() {\n return 'mat-resizable-handle';\n }\n getOverlayHandleComponentType() {\n return MatColumnResizeOverlayHandle;\n }\n}\nconst RESIZABLE_HOST_BINDINGS = {\n class: 'mat-resizable',\n};\nconst RESIZABLE_INPUTS = [\n 'minWidthPx: matResizableMinWidthPx',\n 'maxWidthPx: matResizableMaxWidthPx',\n];\n\n/**\n * Explicitly enables column resizing for a mat-header-cell.\n */\nclass MatResizable extends AbstractMatResizable {\n get hasResizableClass() {\n return this.isResizable ? RESIZABLE_HOST_BINDINGS.class : '';\n }\n get resizable() {\n return this.isResizable;\n }\n set resizable(newValue) {\n this.isResizable = newValue == null || newValue === '' || newValue;\n }\n constructor(columnDef, columnResize, directionality, document, elementRef, eventDispatcher, injector, ngZone, overlay, resizeNotifier, resizeStrategy, styleScheduler, viewContainerRef, changeDetectorRef) {\n super();\n this.columnDef = columnDef;\n this.columnResize = columnResize;\n this.directionality = directionality;\n this.elementRef = elementRef;\n this.eventDispatcher = eventDispatcher;\n this.injector = injector;\n this.ngZone = ngZone;\n this.overlay = overlay;\n this.resizeNotifier = resizeNotifier;\n this.resizeStrategy = resizeStrategy;\n this.styleScheduler = styleScheduler;\n this.viewContainerRef = viewContainerRef;\n this.changeDetectorRef = changeDetectorRef;\n this.isResizable = true;\n this.document = document;\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MatResizable, deps: [{ token: i1.CdkColumnDef }, { token: i2.ColumnResize }, { token: i3.Directionality }, { token: DOCUMENT }, { token: i0.ElementRef }, { token: i2.HeaderRowEventDispatcher }, { token: i0.Injector }, { token: i0.NgZone }, { token: i4.Overlay }, { token: i2.ColumnResizeNotifierSource }, { token: i2.ResizeStrategy }, { token: _COALESCED_STYLE_SCHEDULER }, { token: i0.ViewContainerRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }\n /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0\", type: MatResizable, isStandalone: true, selector: \"mat-header-cell[resizable], th[mat-header-cell][resizable]\", inputs: { minWidthPx: [\"matResizableMinWidthPx\", \"minWidthPx\"], maxWidthPx: [\"matResizableMaxWidthPx\", \"maxWidthPx\"], resizable: \"resizable\" }, host: { properties: { \"class\": \"this.hasResizableClass\" }, classAttribute: \"mat-resizable\" }, usesInheritance: true, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MatResizable, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-header-cell[resizable], th[mat-header-cell][resizable]',\n host: RESIZABLE_HOST_BINDINGS,\n inputs: RESIZABLE_INPUTS,\n standalone: true,\n }]\n }], ctorParameters: () => [{ type: i1.CdkColumnDef }, { type: i2.ColumnResize }, { type: i3.Directionality }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.ElementRef }, { type: i2.HeaderRowEventDispatcher }, { type: i0.Injector }, { type: i0.NgZone }, { type: i4.Overlay }, { type: i2.ColumnResizeNotifierSource }, { type: i2.ResizeStrategy }, { type: i1._CoalescedStyleScheduler, decorators: [{\n type: Inject,\n args: [_COALESCED_STYLE_SCHEDULER]\n }] }, { type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }], propDecorators: { hasResizableClass: [{\n type: HostBinding,\n args: ['class']\n }], resizable: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ENTRY_COMMON_COMPONENTS = [MatColumnResizeOverlayHandle];\nclass MatColumnResizeCommonModule {\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MatColumnResizeCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0\", ngImport: i0, type: MatColumnResizeCommonModule, imports: [MatColumnResizeOverlayHandle], exports: [MatColumnResizeOverlayHandle] }); }\n /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MatColumnResizeCommonModule }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MatColumnResizeCommonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: ENTRY_COMMON_COMPONENTS,\n exports: ENTRY_COMMON_COMPONENTS,\n }]\n }] });\nconst IMPORTS = [MatCommonModule, OverlayModule, MatColumnResizeCommonModule];\nclass MatColumnResizeModule {\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MatColumnResizeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0\", ngImport: i0, type: MatColumnResizeModule, imports: [MatCommonModule, OverlayModule, MatColumnResizeCommonModule, MatColumnResize, MatColumnResizeFlex, MatResizable], exports: [MatColumnResize, MatColumnResizeFlex, MatResizable] }); }\n /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MatColumnResizeModule, imports: [IMPORTS] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MatColumnResizeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [...IMPORTS, MatColumnResize, MatColumnResizeFlex, MatResizable],\n exports: [MatColumnResize, MatColumnResizeFlex, MatResizable],\n }]\n }] });\n\nclass MtxGridUtils {\n constructor() { }\n /**\n * Get cell's value based on the data and column's field (e.g. `a.b.c`)\n * @param rowData Row data\n * @param colDef Column definition\n * @returns\n */\n getCellValue(rowData, colDef) {\n const keyArr = colDef.field ? colDef.field.split('.') : [];\n let tmp = '';\n keyArr.forEach((key, i) => {\n if (i === 0) {\n tmp = rowData[key];\n }\n else {\n tmp = tmp && tmp[key];\n }\n });\n return tmp;\n }\n /**\n * Get all data of a col\n * @param data All data\n * @param colDef Column definition\n * @returns\n */\n getColData(data, colDef) {\n return data.map(rowData => this.getCellValue(rowData, colDef));\n }\n /**\n * Whether the value is empty (`null`, `undefined`, `''`, `[]`)\n * @param value\n * @returns\n */\n isEmpty(value) {\n return value == null || value.toString() === '';\n }\n /**\n * Whether the value contain HTML\n * @param value\n * @returns\n */\n isContainHTML(value) {\n return /<\\/?[a-z][\\s\\S]*>/i.test(value);\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridUtils, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridUtils, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridUtils, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: () => [] });\n\nclass MtxGridColClassPipe {\n transform(colDef, rowData, rowChangeRecord, currentValue) {\n if (typeof colDef.class === 'string') {\n return colDef.class;\n }\n else if (typeof colDef.class === 'function') {\n return colDef.class(rowData, colDef);\n }\n return '';\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridColClassPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridColClassPipe, isStandalone: true, name: \"colClass\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridColClassPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'colClass', standalone: true }]\n }] });\nclass MtxGridRowClassPipe {\n transform(rowData, index, dataIndex, rowClassFormatter) {\n const rowIndex = index === undefined ? dataIndex : index;\n const classList = rowIndex % 2 === 1 ? ['mat-row-odd'] : [];\n if (rowClassFormatter) {\n for (const key of Object.keys(rowClassFormatter)) {\n if (rowClassFormatter[key](rowData, rowIndex)) {\n classList.push(key);\n }\n }\n }\n return classList.join(' ');\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridRowClassPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridRowClassPipe, isStandalone: true, name: \"rowClass\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridRowClassPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'rowClass', standalone: true }]\n }] });\nclass MtxGridCellActionsPipe {\n transform(btns, rowData, rowChangeRecord, currentValue) {\n if (typeof btns === 'function') {\n return btns(rowData);\n }\n else if (Array.isArray(btns)) {\n return btns;\n }\n return [];\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridCellActionsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridCellActionsPipe, isStandalone: true, name: \"cellActions\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridCellActionsPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'cellActions', standalone: true }]\n }] });\nclass MtxGridCellActionTooltipPipe {\n transform(btn) {\n if (typeof btn.tooltip === 'string' || isObservable(btn.tooltip)) {\n return { message: btn.tooltip };\n }\n else {\n return btn.tooltip || { message: '' };\n }\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridCellActionTooltipPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridCellActionTooltipPipe, isStandalone: true, name: \"cellActionTooltip\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridCellActionTooltipPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'cellActionTooltip', standalone: true }]\n }] });\nclass MtxGridCellActionBadgePipe {\n transform(btn) {\n if (typeof btn.badge === 'number' || typeof btn.badge === 'string' || isObservable(btn.badge)) {\n return { content: btn.badge };\n }\n else {\n return btn.badge || { content: '' };\n }\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridCellActionBadgePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridCellActionBadgePipe, isStandalone: true, name: \"cellActionBadge\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridCellActionBadgePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'cellActionBadge', standalone: true }]\n }] });\nclass MtxGridCellActionDisablePipe {\n transform(btn, rowData, rowChangeRecord, currentValue) {\n if (typeof btn.disabled === 'boolean') {\n return btn.disabled;\n }\n else if (typeof btn.disabled === 'function') {\n return btn.disabled(rowData);\n }\n else {\n return false;\n }\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridCellActionDisablePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }\n /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridCellActionDisablePipe, isStandalone: true, name: \"cellActionDisable\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridCellActionDisablePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'cellActionDisable', standalone: true }]\n }] });\nclass MtxGridCellSummaryPipe {\n constructor(utils) {\n this.utils = utils;\n }\n transform(data, colDef) {\n if (typeof colDef.summary === 'string') {\n return colDef.summary;\n }\n else if (typeof colDef.summary === 'function') {\n return colDef.summary(this.utils.getColData(data, colDef), colDef);\n }\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridCellSummaryPipe, deps: [{ token: MtxGridUtils }], target: i0.ɵɵFactoryTarget.Pipe }); }\n /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"14.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridCellSummaryPipe, isStandalone: true, name: \"cellSummary\" }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridCellSummaryPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'cellSummary', standalone: true }]\n }], ctorParameters: () => [{ type: MtxGridUtils }] });\n\nclass MtxGridCell {\n get _value() {\n return this._utils.getCellValue(this.rowData, this.colDef);\n }\n constructor(_dialog, _utils, _differs, _changeDetectorRef) {\n this._dialog = _dialog;\n this._utils = _utils;\n this._differs = _differs;\n this._changeDetectorRef = _changeDetectorRef;\n /** Row data */\n this.rowData = {};\n /** Table data */\n this.data = [];\n /** Whether show summary */\n this.summary = false;\n /** Placeholder for the empty value (`null`, `''`, `[]`) */\n this.placeholder = '--';\n this.rowDataChange = new EventEmitter();\n }\n ngOnInit() {\n this.rowDataDiffer = this._differs.find(this.rowData).create();\n }\n ngDoCheck() {\n const changes = this.rowDataDiffer?.diff(this.rowData);\n if (changes) {\n this._applyChanges(changes);\n }\n }\n _applyChanges(changes) {\n changes.forEachChangedItem(record => {\n this.rowChangeRecord = record;\n this.rowDataChange.emit(record);\n this._changeDetectorRef.markForCheck();\n });\n }\n _getText(value) {\n return value === undefined ? '' : this._utils.isEmpty(value) ? this.placeholder : value;\n }\n _getTooltip(value) {\n return this._utils.isEmpty(value) ? '' : value;\n }\n _getFormatterTooltip(value) {\n return this._utils.isContainHTML(value) || this._utils.isEmpty(value) ? '' : value;\n }\n _onActionClick(event, btn, rowData) {\n event.preventDefault();\n event.stopPropagation();\n if (typeof btn.pop === 'string' || isObservable(btn.pop)) {\n this._dialog.open({\n title: btn.pop,\n buttons: [\n { color: 'primary', text: 'OK', onClick: () => btn.click?.(rowData) || {} },\n { text: 'CLOSE' },\n ],\n });\n }\n else if (typeof btn.pop === 'object') {\n this._dialog.open({\n title: btn.pop?.title,\n description: btn.pop?.description,\n buttons: [\n {\n color: btn.pop?.okColor || 'primary',\n text: btn.pop?.okText || 'OK',\n onClick: () => btn.click?.(rowData) || {},\n },\n {\n color: btn.pop?.closeColor,\n text: btn.pop?.closeText || 'CLOSE',\n },\n ],\n });\n }\n else {\n btn.click?.(rowData);\n }\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridCell, deps: [{ token: i1$1.MtxDialog }, { token: MtxGridUtils }, { token: i0.KeyValueDiffers }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"18.2.0\", type: MtxGridCell, isStandalone: true, selector: \"mtx-grid-cell\", inputs: { rowData: \"rowData\", colDef: \"colDef\", data: \"data\", summary: \"summary\", placeholder: \"placeholder\" }, outputs: { rowDataChange: \"rowDataChange\" }, exportAs: [\"mtxGridCell\"], ngImport: i0, template: \"@if (summary) {\\n \\n \\n} @else {\\n \\n @if (colDef.formatter) {\\n \\n \\n } @else {\\n \\n @switch (colDef.type) {\\n \\n @case ('button') {\\n @for (btn of colDef.buttons | cellActions: rowData: rowChangeRecord: rowChangeRecord?.currentValue; track btn) {\\n @if (!btn.iif || btn.iif(rowData)) {\\n @switch (btn.type) {\\n @case ('raised') {\\n \\n }\\n @case ('stroked') {\\n \\n }\\n @case ('flat') {\\n \\n }\\n @case ('icon') {\\n \\n }\\n @case ('fab') {\\n \\n }\\n @case ('mini-fab') {\\n \\n }\\n @default {\\n \\n }\\n }\\n }\\n }\\n }\\n \\n @case ('tag') {\\n @if (colDef.tag && colDef.tag[_value]) {\\n \\n \\n {{colDef.tag[_value].text}}\\n \\n \\n } @else {\\n {{_value}}\\n }\\n }\\n \\n @case ('link') {\\n {{_value}}\\n }\\n \\n @case ('image') {\\n \\\"\\\"\\n }\\n \\n @case ('boolean') {\\n {{_getText(_value)}}\\n }\\n \\n @case ('number') {\\n \\n {{_getText(_value | number: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)}}\\n \\n }\\n \\n @case ('currency') {\\n \\n {{_getText(_value | currency: colDef.typeParameter?.currencyCode: colDef.typeParameter?.display: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)}}\\n \\n }\\n \\n @case ('percent') {\\n \\n {{_getText(_value | percent: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)}}\\n \\n }\\n \\n @case ('date') {\\n \\n {{_getText(_value | date: colDef.typeParameter?.format: colDef.typeParameter?.timezone: colDef.typeParameter?.locale)}}\\n \\n }\\n \\n @default {\\n {{_getText(_value)}}\\n }\\n }\\n }\\n}\\n\\n\\n @if (btn.icon) {\\n {{btn.icon}}\\n } @else if(btn.fontIcon) {\\n \\n } @else if(btn.svgIcon) {\\n \\n }\\n\\n\", styles: [\".mtx-grid-img{display:inline-block;width:32px;border-radius:4px;vertical-align:middle}\\n\"], dependencies: [{ kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"pipe\", type: CurrencyPipe, name: \"currency\" }, { kind: \"pipe\", type: DatePipe, name: \"date\" }, { kind: \"pipe\", type: DecimalPipe, name: \"number\" }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"pipe\", type: PercentPipe, name: \"percent\" }, { kind: \"component\", type: MatButton, selector: \" button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] \", exportAs: [\"matButton\"] }, { kind: \"component\", type: MatIconButton, selector: \"button[mat-icon-button]\", exportAs: [\"matButton\"] }, { kind: \"component\", type: MatFabButton, selector: \"button[mat-fab]\", inputs: [\"extended\"], exportAs: [\"matButton\"] }, { kind: \"component\", type: MatMiniFabButton, selector: \"button[mat-mini-fab]\", exportAs: [\"matButton\"] }, { kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"component\", type: MatChipListbox, selector: \"mat-chip-listbox\", inputs: [\"multiple\", \"aria-orientation\", \"selectable\", \"compareWith\", \"required\", \"hideSingleSelectionIndicator\", \"value\"], outputs: [\"change\"] }, { kind: \"component\", type: MatChip, selector: \"mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]\", inputs: [\"role\", \"id\", \"aria-label\", \"aria-description\", \"value\", \"color\", \"removable\", \"highlighted\", \"disableRipple\", \"disabled\"], outputs: [\"removed\", \"destroyed\"], exportAs: [\"matChip\"] }, { kind: \"directive\", type: MatTooltip, selector: \"[matTooltip]\", inputs: [\"matTooltipPosition\", \"matTooltipPositionAtOrigin\", \"matTooltipDisabled\", \"matTooltipShowDelay\", \"matTooltipHideDelay\", \"matTooltipTouchGestures\", \"matTooltip\", \"matTooltipClass\"], exportAs: [\"matTooltip\"] }, { kind: \"directive\", type: MatBadge, selector: \"[matBadge]\", inputs: [\"matBadgeColor\", \"matBadgeOverlap\", \"matBadgeDisabled\", \"matBadgePosition\", \"matBadge\", \"matBadgeDescription\", \"matBadgeSize\", \"matBadgeHidden\"] }, { kind: \"pipe\", type: MtxToObservablePipe, name: \"toObservable\" }, { kind: \"pipe\", type: MtxGridCellActionsPipe, name: \"cellActions\" }, { kind: \"pipe\", type: MtxGridCellSummaryPipe, name: \"cellSummary\" }, { kind: \"pipe\", type: MtxGridCellActionDisablePipe, name: \"cellActionDisable\" }, { kind: \"pipe\", type: MtxGridCellActionTooltipPipe, name: \"cellActionTooltip\" }, { kind: \"pipe\", type: MtxGridCellActionBadgePipe, name: \"cellActionBadge\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridCell, decorators: [{\n type: Component,\n args: [{ selector: 'mtx-grid-cell', exportAs: 'mtxGridCell', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [\n AsyncPipe,\n CurrencyPipe,\n DatePipe,\n DecimalPipe,\n NgTemplateOutlet,\n PercentPipe,\n MatButton,\n MatIconButton,\n MatFabButton,\n MatMiniFabButton,\n MatIcon,\n MatChipListbox,\n MatChip,\n MatTooltip,\n MatBadge,\n MtxToObservablePipe,\n MtxGridCellActionsPipe,\n MtxGridCellSummaryPipe,\n MtxGridCellActionDisablePipe,\n MtxGridCellActionTooltipPipe,\n MtxGridCellActionBadgePipe,\n ], template: \"@if (summary) {\\n \\n \\n} @else {\\n \\n @if (colDef.formatter) {\\n \\n \\n } @else {\\n \\n @switch (colDef.type) {\\n \\n @case ('button') {\\n @for (btn of colDef.buttons | cellActions: rowData: rowChangeRecord: rowChangeRecord?.currentValue; track btn) {\\n @if (!btn.iif || btn.iif(rowData)) {\\n @switch (btn.type) {\\n @case ('raised') {\\n \\n }\\n @case ('stroked') {\\n \\n }\\n @case ('flat') {\\n \\n }\\n @case ('icon') {\\n \\n }\\n @case ('fab') {\\n \\n }\\n @case ('mini-fab') {\\n \\n }\\n @default {\\n \\n }\\n }\\n }\\n }\\n }\\n \\n @case ('tag') {\\n @if (colDef.tag && colDef.tag[_value]) {\\n \\n \\n {{colDef.tag[_value].text}}\\n \\n \\n } @else {\\n {{_value}}\\n }\\n }\\n \\n @case ('link') {\\n {{_value}}\\n }\\n \\n @case ('image') {\\n \\\"\\\"\\n }\\n \\n @case ('boolean') {\\n {{_getText(_value)}}\\n }\\n \\n @case ('number') {\\n \\n {{_getText(_value | number: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)}}\\n \\n }\\n \\n @case ('currency') {\\n \\n {{_getText(_value | currency: colDef.typeParameter?.currencyCode: colDef.typeParameter?.display: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)}}\\n \\n }\\n \\n @case ('percent') {\\n \\n {{_getText(_value | percent: colDef.typeParameter?.digitsInfo: colDef.typeParameter?.locale)}}\\n \\n }\\n \\n @case ('date') {\\n \\n {{_getText(_value | date: colDef.typeParameter?.format: colDef.typeParameter?.timezone: colDef.typeParameter?.locale)}}\\n \\n }\\n \\n @default {\\n {{_getText(_value)}}\\n }\\n }\\n }\\n}\\n\\n\\n @if (btn.icon) {\\n {{btn.icon}}\\n } @else if(btn.fontIcon) {\\n \\n } @else if(btn.svgIcon) {\\n \\n }\\n\\n\", styles: [\".mtx-grid-img{display:inline-block;width:32px;border-radius:4px;vertical-align:middle}\\n\"] }]\n }], ctorParameters: () => [{ type: i1$1.MtxDialog }, { type: MtxGridUtils }, { type: i0.KeyValueDiffers }, { type: i0.ChangeDetectorRef }], propDecorators: { rowData: [{\n type: Input\n }], colDef: [{\n type: Input\n }], data: [{\n type: Input\n }], summary: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], rowDataChange: [{\n type: Output\n }] } });\n\nclass MtxGridColumnMenu {\n constructor() {\n this.columns = [];\n this.selectable = true;\n this.selectableChecked = 'show';\n this.sortable = true;\n this.pinnable = true;\n this._buttonText = '';\n this.buttonType = 'stroked';\n this.buttonClass = '';\n this.buttonIcon = '';\n this.showHeader = false;\n this.headerText = 'Columns Header';\n this.showFooter = false;\n this.footerText = 'Columns Footer';\n this.columnChange = new EventEmitter();\n this._pinOptions = [\n { label: 'Pin Left', value: 'left' },\n { label: 'Pin Right', value: 'right' },\n { label: 'No Pin', value: null },\n ];\n }\n get buttonText() {\n const defaultText = `Columns ${this.selectableChecked === 'show' ? 'Shown' : 'Hidden'}`;\n return this._buttonText ? this._buttonText : defaultText;\n }\n set buttonText(value) {\n this._buttonText = value;\n }\n get pinOptions() {\n return this._pinOptions;\n }\n set pinOptions(value) {\n if (value.length > 0) {\n this._pinOptions = value;\n }\n }\n _handleDroped(e) {\n moveItemInArray(this.columns, e.previousIndex, e.currentIndex);\n this.columnChange.emit(this.columns);\n }\n _handleChecked(col) {\n if (this.selectableChecked === 'show') {\n col.hide = !col.show;\n }\n else {\n col.show = !col.hide;\n }\n this.columnChange.emit(this.columns);\n }\n _handlePinSelect(col, val) {\n if (col.pinned != val) {\n col.pinned = val;\n this.columnChange.emit(this.columns);\n }\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridColumnMenu, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"18.2.0\", type: MtxGridColumnMenu, isStandalone: true, selector: \"mtx-grid-column-menu\", inputs: { columns: \"columns\", selectable: \"selectable\", selectableChecked: \"selectableChecked\", sortable: \"sortable\", pinnable: \"pinnable\", buttonText: \"buttonText\", buttonType: \"buttonType\", buttonColor: \"buttonColor\", buttonClass: \"buttonClass\", buttonIcon: \"buttonIcon\", showHeader: \"showHeader\", headerText: \"headerText\", headerTemplate: \"headerTemplate\", showFooter: \"showFooter\", footerText: \"footerText\", footerTemplate: \"footerTemplate\", pinOptions: \"pinOptions\" }, outputs: { columnChange: \"columnChange\" }, viewQueries: [{ propertyName: \"menuPanel\", first: true, predicate: [\"menu\"], descendants: true, static: true }, { propertyName: \"menuTrigger\", first: true, predicate: MatMenuTrigger, descendants: true }], exportAs: [\"mtxGridColumnMenu\"], ngImport: i0, template: \"@switch (buttonType) {\\n @case ('raised') {\\n \\n }\\n @case ('stroked') {\\n \\n }\\n @case ('flat') {\\n \\n }\\n @case ('icon') {\\n \\n }\\n @case ('fab') {\\n \\n }\\n @case ('mini-fab') {\\n \\n }\\n @default {\\n \\n }\\n}\\n\\n\\n \\n
\\n @if (showHeader) {\\n
\\n @if (headerTemplate) {\\n \\n } @else {\\n {{headerText}}\\n }\\n
\\n }\\n\\n
\\n @if (sortable) {\\n
\\n @for (col of columns; track col) {\\n
\\n \\n \\n \\n \\n \\n
\\n }\\n
\\n }\\n\\n @if (!sortable) {\\n
\\n @for (col of columns; track col) {\\n
\\n \\n \\n
\\n }\\n
\\n }\\n
\\n\\n @if (showFooter) {\\n
\\n @if (footerTemplate) {\\n \\n } @else {\\n {{footerText}}\\n }\\n
\\n }\\n
\\n
\\n\\n\\n @if (pinnable) {\\n \\n \\n @for (item of pinOptions; track item) {\\n \\n }\\n \\n }\\n\\n @if (selectable) {\\n {{col.header | toObservable | async}}\\n } @else {\\n {{col.header | toObservable | async}}\\n }\\n\\n\", styles: [\".mtx-grid-column-menu,.mtx-grid-column-pin-list{color:var(--mtx-grid-column-menu-text-color, var(--mat-app-on-surface-variant))}.mtx-grid-column-menu .mat-mdc-menu-content{padding:0}.mtx-grid-column-menu-body{max-height:65vh;padding:8px 16px;overflow:auto}.mtx-grid-column-menu-header,.mtx-grid-column-menu-footer{position:sticky;z-index:1;padding:8px 16px}.mtx-grid-column-menu-header{top:0;border-bottom:1px solid var(--mtx-grid-column-menu-divider-color, var(--mat-app-outline-variant))}.mtx-grid-column-menu-footer{bottom:0;border-top:1px solid var(--mtx-grid-column-menu-divider-color, var(--mat-app-outline-variant))}.mtx-grid-column-menu-list{display:block;max-width:100%}.mtx-grid-column-menu-list.cdk-drop-list-dragging .mtx-grid-column-menu-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.mtx-grid-column-menu-item{display:flex;flex-direction:row;align-items:center}.mtx-grid-column-menu-item.cdk-drag-disabled .cdk-drag-handle{opacity:.35;cursor:no-drop}.mtx-grid-column-menu-item .cdk-drag-handle{cursor:move}.mtx-grid-column-menu-item.cdk-drag-preview{border-radius:4px;box-shadow:0 0 0 1px var(--mtx-grid-outline-color, var(--mat-app-outline-variant))}.mtx-grid-column-menu-item.cdk-drag-placeholder{opacity:0}.mtx-grid-column-menu-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.mtx-grid-column-pin-button.mat-mdc-icon-button .mat-mdc-button-touch-target{width:100%;height:100%}.mtx-grid-column-pin-option.mat-menu-item{display:flex;align-items:center;height:32px}.mtx-grid-column-pin-option-placeholder{display:inline-block;width:20px;height:20px;line-height:20px;vertical-align:middle}.mtx-grid-column-pin-option-text{padding:0 8px;vertical-align:middle}.mtx-grid-column-drag-handle-icon:hover{cursor:move}.mtx-grid-column-menu-item-label.mat-mdc-checkbox .mat-mdc-checkbox-touch-target{width:100%;height:100%}\\n\"], dependencies: [{ kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i1$2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1$2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"component\", type: MatButton, selector: \" button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] \", exportAs: [\"matButton\"] }, { kind: \"component\", type: MatIconButton, selector: \"button[mat-icon-button]\", exportAs: [\"matButton\"] }, { kind: \"component\", type: MatFabButton, selector: \"button[mat-fab]\", inputs: [\"extended\"], exportAs: [\"matButton\"] }, { kind: \"component\", type: MatMiniFabButton, selector: \"button[mat-mini-fab]\", exportAs: [\"matButton\"] }, { kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"component\", type: MatMenu, selector: \"mat-menu\", inputs: [\"backdropClass\", \"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"xPosition\", \"yPosition\", \"overlapTrigger\", \"hasBackdrop\", \"class\", \"classList\"], outputs: [\"closed\", \"close\"], exportAs: [\"matMenu\"] }, { kind: \"directive\", type: MatMenuTrigger, selector: \"[mat-menu-trigger-for], [matMenuTriggerFor]\", inputs: [\"mat-menu-trigger-for\", \"matMenuTriggerFor\", \"matMenuTriggerData\", \"matMenuTriggerRestoreFocus\"], outputs: [\"menuOpened\", \"onMenuOpen\", \"menuClosed\", \"onMenuClose\"], exportAs: [\"matMenuTrigger\"] }, { kind: \"component\", type: MatMenuItem, selector: \"[mat-menu-item]\", inputs: [\"role\", \"disabled\", \"disableRipple\"], exportAs: [\"matMenuItem\"] }, { kind: \"component\", type: MatCheckbox, selector: \"mat-checkbox\", inputs: [\"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"id\", \"required\", \"labelPosition\", \"name\", \"value\", \"disableRipple\", \"tabIndex\", \"color\", \"disabledInteractive\", \"checked\", \"disabled\", \"indeterminate\"], outputs: [\"change\", \"indeterminateChange\"], exportAs: [\"matCheckbox\"] }, { kind: \"directive\", type: CdkDrag, selector: \"[cdkDrag]\", inputs: [\"cdkDragData\", \"cdkDragLockAxis\", \"cdkDragRootElement\", \"cdkDragBoundary\", \"cdkDragStartDelay\", \"cdkDragFreeDragPosition\", \"cdkDragDisabled\", \"cdkDragConstrainPosition\", \"cdkDragPreviewClass\", \"cdkDragPreviewContainer\", \"cdkDragScale\"], outputs: [\"cdkDragStarted\", \"cdkDragReleased\", \"cdkDragEnded\", \"cdkDragEntered\", \"cdkDragExited\", \"cdkDragDropped\", \"cdkDragMoved\"], exportAs: [\"cdkDrag\"] }, { kind: \"directive\", type: CdkDropList, selector: \"[cdkDropList], cdk-drop-list\", inputs: [\"cdkDropListConnectedTo\", \"cdkDropListData\", \"cdkDropListOrientation\", \"id\", \"cdkDropListLockAxis\", \"cdkDropListDisabled\", \"cdkDropListSortingDisabled\", \"cdkDropListEnterPredicate\", \"cdkDropListSortPredicate\", \"cdkDropListAutoScrollDisabled\", \"cdkDropListAutoScrollStep\", \"cdkDropListElementContainer\"], outputs: [\"cdkDropListDropped\", \"cdkDropListEntered\", \"cdkDropListExited\", \"cdkDropListSorted\"], exportAs: [\"cdkDropList\"] }, { kind: \"pipe\", type: MtxToObservablePipe, name: \"toObservable\" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridColumnMenu, decorators: [{\n type: Component,\n args: [{ selector: 'mtx-grid-column-menu', exportAs: 'mtxGridColumnMenu', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [\n AsyncPipe,\n NgTemplateOutlet,\n FormsModule,\n MatButton,\n MatIconButton,\n MatFabButton,\n MatMiniFabButton,\n MatIcon,\n MatMenu,\n MatMenuTrigger,\n MatMenuItem,\n MatCheckbox,\n CdkDrag,\n CdkDropList,\n MtxToObservablePipe,\n ], template: \"@switch (buttonType) {\\n @case ('raised') {\\n \\n }\\n @case ('stroked') {\\n \\n }\\n @case ('flat') {\\n \\n }\\n @case ('icon') {\\n \\n }\\n @case ('fab') {\\n \\n }\\n @case ('mini-fab') {\\n \\n }\\n @default {\\n \\n }\\n}\\n\\n\\n \\n
\\n @if (showHeader) {\\n
\\n @if (headerTemplate) {\\n \\n } @else {\\n {{headerText}}\\n }\\n
\\n }\\n\\n
\\n @if (sortable) {\\n
\\n @for (col of columns; track col) {\\n
\\n \\n \\n \\n \\n \\n
\\n }\\n
\\n }\\n\\n @if (!sortable) {\\n
\\n @for (col of columns; track col) {\\n
\\n \\n \\n
\\n }\\n
\\n }\\n
\\n\\n @if (showFooter) {\\n
\\n @if (footerTemplate) {\\n \\n } @else {\\n {{footerText}}\\n }\\n
\\n }\\n
\\n
\\n\\n\\n @if (pinnable) {\\n \\n \\n @for (item of pinOptions; track item) {\\n \\n }\\n \\n }\\n\\n @if (selectable) {\\n {{col.header | toObservable | async}}\\n } @else {\\n {{col.header | toObservable | async}}\\n }\\n\\n\", styles: [\".mtx-grid-column-menu,.mtx-grid-column-pin-list{color:var(--mtx-grid-column-menu-text-color, var(--mat-app-on-surface-variant))}.mtx-grid-column-menu .mat-mdc-menu-content{padding:0}.mtx-grid-column-menu-body{max-height:65vh;padding:8px 16px;overflow:auto}.mtx-grid-column-menu-header,.mtx-grid-column-menu-footer{position:sticky;z-index:1;padding:8px 16px}.mtx-grid-column-menu-header{top:0;border-bottom:1px solid var(--mtx-grid-column-menu-divider-color, var(--mat-app-outline-variant))}.mtx-grid-column-menu-footer{bottom:0;border-top:1px solid var(--mtx-grid-column-menu-divider-color, var(--mat-app-outline-variant))}.mtx-grid-column-menu-list{display:block;max-width:100%}.mtx-grid-column-menu-list.cdk-drop-list-dragging .mtx-grid-column-menu-item:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.mtx-grid-column-menu-item{display:flex;flex-direction:row;align-items:center}.mtx-grid-column-menu-item.cdk-drag-disabled .cdk-drag-handle{opacity:.35;cursor:no-drop}.mtx-grid-column-menu-item .cdk-drag-handle{cursor:move}.mtx-grid-column-menu-item.cdk-drag-preview{border-radius:4px;box-shadow:0 0 0 1px var(--mtx-grid-outline-color, var(--mat-app-outline-variant))}.mtx-grid-column-menu-item.cdk-drag-placeholder{opacity:0}.mtx-grid-column-menu-item.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.mtx-grid-column-pin-button.mat-mdc-icon-button .mat-mdc-button-touch-target{width:100%;height:100%}.mtx-grid-column-pin-option.mat-menu-item{display:flex;align-items:center;height:32px}.mtx-grid-column-pin-option-placeholder{display:inline-block;width:20px;height:20px;line-height:20px;vertical-align:middle}.mtx-grid-column-pin-option-text{padding:0 8px;vertical-align:middle}.mtx-grid-column-drag-handle-icon:hover{cursor:move}.mtx-grid-column-menu-item-label.mat-mdc-checkbox .mat-mdc-checkbox-touch-target{width:100%;height:100%}\\n\"] }]\n }], propDecorators: { menuPanel: [{\n type: ViewChild,\n args: ['menu', { static: true }]\n }], menuTrigger: [{\n type: ViewChild,\n args: [MatMenuTrigger]\n }], columns: [{\n type: Input\n }], selectable: [{\n type: Input\n }], selectableChecked: [{\n type: Input\n }], sortable: [{\n type: Input\n }], pinnable: [{\n type: Input\n }], buttonText: [{\n type: Input\n }], buttonType: [{\n type: Input\n }], buttonColor: [{\n type: Input\n }], buttonClass: [{\n type: Input\n }], buttonIcon: [{\n type: Input\n }], showHeader: [{\n type: Input\n }], headerText: [{\n type: Input\n }], headerTemplate: [{\n type: Input\n }], showFooter: [{\n type: Input\n }], footerText: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], columnChange: [{\n type: Output\n }], pinOptions: [{\n type: Input\n }] } });\n\nclass MtxGridExpansionToggle {\n get opened() {\n return this._opened;\n }\n set opened(newValue) {\n this._opened = newValue;\n this.openedChange.emit(newValue);\n }\n get expanded() {\n return this._opened;\n }\n set expandableRow(value) {\n if (value !== this._row) {\n this._row = value;\n }\n }\n set template(value) {\n if (value !== this._tplRef) {\n this._tplRef = value;\n }\n }\n constructor() {\n this._opened = false;\n this.openedChange = new EventEmitter();\n this.toggleChange = new EventEmitter();\n }\n onClick(event) {\n event.preventDefault();\n event.stopPropagation();\n this.toggle();\n }\n toggle() {\n this.opened = !this.opened;\n this.toggleChange.emit(this);\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridExpansionToggle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0\", type: MtxGridExpansionToggle, isStandalone: true, selector: \"[mtx-grid-expansion-toggle]\", inputs: { opened: \"opened\", expandableRow: \"expandableRow\", template: [\"expansionRowTpl\", \"template\"] }, outputs: { openedChange: \"openedChange\", toggleChange: \"toggleChange\" }, host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"class.expanded\": \"this.expanded\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridExpansionToggle, decorators: [{\n type: Directive,\n args: [{\n selector: '[mtx-grid-expansion-toggle]',\n standalone: true,\n }]\n }], ctorParameters: () => [], propDecorators: { opened: [{\n type: Input\n }], openedChange: [{\n type: Output\n }], expanded: [{\n type: HostBinding,\n args: ['class.expanded']\n }], expandableRow: [{\n type: Input\n }], template: [{\n type: Input,\n args: ['expansionRowTpl']\n }], toggleChange: [{\n type: Output\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\nclass MtxGridSelectableCell {\n constructor() {\n this.ctrlKeyPressed = false;\n this.shiftKeyPressed = false;\n this._selected = false;\n this.cellSelectable = true;\n this.cellSelectedChange = new EventEmitter();\n }\n get selected() {\n return this._selected;\n }\n onClick(event) {\n this.ctrlKeyPressed = event.ctrlKey;\n this.shiftKeyPressed = event.shiftKey;\n if (this.cellSelectable) {\n this.select();\n }\n }\n select() {\n this._selected = true;\n this.cellSelectedChange.emit(this);\n }\n deselect() {\n this._selected = false;\n this.cellSelectedChange.emit(this);\n }\n toggle() {\n this._selected = !this._selected;\n this.cellSelectedChange.emit(this);\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridSelectableCell, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"18.2.0\", type: MtxGridSelectableCell, isStandalone: true, selector: \"[mtx-grid-selectable-cell]\", inputs: { cellSelectable: \"cellSelectable\" }, outputs: { cellSelectedChange: \"cellSelectedChange\" }, host: { listeners: { \"click\": \"onClick($event)\" }, properties: { \"class.selected\": \"this.selected\" } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridSelectableCell, decorators: [{\n type: Directive,\n args: [{\n selector: '[mtx-grid-selectable-cell]',\n standalone: true,\n }]\n }], propDecorators: { selected: [{\n type: HostBinding,\n args: ['class.selected']\n }], cellSelectable: [{\n type: Input\n }], cellSelectedChange: [{\n type: Output\n }], onClick: [{\n type: HostListener,\n args: ['click', ['$event']]\n }] } });\n\n/** Injection token that can be used to specify default grid options. */\nconst MTX_GRID_DEFAULT_OPTIONS = new InjectionToken('mtx-grid-default-options');\nclass MtxGrid {\n get _hasNoResult() {\n return (!this.dataSource.data || this.dataSource.data.length === 0) && !this.loading;\n }\n // TODO: Summary display conditions\n get _whetherShowSummary() {\n return this.showSummary;\n }\n constructor(_utils, _changeDetectorRef, _defaultOptions) {\n this._utils = _utils;\n this._changeDetectorRef = _changeDetectorRef;\n this._defaultOptions = _defaultOptions;\n this.dataSource = new MatTableDataSource();\n /** The grid's displayed columns. */\n this.displayedColumns = [];\n /** The grid's columns. */\n this.columns = [];\n /** The grid's data. */\n this.data = [];\n /** The total number of the data. */\n this.length = 0;\n /** Whether the grid is loading. */\n this.loading = false;\n /** Whether the column is resizable. */\n this.columnResizable = this._defaultOptions?.columnResizable ?? false;\n /** Placeholder for the empty value (`null`, `''`, `[]`). */\n this.emptyValuePlaceholder = this._defaultOptions?.emptyValuePlaceholder ?? '--';\n // ===== Page =====\n /** Whether to paginate the data on front end. */\n this.pageOnFront = this._defaultOptions?.pageOnFront ?? true;\n /** Whether to show the paginator. */\n this.showPaginator = this._defaultOptions?.showPaginator ?? true;\n /** Whether the paginator is disabled. */\n this.pageDisabled = this._defaultOptions?.pageDisabled ?? false;\n /** Whether to show the first/last buttons UI to the user. */\n this.showFirstLastButtons = this._defaultOptions?.showFirstLastButtons ?? true;\n /** The zero-based page index of the displayed list of items. */\n this.pageIndex = this._defaultOptions?.pageIndex ?? 0;\n /** Number of items to display on a page. */\n this.pageSize = this._defaultOptions?.pageSize ?? 10;\n /** The set of provided page size options to display to the user. */\n this.pageSizeOptions = this._defaultOptions?.pageSizeOptions ?? [10, 50, 100];\n /** Whether to hide the page size selection UI from the user. */\n this.hidePageSize = this._defaultOptions?.hidePageSize ?? false;\n /** Event emitted when the paginator changes the page size or page index. */\n this.page = new EventEmitter();\n // ===== Sort =====\n /** Whether to sort the data on front end. */\n this.sortOnFront = this._defaultOptions?.sortOnFront ?? true;\n /** The id of the most recently sorted MatSortable. */\n this.sortActive = this._defaultOptions?.sortActive ?? '';\n /** The sort direction of the currently active MatSortable. */\n this.sortDirection = this._defaultOptions?.sortDirection ?? '';\n /**\n * Whether to disable the user from clearing the sort by finishing the sort direction cycle.\n * May be overriden by the column's `disableClear` in `sortProp`.\n */\n this.sortDisableClear = this._defaultOptions?.sortDisableClear ?? false;\n /** Whether the sort is disabled. */\n this.sortDisabled = this._defaultOptions?.sortDisabled ?? false;\n /**\n * The direction to set when an MatSortable is initially sorted.\n * May be overriden by the column's `start` in `sortProp`.\n */\n this.sortStart = this._defaultOptions?.sortStart ?? 'asc';\n /** Event emitted when the user changes either the active sort or sort direction. */\n this.sortChange = new EventEmitter();\n // ===== Row =====\n /** Whether to use the row hover style. */\n this.rowHover = this._defaultOptions?.rowHover ?? false;\n /** Whether to use the row striped style. */\n this.rowStriped = this._defaultOptions?.rowStriped ?? false;\n /** Event emitted when the user clicks the row. */\n this.rowClick = new EventEmitter();\n /** Event emitted when the user attempts to open a context menu. */\n this.rowContextMenu = new EventEmitter();\n // ===== Expandable Row =====\n this.expansionRowStates = [];\n /** Whether the row is expandable. */\n this.expandable = false;\n /** Event emitted when the user toggles the expandable row. */\n this.expansionChange = new EventEmitter();\n // ===== Row Selection =====\n this.rowSelection = new SelectionModel(true, []);\n /** Whether to support multiple row/cell selection. */\n this.multiSelectable = this._defaultOptions?.multiSelectable ?? true;\n /** Whether the user can select multiple rows with click. */\n this.multiSelectionWithClick = this._defaultOptions?.multiSelectionWithClick ?? false;\n /** Whether the row is selectable. */\n this.rowSelectable = this._defaultOptions?.rowSelectable ?? false;\n /** Whether to hide the row selection checkbox. */\n this.hideRowSelectionCheckbox = this._defaultOptions?.hideRowSelectionCheckbox ?? false;\n /** Whether disable rows to be selected when clicked. */\n this.disableRowClickSelection = this._defaultOptions?.disableRowClickSelection ?? false;\n /** The formatter to disable the row selection or hide the row's checkbox. */\n this.rowSelectionFormatter = {};\n /** The selected row items. */\n this.rowSelected = [];\n /** Event emitted when the row is selected. */\n this.rowSelectedChange = new EventEmitter();\n // ===== Cell Selection =====\n this.cellSelection = [];\n /** Whether the cell is selectable. */\n this.cellSelectable = this._defaultOptions?.cellSelectable ?? true;\n /** Event emitted when the cell is selected. */\n this.cellSelectedChange = new EventEmitter();\n // ===== Toolbar =====\n /** Whether to show the toolbar. */\n this.showToolbar = this._defaultOptions?.showToolbar ?? false;\n /** The text of the toolbar's title. */\n this.toolbarTitle = this._defaultOptions?.toolbarTitle ?? '';\n // ===== Column Menu =====\n /** Whether the column is hideable. */\n this.columnHideable = this._defaultOptions?.columnHideable ?? true;\n /** Hide or show when the column's checkbox is checked. */\n this.columnHideableChecked = this._defaultOptions?.columnHideableChecked ?? 'show';\n /** Whether the column is sortable. */\n this.columnSortable = this._defaultOptions?.columnSortable ?? true;\n /** Whether the column is pinnable. */\n this.columnPinnable = this._defaultOptions?.columnPinnable ?? true;\n /** Event emitted when the column is hided or is sorted. */\n this.columnChange = new EventEmitter();\n /** The options for the column pin list. */\n this.columnPinOptions = this._defaultOptions?.columnPinOptions ?? [];\n /** Whether to show the column menu button. */\n this.showColumnMenuButton = this._defaultOptions?.showColumnMenuButton ?? true;\n /** The text for the column menu button. */\n this.columnMenuButtonText = this._defaultOptions?.columnMenuButtonText ?? '';\n /** The type for the column menu button. */\n this.columnMenuButtonType = this._defaultOptions?.columnMenuButtonType ?? 'stroked';\n /** The color for the column menu button. */\n this.columnMenuButtonColor = this._defaultOptions?.columnMenuButtonColor;\n /** The class for the column menu button. */\n this.columnMenuButtonClass = this._defaultOptions?.columnMenuButtonClass ?? '';\n /** The icon for the column menu button. */\n this.columnMenuButtonIcon = this._defaultOptions?.columnMenuButtonIcon ?? '';\n /** Whether to show the column-menu's header. */\n this.showColumnMenuHeader = this._defaultOptions?.showColumnMenuHeader ?? false;\n /** The text for the column-menu's header. */\n this.columnMenuHeaderText = this._defaultOptions?.columnMenuHeaderText ?? 'Columns Header';\n /** Whether to show the the column-menu's footer. */\n this.showColumnMenuFooter = this._defaultOptions?.showColumnMenuFooter ?? false;\n /** The text for the column-menu's footer. */\n this.columnMenuFooterText = this._defaultOptions?.columnMenuFooterText ?? 'Columns Footer';\n // ===== No Result =====\n /** The displayed text for the empty data. */\n this.noResultText = this._defaultOptions?.noResultText ?? 'No records found';\n // ===== Row Templates =====\n /** Whether to use custom row template. If true, you should define a matRowDef. */\n this.useContentRowTemplate = false;\n // TODO: It can't use together with `useContentRowTemplate`\n this.useContentHeaderRowTemplate = false;\n // TODO: It's not working\n this.useContentFooterRowTemplate = false;\n // ===== Summary =====\n /** Whether to show the summary. */\n this.showSummary = false;\n // ===== Side Bar =====\n /** Whether to show the sidebar. */\n this.showSidebar = false;\n // ===== Status Bar =====\n /** Whether to show the status bar. */\n this.showStatusbar = false;\n }\n detectChanges() {\n this._changeDetectorRef.detectChanges();\n }\n _getColData(data, colDef) {\n return this._utils.getColData(data, colDef);\n }\n _isColumnHide(item) {\n return item.hide !== undefined ? item.hide : item.show !== undefined ? !item.show : false;\n }\n // Waiting for async data\n ngOnChanges(changes) {\n this._countPinnedPosition();\n this.displayedColumns = this.columns\n .filter(item => !this._isColumnHide(item))\n .map(item => item.field);\n if (this.showColumnMenuButton) {\n this.columns.forEach(item => {\n item.hide = this._isColumnHide(item);\n item.show = !item.hide;\n });\n }\n if (this.rowSelectable && !this.hideRowSelectionCheckbox) {\n this.displayedColumns.unshift('MtxGridCheckboxColumnDef');\n }\n // We should copy each item of data for expansion data\n if (this.expandable) {\n this.expansionRowStates = []; // reset\n this.data?.forEach(_ => {\n this.expansionRowStates.push({ expanded: false });\n });\n }\n if (this.rowSelectable) {\n this.rowSelection = new SelectionModel(this.multiSelectable, this.rowSelected);\n }\n this.dataSource = new MatTableDataSource(this.data);\n this.dataSource.paginator = this.pageOnFront ? this.paginator : null;\n this.dataSource.sort = this.sortOnFront ? this.sort : null;\n // Only scroll top with data change\n if (changes.data) {\n this.scrollTop(0);\n }\n }\n ngAfterViewInit() {\n if (this.pageOnFront) {\n this.dataSource.paginator = this.paginator;\n }\n if (this.sortOnFront) {\n this.dataSource.sort = this.sort;\n }\n if (this.rowDefs?.length > 0 && this.useContentRowTemplate) {\n this.rowDefs.forEach(rowDef => this.table.addRowDef(rowDef));\n }\n if (this.headerRowDefs?.length > 0 && this.useContentHeaderRowTemplate) {\n this.headerRowDefs.forEach(headerRowDef => this.table.addHeaderRowDef(headerRowDef));\n }\n if (this.footerRowDefs?.length > 0 && this.useContentFooterRowTemplate) {\n this.footerRowDefs.forEach(footerRowDef => this.table.addFooterRowDef(footerRowDef));\n }\n }\n ngOnDestroy() { }\n _countPinnedPosition() {\n const count = (acc, cur) => acc + parseFloat(cur.width || '80px');\n const pinnedLeftCols = this.columns.filter(col => col.pinned && col.pinned === 'left');\n pinnedLeftCols.forEach((item, idx) => {\n item.left = pinnedLeftCols.slice(0, idx).reduce(count, 0) + 'px';\n });\n const pinnedRightCols = this.columns\n .filter(col => col.pinned && col.pinned === 'right')\n .reverse();\n pinnedRightCols.forEach((item, idx) => {\n item.right = pinnedRightCols.slice(0, idx).reduce(count, 0) + 'px';\n });\n }\n _getIndex(index, dataIndex) {\n return index === undefined ? dataIndex : index;\n }\n _onSortChange(sort) {\n this.sortChange.emit(sort);\n }\n _onRowDataChange(record) {\n this.rowChangeRecord = record;\n this._changeDetectorRef.markForCheck();\n }\n /** Expansion change event */\n _onExpansionChange(expansionRef, rowData, column, index) {\n this.expansionChange.emit({ expanded: expansionRef.expanded, data: rowData, index, column });\n }\n /** Cell select event */\n _selectCell(cellRef, rowData, colDef) {\n // If not the same cell\n if (this._selectedCell !== cellRef) {\n const colValue = this._utils.getCellValue(rowData, colDef);\n this.cellSelection = []; // reset\n this.cellSelection.push({ cellData: colValue, rowData, colDef });\n this.cellSelectedChange.emit(this.cellSelection);\n if (this._selectedCell) {\n this._selectedCell.deselect(); // the selectedCell will be undefined\n }\n }\n this._selectedCell = cellRef.selected ? cellRef : undefined;\n }\n /** Row select event */\n _selectRow(event, rowData, index) {\n if (this.rowSelectable &&\n !this.rowSelectionFormatter.disabled?.(rowData, index) &&\n !this.rowSelectionFormatter.hideCheckbox?.(rowData, index) &&\n !this.disableRowClickSelection) {\n // metaKey -> command key\n if (!this.multiSelectionWithClick && !event.ctrlKey && !event.metaKey) {\n this.rowSelection.clear();\n }\n this._toggleNormalCheckbox(rowData);\n }\n this.rowClick.emit({ event, rowData, index });\n }\n /** Whether the number of selected elements matches the total number of rows. */\n _isAllSelected() {\n const numSelected = this.rowSelection.selected.length;\n const numRows = this.dataSource.data.filter((row, index) => !this.rowSelectionFormatter.disabled?.(row, index)).length;\n return numSelected === numRows;\n }\n /** Select all rows if they are not all selected; otherwise clear selection. */\n _toggleMasterCheckbox() {\n this._isAllSelected()\n ? this.rowSelection.clear()\n : this.dataSource.data.forEach((row, index) => {\n if (!this.rowSelectionFormatter.disabled?.(row, index)) {\n this.rowSelection.select(row);\n }\n });\n this.rowSelectedChange.emit(this.rowSelection.selected);\n }\n /** Select normal row */\n _toggleNormalCheckbox(row) {\n this.rowSelection.toggle(row);\n this.rowSelectedChange.emit(this.rowSelection.selected);\n }\n /** Column change event */\n _onColumnChange(columns) {\n this.columnChange.emit(columns);\n this.displayedColumns = Object.assign([], this.getDisplayedColumnFields(columns));\n if (this.rowSelectable && !this.hideRowSelectionCheckbox) {\n this.displayedColumns.unshift('MtxGridCheckboxColumnDef');\n }\n }\n getDisplayedColumnFields(columns) {\n const fields = columns\n .filter(item => (this.columnHideableChecked === 'show' ? item.show : !item.hide))\n .map(item => item.field);\n return fields;\n }\n /** Customize expansion event */\n toggleExpansion(index) {\n if (!this.expandable) {\n throw new Error('The `expandable` should be set true.');\n }\n this.expansionRowStates[index].expanded = !this.expansionRowStates[index].expanded;\n return this.expansionRowStates[index].expanded;\n }\n /** Scroll to top when turn to the next page. */\n _onPage(e) {\n if (this.pageOnFront) {\n this.scrollTop(0);\n }\n this.page.emit(e);\n }\n scrollTop(value) {\n if (value == null) {\n return this.tableContainer?.nativeElement.scrollTop;\n }\n if (this.tableContainer && !this.loading) {\n this.tableContainer.nativeElement.scrollTop = value;\n }\n }\n scrollLeft(value) {\n if (value == null) {\n return this.tableContainer?.nativeElement.scrollLeft;\n }\n if (this.tableContainer && !this.loading) {\n this.tableContainer.nativeElement.scrollLeft = value;\n }\n }\n _contextmenu(event, rowData, index) {\n this.rowContextMenu.emit({ event, rowData, index });\n }\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGrid, deps: [{ token: MtxGridUtils }, { token: i0.ChangeDetectorRef }, { token: MTX_GRID_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }\n /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"18.2.0\", type: MtxGrid, isStandalone: true, selector: \"mtx-grid\", inputs: { displayedColumns: \"displayedColumns\", columns: \"columns\", data: \"data\", length: \"length\", loading: [\"loading\", \"loading\", booleanAttribute], trackBy: \"trackBy\", columnResizable: [\"columnResizable\", \"columnResizable\", booleanAttribute], emptyValuePlaceholder: \"emptyValuePlaceholder\", pageOnFront: [\"pageOnFront\", \"pageOnFront\", booleanAttribute], showPaginator: [\"showPaginator\", \"showPaginator\", booleanAttribute], pageDisabled: [\"pageDisabled\", \"pageDisabled\", booleanAttribute], showFirstLastButtons: [\"showFirstLastButtons\", \"showFirstLastButtons\", booleanAttribute], pageIndex: \"pageIndex\", pageSize: \"pageSize\", pageSizeOptions: \"pageSizeOptions\", hidePageSize: [\"hidePageSize\", \"hidePageSize\", booleanAttribute], paginationTemplate: \"paginationTemplate\", sortOnFront: [\"sortOnFront\", \"sortOnFront\", booleanAttribute], sortActive: \"sortActive\", sortDirection: \"sortDirection\", sortDisableClear: [\"sortDisableClear\", \"sortDisableClear\", booleanAttribute], sortDisabled: [\"sortDisabled\", \"sortDisabled\", booleanAttribute], sortStart: \"sortStart\", rowHover: [\"rowHover\", \"rowHover\", booleanAttribute], rowStriped: [\"rowStriped\", \"rowStriped\", booleanAttribute], expandable: [\"expandable\", \"expandable\", booleanAttribute], expansionTemplate: \"expansionTemplate\", multiSelectable: [\"multiSelectable\", \"multiSelectable\", booleanAttribute], multiSelectionWithClick: [\"multiSelectionWithClick\", \"multiSelectionWithClick\", booleanAttribute], rowSelectable: [\"rowSelectable\", \"rowSelectable\", booleanAttribute], hideRowSelectionCheckbox: [\"hideRowSelectionCheckbox\", \"hideRowSelectionCheckbox\", booleanAttribute], disableRowClickSelection: [\"disableRowClickSelection\", \"disableRowClickSelection\", booleanAttribute], rowSelectionFormatter: \"rowSelectionFormatter\", rowClassFormatter: \"rowClassFormatter\", rowSelected: \"rowSelected\", cellSelectable: [\"cellSelectable\", \"cellSelectable\", booleanAttribute], showToolbar: [\"showToolbar\", \"showToolbar\", booleanAttribute], toolbarTitle: \"toolbarTitle\", toolbarTemplate: \"toolbarTemplate\", columnHideable: [\"columnHideable\", \"columnHideable\", booleanAttribute], columnHideableChecked: \"columnHideableChecked\", columnSortable: [\"columnSortable\", \"columnSortable\", booleanAttribute], columnPinnable: [\"columnPinnable\", \"columnPinnable\", booleanAttribute], columnPinOptions: \"columnPinOptions\", showColumnMenuButton: [\"showColumnMenuButton\", \"showColumnMenuButton\", booleanAttribute], columnMenuButtonText: \"columnMenuButtonText\", columnMenuButtonType: \"columnMenuButtonType\", columnMenuButtonColor: \"columnMenuButtonColor\", columnMenuButtonClass: \"columnMenuButtonClass\", columnMenuButtonIcon: \"columnMenuButtonIcon\", showColumnMenuHeader: [\"showColumnMenuHeader\", \"showColumnMenuHeader\", booleanAttribute], columnMenuHeaderText: \"columnMenuHeaderText\", columnMenuHeaderTemplate: \"columnMenuHeaderTemplate\", showColumnMenuFooter: [\"showColumnMenuFooter\", \"showColumnMenuFooter\", booleanAttribute], columnMenuFooterText: \"columnMenuFooterText\", columnMenuFooterTemplate: \"columnMenuFooterTemplate\", noResultText: \"noResultText\", noResultTemplate: \"noResultTemplate\", headerTemplate: \"headerTemplate\", headerExtraTemplate: \"headerExtraTemplate\", cellTemplate: \"cellTemplate\", useContentRowTemplate: [\"useContentRowTemplate\", \"useContentRowTemplate\", booleanAttribute], useContentHeaderRowTemplate: [\"useContentHeaderRowTemplate\", \"useContentHeaderRowTemplate\", booleanAttribute], useContentFooterRowTemplate: [\"useContentFooterRowTemplate\", \"useContentFooterRowTemplate\", booleanAttribute], showSummary: [\"showSummary\", \"showSummary\", booleanAttribute], summaryTemplate: \"summaryTemplate\", showSidebar: [\"showSidebar\", \"showSidebar\", booleanAttribute], sidebarTemplate: \"sidebarTemplate\", showStatusbar: [\"showStatusbar\", \"showStatusbar\", booleanAttribute], statusbarTemplate: \"statusbarTemplate\" }, outputs: { page: \"page\", sortChange: \"sortChange\", rowClick: \"rowClick\", rowContextMenu: \"rowContextMenu\", expansionChange: \"expansionChange\", rowSelectedChange: \"rowSelectedChange\", cellSelectedChange: \"cellSelectedChange\", columnChange: \"columnChange\" }, host: { classAttribute: \"mtx-grid\" }, queries: [{ propertyName: \"rowDefs\", predicate: MatRowDef }, { propertyName: \"headerRowDefs\", predicate: MatHeaderRowDef }, { propertyName: \"footerRowDefs\", predicate: MatFooterRow }], viewQueries: [{ propertyName: \"table\", first: true, predicate: MatTable, descendants: true }, { propertyName: \"paginator\", first: true, predicate: MatPaginator, descendants: true }, { propertyName: \"sort\", first: true, predicate: MatSort, descendants: true }, { propertyName: \"columnMenu\", first: true, predicate: [\"columnMenu\"], descendants: true }, { propertyName: \"tableContainer\", first: true, predicate: [\"tableContainer\"], descendants: true }], exportAs: [\"mtxGrid\"], usesOnChanges: true, ngImport: i0, template: \"\\n@if (loading) {\\n
\\n \\n
\\n}\\n\\n\\n@if (showToolbar) {\\n
\\n
\\n @if (toolbarTemplate) {\\n \\n } @else {\\n @if (toolbarTitle) {\\n
{{toolbarTitle}}
\\n }\\n }\\n
\\n
\\n @if (showColumnMenuButton) {\\n \\n \\n }\\n
\\n
\\n}\\n\\n
\\n \\n
\\n
\\n @if (!columnResizable) {\\n
\n {{headerText}}\n \n {{dataAccessor(data, name)}}\n \n {{headerText}}\n \n {{dataAccessor(data, name)}}\n
\\n @if (rowSelectable && !hideRowSelectionCheckbox) {\\n \\n \\n \\n \\n \\n }\\n @for (col of columns; track col) {\\n \\n \\n \\n \\n \\n }\\n @if (!useContentHeaderRowTemplate) {\\n \\n }\\n @if (!useContentRowTemplate) {\\n \\n \\n }\\n @if (_whetherShowSummary) {\\n \\n }\\n @if (expandable) {\\n \\n \\n \\n \\n \\n \\n }\\n
\\n @if (multiSelectable) {\\n \\n \\n }\\n \\n @if (!(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox(row, _getIndex(index, dataIndex)))) {\\n \\n \\n }\\n \\n
\\n @if (headerTemplate | isTemplateRef) {\\n \\n \\n } @else {\\n @if ($any(headerTemplate)?.[col.field] | isTemplateRef) {\\n \\n \\n } @else {\\n
\\n @if (col.showExpand) {\\n \\n }\\n {{col.header | toObservable | async}}\\n @if (col.sortable) {\\n \\n \\n \\n }\\n
\\n \\n \\n }\\n }\\n
\\n
\\n @if (cellTemplate | isTemplateRef) {\\n \\n \\n } @else {\\n @if ($any(cellTemplate)?.[col.field] | isTemplateRef) {\\n \\n \\n } @else {\\n @if (col.cellTemplate) {\\n \\n \\n } @else {\\n @if (col.showExpand) {\\n \\n }\\n \\n }\\n }\\n }\\n \\n @if (col.showExpand) {\\n \\n }\\n @if (summaryTemplate | isTemplateRef) {\\n \\n \\n } @else {\\n @if ($any(summaryTemplate)?.[col.field] | isTemplateRef) {\\n \\n \\n } @else {\\n \\n }\\n }\\n
\\n
\\n \\n \\n
\\n
\\n } @else {\\n \\n \\n @if (rowSelectable && !hideRowSelectionCheckbox) {\\n \\n \\n \\n \\n \\n }\\n @for (col of columns; track col) {\\n \\n \\n \\n \\n \\n }\\n @if (!useContentHeaderRowTemplate) {\\n \\n }\\n @if (!useContentRowTemplate) {\\n \\n \\n }\\n @if (_whetherShowSummary) {\\n \\n }\\n @if (expandable) {\\n \\n \\n \\n \\n \\n \\n }\\n
\\n @if (multiSelectable) {\\n \\n \\n }\\n \\n @if (!(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox(row, _getIndex(index, dataIndex)))) {\\n \\n \\n }\\n \\n
\\n @if (headerTemplate | isTemplateRef) {\\n \\n \\n } @else {\\n @if ($any(headerTemplate)?.[col.field] | isTemplateRef) {\\n \\n \\n } @else {\\n
\\n @if (col.showExpand) {\\n \\n }\\n {{col.header | toObservable | async}}\\n @if (col.sortable) {\\n \\n \\n \\n }\\n
\\n \\n \\n }\\n }\\n
\\n
\\n @if (cellTemplate | isTemplateRef) {\\n \\n \\n } @else {\\n @if ($any(cellTemplate)?.[col.field] | isTemplateRef) {\\n \\n \\n } @else {\\n @if (col.cellTemplate) {\\n \\n \\n } @else {\\n @if (col.showExpand) {\\n \\n }\\n \\n }\\n }\\n }\\n \\n @if (col.showExpand) {\\n \\n }\\n @if (summaryTemplate | isTemplateRef) {\\n \\n \\n } @else {\\n @if ($any(summaryTemplate)?.[col.field] | isTemplateRef) {\\n \\n \\n } @else {\\n \\n }\\n }\\n
\\n
\\n \\n \\n
\\n
\\n }\\n \\n\\n \\n @if (_hasNoResult) {\\n
\\n @if (noResultTemplate) {\\n \\n } @else {\\n {{noResultText}}\\n }\\n
\\n }\\n \\n\\n \\n @if (showSidebar) {\\n
\\n @if (sidebarTemplate) {\\n \\n }\\n
\\n }\\n\\n\\n
\\n \\n @if (showStatusbar) {\\n
\\n @if (statusbarTemplate) {\\n \\n }\\n
\\n }\\n\\n \\n
\\n @if (paginationTemplate) {\\n \\n } @else {\\n \\n \\n }\\n
\\n
\\n\\n\\n\\n @if (headerExtraTemplate | isTemplateRef) {\\n \\n \\n } @else {\\n @if ($any(headerExtraTemplate)?.[col.field] | isTemplateRef) {\\n \\n \\n }\\n }\\n\\n\", styles: [\".mtx-grid{position:relative;display:flex;flex-direction:column;width:100%;overflow:hidden;border:1px solid var(--mtx-grid-outline-color, var(--mat-app-outline-variant));border-radius:var(--mtx-grid-container-shape, var(--mat-app-corner-medium))}.mtx-grid .mat-mdc-table{--mat-table-row-item-outline-color: var(--mtx-grid-outline-color, var(--mat-app-outline-variant))}.mtx-grid .mat-mdc-table.mat-table-striped .mat-row-odd{background-color:var(--mtx-grid-table-row-striped-background-color, var(--mat-app-surface-container))}.mtx-grid .mat-mdc-table.mat-table-hover .mat-mdc-row:hover{background-color:var(--mtx-grid-table-row-hover-background-color, var(--mat-app-secondary-container))}.mtx-grid .mat-mdc-table.mat-table-hover .mat-mdc-row.selected:hover{background-color:var(--mtx-grid-table-row-selected-hover-background-color, var(--mat-app-primary-container))}.mtx-grid .mat-mdc-table .mat-mdc-row.selected{background-color:var(--mtx-grid-table-row-selected-background-color, var(--mat-app-secondary-container))}.mtx-grid .mat-mdc-table .mat-mdc-cell.selected{box-shadow:inset 0 0 0 1px var(--mtx-grid-table-cell-selected-outline-color, var(--mat-app-primary))}.mtx-grid .mat-table-container{overflow:auto}.mtx-grid .mat-table-container.mat-table-with-data{flex:1}.mtx-grid .mat-mdc-table:not(.mat-column-resize-table){min-width:100%;border-collapse:separate}.mtx-grid .mat-mdc-table:not(.mat-column-resize-table) .mat-mdc-header-cell:not(.mtx-grid-checkbox-cell),.mtx-grid .mat-mdc-table:not(.mat-column-resize-table) .mat-mdc-footer-cell:not(.mtx-grid-checkbox-cell),.mtx-grid .mat-mdc-table:not(.mat-column-resize-table) .mat-mdc-cell:not(.mtx-grid-checkbox-cell){min-width:var(--mtx-grid-table-cell-min-width)}.mtx-grid .mat-table-sticky-left{border-right:1px solid var(--mat-table-row-item-outline-color)}[dir=rtl] .mtx-grid .mat-table-sticky-left{border-right-width:0;border-left:1px solid var(--mat-table-row-item-outline-color)}.mtx-grid .mat-table-sticky-right{border-left:1px solid var(--mat-table-row-item-outline-color)}[dir=rtl] .mtx-grid .mat-table-sticky-right{border-left-width:0;border-right:1px solid var(--mat-table-row-item-outline-color)}.mtx-grid .mat-mdc-footer-cell{border-top:1px solid var(--mat-table-row-item-outline-color);background-color:var(--mtx-grid-table-footer-background-color, var(--mat-app-surface-container))}.mtx-grid .mat-mdc-row.mtx-grid-expansion{height:0;overflow:hidden}.mtx-grid .mat-mdc-row.mtx-grid-expansion .mat-mdc-cell{padding-top:0;padding-bottom:0}.mtx-grid .mat-mdc-row.mtx-grid-expansion.collapsed .mat-mdc-cell{border-bottom-width:0}.mtx-grid .mat-sort-header-icon{margin-left:4px}[dir=rtl] .mtx-grid .mat-sort-header-icon{margin-left:0;margin-right:4px}.mtx-grid .mat-header-cell-inner{display:inline-flex;align-items:center;vertical-align:middle}.mtx-grid .mat-mdc-paginator{border-top:1px solid var(--mtx-grid-outline-color, var(--mat-app-outline-variant));border-bottom-left-radius:var(--mtx-grid-container-shape, var(--mat-app-corner-medium));border-bottom-right-radius:var(--mtx-grid-container-shape, var(--mat-app-corner-medium))}.mtx-grid .mat-paginator-hidden{display:none}.mtx-grid .mtx-grid-checkbox-cell{width:60px;min-width:60px;padding:0 calc((60px - var(--mdc-checkbox-state-layer-size)) / 2)}.mtx-grid-progress{position:absolute;top:0;z-index:120;width:100%}.mtx-grid-toolbar{display:flex;justify-content:space-between;align-items:center;min-height:var(--mat-table-header-container-height);padding:8px;box-sizing:border-box;border-bottom:1px solid var(--mtx-grid-outline-color, var(--mat-app-outline-variant))}.mtx-grid-toolbar-content{flex:1;width:0;padding:0 8px}.mtx-grid-layout{display:flex;flex:1 1 auto;overflow:auto}.mtx-grid-content{flex-direction:column;width:0}.mtx-grid-sidebar{max-width:50%;border-left:1px solid var(--mtx-grid-outline-color, var(--mat-app-outline-variant))}[dir=rtl] .mtx-grid-sidebar{border-left-width:0;border-right:1px solid var(--mtx-grid-outline-color, var(--mat-app-outline-variant))}.mtx-grid-footer{position:relative;z-index:1}.mtx-grid-statusbar{display:flex;align-items:center;min-height:var(--mat-table-header-container-height);padding:8px;box-sizing:border-box;border-top:1px solid var(--mtx-grid-outline-color, var(--mat-app-outline-variant))}.mtx-grid-no-result{display:flex;justify-content:center;align-items:center;flex:1;min-height:150px}.mtx-grid-expansion-placeholder{display:inline-block;vertical-align:middle;width:var(--mdc-icon-button-state-layer-size, var(--mtx-grid-row-expand-button-size));height:var(--mdc-icon-button-state-layer-size, var(--mtx-grid-row-expand-button-size))}.mtx-grid-expansion-detail{display:flex;align-items:center;min-height:var(--mat-table-row-item-container-height);overflow:hidden}.mtx-grid-row-expand-button.expanded .mtx-grid-row-expand-icon{transform:rotate(90deg)}.mtx-grid-row-expand-button.mat-mdc-icon-button,.mtx-grid-row-expand-button+mtx-grid-cell{vertical-align:middle}\\n\"], dependencies: [{ kind: \"pipe\", type: AsyncPipe, name: \"async\" }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"component\", type: MatProgressBar, selector: \"mat-progress-bar\", inputs: [\"color\", \"value\", \"bufferValue\", \"mode\"], outputs: [\"animationEnd\"], exportAs: [\"matProgressBar\"] }, { kind: \"component\", type: MatIconButton, selector: \"button[mat-icon-button]\", exportAs: [\"matButton\"] }, { kind: \"component\", type: MatCheckbox, selector: \"mat-checkbox\", inputs: [\"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"id\", \"required\", \"labelPosition\", \"name\", \"value\", \"disableRipple\", \"tabIndex\", \"color\", \"disabledInteractive\", \"checked\", \"disabled\", \"indeterminate\"], outputs: [\"change\", \"indeterminateChange\"], exportAs: [\"matCheckbox\"] }, { kind: \"component\", type: MatTable, selector: \"mat-table, table[mat-table]\", exportAs: [\"matTable\"] }, { kind: \"directive\", type: MatColumnDef, selector: \"[matColumnDef]\", inputs: [\"matColumnDef\"] }, { kind: \"directive\", type: MatHeaderRowDef, selector: \"[matHeaderRowDef]\", inputs: [\"matHeaderRowDef\", \"matHeaderRowDefSticky\"] }, { kind: \"component\", type: MatHeaderRow, selector: \"mat-header-row, tr[mat-header-row]\", exportAs: [\"matHeaderRow\"] }, { kind: \"directive\", type: MatRowDef, selector: \"[matRowDef]\", inputs: [\"matRowDefColumns\", \"matRowDefWhen\"] }, { kind: \"component\", type: MatRow, selector: \"mat-row, tr[mat-row]\", exportAs: [\"matRow\"] }, { kind: \"directive\", type: MatFooterRowDef, selector: \"[matFooterRowDef]\", inputs: [\"matFooterRowDef\", \"matFooterRowDefSticky\"] }, { kind: \"component\", type: MatFooterRow, selector: \"mat-footer-row, tr[mat-footer-row]\", exportAs: [\"matFooterRow\"] }, { kind: \"directive\", type: MatHeaderCellDef, selector: \"[matHeaderCellDef]\" }, { kind: \"directive\", type: MatHeaderCell, selector: \"mat-header-cell, th[mat-header-cell]\" }, { kind: \"directive\", type: MatCellDef, selector: \"[matCellDef]\" }, { kind: \"directive\", type: MatCell, selector: \"mat-cell, td[mat-cell]\" }, { kind: \"directive\", type: MatFooterCellDef, selector: \"[matFooterCellDef]\" }, { kind: \"directive\", type: MatFooterCell, selector: \"mat-footer-cell, td[mat-footer-cell]\" }, { kind: \"directive\", type: MatSort, selector: \"[matSort]\", inputs: [\"matSortActive\", \"matSortStart\", \"matSortDirection\", \"matSortDisableClear\", \"matSortDisabled\"], outputs: [\"matSortChange\"], exportAs: [\"matSort\"] }, { kind: \"component\", type: MatSortHeader, selector: \"[mat-sort-header]\", inputs: [\"mat-sort-header\", \"arrowPosition\", \"start\", \"disabled\", \"sortActionDescription\", \"disableClear\"], exportAs: [\"matSortHeader\"] }, { kind: \"component\", type: MatPaginator, selector: \"mat-paginator\", inputs: [\"color\", \"pageIndex\", \"length\", \"pageSize\", \"pageSizeOptions\", \"hidePageSize\", \"showFirstLastButtons\", \"selectConfig\", \"disabled\"], outputs: [\"page\"], exportAs: [\"matPaginator\"] }, { kind: \"directive\", type: MatResizable, selector: \"mat-header-cell[resizable], th[mat-header-cell][resizable]\", inputs: [\"matResizableMinWidthPx\", \"matResizableMaxWidthPx\", \"resizable\"] }, { kind: \"directive\", type: MatColumnResize, selector: \"table[mat-table][columnResize]\" }, { kind: \"component\", type: MtxGridCell, selector: \"mtx-grid-cell\", inputs: [\"rowData\", \"colDef\", \"data\", \"summary\", \"placeholder\"], outputs: [\"rowDataChange\"], exportAs: [\"mtxGridCell\"] }, { kind: \"component\", type: MtxGridColumnMenu, selector: \"mtx-grid-column-menu\", inputs: [\"columns\", \"selectable\", \"selectableChecked\", \"sortable\", \"pinnable\", \"buttonText\", \"buttonType\", \"buttonColor\", \"buttonClass\", \"buttonIcon\", \"showHeader\", \"headerText\", \"headerTemplate\", \"showFooter\", \"footerText\", \"footerTemplate\", \"pinOptions\"], outputs: [\"columnChange\"], exportAs: [\"mtxGridColumnMenu\"] }, { kind: \"directive\", type: MtxGridSelectableCell, selector: \"[mtx-grid-selectable-cell]\", inputs: [\"cellSelectable\"], outputs: [\"cellSelectedChange\"] }, { kind: \"directive\", type: MtxGridExpansionToggle, selector: \"[mtx-grid-expansion-toggle]\", inputs: [\"opened\", \"expandableRow\", \"expansionRowTpl\"], outputs: [\"openedChange\", \"toggleChange\"] }, { kind: \"pipe\", type: MtxIsTemplateRefPipe, name: \"isTemplateRef\" }, { kind: \"pipe\", type: MtxGridColClassPipe, name: \"colClass\" }, { kind: \"pipe\", type: MtxGridRowClassPipe, name: \"rowClass\" }, { kind: \"pipe\", type: MtxToObservablePipe, name: \"toObservable\" }], animations: [\n trigger('expansion', [\n state('collapsed, void', style({ height: '0', minHeight: '0', visibility: 'hidden' })),\n state('expanded', style({ height: '*', visibility: 'visible' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n transition('expanded <=> void', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGrid, decorators: [{\n type: Component,\n args: [{ selector: 'mtx-grid', exportAs: 'mtxGrid', host: {\n class: 'mtx-grid',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [\n trigger('expansion', [\n state('collapsed, void', style({ height: '0', minHeight: '0', visibility: 'hidden' })),\n state('expanded', style({ height: '*', visibility: 'visible' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n transition('expanded <=> void', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ], standalone: true, imports: [\n AsyncPipe,\n NgTemplateOutlet,\n MatProgressBar,\n MatIconButton,\n MatCheckbox,\n MatTable,\n MatColumnDef,\n MatHeaderRowDef,\n MatHeaderRow,\n MatRowDef,\n MatRow,\n MatFooterRowDef,\n MatFooterRow,\n MatHeaderCellDef,\n MatHeaderCell,\n MatCellDef,\n MatCell,\n MatFooterCellDef,\n MatFooterCell,\n MatSort,\n MatSortHeader,\n MatPaginator,\n MatResizable,\n MatColumnResize,\n MtxGridCell,\n MtxGridColumnMenu,\n MtxGridSelectableCell,\n MtxGridExpansionToggle,\n MtxIsTemplateRefPipe,\n MtxGridColClassPipe,\n MtxGridRowClassPipe,\n MtxToObservablePipe,\n ], template: \"\\n@if (loading) {\\n
\\n \\n
\\n}\\n\\n\\n@if (showToolbar) {\\n
\\n
\\n @if (toolbarTemplate) {\\n \\n } @else {\\n @if (toolbarTitle) {\\n
{{toolbarTitle}}
\\n }\\n }\\n
\\n
\\n @if (showColumnMenuButton) {\\n \\n \\n }\\n
\\n
\\n}\\n\\n
\\n \\n
\\n
\\n @if (!columnResizable) {\\n \\n @if (rowSelectable && !hideRowSelectionCheckbox) {\\n \\n \\n \\n \\n \\n }\\n @for (col of columns; track col) {\\n \\n \\n \\n \\n \\n }\\n @if (!useContentHeaderRowTemplate) {\\n \\n }\\n @if (!useContentRowTemplate) {\\n \\n \\n }\\n @if (_whetherShowSummary) {\\n \\n }\\n @if (expandable) {\\n \\n \\n \\n \\n \\n \\n }\\n
\\n @if (multiSelectable) {\\n \\n \\n }\\n \\n @if (!(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox(row, _getIndex(index, dataIndex)))) {\\n \\n \\n }\\n \\n
\\n @if (headerTemplate | isTemplateRef) {\\n \\n \\n } @else {\\n @if ($any(headerTemplate)?.[col.field] | isTemplateRef) {\\n \\n \\n } @else {\\n
\\n @if (col.showExpand) {\\n \\n }\\n {{col.header | toObservable | async}}\\n @if (col.sortable) {\\n \\n \\n \\n }\\n
\\n \\n \\n }\\n }\\n
\\n
\\n @if (cellTemplate | isTemplateRef) {\\n \\n \\n } @else {\\n @if ($any(cellTemplate)?.[col.field] | isTemplateRef) {\\n \\n \\n } @else {\\n @if (col.cellTemplate) {\\n \\n \\n } @else {\\n @if (col.showExpand) {\\n \\n }\\n \\n }\\n }\\n }\\n \\n @if (col.showExpand) {\\n \\n }\\n @if (summaryTemplate | isTemplateRef) {\\n \\n \\n } @else {\\n @if ($any(summaryTemplate)?.[col.field] | isTemplateRef) {\\n \\n \\n } @else {\\n \\n }\\n }\\n
\\n
\\n \\n \\n
\\n
\\n } @else {\\n \\n \\n @if (rowSelectable && !hideRowSelectionCheckbox) {\\n \\n \\n \\n \\n \\n }\\n @for (col of columns; track col) {\\n \\n \\n \\n \\n \\n }\\n @if (!useContentHeaderRowTemplate) {\\n \\n }\\n @if (!useContentRowTemplate) {\\n \\n \\n }\\n @if (_whetherShowSummary) {\\n \\n }\\n @if (expandable) {\\n \\n \\n \\n \\n \\n \\n }\\n
\\n @if (multiSelectable) {\\n \\n \\n }\\n \\n @if (!(rowSelectionFormatter.hideCheckbox && rowSelectionFormatter.hideCheckbox(row, _getIndex(index, dataIndex)))) {\\n \\n \\n }\\n \\n
\\n @if (headerTemplate | isTemplateRef) {\\n \\n \\n } @else {\\n @if ($any(headerTemplate)?.[col.field] | isTemplateRef) {\\n \\n \\n } @else {\\n
\\n @if (col.showExpand) {\\n \\n }\\n {{col.header | toObservable | async}}\\n @if (col.sortable) {\\n \\n \\n \\n }\\n
\\n \\n \\n }\\n }\\n
\\n
\\n @if (cellTemplate | isTemplateRef) {\\n \\n \\n } @else {\\n @if ($any(cellTemplate)?.[col.field] | isTemplateRef) {\\n \\n \\n } @else {\\n @if (col.cellTemplate) {\\n \\n \\n } @else {\\n @if (col.showExpand) {\\n \\n }\\n \\n }\\n }\\n }\\n \\n @if (col.showExpand) {\\n \\n }\\n @if (summaryTemplate | isTemplateRef) {\\n \\n \\n } @else {\\n @if ($any(summaryTemplate)?.[col.field] | isTemplateRef) {\\n \\n \\n } @else {\\n \\n }\\n }\\n
\\n
\\n \\n \\n
\\n
\\n }\\n
\\n\\n \\n @if (_hasNoResult) {\\n
\\n @if (noResultTemplate) {\\n \\n } @else {\\n {{noResultText}}\\n }\\n
\\n }\\n
\\n\\n \\n @if (showSidebar) {\\n
\\n @if (sidebarTemplate) {\\n \\n }\\n
\\n }\\n
\\n\\n
\\n \\n @if (showStatusbar) {\\n
\\n @if (statusbarTemplate) {\\n \\n }\\n
\\n }\\n\\n \\n
\\n @if (paginationTemplate) {\\n \\n } @else {\\n \\n \\n }\\n
\\n
\\n\\n\\n\\n @if (headerExtraTemplate | isTemplateRef) {\\n \\n \\n } @else {\\n @if ($any(headerExtraTemplate)?.[col.field] | isTemplateRef) {\\n \\n \\n }\\n }\\n\\n\", styles: [\".mtx-grid{position:relative;display:flex;flex-direction:column;width:100%;overflow:hidden;border:1px solid var(--mtx-grid-outline-color, var(--mat-app-outline-variant));border-radius:var(--mtx-grid-container-shape, var(--mat-app-corner-medium))}.mtx-grid .mat-mdc-table{--mat-table-row-item-outline-color: var(--mtx-grid-outline-color, var(--mat-app-outline-variant))}.mtx-grid .mat-mdc-table.mat-table-striped .mat-row-odd{background-color:var(--mtx-grid-table-row-striped-background-color, var(--mat-app-surface-container))}.mtx-grid .mat-mdc-table.mat-table-hover .mat-mdc-row:hover{background-color:var(--mtx-grid-table-row-hover-background-color, var(--mat-app-secondary-container))}.mtx-grid .mat-mdc-table.mat-table-hover .mat-mdc-row.selected:hover{background-color:var(--mtx-grid-table-row-selected-hover-background-color, var(--mat-app-primary-container))}.mtx-grid .mat-mdc-table .mat-mdc-row.selected{background-color:var(--mtx-grid-table-row-selected-background-color, var(--mat-app-secondary-container))}.mtx-grid .mat-mdc-table .mat-mdc-cell.selected{box-shadow:inset 0 0 0 1px var(--mtx-grid-table-cell-selected-outline-color, var(--mat-app-primary))}.mtx-grid .mat-table-container{overflow:auto}.mtx-grid .mat-table-container.mat-table-with-data{flex:1}.mtx-grid .mat-mdc-table:not(.mat-column-resize-table){min-width:100%;border-collapse:separate}.mtx-grid .mat-mdc-table:not(.mat-column-resize-table) .mat-mdc-header-cell:not(.mtx-grid-checkbox-cell),.mtx-grid .mat-mdc-table:not(.mat-column-resize-table) .mat-mdc-footer-cell:not(.mtx-grid-checkbox-cell),.mtx-grid .mat-mdc-table:not(.mat-column-resize-table) .mat-mdc-cell:not(.mtx-grid-checkbox-cell){min-width:var(--mtx-grid-table-cell-min-width)}.mtx-grid .mat-table-sticky-left{border-right:1px solid var(--mat-table-row-item-outline-color)}[dir=rtl] .mtx-grid .mat-table-sticky-left{border-right-width:0;border-left:1px solid var(--mat-table-row-item-outline-color)}.mtx-grid .mat-table-sticky-right{border-left:1px solid var(--mat-table-row-item-outline-color)}[dir=rtl] .mtx-grid .mat-table-sticky-right{border-left-width:0;border-right:1px solid var(--mat-table-row-item-outline-color)}.mtx-grid .mat-mdc-footer-cell{border-top:1px solid var(--mat-table-row-item-outline-color);background-color:var(--mtx-grid-table-footer-background-color, var(--mat-app-surface-container))}.mtx-grid .mat-mdc-row.mtx-grid-expansion{height:0;overflow:hidden}.mtx-grid .mat-mdc-row.mtx-grid-expansion .mat-mdc-cell{padding-top:0;padding-bottom:0}.mtx-grid .mat-mdc-row.mtx-grid-expansion.collapsed .mat-mdc-cell{border-bottom-width:0}.mtx-grid .mat-sort-header-icon{margin-left:4px}[dir=rtl] .mtx-grid .mat-sort-header-icon{margin-left:0;margin-right:4px}.mtx-grid .mat-header-cell-inner{display:inline-flex;align-items:center;vertical-align:middle}.mtx-grid .mat-mdc-paginator{border-top:1px solid var(--mtx-grid-outline-color, var(--mat-app-outline-variant));border-bottom-left-radius:var(--mtx-grid-container-shape, var(--mat-app-corner-medium));border-bottom-right-radius:var(--mtx-grid-container-shape, var(--mat-app-corner-medium))}.mtx-grid .mat-paginator-hidden{display:none}.mtx-grid .mtx-grid-checkbox-cell{width:60px;min-width:60px;padding:0 calc((60px - var(--mdc-checkbox-state-layer-size)) / 2)}.mtx-grid-progress{position:absolute;top:0;z-index:120;width:100%}.mtx-grid-toolbar{display:flex;justify-content:space-between;align-items:center;min-height:var(--mat-table-header-container-height);padding:8px;box-sizing:border-box;border-bottom:1px solid var(--mtx-grid-outline-color, var(--mat-app-outline-variant))}.mtx-grid-toolbar-content{flex:1;width:0;padding:0 8px}.mtx-grid-layout{display:flex;flex:1 1 auto;overflow:auto}.mtx-grid-content{flex-direction:column;width:0}.mtx-grid-sidebar{max-width:50%;border-left:1px solid var(--mtx-grid-outline-color, var(--mat-app-outline-variant))}[dir=rtl] .mtx-grid-sidebar{border-left-width:0;border-right:1px solid var(--mtx-grid-outline-color, var(--mat-app-outline-variant))}.mtx-grid-footer{position:relative;z-index:1}.mtx-grid-statusbar{display:flex;align-items:center;min-height:var(--mat-table-header-container-height);padding:8px;box-sizing:border-box;border-top:1px solid var(--mtx-grid-outline-color, var(--mat-app-outline-variant))}.mtx-grid-no-result{display:flex;justify-content:center;align-items:center;flex:1;min-height:150px}.mtx-grid-expansion-placeholder{display:inline-block;vertical-align:middle;width:var(--mdc-icon-button-state-layer-size, var(--mtx-grid-row-expand-button-size));height:var(--mdc-icon-button-state-layer-size, var(--mtx-grid-row-expand-button-size))}.mtx-grid-expansion-detail{display:flex;align-items:center;min-height:var(--mat-table-row-item-container-height);overflow:hidden}.mtx-grid-row-expand-button.expanded .mtx-grid-row-expand-icon{transform:rotate(90deg)}.mtx-grid-row-expand-button.mat-mdc-icon-button,.mtx-grid-row-expand-button+mtx-grid-cell{vertical-align:middle}\\n\"] }]\n }], ctorParameters: () => [{ type: MtxGridUtils }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MTX_GRID_DEFAULT_OPTIONS]\n }] }], propDecorators: { table: [{\n type: ViewChild,\n args: [MatTable]\n }], paginator: [{\n type: ViewChild,\n args: [MatPaginator]\n }], sort: [{\n type: ViewChild,\n args: [MatSort]\n }], rowDefs: [{\n type: ContentChildren,\n args: [MatRowDef]\n }], headerRowDefs: [{\n type: ContentChildren,\n args: [MatHeaderRowDef]\n }], footerRowDefs: [{\n type: ContentChildren,\n args: [MatFooterRow]\n }], columnMenu: [{\n type: ViewChild,\n args: ['columnMenu']\n }], tableContainer: [{\n type: ViewChild,\n args: ['tableContainer']\n }], displayedColumns: [{\n type: Input\n }], columns: [{\n type: Input\n }], data: [{\n type: Input\n }], length: [{\n type: Input\n }], loading: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], trackBy: [{\n type: Input\n }], columnResizable: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], emptyValuePlaceholder: [{\n type: Input\n }], pageOnFront: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], showPaginator: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], pageDisabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], showFirstLastButtons: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], pageIndex: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], pageSizeOptions: [{\n type: Input\n }], hidePageSize: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], page: [{\n type: Output\n }], paginationTemplate: [{\n type: Input\n }], sortOnFront: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], sortActive: [{\n type: Input\n }], sortDirection: [{\n type: Input\n }], sortDisableClear: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], sortDisabled: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], sortStart: [{\n type: Input\n }], sortChange: [{\n type: Output\n }], rowHover: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], rowStriped: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], rowClick: [{\n type: Output\n }], rowContextMenu: [{\n type: Output\n }], expandable: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], expansionTemplate: [{\n type: Input\n }], expansionChange: [{\n type: Output\n }], multiSelectable: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], multiSelectionWithClick: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], rowSelectable: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], hideRowSelectionCheckbox: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], disableRowClickSelection: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], rowSelectionFormatter: [{\n type: Input\n }], rowClassFormatter: [{\n type: Input\n }], rowSelected: [{\n type: Input\n }], rowSelectedChange: [{\n type: Output\n }], cellSelectable: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], cellSelectedChange: [{\n type: Output\n }], showToolbar: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], toolbarTitle: [{\n type: Input\n }], toolbarTemplate: [{\n type: Input\n }], columnHideable: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], columnHideableChecked: [{\n type: Input\n }], columnSortable: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], columnPinnable: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], columnChange: [{\n type: Output\n }], columnPinOptions: [{\n type: Input\n }], showColumnMenuButton: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], columnMenuButtonText: [{\n type: Input\n }], columnMenuButtonType: [{\n type: Input\n }], columnMenuButtonColor: [{\n type: Input\n }], columnMenuButtonClass: [{\n type: Input\n }], columnMenuButtonIcon: [{\n type: Input\n }], showColumnMenuHeader: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], columnMenuHeaderText: [{\n type: Input\n }], columnMenuHeaderTemplate: [{\n type: Input\n }], showColumnMenuFooter: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], columnMenuFooterText: [{\n type: Input\n }], columnMenuFooterTemplate: [{\n type: Input\n }], noResultText: [{\n type: Input\n }], noResultTemplate: [{\n type: Input\n }], headerTemplate: [{\n type: Input\n }], headerExtraTemplate: [{\n type: Input\n }], cellTemplate: [{\n type: Input\n }], useContentRowTemplate: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], useContentHeaderRowTemplate: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], useContentFooterRowTemplate: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], showSummary: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], summaryTemplate: [{\n type: Input\n }], showSidebar: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], sidebarTemplate: [{\n type: Input\n }], showStatusbar: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], statusbarTemplate: [{\n type: Input\n }] } });\n\nclass MtxGridModule {\n /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridModule, imports: [CommonModule,\n FormsModule,\n MatTableModule,\n MatSortModule,\n MatPaginatorModule,\n MatCheckboxModule,\n MatButtonModule,\n MatProgressBarModule,\n MatChipsModule,\n MatTooltipModule,\n MatBadgeModule,\n MatIconModule,\n MatSelectModule,\n MatFormFieldModule,\n MatMenuModule,\n DragDropModule,\n MtxDialogModule,\n MtxPipesModule,\n MatColumnResizeModule,\n MtxGrid,\n MtxGridCell,\n MtxGridColumnMenu,\n MtxGridExpansionToggle,\n MtxGridSelectableCell,\n MtxGridRowClassPipe,\n MtxGridColClassPipe,\n MtxGridCellActionsPipe,\n MtxGridCellActionTooltipPipe,\n MtxGridCellActionBadgePipe,\n MtxGridCellActionDisablePipe,\n MtxGridCellSummaryPipe], exports: [MatColumnResizeModule,\n MtxGrid,\n MtxGridCell,\n MtxGridColumnMenu,\n MtxGridExpansionToggle,\n MtxGridSelectableCell,\n MtxGridRowClassPipe,\n MtxGridColClassPipe,\n MtxGridCellActionsPipe,\n MtxGridCellActionTooltipPipe,\n MtxGridCellActionBadgePipe,\n MtxGridCellActionDisablePipe,\n MtxGridCellSummaryPipe] }); }\n /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridModule, providers: [MtxGridUtils], imports: [CommonModule,\n FormsModule,\n MatTableModule,\n MatSortModule,\n MatPaginatorModule,\n MatCheckboxModule,\n MatButtonModule,\n MatProgressBarModule,\n MatChipsModule,\n MatTooltipModule,\n MatBadgeModule,\n MatIconModule,\n MatSelectModule,\n MatFormFieldModule,\n MatMenuModule,\n DragDropModule,\n MtxDialogModule,\n MtxPipesModule,\n MatColumnResizeModule,\n MtxGrid,\n MtxGridCell,\n MtxGridColumnMenu, MatColumnResizeModule] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"18.2.0\", ngImport: i0, type: MtxGridModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n FormsModule,\n MatTableModule,\n MatSortModule,\n MatPaginatorModule,\n MatCheckboxModule,\n MatButtonModule,\n MatProgressBarModule,\n MatChipsModule,\n MatTooltipModule,\n MatBadgeModule,\n MatIconModule,\n MatSelectModule,\n MatFormFieldModule,\n MatMenuModule,\n DragDropModule,\n MtxDialogModule,\n MtxPipesModule,\n MatColumnResizeModule,\n MtxGrid,\n MtxGridCell,\n MtxGridColumnMenu,\n MtxGridExpansionToggle,\n MtxGridSelectableCell,\n MtxGridRowClassPipe,\n MtxGridColClassPipe,\n MtxGridCellActionsPipe,\n MtxGridCellActionTooltipPipe,\n MtxGridCellActionBadgePipe,\n MtxGridCellActionDisablePipe,\n MtxGridCellSummaryPipe,\n ],\n exports: [\n MatColumnResizeModule,\n MtxGrid,\n MtxGridCell,\n MtxGridColumnMenu,\n MtxGridExpansionToggle,\n MtxGridSelectableCell,\n MtxGridRowClassPipe,\n MtxGridColClassPipe,\n MtxGridCellActionsPipe,\n MtxGridCellActionTooltipPipe,\n MtxGridCellActionBadgePipe,\n MtxGridCellActionDisablePipe,\n MtxGridCellSummaryPipe,\n ],\n providers: [MtxGridUtils],\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AbstractMatColumnResize, AbstractMatResizable, FLEX_HOST_BINDINGS as MAT_FLEX_HOST_BINDINGS, FLEX_PROVIDERS as MAT_FLEX_PROVIDERS, FLEX_RESIZE_STRATEGY_PROVIDER as MAT_FLEX_RESIZE_STRATEGY_PROVIDER, RESIZABLE_HOST_BINDINGS as MAT_RESIZABLE_HOST_BINDINGS, RESIZABLE_INPUTS as MAT_RESIZABLE_INPUTS, TABLE_HOST_BINDINGS as MAT_TABLE_HOST_BINDINGS, TABLE_PROVIDERS as MAT_TABLE_PROVIDERS, MTX_GRID_DEFAULT_OPTIONS, MatColumnResize, MatColumnResizeCommonModule, MatColumnResizeFlex, MatColumnResizeModule, MatColumnResizeOverlayHandle, MatFlexTableResizeStrategy, MatResizable, MtxGrid, MtxGridCell, MtxGridCellActionBadgePipe, MtxGridCellActionDisablePipe, MtxGridCellActionTooltipPipe, MtxGridCellActionsPipe, MtxGridCellSummaryPipe, MtxGridColClassPipe, MtxGridColumnMenu, MtxGridExpansionToggle, MtxGridModule, MtxGridRowClassPipe, MtxGridSelectableCell, MtxGridUtils };\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11]}